医疗保险信息系统与HIS系统信息交换方案.docx
- 文档编号:28315322
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:116
- 大小:143.28KB
医疗保险信息系统与HIS系统信息交换方案.docx
《医疗保险信息系统与HIS系统信息交换方案.docx》由会员分享,可在线阅读,更多相关《医疗保险信息系统与HIS系统信息交换方案.docx(116页珍藏版)》请在冰豆网上搜索。
医疗保险信息系统与HIS系统信息交换方案
医疗保险信息系统与HIS系统
信息交换方案
第一章概述
一.1武汉市医疗保险信息系统简介
一.1.1应用软件现状
目前,各定点医院(以下简称定点医疗机构)已有各自的信息管理系统,定点医院利用已有的社保网于医保中心数据库进行数据交换。
一.1.2系统建设目标
实现医疗保险的统一管理,同时更容易适应政策的变化。
一.1.3系统总体规划
网络系统:
市内各定点医院通过武汉市社保网与医保中心专用应用服务器实现实时联接及交换数据功能;市外定点医院可通过ADSL或电话拨号与医保中心端进行联接,实现实时业务处理。
定点医院端系统:
HIS系统统一调用接口动态链接库,实现医保待遇实时计算。
一.2信息交换方案概述
医疗保险DLL系统(包含HNBridge.dll和Cipher.dll、HNBridge.dll和Cipher.dll的PowerBuilder调用实例)是由广州华南资讯科技有限公司研发,为HIS系统提供医保系统的功能调用接口。
该系统HNBridge.dll和Cipher.dll是为HIS系统提供的调用动态链接库,是采用VC++6.0MFC编程实现的;医院HIS只需调用HNBridge.dll,不需调用Cipher.dll,Cipher.dll是HNBridge.dll的支持库。
该系统的全部源代码及其文档属广州华南资讯科技有限公司所有。
本文针对医院系统如何与医保系统交互进行介绍,主要是DLL动态链接库的功能介绍、调用说明。
本文不对医保中心端的实现进行描述。
第二章DLL接口函数
二.1使用说明
二.1.1运行环境
[环境描述]
●Windows2000/XP
●支持PowerBuilder、VisualBasic、Delphi
●MSXML3以上版本的MSXML解析器
[安装]
对于操作系统中没有没有MSXML3以上版本的MSXML解析器的需安装MSXML3以上版本。
二.2HNBridge.dll的函数说明
二.2.1Initialize
[功能定义]
HRESULTWINAPIInitialize(LPTSTRsvrIP,USHORTsvrPort,intSndBufSize,intRecvBufSize)
[功能描述]
在调用DLL前,初始化调用环境变量。
整个调用工程只需调用该函数一次即可。
[参数说明]
LPTSTRsvrIP:
代理服务器的IP地址。
USHORTsvrPort:
代理服务器的监听端口。
SndBufSize:
socket发送缓存大小。
RecvBufSize:
socket接收缓存大小。
[返回值]
HRESULT1表示成功;-11表示系统初始化失败。
二.2.2Release(暂时不用)
[功能定义]
HRESULTWINAPIRelease()
[功能描述]
在完成全部DLL提供的功能函数后,调用该函数对DLL进行资源释放。
[参数说明]
无
[返回值]
HRESULT1表示成功;-12表示系统资源释放操作失败。
二.2.3CreateInstace
[功能定义]
HANDLEWINAPICreateInstace()
[功能描述]
创建一个功能调用实例。
在进行一个新的功能调用前必须执行该操作,以取得调用的处理句柄。
返回的句柄将成为其他功能调用的入口参数。
[参数说明]
无
[返回值]
HANDLE大于0的LONG型值表示创建成功;-13表示创建失败。
二.2.4SetParam
[功能定义]
HRESULTWINAPISetParam(HANDLEpDataHandle,LPCTSTRparamName,LPCTSTRparamValue)
[功能描述]
提供功能调用的参数组,比如功能号以及其他功能的调用参数。
(功能号的paramName规定为“FN”)
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
LPCTSTRparamName:
参数名称。
LPCTSTRparamValue:
参数值。
[返回值]
HRESULT成功返回1;失败返回-14,详细的错误信息可以通过调用GetSysMessage()取得。
二.2.5InsertDataSet
[功能定义]
HRESULTWINAPIInsertDataSet(HANDLEpDataHandle)
[功能描述]
插入一个数据集,为装入数据作准备。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
[返回值]
HRESULT成功返回1;失败返回-15,详细的错误信息可以通过调用GetSysMessage()取得。
二.2.6InsertRow
[功能定义]
HRESULTWINAPIInsertRow(HANDLEpDataHandle);
[功能描述]
插入一行,为装入一行数据作准备。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
[返回值]
HRESULT成功返回1;失败返回-16,详细的错误信息可以通过调用GetSysMessage()取得。
二.2.7SetField
[功能定义]
HRESULTWINAPISetField(HANDLEpDataHandle,LPCTSTRfieldName,LPCTSTRfieldValue)
[功能描述]
在当前行插入一列。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
LPCTSTRfieldName:
列名称。
LPCTSTRfieldValue:
列值。
[返回值]
HRESULT成功返回1;失败返回-17,详细的错误信息可以通过调用GetSysMessage()取得
二.2.8EndRow
[功能定义]
HRESULTWINAPIEndRow(HANDLEpDataHandle,LongrowID)
[功能描述]
结束当前行,把当前行插入到当前的数据集中。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
LongrowID:
赋予当前行的行号。
[返回值]
HRESULT成功返回1;失败返回-18,详细的错误信息可以通过调用GetSysMessage()取得。
二.2.9EndDataSet
[功能定义]
HRESULTWINAPIEndDataSet(HANDLEpDataHandle,LPCTSTRname)
[功能描述]
结束当前数据集,把当前数据集插入到数据包中。
(数据集名称规定具体请参考第三章的各功能规定)
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建
LPCTSTRname:
赋予当前数据集的名字。
[返回值]
HRESULT成功返回1;失败返回-19,详细的错误信息可以通过调用GetSysMessage()取得。
二.2.10Run
[功能定义]
HRESULTWINAPIRun(HANDLEpDataHandle);
[功能描述]
运行调用实例。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
[返回值]
HRESULT大于0表示成功,-20表示调用中DLL本身发生异常,详细的错误信息也可以通过调用GetSysMessage()取得。
注意:
(1)服务端发生异常但DLL本身正常执行时HRESULT大于0;
(2)要获取服务端返回的返回值(FHZ)和返回信息(MSG)需通过下面的GetParam(HANDLEpDataHandle,LPCTSTRparamName,LPTSTRParamValue,UINTnMaxValueLenth)获取参数名称(paramName)为“FHZ”和参数名称(paramName)为“MSG”的参数值得到的,而不是通过调用GetSysMessage()取得,GetSysMessage()只用来获取DLL本身发生的异常。
二.2.11GetParam
[功能定义]
HRESULTWINAPIGetParam(HANDLEpDataHandle,LPCTSTRparamName,LPTSTRParamValue,UINTnMaxValueLenth)
[功能描述]
该接口函数用于取返回参数。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
LPCTSTRparamName:
返回变量的参数名称。
LPTSTRParamValue:
保存返回值的变量。
UINTnMaxValueLenth:
变量ParamValue的分配内存字节数。
[返回值]
HRESULT1表示执行成功;-21表示执行异常,详细的错误信息可以通过调用GetSysMessage()取得。
二.2.12LocateDataSet
[功能定义]
HRESULTWINAPILocateDataSet(HANDLEpDataHandle,LPCTSTRname)
[功能描述]
定位返回的数据集。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
LPCTSTRname:
要定位的数据集的名称。
[返回值]
HRESULT1表示执行成功;-22表示执行异常,详细的错误信息可以通过调用GetSysMessage()取得。
二.2.13GetRowSize
[功能定义]
HRESULTWINAPIGetRowSize(HANDLEpDataHandle)
[功能描述]
该接口函数用于取当前数据集的数据行数。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
[返回值]
HRESULT当前数据集的数据行数,大于或等于0表示执行成功;-23表示执行异常,详细的错误信息可以通过调用GetSysMessage()取得。
二.2.14NextRow
[功能定义]
HRESULTWINAPINextRow(HANDLEpDataHandle)
[功能描述]
将当前数据集的指针移到下一行。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
[返回值]
HRESULT下一行的行号,大于或等于0表示执行成功表示执行成功;-24表示执行异常,详细的错误信息可以通过调用GetSysMessage()取得。
二.2.15GetCurrentRow
[功能定义]
HRESULTWINAPIGetCurrentRow(HANDLEpDataHandle)
[功能描述]
得到当前行的实际行号。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
[返回值]
HRESULT当前行的实际行号,大于0表示成功,-25表示调用中发生异常,详细的错误信息也可以通过调用GetSysMessage()取得。
二.2.16GetColSize
HRESULTWINAPIGetColSize(HANDLEpDataHandle)
[功能描述]
该接口函数用于取当前数据集的数据列数。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
[返回值]
HRESULT大于0表示成功,此时HRESULT的值即列数,-26表示调用中发生异常,
详细的错误信息也可以通过调用GetSysMessage()取得。
二.2.17GetFieldValue
[功能定义]
HRESULTWINAPIGetFieldValue(HANDLEpDataHandle,LPCTSTRname,LPTSTRvalue,UINTnMaxValueLenth)
[功能描述]
得到当前行的指定列的值。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
LPCTSTRname:
待取数据的列名。
LPTSTRvalue:
保存列值的变量。
UINTnMaxValueLenth:
为保存列值的变量分配的内存字节数。
[返回值]
HRESULT大于0表示成功,-27表示调用中发生异常,详细的错误信息也可以通过调用GetSysMessage()取得。
二.2.18DestroyInstance
[功能定义]
HRESULTWINAPIDestroyInstance(HANDLEpDataHandle)
[功能描述]
释放功能函数调用句柄。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
[返回值]
HRESULT成功返回1;-31表示调用中发生异常,详细的错误信息可以通过调用GetSysMessage()取得。
二.2.19GetSysMessage
[功能定义]
HRESULTWINAPIGetSysMessage(HANDLEpDataHandle,LPTSTRpMessage,UINTnMaxMessage)
[功能描述]
获取详细的系统信息。
通过该函数可以获取功能调用的返回信息;如果系统发生异常,则返回最后一次错误的出错信息。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
LPTSTRpMessage:
保存系统信息的变量。
UINTnMaxMessage:
变量pMessage的分配内存字节数。
[返回值]
HRESULT成功返回1;否则,返回-32表示执行失败。
二.2.20EncryptWithCipher
[功能定义]
HRESULTWINAPIEncryptWithCipher(HANDLEpDataHandle,LPCTSTRPlainData,LPCTSTREncryptedData,UINTnMaxValueLenth)
[功能描述]
用于加密数据的函数。
被加密的数据不能超过16字符长,不允许为空串(即被加密的数据的长度应大于0小于或等于16字节),返回的密文为32位长的16进制字符串,比如“7F14F8B98D140CA9E3315C4390CF9727”。
[参数说明]
HANDLEpDataHandle:
功能调用的处理句柄,由接口函数CreateInstace()创建。
LPTSTRPlainData:
被加密的数据,被加密的数据不能超过16字符长,不允许为空串(即被加密的数据的长度应大于0小于或等于16字节)。
LPTSTREncryptedData:
加密得到的密文,密文为32位长的16进制字符串。
UINTnMaxMessage:
变量EncryptedData分配内存字节数。
[返回值]
HRESULT成功返回1;否则,返回-57表示执行失败。
二.3DLL接口函数调用顺序
1、调用Initialize()接口函数初始化系统环境变量。
该函数只在系统调用前,调用一次即可;除非系统的操作员变更。
2、系统功能调用
1)调用CreateInstace()创建调用处理句柄,以后所有针对该调用的全部操作均将由该操作句柄所指向的处理模块处理。
2)循环调用SetParam()传入所有单项数据。
3)如果需要传入数据集时,先调用InsertDataSet()创建一个数据集,再调用InsertRow()创建一行,然后循环调用SetField()将当前行的列插入,然后调用EndRow()将当前行插入当前数据集,类似地循环创建行和赋列值并将行插入当前数据集,当前数据集的行插入完后调用EndDataSet()结束当前行,如果有多个数据集,则再类似地循环处理。
4)当通过步骤2)、3)将全部功能函数所需的全部参数后,即可调用Run()接口函数,用以调用对应的功能。
调用Run()完成后,要获取服务端返回的返回值(FHZ)和返回信息(MSG),请使用getParam()从返回参数中获取,其对应的参数名分别是“FHZ”和“MSG”。
5)循环调用用getParam()获取返回的单项数据。
6)对于返回的响应数据中有数据集的,先调用LocateDateSet()定位到目标数据集,此时指针指向数据集的第一行,再调用GetRowSize()取到对应数据集的数据行数,然后根据行数开始循环访问所有的行,先调用GetColSize()取到当前行的列数,再循环调用GetFieldValue()获取当前行的各列值,取完当前行的列值后调用NextRow()定位到下一行,然后调用GetColSize()取到当前行的列数,再循环调用GetFieldValue()获取当前行的各列值,类似地去循环访问完数据集的所有行。
在排序查询等情况下如果需要本行在数据库返回的结果集中的实际行号调用GetCurrentRow()即可获得实际行号。
7)取完响应数据后调用DestroyInstance()销毁实例。
8)当完成全部系统调用后,调用Release()接口函数释放DLL占用的资源。
9)以上函数调用过程中如果调用的返回值HRESULT的值小于0,则DLL本身发生了异常,此时可以调用GetSysMessage()获取异常信息。
10)另外,登录时需传入加密了的登录口令(即PWD参数的值是口令的密文),登录口令的密文可通过调用EncryptWithCipher函数获得一个32位长的16进制字符串形式的密文。
二.4程序中接口函数的定义
二.4.1DLL接口函数在PowerBuilder中声明为全局函数
FUNCTIONLongInitialize(stringsvrIP,LongsvrPort,intSndBufSize,intRecvBufSize)LIBRARY"HNBridge.dll"
FUNCTIONLongRelease()LIBRARY"HNBridge.dll"
FUNCTIONLongCreateInstace()LIBRARY"HNBridge.dll"
FUNCTIONLongSetParam(LongpDataHandle,StringparamName,StringparamValue)LIBRARY"HNBridge.dll"
FUNCTIONLongInsertDataSet(LongpDataHandle)LIBRARY"HNBridge.dll"
FUNCTIONLongInsertRow(LongpDataHandle)LIBRARY"HNBridge.dll"
FUNCTIONLongSetField(LongpDataHandle,StringfieldName,StringfieldValue)LIBRARY"HNBridge.dll"
FUNCTIONLongEndRow(LongpDataHandle,LongrowID)LIBRARY"HNBridge.dll"
FUNCTIONLongEndDataSet(LongpDataHandle,Stringname)LIBRARY"HNBridge.dll"
FUNCTIONLongRun(LongpDataHandle)LIBRARY"HNBridge.dll"
FUNCTIONLongGetParam(LongpDataHandle,StringparamName,REFStringparamValue,UINTnMaxValueLenth)LIBRARY"HNBridge.dll"
FUNCTIONLongLocateDataSet(LongpDataHandle,Stringname)LIBRARY"HNBridge.dll"
FUNCTIONLongGetRowSize(LongpDataHandle)LIBRARY"HNBridge.dll"
FUNCTIONLongGetColSize(LongpDataHandle)LIBRARY"HNBridge.dll"
FUNCTIONLongNextRow(LongpDataHandle)LIBRARY"HNBridge.dll"
FUNCTIONLongGetCurrentRow(LongpDataHandle)LIBRARY"HNBridge.dll"
FUNCTIONLongGetFieldValue(LongpDataHandle,Stringname,REFStringvalue,UINTnMaxValueLenth)LIBRARY"HNBridge.dll"
FUNCTIONLongDestroyInstance(LongpDataHandle)LIBRARY"HNBridge.dll"
FUNCTIONLongGetSysMessage(LongpDataHandle,REFStringMessage,UintnMaxMessage)LIBRARY"HNBridge.dll"
FUNCTIONLongEncryptWithCipher(longpDataHandle,stringPlainData,REFstringEncryptedData,ULongnMaxValueLenth)LIBRARY"HNBridge.dll"
二.4.2HNBridge.dll调用示例
示例一:
登录
//调用EncryptWithCipher()加密口令的示例(暂时用明文)
Stringls_encpwd=Space(32)
//HnHisDll.EncryptWithCipher(ll_handle,"a",ls_encpwd,32)//对口令加密得到密文ls_encpwd
longll_rtn=-1
Stringls_yybh='1000'
Stringls_user=’rmyy’
//创建调用实例
ll_rtn=HnHisDll.Initia
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 医疗保险 信息系统 HIS 系统 信息 交换 方案