在见到医保提供的sei.dll文件之前,在网上查了一下,Perl可以通过Win32::API模块对dll文件进行调用。后来拿到了医保sei.dl文件,及医保接口文档,在接口文档里有这样的内容://创建地纬嵌入式接口对象,调用com组件int viOleobject sei                 sei =create Oleobject   //创建ole对象seiproxyvi= sei.connecttonewobject('sei3') //连接com组件if vi 0 then  messagebox('错误','创建地纬嵌入式接口sei对象失败!')  return end if那么,在Perl调用com组件时就应当使用Win32::OLE。这一段程序用Perl来写应该是这样:#!"D:\Strawberry\perl\bin\perl"use Win32::OLE;my $sei = CreateObject Win32::OLE 'sei3' or die $!;my $vi = $sei->connecttonewobject('sei3');if ($vi != 0){print "创建地纬嵌入式接口sei对象失败!\n";}else{print "创建地纬嵌入式接口sei对象成功!\n";}医保接口文档中的一段程序示例://无卡取参保人的基本信息 PB示例代码:sei.resetvar()sei.putvarstring('grbh','000000000000000001')sei.putvarstring('xm','测试')sei.putvarstring('yltclb','4')sei.putvarstring('sbjgbh','00000000000000000000')if sei.request_service('query_person_info')0 then     messagebox('调用无卡取信息服务失败',"错误信息:"+sei.get_errtext())     returnend if//获取服务执行成功后的返回值vrqlb  = sei.getvarstring('rqlb')vxm   = sei.getvarstring('xm')vzfbz  = sei.getvarstring('zfbz')vmzdbjbs = sei.getvarstring('mzdbjbs') //获取门诊大病登记的疾病编码用Perl来写应该是这样:#无卡取参保人的基本信息 Perl代码:$sei->resetvar();$sei->putvarstring('grbh','000000000000000001');$sei->putvarstring('xm','测试');$sei->putvarstring('yltclb','4');$r = $sei->putvarstring('sbjgbh','00000000000000000000');if ($sei->request_service('query_person_info') != 0){print "调用无卡取信息服务失败!\n"; }$vrqlb  = $sei->getvarstring('rqlb');$vxm   = $sei->getvarstring('xm');$vzfbz  = $sei->getvarstring('zfbz');$vmzdbjbs = $sei->getvarstring('mzdbjbs');print "$vrqlb $vxm $vzfbz $vmzdbjbs";在医保专线接通以后,使用Win32::OLE模块的程序运行正常,能够和医保服务器正常通信。
09-03 18:02
查看更多