147.4. HL7 DataFormat
HL7 コンポーネントには、HL7 モデルオブジェクトのマーシャリングまたはアンマーシャリングに使用できる HL7 データ形式が付属しています。
HL7 データ形式は、以下にリストされている 2 個のオプションをサポートしています。
名前 | デフォルト | Java タイプ | 説明 |
---|---|---|---|
validate |
|
| HL7 メッセージを検証するかどうかデフォルトでは true です。 |
contentTypeHeader |
|
| データフォーマットがデータ形式を実行できる場合は、データフォーマットの型で 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");