147.3. HAPI を使用した HL7v2 モデル

HL7v2 モデルは、HAPI ライブラリーの Java オブジェクトを使用します。このライブラリーを使用すると、HL7v2 で主に使用される EDI 形式 (ER7) からエンコードおよびデコードできます。

以下のサンプルは、患者 ID が 0101701234 の患者を検索するリクエストです。

MSH|^~\\&|MYSENDER|MYRECEIVER|MYAPPLICATION||200612211200||QRY^A19|1234|P|2.4
QRD|200612211200|R|I|GetPatient|||1^RD|0101701234|DEM||

HL7 モデルを使用すると、ca.uhn.hl7v2.model.Message オブジェクトを操作して、患者 ID などを取得できます。

Message msg = exchange.getIn().getBody(Message.class);
QRD qrd = (QRD)msg.get("QRD");
String patientId = qrd.getWhoSubjectFilter(0).getIDNumber().getValue();  // 0101701234

byteString、またはその他の単純なオブジェクト形式を操作する必要がないため、これは HL7 リスナーと組み合わせると強力です。HAPI HL7v2 モデルオブジェクトをそのまま使用できます。メッセージのタイプが事前にわかっている場合は、型の安全性をさらに確保できます。

QRY_A19 msg = exchange.getIn().getBody(QRY_A19.class);
String patientId = msg.getQRD().getWhoSubjectFilter(0).getIDNumber().getValue();