最新山西省新型农村合作医疗信息系统与医院信息管理系统接口标准资料.docx
《最新山西省新型农村合作医疗信息系统与医院信息管理系统接口标准资料.docx》由会员分享,可在线阅读,更多相关《最新山西省新型农村合作医疗信息系统与医院信息管理系统接口标准资料.docx(24页珍藏版)》请在冰豆网上搜索。
![最新山西省新型农村合作医疗信息系统与医院信息管理系统接口标准资料.docx](https://file1.bdocx.com/fileroot1/2022-12/10/3c9ad5c2-d6cf-4525-9973-ab46fcdb3b74/3c9ad5c2-d6cf-4525-9973-ab46fcdb3b741.gif)
最新山西省新型农村合作医疗信息系统与医院信息管理系统接口标准资料
山西省新型农村合作医疗信息系统
与医院信息管理系统接口标准
方案介绍
方案图解
医院HIS系统通过我们提供的dll调用函数与农合数据库进行交互。
全部文件包括一个dll动态链接库和一个ini配置文件。
运行环境
1.windows操作系统
2.能连接到农合专用网络
3.如果需要通过代理服务器的话,目前只支持http代理
医院系统需要做的改造工作
1.首先医院需要根据新农合政策的需要,按照我们所提供的接口DLL改造医院的HIS系统,使其HIS系统能够适应新农合的需要。
2.医院需要根据农合中心提供的基本目录,包括病种信息、药品信息、诊疗项目信息、费用类别信息建立与医院内码对应的对照信息。
3.无法对应的目录信息,可以直接上传医院的中文名称。
4.HIS系统启动的时候调用dll的initNhDll()函数初始化DLL,系统关闭的时候调用closeNhDll()关闭DLL。
初始和关闭都只调用一次。
5.提供普通病人住院或门诊转农合的功能。
业务流程说明
入院登记
病人入院登记流程图
流程说明:
HIS系统首先输入病人医疗证号,调用接口程序提供的getNhMembers函数获取家庭成员信息,选择正确的农民开始入院登记,如果发现有误,重新输入医疗证号,重新查询。
入院录入结束后,调用doRegister上传入院登记到农合服务器。
入院登记上传到农合服务器之后,如果保存成功会返回一个入院登记编码(32位的字符串),需要保存起来,以后上传费用和出院结算的时候需要使用这个作为本次入院的唯一标记识别。
如果入院登记有误,可以调用unRegister函数撤销入院登记。
上传住院费用
上传住院费用流程图
流程说明:
病人费用信息录入之后调用函数impItem上传费用信息,上传成功会返回费用唯一编码(32位字符串),需要保存起来。
如果发现费用上传错误,可以调用函数removeItem删除费用信息。
病人出院结算
病人出院结算流程图
流程说明:
在入院登记之后随时都可以调用函数preExpense预结算,获取当天为止住院费用的报销信息。
病人在HIS处出院之后就可以调用函数leave上传出院信息,如果出院有误可以调用unleave撤销出院。
出院成功之后随时可以调用函数expense做正式结算。
正式结算之后还是随时调用getExpenseInfo获取报销信息。
预结算可以调用多次,但正式结算只能调用一次。
门诊登记及结算
门诊登记流程图
流程说明:
门诊登记是一次性将病人的门诊信息(包括费用明细)传上服务器。
调用函数getNhMembers获取家庭成员信息,选择病人进行登记,录入费用明细,最后调用regMz上传。
如果上传成功会返回门诊唯一编码(32位字符串),需要保存起来。
如果信息有误,可以调用removeMz作废此门诊。
门诊登记上传之后可以调用preExpense进行预结算,或者调用expense正式结算。
预结算可以调用多次,但正式结算只能调用一次。
配置说明
配置文件名必须为nhhis.ini,放在his程序所在目录。
样例:
[his]
code=141201---医院唯一编码,由我们提供
licence=141201000000540a0a1287701c286937---校验码,由我们提供
[server]
encode=gb2312---编码,根据his系统的编码定
servername=221.204.249.174---农合服务器
port=8080---农合服务器端口
app=/hisimp/imp---his接口名字,由我们提供
buffersize=10240---数据处理缓冲区大小(字节)
[proxy]
proxy=HTTP=HTTP:
//192.168.1.198:
808---代理服务器,不用代理的不要写
API说明
(一)通用参数说明:
a.DataBuffer说明:
DataBuffer为函数返回参数,Char*类型,如果函数执行成功,返回值多个参数,使用‘|’分割;如果执行失败,那么DataBuffer中含有错误详细信息。
所有返回的DataBuffer,都需要分配1024个字符以上的空间。
b.日期格式:
参数中的所有时间格式都是:
‘yyyy-mm-dd’
c.返回值
返回0都是成功,小于0都是失败
(二)公有函数说明:
函数列表
序号
函数名
代码
1
动态链接库初始化函数
initNhDll
2
动态链接库初始化函数2
initNhDll2
3
关闭动态链接库
closeNhDll
4
获取参合家庭成员信息
getNhMembers
5
住院登记
doRegister
6
撤销住院登记
unRegister
7
病人出院
leave
8
撤销出院
unleave
9
费用明细录入
impItem
10
删除费用明细
removeItem
11
结算
expense
12
预结算
preExpense
13
获取结算信息
getExpenseInfo
14
获取药品目录
getMedicine
15
获取药品目录生成文件
getMedicine2
16
获取诊疗项目目录
getClinicItem
17
获取诊疗项目目录生成文件
getClinicItem2
18
门诊登记
regMz
19
门诊作废
removeMz
20
修改住院登记信息
editRegister
i.动态链接库初始化函数
intinitNhDll()
参数:
无
返回:
0:
成功
小于0:
失败
注:
如果需要获取初始化的日志信息,可以传入char*参数。
ii.动态链接库初始化函数2
intinitNhDll2(char*hcode,char*encode,char*licence,char*servername,char*app,intport,intbuffersize);
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
hcode
IN
医疗机构代码
N
16
2
encode
IN
His程序使用的字符编码,比如”gb2312”,”utf-8”,”gbk”
N
12
3
licence
IN
验证码
N
32
4
servername
IN
服务器,如:
221.204.249.174
N
32
5
app
IN
应用名,“/hisimp/imp”
N
32
6
port
IN
端口,8080
N
7
buffersize
IN
DLL内部使用的缓冲区大小,一般为10240
N
10240
返回:
0:
成功
小于0:
失败
iii.关闭动态链接库
intcloseNhDll()
参数:
无
返回:
0:
成功
小于0:
失败
iv.获取参合家庭成员信息
intgetNhMembers(char*ylzh,char*members)
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
ylzh
IN
医疗证号
N
16
2
members
OUT
参合人员信息/错误信息
10240
说明:
成员的各个信息用|隔开,成员之间用||隔开。
返回的格式是[成员1编码|成员1姓名|成员1性别|成员1身份证号|成员1年龄|成员1地址|成员1出生日期|成员1医疗证号|成员1本年门诊补偿额|成员1本年住院补偿额||成员2编码|成员2姓名|成员2性别|成员2身份证号|成员2年龄|成员2地址|成员2出生日期|成员2医疗证号|成员2本年门诊补偿额|成员2本年住院补偿额]。
性别1是男,2是女。
如:
1013400|王巨双|1|140111111111111111|51岁|盂县北下庄乡北下庄村|1957-01-01|1403221001010074||1013401|付壮荷|2|140111111111111111|46岁|盂县北下庄乡北下庄村|1962-01-01|1403221001010074|0|0||1013402|王成东|1|140111111111111111|21岁|盂县北下庄乡北下庄村|1987-01-01|1403221001010074|0|0
注意:
家庭成员信息信息只能在本次作住院登记的时候使用,下次登记的时候要重新获取。
年龄如果是1岁以上,后面的单位是岁,如果不足一岁一个月以上的单位是月,如果不足一月的单位是天。
家庭成员信息根据需要可能以后还会增加到后面。
目前的程序一定要保证未来增加新信息的时候不影响使用。
返回:
0:
成功
小于0:
失败
v.住院登记
intdoRegister(char*zyh,inttimes,char*grbm,char*ryrq,char*jbbm,char*ksbm,intisjz,char*zybm)
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
Zyh
IN
住院号
N
18
2
Times
IN
同一住院号的住院次数,一般为1
N
3
grbm
IN
个人编码,从家庭成员信息中获取
N
12
4
Ryrq
IN
入院日期,格式为yyyy-mm-dd
N
10
5
Jbbm
IN
疾病编码(ICD10),如果没有对照可以发中文名
N
20
6
Ksbm
IN
科室编码,可以直接传中文名
N
6
7
isjz
IN
是否急诊(0:
否,1:
是)
N
1
The鍦version柟Geng$the悊鐗╄祫2
TheYue呭熀鍦issuestheJiao鐢ㄦ潈zybm
OUT
住院登记唯一编码/错误信息
TheQi濈◣Luх墿
The鐗╄祫Fenrules祦Ma愯緭1024
返回:
0:
成功
The鎸佹湁Xi撳簱小于0:
失败
vi.
vii.TheJuan埆Bi勬湰撤销住院登记
intunRegister(char*zybm,char*err)
参数:
序号
参数
TheChenヤ笟Chenョ▼输入/输出
参数名
TheHeng笁鏂Gui墿Xian佸叕鍙?
是否可空
长度
The鍗曚竴閰嶉€?
XiFeng?
1
TheXid粯Luт笟鍔?
zybm
IN
住院登记唯一编码
N
32
2
err
OUT
错误信息
1024
返回:
0:
成功
小于0:
失败
viii.病人出院
intleave(char*zybm,char*cyrq,char*jbbm,char*err)
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
zybm
IN
住院登记唯一编码
N
32
2
Cyrq
IN
出院日期
N
10
3
Jbbm
IN
出院诊断疾病编码(ICD10),如果没有对照可以发中文名
N
20
4
err
OUT
错误信息
1024
返回:
0:
成功
小于0:
失败
ix.撤销出院
intunleave(char*zybm,char*err)
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
zybm
IN
住院登记唯一编码
N
32
2
err
OUT
错误信息
1024
返回:
0:
成功
小于0:
失败
x.费用明细录入
intimpItem(char*zybm,char*hisname,char*nhcode,char*nhname,char*lbbm,char*spec,char*dose,char*unit,char*num,char*price,char*je,char*date,char*mxbm)
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
zybm
IN
住院登记唯一编码
N
32
2
hisname
IN
医院定义的药品或项目名称
N
64
3
nhcode
IN
对应的农合编码
N
20
4
nhname
IN
对应的农合名称
N
64
5
lbbm
IN
费用类别编码
N
4
6
spec
IN
规格
N
32
7
dose
IN
剂型
N
16
8
unit
IN
单位
N
16
9
num
IN
数量
N
16
10
price
IN
单价
N
16
11
Je
IN
金额
N
16
12
Date
IN
费用划价日期
N
10
13
mxbm
OUT
费用明细唯一编码/错误信息
1024
返回:
0:
成功
小于0:
失败
说明:
对于没有对应的药品或诊疗项目,nhcode和nhname传入空字符串(“”)
xi.删除费用明细
intremoveItem(char*bm,int_type,char*err)
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
bm
IN
住院登记唯一编码或费用明细唯一编码
N
32
2
_type
IN
1—删除全部明细,2—删除指定明细
N
3
err
OUT
错误信息
1024
返回:
0:
成功
小于0:
失败
xii.结算
intexpense(int_type,char*bm,char*result)
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
_type
IN
19—门诊结算,21—住院结算,22—单病种
N
2
bm
IN
住院登记唯一编码
N
32
3
result
OUT
结算信息
1024
返回:
0:
成功
小于0:
失败
返回住院结算的数据结构:
总金额|可报费用|实际补偿金额|起付线|补偿比例|未转诊扣除|{大类类型1:
大类1金额:
大类1可报;大类类型2:
大类2金额:
大类2可报}|住院天数|单据号
如:
279|250|200.00|0|0|0|{10:
15:
15;2:
229:
200;9:
5:
5;1:
24:
24;12:
6:
6}|4|dbzyqdhszzrx08100001。
门诊结算的数据结构:
总金额|可报费用|实际补偿金额|账户内补偿|账户外补偿|{大类类型1:
大类1金额:
大类1可报;大类类型2:
大类2金额:
大类2可报}|单据号
注意:
只能结算一次。
单病种补偿是指特殊的住院补偿,单病种目录见附录,假如疾病编码对应正确,结算的时候类型也可以传入21。
xiii.预结算
intpreExpense(int_type,char*bm,char*result)
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
_type
IN
19—门诊结算,21—住院结算,22—单病种
N
2
bm
IN
住院登记唯一编码
N
32
3
result
OUT
结算信息。
1024
返回:
0:
成功
小于0:
失败
返回结算的数据结构:
总金额|可报费用|实际补偿金额|起付线|补偿比例|未转诊扣除|{大类类型1:
大类1金额:
大类1可报;大类类型2:
大类2金额:
大类2可报}|住院天数
如:
279|250|200.00|0|0|0|{10:
15:
15;2:
229:
200;9:
5:
5;1:
24:
24;12:
6:
6}|4
门诊结算的数据结构:
总金额|可报费用|实际补偿金额|账户内补偿|账户外补偿|{大类类型1:
大类1金额:
大类1可报;大类类型2:
大类2金额:
大类2可报}
xiv.获取结算信息
intgetExpenseInfo(int_type,char*bm,char*result);
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
_type
IN
19—门诊结算,21—住院结算,22—单病种
N
2
bm
IN
住院登记唯一编码(32位那个)。
N
32
3
result
OUT
结算信息。
1024
返回:
0:
成功
小于0:
失败
返回住院结算的数据结构:
总金额|可报费用|实际补偿金额|起付线|补偿比例|未转诊扣除|{大类类型1:
大类1金额:
大类1可报;大类类型2:
大类2金额:
大类2可报}|住院天数|单据号
如:
279|250|200.00|0|0|0|{10:
15:
15;2:
229:
200;9:
5:
5;1:
24:
24;12:
6:
6}|4|dbzyqdhszzrx08100001。
门诊结算的数据结构:
总金额|可报费用|实际补偿金额|账户内补偿|账户外补偿|{大类类型1:
大类1金额:
大类1可报;大类类型2:
大类2金额:
大类2可报}
xv.获取药品目录
intgetMedicine(char*date,char*result);
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
date
IN
日期,格式为”yyyy-mm-dd”,如2008-10-01。
Y
2
result
OUT
药品信息。
1048576
说明:
获取指定日期之后的药品目录,如果为空则获取全部药品目录。
注意如果某个药品被修改了,日期会更新为当前日期,所以获取最新药品目录的时候要考虑到有些以前已经下载过但是已经发生修改。
返回:
0:
成功
小于0:
失败
返回结构的数据结构:
编码1#名称1#剂型1##编码2#名称2#剂型2….如:
X10029#复方贝母氯化铵片#片剂##X10030#双扑口服液#口服液
注意:
药品之间用##隔开,药品信息目前只返回编码、名称和剂型,以后可能还会追加其它信息。
xvi.获取药品目录生成文件
intgetMedicine2(char*date,char*filename);
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
date
IN
日期,格式为”yyyy-mm-dd”,如2008-10-01。
Y
2
filename
IN
生成的文件的路径名称。
N
说明:
获取指定日期之后的药品目录,如果为空则获取全部药品目录。
返回:
0:
成功
小于0:
失败
产生的文件的格式:
每行是一条药品记录,格式是编码+tab键+名称,如果以后要追加其它信息,按这个格式加在后面。
xvii.获取诊疗项目目录
intgetClinicItem(char*date,char*result);
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
date
IN
日期,格式为”yyyy-mm-dd”,如2008-10-01。
Y
2
result
OUT
药品信息。
1048576
说明:
获取指定日期之后的诊疗项目目录,如果为空则获取全部诊疗项目目录。
注意如果某个项目被修改了,日期会更新为当前日期,所以获取最新项目目录的时候要考虑到有些以前已经下载过但是已经发生修改。
返回:
0:
成功
小于0:
失败
返回结构的数据结构:
编码1#名称1##编码2#名称2….如:
331512017#骨移植术##331513009#截指术
注意:
诊疗项目之间用##隔开,诊疗项目信息目前只返回编码和名称,以后可能还会追加其它信息。
xviii.获取诊疗项目目录生成文件
intgetClinicItem2(char*date,char*filename);
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
date
IN
日期,格式为”yyyy-mm-dd”,如2008-10-01。
Y
2
filename
IN
生成的文件的路径名称。
N
说明:
获取指定日期之后的诊疗项目目录,如果为空则获取全部诊疗项目目录。
返回:
0:
成功
小于0:
失败
产生的文件的格式:
每行是一条诊疗项目记录,格式是编码+tab键+名称,如果以后要追加其它信息,按这个格式加在后面。
xix.门诊登记
intregMz(char*mzh,char*grbm,char*jzrq,char*jbbm,char*ksbm,char*mxs,char*mzbm);
参数:
序号
参数
输入/输出
参数名
是否可空
长度
1
mzh
IN
门诊号。
类似于住院号那种。
Y
2
grbm
IN
个人编码,从家庭成员信息中获取
N
12
3
jzrq
IN
就诊日期,格式为yyyy-mm-dd
N
10
4
jbbm
IN
疾病编码(ICD10),如果没有对照可以发中文名
Y
20
5
ksbm
IN
科室编码,可以直接传中文
Y
6
6
mxs
IN
明细。
多个费用放到一块,用xml格式组织。
N
尽量大一些
7
mzbm
OUT
门诊登记唯一编码/错误信息
1024
返回:
0:
成功
小于0:
失败
门诊登记要求一次性把病人信息和相关的所有费用全部传过来。
费用明细的格式:
【医院定义的药品或项目名称】
【对应的农合编码】
【对应的农合名称】
【费用类别编码】
【规格】
【剂型】
【单位】
【数量】
【单价】
【