我对Nhapi很陌生,并使用它来解析HL7消息。
我面临的问题是,我正在解析ADT^A03消息,但始终将PV1段作为null。
我正在附上示例消息和我的代码。
示例消息:
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;发布于 2015-03-04 07:21:54
这里的基本问题是,您试图解析一个不符合HL7 2.3规范的A03事件的A03 2.3消息。
也就是说,NK1、GT1和IN1段没有在HL7版本2.3中的ADT A03事件标准中定义。
如果删除问题段,消息将使用如下代码根据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标准建模的,因此,如果给它非标准数据(如上面显示的消息),它将不会很好地处理它。(中止对后续段的解析,如本例中所示)。
发布于 2015-03-05 00:43:07
如果您想解析一个不完全符合标准的HL7消息,您可以使用几个选项。
我可以从经验中告诉您,修改HL7标准数据库(并重新生成)是困难和混乱的。
我只需在应用程序中扩展ADT_A03类,并添加非标准段的定义,这样您就可以访问所有数据。
https://stackoverflow.com/questions/28848007
复制相似问题