社保卡信息读取
? ? ? 近年來,來隨著醫(yī)療智能自助終端的普及和發(fā)展,無人值守的自助終端實現(xiàn)了患者的自主預(yù)約,掛號,報告查詢等業(yè)務(wù)。不僅方便了患者的就診,提升了患者滿意度。還降低了醫(yī)院在預(yù)約,掛號,報告打印,查詢等環(huán)節(jié)的人員投入提高了工作效率。
? ? ? ?社保卡閱讀器是醫(yī)療智能自助終端上要實現(xiàn)患者自主預(yù)約,掛號,報告查詢等業(yè)務(wù)的重要信息采集設(shè)備。除此之外,市民可以持社保卡辦理就醫(yī)購藥、醫(yī)保結(jié)算、住院就醫(yī)等功能。簡單來說就是社保卡不是醫(yī)保卡,但可以當(dāng)醫(yī)保卡使用。社保卡是社會保障制度的進步!它包括的內(nèi)容很多:如醫(yī)療保險,養(yǎng)老保險,失業(yè)保險,生育保險,工傷保險等等,除此之外還有一定的金融功能。
? ? ??社保卡讀卡器是在符合勞動和社會保障部制定的《社會保障(個人)卡讀寫器規(guī)范》,在設(shè)計社保卡讀卡器或者是嵌入在自助終端設(shè)備中的社保卡讀卡模塊,需要滿足《社會保障(個人)卡讀寫器規(guī)范》要求的同時還是根據(jù)實際應(yīng)用場景對設(shè)備通信接口進行靈活擴展。如有些自助終端設(shè)備是Android、linux系統(tǒng)。這就要求社保卡讀卡器廠商能提供對應(yīng)的驅(qū)動和應(yīng)用程序開發(fā)的API接口函數(shù)。
? ? ?這里我們以NTS-L7-2IN1這款社保卡讀卡器作為開發(fā)演示,在windows操作系統(tǒng)中,采用C#開發(fā)語言對社保卡信息讀取。首先,我們要了解社保卡讀卡器的功能和結(jié)構(gòu),簡單的方式就是讀一下產(chǎn)品介紹。
?L7-2IN1擁有一個符合ISO7816協(xié)議標(biāo)準(zhǔn)的接觸式智能卡卡座支持ISO14443A、B協(xié)議非接觸式智能卡,提供多種操作系統(tǒng)二次開發(fā)API接口。L7-2IN1雙界面智能卡讀寫器內(nèi)置2個SAM卡座,可以對設(shè)備進行身份安全確認(rèn),支持社保卡閱讀。通過RS232接口或USB口實現(xiàn)同PC機及相關(guān)設(shè)備的連接。USB采用無驅(qū)技術(shù),可方便用戶的安裝使用,支持多卡操作可用于安全發(fā)卡和安全要求較高的領(lǐng)域需要。隨機提供各種平臺的驅(qū)動開發(fā)包,附帶的演示程序?qū)崿F(xiàn)訪問射頻卡的全部功能,并帶有自動測卡操作。
? L7-2IN1型智能卡讀寫器是開發(fā)IC卡相關(guān)產(chǎn)品及系統(tǒng)集成必備的前端處理設(shè)備,其豐富、完善的接口函數(shù),可方便地應(yīng)用于工商、電信、郵政、稅務(wù)、銀行、保險、醫(yī)療、會議簽到、網(wǎng)吧管理、加油站、停車場等各種收費、儲值、查詢等智能卡管理應(yīng)用系統(tǒng)中。
?符合ISO7816協(xié)議,還有兩個PSAM卡座,硬件上是滿足了。
接下來,我們根據(jù)社保卡讀卡器提供的API進行開發(fā),測試。
?? ?//社保卡結(jié)構(gòu) 里面存放公開信息
??
/**
?? ??? ? * 7816通道獲取社保卡號
?? ??? ? * @param nDeviceHandle
?? ??? ? * @param psttSocialSecurityCard 社保卡信息結(jié)構(gòu)體指針
?? ??? ? * @return true = 成功
?? ??? ? */
?? ??? ?[DllImport("LotusCardDriver.dll", EntryPoint = "LotusCardGetSocialSecurityInfoBy7816", SetLastError = true,
?? ??? ??? ? CharSet = CharSet.Auto, ExactSpelling = false,
?? ??? ??? ? CallingConvention = CallingConvention.StdCall)]?
?
bResult = CLotusCardDriver.LotusCardGetSocialSecurityInfoBy7816(nHandle, ref sttSocialSecurityCard);if(bResult!=1){AddLog("獲取社保卡信息失敗!");return;}AddLog("執(zhí)行LotusCardGetSocialSecurityInfoBy7816成功!");AddLog("社保卡號:"+ Encoding.UTF8.GetString(sttSocialSecurityCard.szCardNo));AddLog("社保號:"+ Encoding.UTF8.GetString(sttSocialSecurityCard.szSSCNo));AddLog("姓名:"+ Encoding.GetEncoding("GB2312").GetString(sttSocialSecurityCard.szName));strTmp = Encoding.UTF8.GetString(sttSocialSecurityCard.szSex).Trim();if("1".Equals(strTmp.Substring(0,1))){AddLog("性別:男");}else{AddLog("性別:女");}AddLog("民族:"+ Encoding.GetEncoding("GB2312").GetString(sttSocialSecurityCard.szNation));AddLog("發(fā)卡日期:"+ Encoding.UTF8.GetString(sttSocialSecurityCard.szSignedDate));AddLog("到期日:"+ Encoding.UTF8.GetString(sttSocialSecurityCard.szValidityEndDate));}讀卡效果如下:
? ? ? ?這里僅僅完成了對社保卡信息的讀取,由于機器里面沒有插入PSAM卡,這個PSAM卡需要申請。因此,沒有做進一步的PSAM卡安全信息交互,沒有做交易和扣款的開發(fā)測試。讀取社保卡信息的C#范例源碼以上傳資源中心。
總結(jié)
- 上一篇: 基于同步坐标变换的谐波电流检测
- 下一篇: HDFS 细粒度锁优化,FusionIn