【前 言】
这是一则技术维护日志的简要小结,它大体代表了以HIS为核心的周边系统的工作模式。该模式正经历着因为HIS这个基础的“主动”而“从动”,通过修改数据接口、结构定义、表间关系等操作,实现周边系统向已然变更的HIS结构进行“再适配”,以达到惯性运行的目的,同时,本过程也为那些以临床信息与管理信息为代表的、依赖于核心HIS的应用软件的日常运维做个典型示例,以资借鉴。
- 修改了门诊病历表主键定义,导致门诊数据无法采集
因该院门诊医生站升级,修改了OUTP_MR表的主键(VISIT_DATE + VISIT_NO
)定义,增加了接诊医生( DOCTOR )字段, 而这种新结构支持同一就诊病人可以有多个不同医生的门诊诊断记录。
这一改变,打破了原有“一次就诊只能存在一个诊断” 的数据模型,也是造成Kettle自2022年2月开始“门诊就诊记录”无法采集故障的根本原因。
解决办法:
1). 修改HIS接口中门诊病历视图JXKP_VOUTP_OUTP_MR的检索语句,增加一列窗口计数函数: Row_number() OVER (PARTITION by VISIT_DATE,VISIT_NO ORDER by DOCTOR) rowno;
2). 修改绩效数据库的HIS视图MV_HIS_OUTP_MR检索语句,增加按照行号筛选的条件为
Where rowno = 1,从而保证 “一次就诊只取一个诊断”的现行约束。
- 修改了所有涉及人名长度的字段定义,从C8改为C20
如:ODS_PAT_VISIT.DIRECTOR表的科主任、主管医生、质控医生、编目者,ODS_CLINIX_MASTER_REC表的患者姓名、接诊医生,等等;
- 修改了与费用明细相关的数据结构
费用明细的项目代码ITEM_CODE从C10改为C20、项目名称ITEM_NAME从C40改为C100、项目规格ITEM_SPEC从C20改为C50;
其中涉及ODS_OPERATION_BILL_REC、ODS_EXAM_BILLS、ODS_TREAT_BILL_REC、ODS_FEE_UNION_REC等数据表。
- 修改了其它某些数据项的结构定义
1) 诊断代码从C16改为C32,诊断名称从C100改为C400
涉及门诊诊断描述ODS_CLINIC_MASTER_REC.OUTP_DIAGNOSIS_NAME,检验相关临床诊断LAB_TEST_MASTER.RELEVANT_CLINIC_DIAG;
2) 门诊挂号就诊序号SERIAL_NO从N3到N5
ODS_CLINIX_MASTER_REC表的SERIAL_NO字段;
3) 患者出生地BIRTH_PLACE从C25到C100
ODS_PAT_VISIT表的BIRTH_PLACE字段;
4) 转科记录中存在所在科室为空的垃圾数据
医院HIS修改了转科记录表(TRANSFER)的主键定义,出现了两条所在科室(DEPT_STAYED)为空的垃圾记录;解决办法是修改HIS端JXKP_VINP_TRANSFER视图的判断语句,增加dept_stayed is not null的筛选条件,过滤掉DEPT_STAYED为空的记录。
【后 语】
任何数据结构都无法摆脱其时代局限性,尤其是当这套数据结构已默默地走过了二十多年。当你看过SAP在上千个类似于十六进制的用户名(如:B0001709000)后那些像“天书”一样的表名时,当你看到国内某HIS公司通篇像“P000100XX”类型的字段,且数据类型都是VARCHAR2(1000)的结构手册时,你不得不钦佩,当年“军卫一号”工程技术组在数据结构设计上所体现的“工匠”精神,它启蒙并指引着一代代年轻的计算机工程技术人员,自此走上了JD-HIS运维的从业之路。在这一路上,他们收获了成长,收获了进步,收获了友情,有人还收获了爱情。
然而,再考究的数据结构,也抵挡不住应用的深入和时间的脚步。于是乎,数据结构的修改成为一个无可回避的话题。一般地,对数据结构而言,增加字段、扩展字长其实都是“小case”,真正的“麻烦”是修改数据约束与表间关系。
数据约束有非空约束、外键约束、主键约束等等,如:主键值不能为空,外键可以取NULL值,但若外键为另一关系主键,则不能为NULL。本例中的转科记录表就是撤销了主键约束,从而导致垃圾数据的产生。
表间关系有一对多(1:n)与一对一(1:1)等多个模型,HIS在改造升级的过程中,一定要注意表间关系模型的变更,如本例中就是将门诊病历与门诊就诊记录之间的一对一关系,改成了一对多,这直接导致了某些软件的“停摆”。这不是说,数据关系就不该改,相反,门诊病历与门诊就诊的关系从客观上就是“一对多”,不但应该改,而且也早该改了。
但是,需要注意的是,表间关系的变更必然会导致某些之前的“假定”不再成立,那么,既然HIS已经改变了,为保持周边软件的惯性运行,就必须对HIS接口以及目标数据结构有所调整,这才是本文得以罗嗦的理由。
2023-07-17




