2

私は 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;
4

2 に答える 2

3

ここでの基本的な問題は、ADT A03 イベントの HL7 2.3 仕様に準拠していない HL7 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-04T07:21:54.437 に答える
2

標準に完全に準拠していない HL7 メッセージを解析する場合は、いくつかのオプションがあります。

  1. HL7 標準データベースを変更してコードを再生成する
  2. 現在の ADT_A03 クラスの拡張/置換

経験上、HL7 標準データベースの変更 (および再生成) は困難で煩雑であることがわかります。

アプリケーションで ADT_A03 クラスを拡張し、非標準セグメントの定義を追加するだけで、すべてのデータにアクセスできるようになります。

于 2015-03-05T00:43:07.773 に答える