147.4. HL7 DataFormat

HL7 コンポーネントには、HL7 モデルオブジェクトのマーシャリングまたはアンマーシャリングに使用できる HL7 データ形式が付属しています。

HL7 データ形式は、以下にリストされている 2 個のオプションをサポートしています。

名前デフォルトJava タイプ説明

validate

true

Boolean

HL7 メッセージを検証するかどうかデフォルトでは true です。

contentTypeHeader

false

Boolean

データフォーマットがデータ形式を実行できる場合は、データフォーマットの型で Content-Type ヘッダーを設定するかどうか。たとえば、XML にマーシャリングするデータ形式の場合は application/xml、JSON にマーシャリングするデータ形式の場合は JSon です。

  • marshal = メッセージからバイトストリームへ (HL7 MLLP コーデックを使用して応答するときに使用できます)
  • unmarshal = バイトストリームからメッセージへ (HL7 MLLP からストリーミングデータを受信するときに使用できます)

データ形式を使用するには、単にインスタンスをインスタンス化し、ルートビルダーで整列化または非整列化操作を呼び出します。

  DataFormat hl7 = new HL7DataFormat();

  from("direct:hl7in")
    .marshal(hl7)
    .to("jms:queue:hl7out");

上記のサンプルでは、HL7 が HAPI メッセージオブジェクトからバイトストリームにマーシャリングされ、JMS キューに配置されます。
次の例は逆です。

  DataFormat hl7 = new HL7DataFormat();

  from("jms:queue:hl7out")
    .unmarshal(hl7)
    .to("patientLookupService");

ここでは、患者の検索サービスに渡される HAPI メッセージオブジェクトにバイトストリームを非整列化します。

147.4.1. シリアライズ可能なメッセージ

HAPI 2.0 (Camel 2.11 で使用) の時点で、HL7v2 モデルクラスは完全にシリアライズ可能です。したがって、HL7v2 メッセージを直接 JMS キューに入れ (つまり、marshal() を呼び出さずに)、キューから直接 (つまり、unmarshal() を呼び出さずに) 再度読み取ることができます。

147.4.2. セグメント区切り

Camel 2.11 の時点で、unmarshal\n\r に変換することによってセグメントセパレーターを自動的に修正しなくなりました。
この変換が必要な場合には、org.apache.camel.component.hl7.HL7#convertLFToCR は、この目的向けに便利な Expression を提供します。

147.4.3. Charset

Camel 2.14.1 の時点で、marshal and unmarshal の両方が、フィールド MSH-18 で提供される文字セットを評価します。このフィールドが空の場合には、デフォルトで、対応する Camel 文字セットプロパティー/ヘッダーに含まれる文字セットが想定されます。HL7DataFormat クラスから継承するときに、guessCharsetName メソッドをオーバーライドして、このデフォルトの動作を変更することもできます。

 

Camel には、一般的に使用される既知のデータ形式の簡略構文があります。HL7DataFormat オブジェクトのインスタンスを作成する必要はありません。

  from("direct:hl7in")
    .marshal().hl7()
    .to("jms:queue:hl7out");

  from("jms:queue:hl7out")
    .unmarshal().hl7()
    .to("patientLookupService");