Skip to content

开发参考

DRG_javascript

打包方式&测试方法

安装node.js 在项目根目录执行npm install,系统会自动安装打包工具rollup、webpack

rollup

在项目根目录执行npm run rollup或者npx rollup --config 打开在项目根目录下的index.html页面进行测试

rollup打包方式,调用参考index.html

javascript
async function group(record,type){
    const {GroupProxy} =await import('./drg_group/'+type+'/GroupProxy.js');
    let grouper=new GroupProxy();
    let result=grouper.group_record_str(record);
    return result;
}
function click(){
    let result=group(input.value,select.value);
    result.then(x=>{
        div_result.innerHTML=JSON.stringify(x);
    });
}

webpack

修改package.json,删除"type": "module"(如果用rollup打包则需要加上这一项) 在项目根目录执行npm run webpack或者npx webpack 打开/dist/index.html页面进行测试

webpack打包方式,调用参考index.js

javascript
let result = new GroupProxy_chs_drg_11().group_record_str(text);
result.then(x=>{
    let result=GroupResult.toString(x);
    document.getElementById("result").innerHTML = result.replace("\n", "<br>");
})

接口说明

  • group_record_str

输入参数为String,格式如"22058878,2,88,32460,,13040503,94,1,K80.302|K80.305|K83.109|K72.905|Z90.408|E14.900x001,51.8803|51.8701|54.5100x005|45.1301" 将MedicalRecord类的11个属性用逗号拼接,其中:zdList、ssList的类型是String[],多个元素用|分隔;remark字段可选

  • group_record

传入js对象或字典,属性见MedicalRecord

返回结果说明

返回结果为GroupResult类

  • Index:带入输入对象MedicalRecord的Index字段,建议使用病案号或住院号,保持唯一性
  • status:分组结果,“分组成功”代表分组成功,其他定义见DrgGroupStatus类
  • messages:分组过程,列表格式,包括ICD编码转换信息、名称信息,以及DRG分组每一步操作的记录,是什么结果,应用了哪些规则
  • mdc:主要诊断大类,分组成功或分入歧义组是有值
  • adrg:核心DRG组代码,校验通过后有值,分入歧义组时为QY,没有分到组时为00
  • drg:DRG组代码,校验通过后有值,分入歧义组时为*QY,没有分到组时为00

OpenDRG_Java

apache ant 打包

可采用apache ant方式打包,需下载安装,官网地址:https://ant.apache.org/ 进入每个版本分组器的build.xml所在目录,执行ant jar命令,将在该版本分组器目录的build/jar路径下生成jar文件 如:

console
cd drg_group/chs_drg_11
ant jar

生成文件路径:drg_group/chs_drg_11/build/jar/grouper_chs_drg_11.jar

Maven

测试方法

将run.cmd和打包好的jar文件放在同一目录,双击执行run.cmd执行,打开的控制台窗口中,如果输出以下信息,则说明程序可以正常执行:

MedicalRecord [Index=22058878, gender=2, age=88, ageDay=32460, weight=0, dept=13040503, inHospitalTime=94, leavingType=1, zdList=[K22.301, K11.901, E11.900, I10.x05], ssList=[96.0800x005], remark=]
GroupResult [Index=22058878, status=分组成功, messages=[K22.301 食管破裂, K11.901 腮腺区肿物, E11.900 2型糖尿病, I10.x05 高血压3级, 96.0800x005 鼻十二指肠营养管置入术, 符合MDCG入组条件,匹配规则:主诊断匹配, 符合GZ1入组条件,匹配规则:主诊 断匹配, 主诊断K22.301排除表111, 主诊断K22.301排除表111, 诊断K11.901属于CC,排除表110, ***GZ13 其他消化系统诊断,伴并发症或合并症***], mdc=MDCG, adrg=GZ1, drg=GZ13]

Java系统调用方式

外部系统引入分组器jar包,调用GroupProxy类的以下方法:

  • group_record

输入参数为String,格式如"22058878,2,88,32460,,13040503,94,1,K80.302|K80.305|K83.109|K72.905|Z90.408|E14.900x001,51.8803|51.8701|54.5100x005|45.1301" 将MedicalRecord类的11个属性用逗号拼接,其中:zdList、ssList的类型是String[],多个元素用|分隔;remark字段可选 返回结果为GroupResult对象

  • group_txt

