簡體   English   中英

如何在C#中找到HL7字符串的重復字段值?

[英]How do I find the repeating fields value of a HL7 string in C#?

string input = 
@"MSH|^~\&|||||20171218104936.3464||ADT^A01^ADT_A01|56ca00f2-a99a-4593-b6cb-1c141c0ae0cb||2.3.1
EVN||20171218104936.3464
PID|||15197||Test^Dummy^HK||19770628000000.0000|O
PV1||0";

在上面的字符串中,名稱字段( Test^Dummy^HK )是重復字段 如何使用nHapi DLL在C#中獲取該信息?

這很簡單,但是在嘗試檢索字段之前,需要先對消息進行解析:

string input = 
@"MSH|^~\&|||||20171218104936.3464||ADT^A01^ADT_A01|56ca00f2-a99a-4593-b6cb-1c141c0ae0cb||2.3.1
EVN||20171218104936.3464
PID|||15197||Test^Dummy^HK||19770628000000.0000|O
PV1||0";

ADT_A01 adt = (ADT_A01)(new PipeParser()).Parse(input);

接下來,您要查找的字段是XPN數據類型,即擴展患者姓名。 下表列出了患者姓名的前3個組成部分。

SEQ     LENGTH  DT  OPT TBL#    NAME
XPN.1   194     FN  O           Family Name
XPN.2   30      ST  O           FirstName   Given Name
XPN.3   30      ST  O           Second And Further Given Names Or Initials Thereof

可以通過其屬性訪問這些組件,以便:

string surname = adt.PID.GetPatientName(0).FamilyName.Surname.Value; //Test
string givenName = adt.PID.GetPatientName(0).GivenName.Value; //Dummy
string secondAndFurtherGivenNamesOrInitialsThereof = adt.PID.GetPatientName(0).SecondAndFurtherGivenNamesOrInitialsThereof.Value; //HK

由於沒有波浪號字符,因此解析器假定PID-5中提供的值對應於第一個重復,這就是為什么我要使用GetPatientName(0)來指定第一個重復的原因。 檢索其他重復項的任何嘗試都將失敗,或產生為空值。

注意,Family Name是FN類型的復合數據類型,這是FN的組件表:

FN.1    50  ST  R       Surname
FN.2    20  ST  O       Own Surname Prefix
FN.3    50  ST  O       Own Surname
FN.4    20  ST  O       Surname Prefix From Partner/Spouse
FN.5    50  ST  O       Surname From Partner/Spouse

一種替代方法是:

Terser adtTerser = new Terser(adt);
string surname = adtTerser.Get("PID-5.1") = adtTerser.Get("PID-5-1-1")
string givenName = adtTerser.Get("PID-5.2") = adtTerser.Get("PID-5-2-1")
string secondAndFurtherGivenNamesOrInitialsThereof = adtTerser.Get("PID-5-3") = adtTerser.Get("PID-5-3-1")

我發現此有用的文檔將其簽出。 希望對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM