实施流程
注:我将流程分为了三个不同的角色来实施
分了五个阶段(理解指标定义、分析设计阶段、固化阶段、采集配置、BI展示配置、BI管理员权限配置)每个角色在每个阶段都有相应的实施工作。
分析、设计阶段:
理解指标定义:1、从管理的角度理解指标的意义;2、分解指标的计算逻辑。
分析业务数据来源:分析指标值所涉及到的业务场景。
分析数据集:分析指标所涉及到的数据集(包括子集及子集的数据项),数据中心多数数据集已经配置好,如果有用现有数据集,要根据实际需要扩充数据项;如果没有则扩充新的数据集。
分析指标类型:确定指标值从业务场景中获取值的计算方式,确定指标类型。
分析医疗实体:根据指标类型把指标作为某一个医疗实体的画像属性。例如手术患者手术后猝死发生例数和发生率,它有两个指标:一个是手术例次;一个是手术后猝死数,这两个指标都可以作为住院医疗服务能力与单病种这个医疗实体的画像属性。
标准固化:
固化信息模型:把分析阶段输出的数据集通过平台的信息模型管理工具固化到系统中。
配置指标:根据分析阶段输出的指标与类别在数据应用配置系统中进行配置。
配置医疗实体:根据指标类型在医疗实体功能模块中进行新建或修改对应医疗实体,使新建或修改的指标在系统中生效,使指标成为医疗实体的画像属性。
采集配置阶段:
采集业务数据:通过接口改造或适配器采集分析指标所涉及到的数据集的数据。
BI展示配置阶段:
配置数据源:在决策分析系统中的数据源工具配置clickhouse数据库地址。
配置数据视图:在决策分析系统中的数据视图工具编写相关SQL。
配置数据图表:在决策分析系统中的数据图表工具进行设计和制作。
配置仪表板:在决策分析系统中的仪表盘工具进行仪表板设计和制作。
分配权限
1、角色分配:定义角色、授权角色权限。
2、人员授权:授予人员BI角色权限。
指标定义理解
以统计分析的口径来理解指标计算方法,以住院收入占医疗收入比例举例说明:
说明:
指标:住院收入占医疗收入比例
BI医疗指标1:住院收入
BI医疗指标2:门急诊收入+住院收入
计算方法:住院收入占医疗收入比例=住院收入÷(门急诊收入+住院收入)
分析设计阶段
业务数据来源
根据指标的定义和计算方法分析数据来源的业务场景。以上边提到的住院收入占医疗收入比例为例,可以分析出数据源来源于门诊、住院费用。
分析数据集
根据业务场景分析数据集所包含的数据子集与数据项。例如住院收入占医疗收入比例所设计到的门诊、住院费用数据集如下:
门诊费用数据集 | |||||||
---|---|---|---|---|---|---|---|
字段名称 | 中心数据元 | 数据元新增标志 | 中心数据库表字段 | 数据类型及长度 | 值域代码 | 适配器对应源库字段 | 注释 |
就诊流水号 | |||||||
费用主键 | 业务主键 | ||||||
病人ID | |||||||
门急诊标识(就诊唯一标识) | |||||||
处方编号 | |||||||
处方项目序号 | |||||||
医院项目编码 | |||||||
医院项目名称 | |||||||
药物规格 | |||||||
单价 | |||||||
数量 | |||||||
单位 | |||||||
总价 | |||||||
门诊费用分类代码 | |||||||
医师编码 | |||||||
开单科室编码 | |||||||
收费时间 | |||||||
收费员编码 | |||||||
执行科室编码 | |||||||
医嘱执行者编码 | |||||||
高值材料标志 | |||||||
住院费用数据集 | |||||||
字段名称 | 中心数据元 | 数据元新增标志 | 中心数据库表字段 | 数据类型及长度 | 值域代码 | 适配器对应源库字段 | 注释 |
住院费用主键 | 业务主键 | ||||||
就诊流水号 | |||||||
病人ID | |||||||
住院标识(就诊唯一标识) | |||||||
处方编号 | |||||||
处方项目序号 | |||||||
医院项目编码 | |||||||
医院项目名称 | |||||||
药物规格 | |||||||
单价 | |||||||
数量 | |||||||
单位 | |||||||
总价 | |||||||
住院费用分类代码 | |||||||
医师编码 | |||||||
开单科室编码 | |||||||
收费时间 | |||||||
收费员编码 | |||||||
执行科室编码 | |||||||
医嘱执行者编码 | |||||||
高值材料标志 | |||||||
医疗机构代码 |
分析指标类型
根据BI指标分析从数据集中获取值的计算方式,从而得到医疗实体指标的类型:
如某个指标的医疗实体指标数据来源可以根据病人某次就诊进行计算获得,优先推荐使用医疗类指标,它能够在以患者某次就诊的数据为基础进行医疗实体画像。
如果指标分析的结果是人、财、物(并且它的值的数据来源获取与病人某次就诊无关)这类的资源类指标,那么此指标归类于资源类指标。
如果指标分析的结果直接来源于业务数据,那么此指标归类于业务类指标。
如指标分析的结果不能通过医疗类指标、资源类指标、业务类指标实现,这种指标归类为计算类指标。
举例说明:
BI医疗指标对应的医疗实体指标:
BI医疗指标门诊收入为门诊费用数据集中总价,因为BI门诊收入可以通过门诊费用数据集中的总价汇聚(求和)得到,此医疗实体指标为业务类指标;
BI医疗指标住院收入为住院费用数据集中总价,因为BI住院收入可以通过住院费用数据集中的总价汇聚(求和)得到,此医疗实体指标为业务类指标。
分析实体医疗
根据BI分析模型特点以最小业务粒度进行定义,方便BI展示分析只关注对医疗实体数据作简单聚合就可以实现分析意图,同时保留业务数据的最小粒度,实现分析数据从宏观到微观的观察。
医疗实体定义以数据集对应的业务表中的ROWCODE作为医疗实体的主键字段,以指标扩充医疗实体属性形成最后的BI分析模型的宽表字段。
举例说明:
根据上述方法,住院收入占医疗收入比需要定义两个医疗实体:
门诊费用医疗实体:医疗实体指标包括:费用ID(费用业务主键)、总价;
住院费用医疗实体:医疗实体指标包括:费用ID(费用业务主键)、总价。
固化阶段
固化信息模型
参考数据标准化文档。
配置医疗实体指标
医疗类指标
值统计类型说明:
计数类型:当一个病人画像完成后有多条数据满足画像条件时,它会把所有数据行相加。
存在类型:当一个病人画像完成后有多条数据满足画像条件时,它只取一条。
求和:当一个病人画像完成后有多条数据满足画像条件时,它会把求和列数据值相加。
住院医疗指标类
举例说明
手术患者手术后深静脉血栓发生数:
1、手术患者:患者有手术行为
2、手术后肺栓塞人数:
门诊医疗指标类
举例说明
急诊抢救室患者死亡率
急诊抢救室患者死亡总数:
病人为急诊抢救患者并且死亡
同期急诊抢救室抢救患者总数:
病人为抢救患者
资源类
举例说明
每百张病床药师人数
医院药师(包括药剂师和临床药师)总人数:
医院实际开放床位数:
定义完对应的指标之后在资源指标值设置这里维护好对应的值
注:指标值如果只维护了一个,比如开始时间是2015年,那该指标默认为2015至现在都是1800张床位。如果想维护多个年份不同的值,就需要维护多个年份,比如设了两个一个是2015为开始时间值是1800,第二个是2017值是1600,那指标值是2015至2017为1800张床位,2017至现在是1600。
3、维护好之后进行内存同步
业务类
先在界面上把业务类的医疗实体给建好。
举例说明
住院收入占医疗收入比例
住院收入:
总收入:
右侧是医疗实体字段信息。如果字段存储的是代码值,为了节省展示时代码值转成名称的工作,通过配置对应代码表与CK代码转换名称为是,在实现同步CK时可以把代码值转成代码名称;如果指标信息与指标值需要发送给评测系统,需要配置发送评测系统的值为是。
计算类
举例说明
特需医疗服务收入占比
根据指标分析,可以在医疗实体里直接新增一个sql方法来判断该患者是否有特需医疗服务。
定义医疗实体
根据相关指标新增一个医疗实体,设置好实体对象的定义以及实体对象同步到BI库。
采集配置阶段
采集数据分为两种模式,一种是平台提供需求业务系统通过改造接口来获取想要的数据,第二种是业务方提供的数据需要平台这边来适配,就可以用到适配器。
接口改造
根据实际业务要求,改造对应的接口采集相关数据
关于接口怎么配置以及修改可以参考下边文档
信息集成平台之服务接口用户操作手册
适配器说明
参考《适配器用户操作手册》。
导入方式
参考二次开发平台。
表单录入
参考二次开发平台。
BI展示配置阶段
配置数据源
配置clickhouse数据库地址。
数据视图
确定数据视图目录分类。
配置查询SQL
点击+号新建目录、视图,编写sql添加需要展示的列(医疗实体对应的字段编码),列名可在数据应用配置下的医疗实体配置查找。
说明:
医疗实体和字段信息的准确的定义信息从数据应用配置中的医疗实体配置模块中查找。
查询变量:内置了BEGIN_DATE开始时间、END_DATE结束时间;
权限变量:内置了ORG_CODE机构编码、DEPT_CODE部门编码,在具体项目中使用时,需要对权限变关联的角色或成员的值进行配置,同时在查询视图的SQL中进行权限变量的引用。如果同一个数据视图中用到权限变量做为查询条件,但对某些角色或者某些成员权限变量不起作用,需要做如下处理:不需要配置权限变量关联的角色或成员值,同时在数据视图中增加权限变量is null。
查询SQL默认生成的是字符串,对于数值类型字段需要手工调整为数值类型。
查询SQL尽量不要出现汇聚方法,汇聚在数据图表中进行配置。
不要的查询列禁止出现在SQL中。
查询时间用全局变量,尽量不要配置私有变量。
尽量不用多表关联查询。
数据图表
确定分类信息
可视化——点击➕号新建目录,如下图:
图表类型确定
维度确定
维度值确定
样式确定
前边说过最好将数值列改成数值类型,在这里就体现出来了,string类型的是不可以设置下图这些数据属性的。
上卷下钻功能
配置多个维度的时候图具有上卷下钻功能,如:在图中实现年、季、月、日的数据查看需要配置年、季、月、日四个纬度。
因为配置了年、季、月、日,柱状图图表就可以下钻了。
仪表板
确定仪表板分类信息
引入做好的数据图表
加入时间控制器筛选,调整一下样式即可。
以上弄好之后可以配置一下跳转设置。
示例:_u=patientList.ureport.xml&icdclass=pulmonaryembolism&daydate=
报表地址只需改动Icdclass参数
Icdclass=医疗指标配置里的类别编码
配置的哪个指标就在对应的指标跳转设置里填写对应的编码,其余参数不用变。
跳转设置完成好后效果如下,会把该指标下的患者用图表展示出来。
患者病案号可以点击进去,会看到该患者的病案首页内容。
BI系统管理员配置
角色授权
人员授权
在此界面添加相关人员权限
数据库管理员:所有权限都有,可以进行BI界面制作
医师:只有查看权限无法修改
高管:只有查看权限无法修改
用户管理
在界面的左下角可以进行修改密码等等操作
指标分析参考
业务类
指标值可以直接从业务数据集获取数据,分析指标对应医疗实体画像中的属性编码。
举例说明:
住院收入占医疗收入比例:
住院收入来源于住院费用数据集中的总价数据元;
总收入来源于门诊费用数据集中的总收入和住院费用数据集的总收入。
医疗类指标
住院医疗类指标
分析模板:
序号 | 有无 | 指标维度 | 维度说明 |
---|---|---|---|
1 | 死亡 | ||
2 | 诊断(不判断) | ||
3 | 诊断(设定诊断编码) | ||
4 | 诊断(设定诊断编码外) | ||
5 | 诊断(设定诊断名称) | ||
6 | 诊断(设定诊断名称外) | ||
7 | 诊断(判断无) | ||
8 | 主诊断(不判断) | ||
9 | 主诊断(设定诊断编码) | ||
10 | 主诊断(设定诊断编码外) | ||
11 | 主诊断(设定诊断名称) | ||
12 | 主诊断(设定诊断名称外) | ||
13 | 主诊断(判断无) | ||
14 | 其他诊断(不判断) | ||
15 | 其他主诊断(设定诊断编码) | ||
16 | 其他主诊断(设定诊断编码外) | ||
17 | 其他主诊断(设定诊断名称) | ||
18 | 其他主诊断(设定诊断名称外) | ||
19 | 其他主诊断(判断无) | ||
20 | 手术判断(不判断) | ||
21 | 手术判断(有手术行为) | ||
22 | 手术判断(有手术行为且不唯一) | ||
23 | 手术判断(有手术行为且唯一) | ||
24 | 手术判断(设定手术编码) | ||
25 | 手术判断(设定手术编码外) | ||
26 | 手术判断(有手术行为判断名称外) | ||
27 | 治疗项目判断 | ||
28 | 用药判断 | ||
29 | 科室判断(不判断) | ||
30 | 科室判断(设定科室) | ||
31 | 科室判断(设定科室外) | ||
32 | 年龄判断(不判断) | ||
33 | 年龄判断(按岁判断) | ||
34 | 年龄判断(按天判断) | ||
35 | 住院天数判断 | ||
36 | 再住院判断 | ||
37 | 之前诊断(不判断) | ||
38 | 之前诊断(设定诊断编码) | ||
39 | 之前诊断(设定诊断编码外) | ||
40 | 之前诊断(设定诊断名称) | ||
41 | 之前诊断(设定诊断名称外) | ||
42 | 之前诊断(判断无) | ||
43 | 之前手术判断(不判断) | ||
44 | 之前手术判断(有手术行为) | ||
45 | 之前手术判断(有手术行为且不唯一) | ||
46 | 之前手术判断(有手术行为且唯一) | ||
47 | 之前手术判断(设定手术编码) | ||
48 | 之前手术判断(设定手术编码外) | ||
49 | 之前手术判断(有手术行为判断名称外) | ||
50 | EMR文档扩展 |
举例说明:
以手术患者手术后深静脉血栓发生数为例:
1、主诊断判断
不判断:统计所有
设定诊断编码:统计指定诊断编码(模糊查询)范围的数据
设定诊断编码外:排除统计指定诊断编码(模糊查询)范围的数据
设定诊断名称:统计指定诊断名称(模糊查询)范围的数据
设定诊断名称外:排除指定统计指定诊断名称(模糊查询)范围的数据
2、其它诊断判断
不判断:统计所有
设定诊断编码:统计指定诊断编码(模糊查询)范围的数据
设定诊断编码外:排除统计指定诊断编码(模糊查询)范围的数据
设定诊断名称:统计指定诊断名称(模糊查询)范围的数据
设定诊断名称外:排除指定统计指定诊断名称(模糊查询)范围的数据
3、手术判断
不判断:统计所有
有手术行为:统计动过手术的患者
有手术行为且不唯一:统计有手术行为且多次手术的数据
有手术行为且唯一:统计有手术行为且只有一次手术的数据
设定手术编码:统计指定手术编码(模糊查询)范围的数据
设定手术编码外:排除统计指定手术编码(模糊查询)范围的数据
设定手术名称:统计指定手术名称(模糊查询)范围的数据
设定手术名称外:排除指定统计指定手术名称(模糊查询)范围的数据
序号 | 有无 | 指标维度 | 维度说明 |
---|---|---|---|
1 | 死亡 | ||
2 | 诊断(不判断) | ||
3 | 诊断(设定诊断编码) | ||
4 | 诊断(设定诊断编码外) | ||
5 | 诊断(设定诊断名称) | ||
6 | 诊断(设定诊断名称外) | ||
7 | 诊断(判断无) | ||
8 | 主诊断(不判断) | ||
9 | 主诊断(设定诊断编码) | ||
10 | 有 | 主诊断(设定诊断编码外) | 排除诊断编码是I80.2、I82.8的 |
11 | 主诊断(设定诊断名称) | ||
12 | 主诊断(设定诊断名称外) | ||
13 | 主诊断(判断无) | ||
14 | 其他诊断(不判断) | ||
15 | 有 | 其他主诊断(设定诊断编码) | 诊断编码是I80.2、I82.8的 |
16 | 其他主诊断(设定诊断编码外) | ||
17 | 其他主诊断(设定诊断名称) | ||
18 | 其他主诊断(设定诊断名称外) | ||
19 | 其他主诊断(判断无) | ||
20 | 手术判断(不判断) | ||
21 | 有 | 手术判断(有手术行为) | 动过手术 |
22 | 手术判断(有手术行为且不唯一) | ||
23 | 手术判断(有手术行为且唯一) | ||
24 | 手术判断(设定手术编码) | ||
25 | 手术判断(设定手术编码外) | ||
26 | 手术判断(有手术行为判断名称外) | ||
27 | 治疗项目判断 | ||
28 | 用药判断 | ||
29 | 科室判断(不判断) | ||
30 | 科室判断(设定科室) | ||
31 | 科室判断(设定科室外) | ||
32 | 年龄判断(不判断) | ||
33 | 年龄判断(按岁判断) | ||
34 | 年龄判断(按天判断) | ||
35 | 住院天数判断 | ||
36 | 再住院判断 | ||
37 | 之前诊断(不判断) | ||
38 | 之前诊断(设定诊断编码) | ||
39 | 之前诊断(设定诊断编码外) | ||
40 | 之前诊断(设定诊断名称) | ||
41 | 之前诊断(设定诊断名称外) | ||
42 | 之前诊断(判断无) | ||
43 | 之前手术判断(不判断) | ||
44 | 之前手术判断(有手术行为) | ||
45 | 之前手术判断(有手术行为且不唯一) | ||
46 | 之前手术判断(有手术行为且唯一) | ||
47 | 之前手术判断(设定手术编码) | ||
48 | 之前手术判断(设定手术编码外) | ||
49 | 之前手术判断(有手术行为判断名称外) | ||
50 | EMR文档扩展 |
门诊医疗指标类
门诊可通过病例文档来对病人进行画像,也可以进行计算类、业务类
举例说明:
急诊抢救室患者死亡率:
急诊抢救室患者死亡总数来源于急诊留观病历数据集中的急诊抢救记录加急诊留观病程记录数据元;
同期急诊抢救室抢救患者总数来源于急诊留观病历数据集中的急诊抢救记录数据元。
资源类
指标分析的结果是人、财、物(并且它的值的数据来源获取与病人某次就诊无关)这类的资源类指标,那么此指标归类于资源类指标。
举例说明:
每百张病床药师人数:
说明:
医院药师(包括药剂师和临床药师)总人数:定义为pharmacist_num;
医院实际开放床位数:定义为bed_open_num。
计算类
确定好从业务数据中进行获取数据的计算逻辑。
举例说明:
特需医疗服务收入占比
说明:
特需医疗服务:通过计算类用函数方法(PKG_BI_Source.Fun_Get_SpecialService)来判断是否特需门诊\特需病房;
特需医疗服务收入:特需门诊医疗服务收入+住院患者特需服务收入;
同期全部医疗服务收入:门急诊总收入+住院总收入。
系统固化的医疗实体
实体对象名称 | 实体对象说明 |
---|---|
vb_inpatient_clinic | 住院病人就诊信息表 |
vb_inpatient_recept | 住院医嘱信息 |
vb_source_bed_person | 资源配置床位与人员 |
vb_medical_drgs | 住院医疗服务能力与单病种 |
vb_inpatient_diag | 住院诊断信息表 |
vb_inpatient_operation | 住院病人手术信息 |
vb_inpatient_fee | 住院病人费用明细 |
vb_inpatient_invoice | 住院发票数据集 |
vb_outpatient_clinic | 门诊病人就诊信息表 |
vb_outpatient_fee | 门诊病人费用明细 |
vb_outpatient_reciept | 门诊处方信息表 |
vb_outpatient_invoice | 门诊发票数据集 |
vb_outpatient_reg | 门诊挂号信息 |
常见问题处理办法
中心端数据没过去
检查该原始数据里那条数据的sourcedate时间是不是比CK最后刷新时间还小
检查sourcetype是不是I、U(I新增数据、U修改数据、D删除数据)
检查sourceid是不是为空
检查是不是接口数据没到中心端,还是接口异常,如果是接口异常可以在中心端里重传数据。
如果发现数据漏传、缺失可以重采数据:
多条重传
按照时间大规模重传
CK数据全部重采
在该界面对需要重采的视图点击重新同步,它会把CK所有数据都清掉然后全部重新采集。
验证画像
室间隔缺损手术举例说明
1、根据国家文档指标分析
2、指标画像规则定义
3、根据国家文档编写SQL
select t.record_form_sn
from T_WM_HOMEPAGE t,T_WM_HOMEPAGE_OPER t3
WHERE T.RECORD_FORM_SN = t3.record_form_sn
and t.sourceid=t3.sourceid
AND REGEXP_LIKE (t3.ops_code,'^(35.62)')
验证画像规则语句
select t.rowcode,
t.sourcedate,
t.record_form_sn,
to_char(t.out_hosptial_date,'yyyy') as yeardate,
to_char(t.out_hosptial_date,'yyyy')||'-0'||to_char(t.out_hosptial_date,'Q') as dayquarter,
to_char(t.out_hosptial_date,'yyyy-mm') as monthdate,
to_char(t.out_hosptial_date,'yyyy-mm-dd') as daydate,
t.sourcetype,
nvl(t.org_code,'1') as org_code , *--组织机构编码*
nvl(t.org_name,'医院名称') as org_name, *--组织机构名称*
t.patient_id, *--病人ID*
PKG_BI_Source.Fun_Get_MedicalValue(record_form_sn,sourceid,'rvsd') as rvsd
from T_WM_HOMEPAGE t
where t.record_form_sn in( -- 电子申请单编号
select t.record_form_sn
from T_WM_HOMEPAGE t,T_WM_HOMEPAGE_OPER t3
WHERE T.RECORD_FORM_SN = t3.record_form_sn
and t.sourceid=t3.sourceid
AND REGEXP_LIKE (t3.ops_code,'^(35.62)')
)
如图所示,上边为红色字体的为类别编码。