李春林,劉建輝,周根鴻,張文體
利用二代身份證讀卡技術快速建立患者主索引
李春林,劉建輝,周根鴻,張文體
目的:探討利用身份證讀卡技術,快速建立患者主索引。方法:利用二代身份證讀卡器實現(xiàn)對身份證內信息的讀取,通過編寫接口程序,將患者的基本信息寫入數(shù)據(jù)庫。結果:掛號處采集患者信息時做到了數(shù)據(jù)項目采集全面、準確、快速,減少了排隊現(xiàn)象,提高了建立患者主索引的采集效率及準確率。結論:采用二代身份證讀卡技術,有利于快速建立患者主索引。
二代身份證;射頻識別;醫(yī)院信息系統(tǒng)
患者來醫(yī)院就診,對其基本信息的采集必不可少。掛號時需要填寫患者的相關項目信息,為后續(xù)科室提供基本數(shù)據(jù)準備。但由于我院醫(yī)院信息系統(tǒng)掛號時需要在錄入界面上逐項錄入患者的相關項目信息,加上操作員操作熟練程度不夠或者患者提供信息時表述不準確等原因,登記患者基本信息時存在錄入時間長、錄入不完整、出錯率高等問題,經(jīng)常出現(xiàn)錄錯患者姓名、出生日期、身份證號和地址等現(xiàn)象。在辦理醫(yī)保、新農(nóng)合、保險理賠等業(yè)務過程中,逐項錄入患者信息給記賬、數(shù)據(jù)上傳、報銷帶來很多問題,同時也給患者和醫(yī)院都帶來很多麻煩,甚至造成一些不必要的醫(yī)療糾紛。身份證作為公民的法定證件,具有覆蓋范圍廣、持有使用率高、個人信息記錄準確的特點。患者主索引的建立在醫(yī)院信息系統(tǒng)中是個重要環(huán)節(jié)。如果在醫(yī)院的就診掛號環(huán)節(jié)中通過使用身份證讀卡器讀取身份證中的內容,寫入醫(yī)院后臺數(shù)據(jù)庫,從而為患者建立主索引,既能避免差錯,又能做到快速準確,節(jié)省患者排隊等待時間。隨著軍隊數(shù)字化衛(wèi)勤和數(shù)字化醫(yī)院建設的推進,研究更適合現(xiàn)代化醫(yī)院管理需要的信息技術顯得非常重要[1-2]。
1.1 身份證讀卡器原理
身份證讀卡技術主要是通過射頻識別(radio frequency identification,RFID)技術來實現(xiàn)的。RFID技術利用無線射頻方式在閱讀器和射頻卡之間進行非接觸雙向數(shù)據(jù)傳輸,以達到目標志別和數(shù)據(jù)交換的目的。與傳統(tǒng)的條形碼、磁卡及IC卡相比,射頻卡具有非接觸、閱讀速度快、無磨損、不受環(huán)境影響、壽命長、便于使用的特點,并具有防沖突功能,能同時處理多張卡片[3]。最基本的RFID系統(tǒng)由閱讀器、電子標簽(即射頻卡)和天線3部分組成。系統(tǒng)的基本工作原理是:閱讀器通過發(fā)射天線發(fā)送一定頻率的射頻信號,當射頻卡進入發(fā)射天線工作區(qū)域時產(chǎn)生感應電流,射頻卡獲得能量被激活;射頻卡將自身編碼等信息通過卡內置發(fā)送天線發(fā)送出去;系統(tǒng)接收天線接收到從射頻卡發(fā)送來的載波信號,經(jīng)天線調節(jié)器傳送到閱讀器,閱讀器對接收的信號進行解調和解碼,然后送到后臺主系統(tǒng)進行相關處理。二代身份證使用非接觸式IC卡芯片作為存儲器。芯片存儲容量大,寫入的信息可劃分安全等級,分區(qū)存儲,按照管理需要授權讀寫,也可以將變動信息(如住址變動)追加寫入。芯片使用特定的邏輯加密算法,芯片和電路線圈在證卡內封裝,能夠保證證件在各種環(huán)境下正常使用,壽命在10 a以上,被公認為21世紀十大重要技術之一[4]。其正常閱讀距離不小于5 cm,平均無故障時間不小于5 000 h[5]。我國規(guī)定,居民身份證登記的項目包括:姓名、性別、民族、出生日期、常住戶口所在地住址、公民身份證號碼、本人相片、指紋信息、證件的有效期和簽發(fā)機關等10項信息(參見《中華人民共和國居民身份證法第三條》)。
1.2 二代身份證的基本數(shù)據(jù)格式
二代身份證號碼從每位公民出生到死亡都是唯一不變的,不會因戶口遷移、工作變更等原因而發(fā)生變化。身份證號碼完全可以作為醫(yī)院就醫(yī)卡、醫(yī)療保險卡的信息基礎,從而避免“一人多號,一人多卡”現(xiàn)象的發(fā)生[6]。公安部已經(jīng)嚴格制定了二代身份證的信息存儲格式[7],見表1。
表1 二代身份證數(shù)據(jù)格式
對于醫(yī)院來說,利用上述內容建立患者的主索引信息完全可滿足要求。
2.1 程序編寫
我院二代身份證讀卡系統(tǒng)由二代身份證讀卡器和接口軟件組成。讀卡器負責讀取二代身份證中的信息,接口軟件負責將讀取的信息保存到“軍衛(wèi)一號”系統(tǒng)中。接口軟件是根據(jù)醫(yī)院“軍衛(wèi)一號”系統(tǒng)專門設計開發(fā)的。
2.2 硬件準備
目前,市場上有非常多的身份證讀卡器產(chǎn)品,我們選取某公司生產(chǎn)的DAQ-A16D作為我們本研究的使用產(chǎn)品。
2.3 連接設備
將DAQ-A16D讀卡器接入前端計算機USB接口上,安裝有關驅動。利用PowerBuilder 9.0作為接口程序開發(fā)工具,在接口程序中調用有關動態(tài)API函數(shù)。
2.4 動態(tài)庫函數(shù)應用
購買產(chǎn)品時一般都提供了免費的軟件開發(fā)工具包(software development kit,SDK)(二次開發(fā)工具包)。SDK包含下列動態(tài)庫文件 Syn_IDCardRead.dll、Syn_IDCardRead.lib、Syn_IDCardRead.h、sdtapi.dll、WltRS.dll。動態(tài)庫SynIDCardAPI.Dll中提供了二次開發(fā)的API接口函數(shù)。
2.4.1 最大通信字節(jié)數(shù)設定
通過函數(shù)Syn_SetMaxRFByte實現(xiàn),參數(shù)說明:iPort[in]整數(shù),表示端口號;ucByte[in]無符號字符,24-255,表示射頻適配器最大通信字節(jié)數(shù);iIfOpen [in]整數(shù),非0表示在API函數(shù)內部包含了打開端口和關閉端口函數(shù),0表示在API函數(shù)內部不包含打開端口和關閉端口函數(shù)。返回值意義:0表示成功;返回值為其他表示失敗。
2.4.2 判斷找卡是否成功
通過函數(shù)Syn_StartFindIDCard實現(xiàn),參數(shù)說明:iPort[in]整數(shù),表示端口號。pucIIN[out]無符號字符指針,指向讀到的IIN。iIfOpen[in]整數(shù)。返回值意義:0表示找卡成功;0x80表示找卡失敗。
2.4.3 判斷選卡是否成功
通過函數(shù)Syn_SelectIDCard實現(xiàn),參數(shù)說明:i-Port[in]整數(shù),表示端口號。pucSN[out]無符號字符指針,指向讀到的SN。iIfOpen[in]整數(shù)。返回值意義:0表示選卡成功;0x81表示選卡失敗。
2.4.4 判斷端口是否打開成功
通過函數(shù)Syn_OpenPort實現(xiàn),參數(shù)說明:iPort [in]整數(shù),表示端口號。返回值意義:0表示打開端口成功;0x01表示打開端口失敗或端口號不合法。
2.4.5 判斷端口是否關閉成功
通過函數(shù)Syn_ClosePort實現(xiàn),參數(shù)說明:iPort [in]整數(shù),表示端口號。返回值意義:00表示關閉端口成功;0x01表示端口號不合法。
2.4.6 讀卡內信息至結構體
通過函數(shù)Syn_ReadMsg實現(xiàn),參數(shù)說明:iPort [in]整數(shù),表示端口號。iIfOpen[in]整數(shù),pIDCardData[out]IDCardData類型讀出的數(shù)據(jù)。返回值意義:0表示成功;返回值為其他值表示錯誤。
2.5 具體編程實現(xiàn)(僅提供關鍵代碼)
2.5.1 函數(shù)調用聲明
函數(shù)使用前都要進行聲明,才能使用里面的功能。如:
function int Syn_SetMaxRFByte(int iPort,int ucByte,int bIfOpen)library"SynIDCardAPI.Dll"
function int Syn_OpenPort(int iPort)library" SynIDCardAPI.Dll"
……
2.5.2 結構體聲明
定義一個與身份證信息相一致的結構體。
typedef struct tagIDCardData{
char Name[32];//姓名
char Sex[4];//性別
char Nation[6];//民族
char Born[18];//出生日期
char Address[72];//住址
char IDCardNo[38];//身份證號
char GrantDept[32];//發(fā)證機關
char UserLifeBegin[18];//有效開始日期
char UserLifeEnd[18];//有效截止日期
char reserved[38];//保留
char PhotoFileName[255];//照片路徑
}IDCardData;
2.5.3 讀卡內信息至結構體
以下語句是將卡內信息讀至前面定義的結構體中,為插入記錄提供數(shù)據(jù)。
………
nRet=Syn_ReadMsg(iPort,0,m_IDCardData);//讀卡至結構體
2.5.4 創(chuàng)建患者主索引
得到讀卡內容后,寫入后臺數(shù)據(jù)庫的患者主索引表。
insert into pat_master_index//系統(tǒng)主索引記錄表
(patient_id,inp_no,name,name_phonetic,sex,date_ of_birth,birth_place,citizenship,nation,id_no,identity, charge_type,unit_in_contract,mailing_address,phone_ number_home,next_of_kin,relationship,next_of_kin_ phone,last_visit_date,vip_indicator,create_date,operator)values
(:new_pat_id,:new_inp_no,:new_name,:new_ name_phone,:new_sex,:new_birth_date,:new_birth_ place,:new_country_code,:new_nation,:new_id_no,: new_identity,:new_charger,:new_unit_code,:new_address,:new_telephone,:new_next_kin,:new_relation,: new_next_kin_tel,sysdate,2,sysdate,:user_names);
2.5.5 主索引查重
為了判斷患者是否有重復的主索引,必須進行查重。
select count(*)into:nums from pat_master_index where id_no=:idno;
if nums〉0 then
select patient_id,name into:patidold,:nameold from pat_master_index where id_no=:idno;
messagebox("提示","此人已建主索引"+"登記的ID號為"+patidold+",姓名為"+nameold)
end if
3.1 重號問題
這里說的重號問題要注意2種現(xiàn)象:(1)身份證本身的重號問題,就是2個人的身份證號碼重號時,要從編程上進行判斷,當然這種2個人身份證重號又同時來醫(yī)院掛號的情況幾乎不可能發(fā)生,但是一旦有這種情況出現(xiàn)要能識別處理。(2)同一人來醫(yī)院掛號每次都用不同的ID號,造成一人多號。從理論上來說,醫(yī)院的ID號碼資源可以允許一人多號,但是從目前的就醫(yī)過程來看,我們要避免這種現(xiàn)象發(fā)生,一是保護ID號碼資源,二是醫(yī)療過程的需要,如果某個人每次的ID號碼不一樣,造成個人醫(yī)療病歷資料的分散存儲,檢索困難,對醫(yī)院和個人都不利。因此,在編程時應該考慮同一身份證重復掛號的問題,也就是當某個患者第二次來院就診時,能夠利用身份證讀卡時快速調出上次信息,而不需重新建立索引。
3.2 自動合并
對原有信息項目建立不全的患者主索引在讀卡
(????)(????)過程中要能自動識別是否為同一人。我們認為,只要姓名、性別、出生日期、出生地4項信息完全一致時應該考慮為同一人,當然還要加上人工的問詢。為了考慮節(jié)省ID號碼資源,只補登缺項信息,而不重新分配ID號。
3.3 預留參數(shù)日后備用
普通身份證讀卡器除了指紋信息不能讀取外,其他信息都可以一次性全部讀取,但是我們并沒有對每項信息進行存取。如照片信息、證件有效期等只是前端計算機可以顯示,作為相關判斷用,并無保存至后臺數(shù)據(jù)庫的必要,只是為以后使用預留相應的參數(shù)。
身份證讀卡系統(tǒng)自運行以來,經(jīng)過不斷改進,門診掛號采集患者基本信息的效率大大提高,從原來的平均錄入每個患者需要40 s左右時間,縮短為不到2 s,提高了20倍的效率,基本信息采集的準確率達100%。隨著醫(yī)院就診人數(shù)的增加和就診實名制的要求,二代身份證讀卡系統(tǒng)既減少了工作人員的工作量,又縮短了患者排隊等候的時間,取得了較好的使用效果。目前,醫(yī)保、新農(nóng)合、保險等行業(yè)要求都需要實名制,使用二代身份證讀卡技術還可以有效杜絕騙保、冒名頂替現(xiàn)象的發(fā)生。由于我院門診掛號系統(tǒng)系軍內統(tǒng)一配置軟件,此次未能直接嵌入掛號系統(tǒng),如果以后能直接嵌入將更加方便操作人員。
[1]張雁耿.實施數(shù)字化衛(wèi)勤工程 引領我軍衛(wèi)勤戰(zhàn)略轉型[J].人民軍醫(yī),2011,54(4):259-262.
[2]劉運成.軍隊數(shù)字化醫(yī)院建設總體構想[J].人民軍醫(yī),2011,54(8):740-742.
[3]林培通.無線射頻識別(RFID)技術的應用[J].電腦知識與技術,2011,7(20):5 011-5 012.
[4]李蓓,盧朝陽.基于射頻識別技術的電子報到系統(tǒng)[J].計算機應用,2012,32(S1):221-223.
[5]GA 450—2003 臺式居民身份證閱讀器通用技術要求[S].
[6]李訓棟,肖寶菊.醫(yī)院信息系統(tǒng)數(shù)據(jù)管理探討[J].醫(yī)療衛(wèi)生裝備,2013,34(1):49-50.
[7]吳貞東,曾德勝,許小波.二代身份證智能采集器研究與開發(fā)[J].微計算機信息,2007,23(20):190-191,280.
(收稿:2013-11-25 修回:2014-02-21)
Rapid establish of patient master index by second-generation ID card reading technology
LI Chun-lin,LIU Jian-hui,ZHOU Gen-hong,ZHANG Wen-ti
(Information Department,Hunan Provincial Corps Hospital of CAPF,Changsha 410006,China)
ObjectiveTo establish rapidly the patient master index by ID card reading technology.MethodsThe secondgeneration ID card reader and self-developed interface program were used to input the basic information of the patient into the database.ResultsThe registration section could acquire the patient data completely,accurately and rapidly,and the efficiency and accuracy of establishing the patient master index were both enhanced greatly.ConclusionThe secondgeneration ID card reading technology helps to rapidly construct the patient master index.[Chinese Medical Equipment Journal,2014,35(10):59-61,90]
second-generation ID card;radio frequency identification;hospital information system
R318;TP311.1
A
1003-8868(2014)10-0059-04
10.7687/J.ISSN1003-8868.2014.10.059
李春林(1969—),男,主任,主任技師,主要從事醫(yī)院信息管理及信息系統(tǒng)開發(fā)方面的研究工作,E-mail:lcl588@sina.com。
410006長沙,武警湖南省總隊醫(yī)院信息科(李春林,劉建輝,周根鴻,張文體)