Nhapi 解析问题

Nhapi Parsing Issue

我是 Nhapi 的新手,我用它来解析 HL7 消息。

我面临的问题是我正在解析 ADT^A03 消息,但我总是得到 PV1 段为空。

我附上示例消息和我的代码。

示例消息:

MSH|^~\&|MMM|MMM|||201412081017||ADT^A03|2014342370374441||2.3
EVN|A03|201412081017|201412080001||73540
PID|1||000000004449^^^PHS^MR|491662^^^MMM|||19500225|F||1||||||D|CAT|78599180^^M10^MMM^PN|
PD1||1|||||NNN|||||
NK1|0001|NONE AS PER PT^NONE AS PER PT^^^^^L|19||||JUCON||||||||||||||||||||||||||||||
NK1|0002|NONE^^^^^^L|||||PTEMP|||UNEMPLOYED|||||||||||||||||||||||||||
PV1|1|O||R|||001211^RAM SHYAM|001211^RAM SHYAM||SDO||||OU|||001211^RAM SHYAM|U||H^20141208||||||||||||||||AHR|||PNKN|||||201412080625|201412081015
PV2||||||||201412080001|||||||N|||||1||||OD|||||||||||||
GT1|0001||SHYAM^RAM|||||19500225|F|P|01|00000000||||NONE|||||||||||||||||||||||||||||||||||NONE||||
IN1||00000000|^NONE^^^^^^^^L||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||(000)2584-33695|||||||NONE^L||

代码:

PipeParser parser = new PipeParser();
 IMessage messageParsed = parser.Parse(message);
ADT_A03 a03 = messageParsed as ADT_A03;

PV1Segment pv1Segment = new PV1Segment();
pv1Segment.Set_Id_PV1_1_1 = a03.PV1.SetIDPatientVisit.Value;
pv1Segment.Patient_Class_2_1 = a03.PV1.PatientClass.Value;
pv1Segment.Assigned_Patient_Location_3_1 = a03.PV1.AssignedPatientLocation.PointOfCare.Value;
pv1Segment.Admission_Type_4_1 = a03.PV1.AdmissionType.Value;
pv1Segment.Pre_Admit_Number_5_1 = a03.PV1.PreadmitNumber.ID.Value;
pv1Segment.Prior_Patient_Location_6_1 = a03.PV1.PriorPatientLocation.PointOfCare.Value;
pv1Segment.Attending_Doctor_Id_7_1 = a03.PV1.AttendingDoctor.IDNumber.Value;
pv1Segment.Attending_Doctor_Name_7_2 = a03.PV1.AttendingDoctor.FamilyName.Value;
pv1Segment.Referring_Doctor_Id_8_1 = a03.PV1.ReferringDoctor.IDNumber.Value;
pv1Segment.Referring_Doctor_Name_8_2 = a03.PV1.ReferringDoctor.FamilyName.Value;

这里的基本问题是您正在尝试解析不符合 ADT A03 事件的 HL7 2.3 规范的 HL7 2.3 消息。

即HL7 2.3版本的ADT A03事件标准中没有定义NK1、GT1和IN1段。

如果删除问题片段,消息将使用您的代码按照 2.3 规范进行解析,如下所示:

  var parser = new PipeParser();
  var messageParsed = parser.Parse(message);
  var a03 = messageParsed as ADT_A03;

  var setId = a03.PV1.SetIDPatientVisit.Value;
  var patientClass = a03.PV1.PatientClass.Value;
  var AssignedPatientLocation = a03.PV1.AssignedPatientLocation.PointOfCare.Value;
  var Admission_Type = a03.PV1.AdmissionType.Value;
  var Pre_Admit_Number = a03.PV1.PreadmitNumber.ID.Value;
  var Prior_Patient_Location = a03.PV1.PriorPatientLocation.PointOfCare.Value;
  var Attending_Doctor_Id = a03.PV1.AttendingDoctor.IDNumber.Value;
  var Attending_Doctor_Name = a03.PV1.AttendingDoctor.FamilyName.Value;
  var Referring_Doctor_Id = a03.PV1.ReferringDoctor.IDNumber.Value;
  var Referring_Doctor_Name = a03.PV1.ReferringDoctor.FamilyName.Value;

NHapi 的模型解析是根据 HL7 标准严格建模的,因此如果您向它提供非标准数据(如上面显示的消息),它将无法正常处理。 (像这种情况一样中止后续段的解析)。

如果要解析不完全符合标准的 HL7 消息,您有几个选择。

  1. 修改HL7标准数据库并重新生成代码
  2. Extending/replacing当前ADT_A03class

我可以根据经验告诉你,修改 HL7 标准数据库(和重新生成)是困难和混乱的。

我只想在您的应用程序中扩展 ADT_A03 class 并添加非标准段的定义 - 这样您就可以访问所有数据。