无输入参数,程序自动读取当前目录下的input.txt文件,如文件不存在则报错 input.txt内容参考源代码根目录下的文件 执行成功后在当前目录下生成output.txt文件,内容为一个或多个GroupResult对象

  • group_csv

输入参数filename为CSV文件路径,cols参数为CSV文件中分组所需字段的列名,传入List cols输入的列名需要与MedicalRecord类的属性(Index,gender,age,ageDay,weight,dept,inHospitalTime,leavingType,zdList,ssList,remark)顺序保持一致 输出结果为CSV文件,保存在输入filename的相同路径,并在输入文件名称后面加上_java_result,结果CSV的列在输入列的基础上增加了status,messages,mdc,adrg,drg这几列

推荐使用group_record。group_txt一般用于测试,group_csv用于数据分析

返回结果说明

返回结果为GroupResult类

  • Index:带入输入对象MedicalRecord的Index字段,建议使用病案号或住院号,保持唯一性
  • status:分组结果,“分组成功”代表分组成功,其他定义见DrgGroupStatus类
  • messages:分组过程,列表格式,包括ICD编码转换信息、名称信息,以及DRG分组每一步操作的记录,是什么结果,应用了哪些规则
  • mdc:主要诊断大类,分组成功或分入歧义组时有值
  • adrg:核心DRG组代码,校验通过后有值,分入歧义组时为QY,没有分到组时为00
  • drg:DRG组代码,校验通过后有值,分入歧义组时为*QY,没有分到组时为00

OpenDRG_CSharp

进入每个版本分组器的build.xml所在目录,执行dotnet publish命令,将在该版本分组器目录的bin路径下生成exe、dll等文件 如:

console
dotnet publish drg_group/chs_drg_11/chs_drg_11.csproj

生成文件路径:drg_group/chs_drg_11/bin/Debug/net6.0/chs_drg_11.dll

C#系统调用方式

外部系统引入分组器dll文件,方法,略

测试方法

进入发布目录 双击执行run.cmd进行测试,打开的控制台窗口中,如果输出以下信息,则说明程序可以正常执行:

MedicalRecord [Index=22058878, gender=2, age=88, ageDay=32460, weight=0, dept=13040503, inHospitalTime=94, leavingType=1, zdList=[K22.301, K11.901, E11.900, I10.x05], ssList=[96.0800x005], remark=]
GroupResult [Index=22058878, status=分组成功, messages=[K22.301 食管破裂, K11.901 腮腺区肿物, E11.900 2型糖尿病, I10.x05 高血压3级, 96.0800x005 鼻十二指肠营养管置入术, 符合MDCG入组条件,匹配规则:主诊断匹配, 符合GZ1入组条件,匹配规则:主诊 断匹配, 主诊断K22.301排除表111, 主诊断K22.301排除表111, 诊断K11.901属于CC,排除表110, ***GZ13 其他消化系统诊断,伴并发症或合并症***], mdc=MDCG, adrg=GZ1, drg=GZ13]

接口说明

  • group_record

输入参数为String,格式如"22058878,2,88,32460,,13040503,94,1,K80.302|K80.305|K83.109|K72.905|Z90.408|E14.900x001,51.8803|51.8701|54.5100x005|45.1301" 将MedicalRecord类的11个属性用逗号拼接,其中:zdList、ssList的类型是String[],多个元素用|分隔;remark字段可选 返回结果为GroupResult对象

  • group_txt

无输入参数,程序自动读取当前目录下的input.txt文件,如文件不存在则报错 input.txt内容参考源代码根目录下的文件 执行成功后在当前目录下生成output.txt文件,内容为一个或多个GroupResult对象

  • group_csv

输入参数filename为CSV文件路径,cols参数为CSV文件中分组所需字段的列名,传入List cols输入的列名需要与MedicalRecord类的属性(Index,gender,age,ageDay,weight,dept,inHospitalTime,leavingType,zdList,ssList,remark)顺序保持一致 输出结果为CSV文件,保存在输入filename的相同路径,并在输入文件名称后面加上_java_result,结果CSV的列在输入列的基础上增加了status,messages,mdc,adrg,drg这几列

