武汉市民健康卡读写卡器接口规范.docx
《武汉市民健康卡读写卡器接口规范.docx》由会员分享,可在线阅读,更多相关《武汉市民健康卡读写卡器接口规范.docx(18页珍藏版)》请在冰豆网上搜索。
![武汉市民健康卡读写卡器接口规范.docx](https://file1.bdocx.com/fileroot1/2023-5/26/eb466698-e64e-4b78-ba60-8aad3d0a0169/eb466698-e64e-4b78-ba60-8aad3d0a01691.gif)
武汉市民健康卡读写卡器接口规范
武汉市居民健康卡接口规范
版本号
修改时间
修改说明
修改人
V1.0
邓磊
V1.2
☞增加写个人信息时加入结束指令的要求。
☞
李志民
V1.3
2015/6/11
新增DLL封装整体要求。
李志民
V1.4
2005/06/12
按卫生部数据规范,补齐门诊信息相关字段内容。
李志民
V1.5
2015/6/16
对PSAM卡的补充说明。
程序接口本身没有变化。
李志民
V1.6
2015/10/10
增加获取芯片序列号方法
的说明
李志民
1、DLL封装整体要求
☞本接口文档中所要求实现的接口函数统一封装在一个动态库中,名称统一为HealthyCarder.dll。
☞厂商所提供的HealthyCarder.dll如果需要依赖于其它动态库文件支持,则在开发HealthyCarder.dll时,必须通过动态调用(C/C++环境下为LoadLibrary)的方式使用DLL资源。
当HealthyCarder.dll发布实施时,与其相关的DLL要放在同一个目录下。
(说明:
由于最终的用卡环境可能涉及多个厂商的机具,为了避免各个厂商提供的驱动产生命名冲突,以及便于维护管理,集成商将每个厂商的驱动都单独放在一个目录中。
如果厂商的HealthyCarder.dll使用静态编译的方式调用DLL,那么在实际应用时,由于HealthyCarder.dll所在目录不在系统默认搜索范围之内,导致HealthyCarder.dll所依赖的DLL无法找到,上层应用调用HealthyCarder.dll产生失败。
)
2、读卡信息
intstdcallReadCardInfo(char*OutputData,char*ErrMsg)
出参:
卡的类别|规范版本号|发卡机构名称|发卡机构代码|发卡时间|卡号|安全码|发卡序列号|应用城市代码|芯片序列号
返回:
0成功非零失败
错误:
ErrMsg
注意:
芯片序列号为卡片出厂时的唯一标识,每个制卡商标识规则不一样。
该信息是由终端发出复位信号以后,IC卡以一串字节作为应答(即复位应答)的信息。
机具厂商在读取复位信息时必须按照ISO7816规范来处理。
下图为握琦居民健康卡复位信息示例:
3、读个人信息
intstdcallReadPeopleInfo(char*OutputData,char*ErrMsg)
出参:
姓名|性别|民族|出生日期|居民身份证号码|卡有效期|本人电话号码1|本人电话2|医疗费用支付方式1|医疗费用支付方式2|医疗费用支付方式3|地址类别1|地址1|地址类别2|地址2|联系人姓名1|联系人关系1|联系人电话号码1|联系人姓名2|联系人关系2|联系人电话号码2|联系人姓名3|联系人关系3|联系人电话3|文化程度代
码|婚姻状况代码|职业代码|证件类别|证件号码|健康档案号|新农合卡号
返回:
0成功非零失败
错误:
ErrMsg
4、读健康信息
intstdcallReadHealthInfo(char*OutputData,char*ErrMsg)
出参:
ABO血型代码|RH血型代码|哮喘标志|心脏病标志|心脑血管病标志|癫痫病标志|凝血紊乱标志|糖尿病标志|青光眼标志|透析标志|器官移植标志|器官缺失标志|可装卸的义肢标志|心脏起搏器标志|其他医学警示名称|精神病标志|过敏物质名称1|过敏反应1|过敏物质名称2|过敏反应2|过敏物质名称3|过敏反应3|免疫接种名称1|免疫接种时间1|免疫接种名称2|免疫接种时间2|免疫接种名称3|免疫接种时间3|免疫接种名称4|免疫接种时间4|免疫接种名称5|免疫接种时间5|免疫接种名称6|免疫接种时间6|免疫接种名称7|免疫接种时间7|免疫接种名称8|免疫接种时间8|免疫接种名称9|免疫接种时间9|免疫接种名称10|免疫接种时间10
返回:
0成功非零失败
错误:
ErrMsg
5、提取住院信息
intstdcallReadEEFileInfo(intRecordid,char*OutputData,char*ErrMsg)
入参:
Recordid记录号(有效取值1~3)
出参:
住院机构名称|住院机构组织机构代码|入院日期|住院患者住院次数|病案号|住
院患者入院科室名称|住院患者入院病情|住院患者医院感染名称|住院患者损伤和中毒外部原因|住院患者血清学检查项目代码1|住院患者血清学检查结果代码1|疾病诊断名称1|疾病诊断代码1|确诊日期1|住院患者诊断符合情况-详细描述1|住院患者诊断符合情况-代码1|住院患者疾病诊断类型-详细描述1|住院患者疾病诊断类型-代码1|住院患者治疗结果代码1|手术/操作-名称1|手术/操作-代码1|手术/操作-日期1|麻醉-方法1|麻醉-方法代码1|手术切口愈合等级代码1|住院患者血清学检查项目代码2|住院患者血清学检查结果代码2|疾病诊断名称2|疾病诊断代码2|确诊日期2|住院患者诊断符合情况-详细描述2|住院患者诊断符合情况-代码2|住院患者疾病诊断类型-详细描述2|住院患者疾病诊断类型-代码2|住院患者治疗结果代码2|手术/操作-名称2|手术/操作-代码2|手术/操作-日期2|麻醉-方法2|麻醉-方法代码2|手术切口愈合等级代码2|住院患者血清学检查项目代码3|住院患者血清学检查结果代码3|疾病诊断名称3|疾病诊断代码3|确诊日期3|住院患者诊断符合情况-详细描述3|住院患者诊断符合情况-代码3|住院患者疾病诊断类型-详细描述3|住院患者疾病诊断类型-代码3|住院患者治疗结果代码3|手术/操作-名称3|手术/操作-代码3|手术/操作-日期3|麻醉-方法3|麻醉-方法代码3|手术切口愈合等级代码3|住院期间输血品种代码1|住院期间输血量1|住院患者输血量计量单位1|住院期间输血品种代码2|住院期间输血量2|住院患者输血量计量单位2|住院期间输血品种代码3|住院期间输血量3|住院患者输血量计量单位3|住院期间输血品种代码4|住院期间输血量4|住院患者输血量计量单位4|住院患者抢救次数|住院患者抢救成功次数|出院日期|住院患者出院科室名称|住院患者住院天数|住院患者尸检标志|住院患者随诊标志|住院费用-医疗付款方式代码|住院费用-分类1|住院费用-分类代码1|住院费用-金额1|住院费用-分类2|住院费用-分类代码2|住院费用-金额2|住院费用-分类3|住院费用-分类代码3|住院费用
-金额3|住院费用-分类4|住院费用-分类代码4|住院费用-金额4|住院费用-分类5|住
院费用-分类代码5|住院费用-金额5|住院费用-分类6|住院费用-分类代码6|住院费用
-金额6|住院费用-分类7|住院费用-分类代码7|住院费用-金额7|住院费用-分类8|住院费用-分类代码8|住院费用-金额8|住院费用-分类9|住院费用-分类代码9|住院费用
-金额9|住院费用-分类10|住院费用-分类代码10|住院费用-金额10|住院费用-分类11|住院费用-分类代码11|住院费用-金额11|住院费用-分类12|住院费用-分类代码
12|住院费用-金额12|住院费用-分类13|住院费用-分类代码13|住院费用-金额13|住院费用-分类14|住院费用-分类代码14|住院费用-金额14|住院费用-分类15|住院费用-分类代码15|住院费用-金额15|住院费用-分类16|住院费用-分类代码16|住院费用-金额16|住院费用-分类17|住院费用-分类代码17|住院费用-金额17|住院费用-分类18|住院费用-分类代码18|住院费用-金额18|住院费用-分类19|住院费用-分类代码19|住院费用-金额19|住院费用-分类20|住院费用-分类代码20|住院费用-金额20|住院总费用|床位费|住院护理费|住院西药费|住院中药费|住院化验费|住院诊疗费|住院手术费|住院检查费|其他住院费用|(SAM卡背后印刷的20位号码,非12位的号码)
返回:
0成功非零失败
错误:
ErrMsg
6、写住院信息
intstdcallWriteEEFileInfo(char*InputData,char*ErrMsg)
写入说明:
默认写入第一条,如果第一条记录存在(索引为00),写入下一条,依
次类推。
如果3条记录都存在(写满),则覆盖第一条记录。
入参:
住院机构名称|住院机构组织机构代码|入院日期|住院患者住院次数|病案号|住院患者入院科室名称|住院患者入院病情|住院患者医院感染名称|住院患者损伤和中毒外部原因|住院患者血清学检查项目代码1|住院患者血清学检查结果代码1|疾病诊断名称1|疾病诊断代码1|确诊日期1|住院患者诊断符合情况-详细描述1|住院患者诊断符合情况-代码1|住院患者疾病诊断类型-详细描述1|住院患者疾病诊断类型-代码1|住院患者治疗结果代码1|手术/操作-名称1|手术/操作-代码1|手术/操作-日期1|麻醉-方法1|麻醉-方法代码1|手术切口愈合等级代码1|住院患者血清学检查项目代码2|住院患者血清学检查结果代码2|疾病诊断名称2|疾病诊断代码2|确诊日期2|住院患者诊断符合情况-详细描述2|住院患者诊断符合情况-代码2|住院患者疾病诊断类型-详细描述2|住院患者疾病诊断类型-代码2|住院患者治疗结果代码2|手术/操作-名称2|手术/操作-代码2|手术/操作-日期2|麻醉-方法2|麻醉-方法代码2|手术切口愈合等级代码2|住院患者血清学检查项目代码3|住院患者血清学检查结果代码3|疾病诊断名称3|疾病诊断代码3|确诊日期3|住院患者诊断符合情况-详细描述3|住院患者诊断符合情况-代码3|住院患者疾病诊断类型-详细描述3|住院患者疾病诊断类型-代码3|住院患者治疗结果代码3|手术/操作-名称3|手术/操作-代码3|手术/操作-日期3|麻醉-方法3|麻醉-方法代码3|手术切口愈合等级代码3|住院期间输血品种代码1|住院期间输血量1|住院患者输血量计量单位1|住院期间输血品种代码2|住院期间输血量2|住院患者输血量计量单位2|住院期间输血品种代码3|住院期间输血量3|住院患者输血量计量单位3|住院期间输血品种代码4|住院期间输血量4|住院患者输血量计量单位4|住院患者抢救次数|住院患者抢救成功次数|出院日期|住院患者出院科室
名称|住院患者住院天数|住院患者尸检标志|住院患者随诊标志|住院费用-医疗付款方
式代码|住院费用-分类1|住院费用-分类代码1|住院费用-金额1|住院费用-分类2|住院费用-分类代码2|住院费用-金额2|住院费用-分类3|住院费用-分类代码3|住院费用
-金额3|住院费用-分类4|住院费用-分类代码4|住院费用-金额4|住院费用-分类5|住院费用-分类代码5|住院费用-金额5|住院费用-分类6|住院费用-分类代码6|住院费用
-金额6|住院费用-分类7|住院费用-分类代码7|住院费用-金额7|住院费用-分类8|住院费用-分类代码8|住院费用-金额8|住院费用-分类9|住院费用-分类代码9|住院费用
-金额9|住院费用-分类10|住院费用-分类代码10|住院费用-金额10|住院费用-分类11|住院费用-分类代码11|住院费用-金额11|住院费用-分类12|住院费用-分类代码
12|住院费用-金额12|住院费用-分类13|住院费用-分类代码13|住院费用-金额13|住院费用-分类14|住院费用-分类代码14|住院费用-金额14|住院费用-分类15|住院费用-分类代码15|住院费用-金额15|住院费用-分类16|住院费用-分类代码16|住院费用-金额16|住院费用-分类17|住院费用-分类代码17|住院费用-金额17|住院费用-分类18|住院费用-分类代码18|住院费用-金额18|住院费用-分类19|住院费用-分类代码19|住院费用-金额19|住院费用-分类20|住院费用-分类代码20|住院费用-金额20|住院总费用|床位费|住院护理费|住院西药费|住院中药费|住院化验费|住院诊疗费|住院手术费|住院检查费|其他住院费用|
返回:
0成功非零失败
错误:
ErrMsg
7、提取门诊信息
intstdcallReadEDFileInfo(intRecordid,char*OutputData,char*ErrMsg)
入参:
intRecordid记录号(有效取值1~5)
出参:
就诊机构名称|就诊机构组织机构代码|就诊日期时间|门诊号|就医科室名称|医疗付款方式|症状名称1|症状代码1|诊断日期1|门诊诊断名称1|门诊诊断代码1|发病日期时间1|症状持续时间1|症状名称2|症状代码2|诊断日期2|门诊诊断名称2|门诊诊断代码2|发病日期时间2|症状持续时间2|症状名称3|症状代码3|诊断日期3|门诊诊断名称3|门诊诊断代码3|发病日期时间3|症状持续时间3|症状名称4|症状代码4|诊断日期4|门诊诊断名称4|门诊诊断代码4|发病日期时间4|症状持续时间4|症状名称5|症状代码5|诊断日期5|门诊诊断名称5|门诊诊断代码5|发病日期时间5|症状持续时间5|检查/检验项目名称1|检查/检验结果代码1|检查/检验定量结果1|检查/检验计量单位1|检查/检验项目代码1|检查/检验项目名称2|检查/检验结果代码2|检查/检验定量结果2|检查/检验计量单位2|检查/检验项目代码2|检查/检验项目名称3|检查/检验结果代码3|检查/检验定量结果3|检查/检验计量单位3|检查/检验项目代码3|检查/检验项目名称4|检查/检验结果代码4|检查/检验定量结果4|检查/检验计量单位4|检查/检验项目代码4|检查/检验项目名称5|检查/检验结果代码5|检查/检验定量结果5|检查/检验计量单位5|检查/检验项目代码5|检查/检验项目名称6|检查/检验结果代码6|检查/检验定量结果6|检查/检验计量单位6|检查/检验项目代码6|检查/检验项目名称7|检查/检验结果代码7|检查/检验定量结果7|检查/检验计量单位7|检查/检验项目代码7|检查/检验项目名称8|检查/检验结果代码8|检查/检验定量结果8|检查/检验计量单位8|检查/检验项目代码8|检查/检验项目名称9|检查/检验结果代码9|检查/检验定量结果9|检查/检验计量单位9|检查/检验项目代码9|检查/检验项目名称10|检查/检验结果代码10|检查/检验定量结果10|检查/检验计量单位10|检查/检验项目代码10|药物名称1|药物剂型代码1|用药天数1|药物使用频率1|药物使用剂量
单位1|药物使用次剂量1|药物使用总剂量1|药物使用途径代码1|药物名称2|药物剂
型代码2|用药天数2|药物使用频率2|药物使用剂量单位2|药物使用次剂量2|药物使用总剂量2|药物使用途径代码2|药物名称3|药物剂型代码3|用药天数3|药物使用频率3|药物使用剂量单位3|药物使用次剂量3|药物使用总剂量3|药物使用途径代码3|药物名称4|药物剂型代码4|用药天数4|药物使用频率4|药物使用剂量单位4|药物使用次剂量4|药物使用总剂量4|药物使用途径代码4|药物名称5|药物剂型代码5|用药天数5|药物使用频率5|药物使用剂量单位5|药物使用次剂量5|药物使用总剂量5|药物使用途径代码5|手术/操作名称1|手术/操作代码1|手术/操作日期1|手术/操作名称2|手术/操作代码2|手术/操作日期2|手术/操作名称3|手术/操作代码3|手术/操作日期3|门诊费用分类名称1|门诊费用分类代码1|门诊费用金额1|门诊费用分类名称2|门诊费用分类代码2|门诊费用金额2|门诊费用分类名称3|门诊费用分类代码3|门诊费用金额3|门诊费用分类名称4|门诊费用分类代码4|门诊费用金额4|门诊费用分类名称5|门诊费用分类代码5|门诊费用金额5|门诊费用分类名称6|门诊费用分类代码6|门诊费用金额6|门诊费用分类名称7|门诊费用分类代码7|门诊费用金额7|门诊费用分类名称8|门诊费用分类代码8|门诊费用金额8|门诊费用分类名称9|门诊费用分类代码9|门诊费用金额9|门诊费用分类名称10|门诊费用分类代码10|门诊费用金额10|PSAM卡号(SAM卡背后印刷的20位号码,非12位的号码)
返回:
0成功非零失败
错误:
ErrMsg
8、写门诊信息
intstdcallWriteEDFileInfo(char*InputData,char*ErrMsg)
写入说明:
默认写入第一条,如果第一条记录存在(索引为00),写入下一条,依
次类推。
如果5条记录都存在(写满),则覆盖第一条记录。
入参:
就诊机构名称|就诊机构组织机构代码|就诊日期时间|门诊号|就医科室名称|医疗付款方式|症状名称1|症状代码1|诊断日期1|门诊诊断名称1|门诊诊断代码1|发病日期时间1|症状持续时间1|症状名称2|症状代码2|诊断日期2|门诊诊断名称2|门诊诊断代码2|发病日期时间2|症状持续时间2|症状名称3|症状代码3|诊断日期3|门诊诊断名称3|门诊诊断代码3|发病日期时间3|症状持续时间3|症状名称4|症状代码4|诊断日期4|门诊诊断名称4|门诊诊断代码4|发病日期时间4|症状持续时间4|症状名称5|症状代码5|诊断日期5|门诊诊断名称5|门诊诊断代码5|发病日期时间5|症状持续时间5|检查/检验项目名称1|检查/检验结果代码1|检查/检验定量结果1|检查/检验计量单位1|检查/检验项目代码1|检查/检验项目名称2|检查/检验结果代码2|检查/检验定量结果2|检查/检验计量单位2|检查/检验项目代码2|检查/检验项目名称3|检查/检验结果代码3|检查/检验定量结果3|检查/检验计量单位3|检查/检验项目代码3|检查/检验项目名称4|检查/检验结果代码4|检查/检验定量结果4|检查/检验计量单位4|检查/检验项目代码4|检查/检验项目名称5|检查/检验结果代码5|检查/检验定量结果5|检查/检验计量单位5|检查/检验项目代码5|检查/检验项目名称6|检查/检验结果代码6|检查/检验定量结果6|检查/检验计量单位6|检查/检验项目代码6|检查/检验项目名称7|检查/检验结果代码7|检查/检验定量结果7|检查/检验计量单位7|检查/检验项目代码7|检查/检验项目名称8|检查/检验结果代码8|检查/检验定量结果8|检查/检验计量单位8|检查/检验项目代码8|检查/检验项目名称9|检查/检验结果代码9|检查/检验定量结果9|检查/检验计量单位9|检查/检验项目代码9|检查/检验项目名
称10|检查/检验结果代码10|检查/检验定量结果10|检查/检验计量单位10|检查/检
验项目代码10|药物名称1|药物剂型代码1|用药天数1|药物使用频率1|药物使用剂量单位1|药物使用次剂量1|药物使用总剂量1|药物使用途径代码1|药物名称2|药物剂型代码2|用药天数2|药物使用频率2|药物使用剂量单位2|药物使用次剂量2|药物使用总剂量2|药物使用途径代码2|药物名称3|药物剂型代码3|用药天数3|药物使用频率3|药物使用剂量单位3|药物使用次剂量3|药物使用总剂量3|药物使用途径代码3|药物名称4|药物剂型代码4|用药天数4|药物使用频率4|药物使用剂量单位4|药物使用次剂量4|药物使用总剂量4|药物使用途径代码4|药物名称5|药物剂型代码5|用药天数5|药物使用频率5|药物使用剂量单位5|药物使用次剂量5|药物使用总剂量5|药物使用途径代码5|手术/操作名称1|手术/操作代码1|手术/操作日期1|手术/操作名称2|手术/操作代码2|手术/操作日期2|手术/操作名称3|手术/操作代码3|手术/操作日期3|门诊费用分类名称1|门诊费用分类代码1|门诊费用金额1|门诊费用分类名称2|门诊费用分类代码2|门诊费用金额2|门诊费用分类名称3|门诊费用分类代码3|门诊费用金额3|门诊费用分类名称4|门诊费用分类代码4|门诊费用金额4|门诊费用分类名称5|门诊费用分类代码5|门诊费用金额5|门诊费用分类名称6|门诊费用分类代码6|门诊费用金额6|门诊费用分类名称7|门诊费用分类代码7|门诊费用金额7|门诊费用分类名称8|门诊费用分类代码8|门诊费用金额8|门诊费用分类名称9|门诊费用分类代码9|门诊费用金额9|门诊费用分类名称10|门诊费用分类代码10|门诊费用金额10|
返回:
0成功非零失败
错误:
ErrMsg
9、读设备识别码
intstdcallReadDevNum(char*OutputData,char*ErrMsg)
出参:
每个设备的唯一编号:
各机具提供商简称+序列号返回:
0成功非零失败
错误:
ErrMsg
10、读SAM卡号
intstdcallReadSamNum(char*OutputData,char*ErrMsg)出参:
SAM卡卡号。
(SAM卡背后印刷的20位号码,非12位的号码)返回:
0成功非零失败
错误:
ErrMsg
11、读取二代身份证信息
intstdcallReadCertCardInfos(constchar*pBmpFile,char*OutputData,char
*ErrMsg)
入参:
constchar*pBmpFile照片存储路径出参:
姓名|性别|民族|出生日期|户籍地址|身份证号|签发机关|截至有效期返回:
0成功非零失败
错误:
ErrMsg
12、持卡人基本信息写入(保留)
写入DDF1-EF06全部数据。
写入DDF1-EF05中的卡号、发卡时间。
发卡时间由参数传入,卡号为身份证号。
由于写个人信息涉及结束指令的执行,而目前由于机具类型及卡类型不明(每个项目、每个医疗机构的用卡环境都