LEADTOOLS使用教程:醫(yī)學(xué)應(yīng)用程序的HL7集成
【LEADTOOLS下載】
HL7簡(jiǎn)介
Health Level Seven (HL7)信息是一個(gè)靈活的結(jié)構(gòu)化電子健康信息交換標(biāo)準(zhǔn),受到了廣泛的歡迎和接受。HL7可以啟用標(biāo)準(zhǔn)化信息和圖像系統(tǒng)的通信和互操作性,如電子健康記錄系統(tǒng)(EHR)、醫(yī)院信息系統(tǒng)(HIS)、放射信息系統(tǒng)(RIS)、實(shí)驗(yàn)室信息系統(tǒng)(LIS)和圖像存檔及通信系統(tǒng)(PACS),以及任何用于計(jì)費(fèi)和病人跟蹤功能的個(gè)人實(shí)踐管理或前臺(tái)應(yīng)用程序。
LEADTOOLS Medical Imaging SDK包含在應(yīng)用程序中添加 Health Level Seven 功能所需的一切。
一般情況下,有如此多優(yōu)點(diǎn)的標(biāo)準(zhǔn)肯定有一個(gè)陡峭的學(xué)習(xí)曲線。盡管完全不同的應(yīng)用程序現(xiàn)在可以通信,但是開發(fā)者必須實(shí)現(xiàn)控制傳入和傳出消息的接口。LEADTOOLS HL7 SDK簡(jiǎn)化了復(fù)雜HL7標(biāo)準(zhǔn)到任何醫(yī)學(xué)應(yīng)用程序的集成。此外,如果你需要建立一個(gè)支持HL7消息的DICOM/PACS解決方案,LEADTOOLS提供了多個(gè)預(yù)設(shè)接口幫助你更新病人和模態(tài)調(diào)度(MWL/MPPS)。LEADTOOLS擁有如此全面的醫(yī)學(xué)成像技術(shù),開發(fā)者使用它可以快速創(chuàng)建功能完整且兼容HL7的PACS。
使用LEADTOOLS創(chuàng)建和解析HL7消息
LEADTOOLS HL7的核心功能是創(chuàng)建和解析原始HL7消息的能力。這些基于文本的消息是代碼、值和分隔符的集合,如(|)和(^)。共有100多種消息類型,每個(gè)都是行和預(yù)期豎線值的組合。例如,以下是確認(rèn)病人的一個(gè)基本HL7消息,同時(shí)病人的ID、名字和性別都存儲(chǔ)在PID行中。
MSH|^~\&|||||201505210936||ADT^A01|6386af5b-a9bc-478c-9f9d-847a97c3c0c3||2.6||||||||||||| SFT|||||| UAC|| EVN||||||| PID||123456|||Doe^John|||M||||||||||||||||||||||||||||||| PD1|||||||||||||||||||||| ARV|||||| ROL||||||||||||| NK1||||||||||||||||||||||||||||||||||||||| PV1|||||||||||||||||||||||||||||||||||||||||||||||||||| PV2|||||||||||||||||||||||||||||||||||||||||||||||||| ARV|||||| ROL||||||||||||| DB1|||||||| OBX||||||||||||||||||||||||| AL1|||||| DG1|||||||||||||||||||||||||| DRG||||||||||||||||||||||||||||||||| PR1|||||||||||||||||||||| ROL||||||||||||| GT1||||||||||||||||||||||||||||||||||||||||||||||||||||||||| IN1||||||||||||||||||||||||||||||||||||||||||||||||||||| IN2|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| IN3||||||||||||||||||||||||| ROL||||||||||||| ACC||||||||||| UB1||||||||||||||||||||||| UB2||||||||||||||||| PDA|||||||||
當(dāng)然還有很多信息需要填寫,例如病人的聯(lián)系信息、就診的醫(yī)生、癥狀報(bào)告等。你可能會(huì)猜到,這或許會(huì)帶來(lái)一些混淆,特別是多個(gè)HL7版本和子版本之間的不同。
LEADTOOLS使用Leadtools.Medical.HL7命名空間極大簡(jiǎn)化了此類消息的創(chuàng)建。它的類和枚舉為開發(fā)者提供了一個(gè)創(chuàng)建和解析HL7消息的簡(jiǎn)單框架。你不需要關(guān)心豎線的的個(gè)數(shù)或來(lái)回查看不同的規(guī)范,以確保沒(méi)有因?yàn)樯僖粋€(gè)字符而弄錯(cuò)病人的姓名和出生年月。LEADTOOLS包括了現(xiàn)在最流行的HL7版本 (2.6, 2.5.1, 2.3.1)中每個(gè)消息類型的數(shù)據(jù)模型,枚舉它們能以更可讀的方式生成消息。以下的代碼創(chuàng)建了一個(gè)ADT_A01消息,用于確認(rèn)病人、填寫一些基本的病人身份信息。
// 創(chuàng)建并將信息投入一個(gè)模型,同時(shí)創(chuàng)建默認(rèn)字段填充 ADT_A01 msg = (ADT_A01)Leadtools.Medical.HL7.V2x.Models.MessageFactory.New("ADT_A01", "V26"); Leadtools.Medical.HL7.V2x.Models.MessageConstructor.CreateSegments(msg); // 設(shè)置header信息 msg.MSH.Sending_Application.Value = "LTHL7Demo"; msg.MSH.Sending_Facility.Value = "LEADTOOLS"; msg.MSH.Date_Time_of_Message.Value = MessageConstructor.CurTime(); msg.MSH.Message_Type.MessageCode.Value = "ADT"; msg.MSH.Message_Type.TriggerEvent.Value = "A01"; msg.MSH.Message_Control_ID.Value = UniqueId.New; msg.MSH.Processing_ID.Value = "1"; msg.MSH.Version_ID.VersionID.Value = "2.6"; // 設(shè)置病人信息 msg.PID.Patient_ID.IDNumber.Value = PatientId; msg.PID.Patient_Name[0].FamilyName.Value = PatientLastName; msg.PID.Patient_Name[0].GivenName.Value = PatientFirstName;
當(dāng)接收信息時(shí),LEADTOOLS將原始的文本解析為正確的數(shù)據(jù)模型??梢燥@示或映射到應(yīng)用程序的合適的UI元素上。如下所示,只需幾行代碼就可以將一個(gè)豎線信息解析為一個(gè) IHL7MessageItem,在一個(gè)樹狀圖中可以枚舉和表示它,就像LEADTOOLS HL7消息示例一樣。
PipeMessageConverter pmc = new PipeMessageConverter(); MessageStructureConverter msc = new MessageStructureConverter(); MessageStructure ms = pmc.PipeMessageToMessageStructure(strMessage); IHL7MessageItem msg = msc.MessageStructureToMessage(ms, new MessageStructureConverter.Options() { Parse_RepeatableParentGroupFirst = true, Forgive_IncompleteMessage = true }).Message;
PACS集成
除了簡(jiǎn)化EHR、HIS、RIS等開發(fā)的HL7接口,LEADTOOLS還支持PACS解決方案中HL7消息的接收。這個(gè)綜合的PACS框架和DIOCM存儲(chǔ)服務(wù)提供了高級(jí)類和OEM-ready組件,開發(fā)者能以很少的工作量完成PACS開發(fā)。
正如許多不同的醫(yī)學(xué)應(yīng)用程序越來(lái)越需要HL7一樣,PACS在醫(yī)院或醫(yī)療實(shí)踐中作為一個(gè)獨(dú)立的個(gè)體被需要,用來(lái)存儲(chǔ)DICOM圖像。然而,互操作性已經(jīng)改變了整體的結(jié)構(gòu),PACS加入,這樣它就能和管理病人信息和賬單的前臺(tái)應(yīng)用程序交互。例如,一個(gè)病人多年不會(huì)去見(jiàn)整形專家,但是現(xiàn)在需要一個(gè)X-射線或MRI。上次訪問(wèn)至今,他們可能結(jié)婚或搬走了。前臺(tái)的病人確認(rèn)應(yīng)用程序可以將HL7消息發(fā)送給網(wǎng)絡(luò)中的每一個(gè)系統(tǒng),包括PACS,這樣現(xiàn)在的醫(yī)生就可以查找和查看病人若干年前的就診記錄。
LEADTOOLS DICOM存儲(chǔ)服務(wù)器包含了一個(gè)病人更新器插件,可以通過(guò)監(jiān)聽其他應(yīng)用程序發(fā)送的HL7消息處理常見(jiàn)場(chǎng)景。一旦接收到消息,就會(huì)解析值,并將它提交到PACS圖像存儲(chǔ)中。
public override void OnHl7Message(Leadtools.Medical.HL7.V2x.Models.IHL7MessageItem hl7msg) { string OriginalPatientId = string.Empty; string PatientId = string.Empty; string GivenName = string.Empty; string FamilyName = string.Empty; string Sex = string.Empty; // 解析和解碼HL7消息 string MessageName = MessageItemCracker.GetMessageName(hl7msg); if (MessageName == "ADT_A01") { ADT_A01 msg = (ADT_A01)hl7msg; // 獲取PatientID,這樣我們就知道更新哪一條信息 OriginalPatientId = PatientId = msg.PID.Patient_ID.IDNumber.Value; // 獲取需要更改的值 FamilyName = msg.PID.Patient_Name[0].FamilyName.Surname.Value; GivenName = msg.PID.Patient_Name[0].GivenName.Value; Sex = msg.PID.Administrative_Sex.Value; // ...其他值如Birthdate、原因等 // 使用消息中的信息更新PACS } }
由于HL7沒(méi)有定義發(fā)送和接收消息的規(guī)則,因此LEADTOOLS為您提供了插件的源碼,這樣你就能根據(jù)環(huán)境的要求完全自定義它。這個(gè)插件包括偵聽TCP連接的能力,它還可以輕松被修改來(lái)偵聽其他連接類型,或監(jiān)視一個(gè)含有HL7消息數(shù)據(jù)的文本文件的文件夾。
總結(jié)
互操作性是當(dāng)今醫(yī)療部門降低費(fèi)用最小化風(fēng)險(xiǎn)必不可少的一部分。HL7是全球范圍內(nèi)交換病人護(hù)理和臨床信息的消息標(biāo)準(zhǔn),但對(duì)軟件開發(fā)者來(lái)說(shuō)這是一個(gè)復(fù)雜的領(lǐng)域。LEADTOOLS這一類的SDK可以幫助開發(fā)者兼容HL7,不耽誤項(xiàng)目的進(jìn)度。當(dāng)還需要PACS和DICOM時(shí),LEADTOOLS的PACS框架和DICOM存儲(chǔ)服務(wù)器帶來(lái)了巨大的改變。這些框架節(jié)省了數(shù)月的開發(fā)時(shí)間,為開發(fā)與HL7相互連接的動(dòng)態(tài)現(xiàn)代化醫(yī)學(xué)應(yīng)用程序的開發(fā)者提供了內(nèi)心的寧?kù)o。
本文轉(zhuǎn)自iceman
購(gòu)買最新正版授權(quán)!"咨詢?cè)诰€客服"
慧都年終盛典火爆開啟,一年僅一次的最強(qiáng)促銷,破冰鉅惠不容錯(cuò)過(guò)!!優(yōu)惠詳情點(diǎn)擊查看>>