推荐使用group_record。group_txt一般用于测试,group_csv用于数据分析

返回结果说明

返回结果为GroupResult类

  • Index:带入输入对象MedicalRecord的Index字段,建议使用病案号或住院号,保持唯一性
  • status:分组结果,“分组成功”代表分组成功,其他定义见DrgGroupStatus类
  • messages:分组过程,列表格式,包括ICD编码转换信息、名称信息,以及DRG分组每一步操作的记录,是什么结果,应用了哪些规则
  • mdc:主要诊断大类,分组成功或分入歧义组是有值
  • adrg:核心DRG组代码,校验通过后有值,分入歧义组时为QY,没有分到组时为00
  • drg:DRG组代码,校验通过后有值,分入歧义组时为*QY,没有分到组时为00

OpenDRG_Python

测试方法

双击执行run.cmd进行测试,打开的控制台窗口中,如果输出以下信息,则说明程序可以正常执行:

MedicalRecord [Index=22058878, gender=2, age=88, ageDay=32460, weight=0, dept=13040503, inHospitalTime=94, leavingType=1, zdList=[K22.301, K11.901, E11.900, I10.x05], ssList=[96.0800x005], remark=]
GroupResult [Index=22058878, status=分组成功, messages=[K22.301 食管破裂, K11.901 腮腺区肿物, E11.900 2型糖尿病, I10.x05 高血压3级, 96.0800x005 鼻十二指肠营养管置入术, 符合MDCG入组条件,匹配规则:主诊断匹配, 符合GZ1入组条件,匹配规则:主诊 断匹配, 主诊断K22.301排除表111, 主诊断K22.301排除表111, 诊断K11.901属于CC,排除表110, ***GZ13 其他消化系统诊断,伴并发症或合并症***], mdc=MDCG, adrg=GZ1, drg=GZ13]

也可以在控制台输入:

python -m drg_group.chs_drg_11.GroupTest "22058878,2,88,32460,,13040503,94,1,K22.301|K11.901|E11.900|I10.x05,96.0800x005"

需切换到程序根目录

Python系统调用方式

外部系统import GroupProxy类后,调用以下方法:

  • group_record

输入参数为String,格式如"22058878,2,88,32460,,13040503,94,1,K80.302|K80.305|K83.109|K72.905|Z90.408|E14.900x001,51.8803|51.8701|54.5100x005|45.1301" 将MedicalRecord类的11个属性用逗号拼接,其中:zdList、ssList的类型是String[],多个元素用|分隔;remark字段可选 返回结果为GroupResult对象

  • group_txt

无输入参数,程序自动读取当前目录下的input.txt文件,如文件不存在则报错 input.txt内容参考源代码根目录下的文件 执行成功后在当前目录下生成output.txt文件,内容为一个或多个GroupResult对象

  • group_csv

输入参数filename为CSV文件路径,cols参数为CSV文件中分组所需字段的列名,传入List cols输入的列名需要与MedicalRecord类的属性(Index,gender,age,ageDay,weight,dept,inHospitalTime,leavingType,zdList,ssList,remark)顺序保持一致 输出结果为CSV文件,保存在输入filename的相同路径,并在输入文件名称后面加上_java_result,结果CSV的列在输入列的基础上增加了status,messages,mdc,adrg,drg这几列 调用此接口需要pandas插件,如不想依赖pandas可自行实现pd.read_csv方法完成CSV文件解析

推荐使用group_record。group_txt一般用于测试,group_csv用于数据分析

返回结果说明

返回结果为GroupResult类

  • Index:带入输入对象MedicalRecord的Index字段,建议使用病案号或住院号,保持唯一性
  • status:分组结果,“分组成功”代表分组成功,其他定义见DrgGroupStatus类
  • messages:分组过程,列表格式,包括ICD编码转换信息、名称信息,以及DRG分组每一步操作的记录,是什么结果,应用了哪些规则
  • mdc:主要诊断大类,分组成功或分入歧义组是有值
  • adrg:核心DRG组代码,校验通过后有值,分入歧义组时为QY,没有分到组时为00
  • drg:DRG组代码,校验通过后有值,分入歧义组时为*QY,没有分到组时为00

联系开发团队

请发邮件至 OpenDRG#hotmail.com