第58章 HL7
HL7 コンポーネントは、HAPI ライブラリー を使用して HL7 MLLP プロトコルおよび HL7 v2 メッセージ を操作するために使用されます。
このコンポーネントは以下をサポートします。
Maven ユーザーは、このコンポーネントの pom.xml
に以下の依存関係を追加する必要があります。
58.1. HL7 MLLP プロトコル リンクのコピーリンクがクリップボードにコピーされました!
HL7 は、テキストベースの TCP ソケットベースのプロトコルである HL7 MLLP プロトコルでよく使用されます。このコンポーネントには、MLLP プロトコルに準拠する Mina および Netty Codec が同梱されるため、TCP トランスポート層で HL7 要求を受け入れる HL7 リスナーを簡単に公開できます。HL7 リスナーサービスを公開するには、camel-mina またはリンクのcamel-netty コンポーネントを使用します。camel-netty コンポーネントは、HL7MLLPCodec (mina)または HL7MLLPNettyDecoder/HL7MLLPNettyEncoder (Netty)で使用されます。
HL7 MLLP コーデックは、以下のように設定できます。
名前 | デフォルト値 | 説明 |
---|---|---|
|
| HL7 ペイロードにまたがる開始バイト。 |
|
| HL7 ペイロードにまたがる最初のエンドバイト。 |
|
| HL7 ペイロードにまたがる 2 番目の終了バイト。 |
| JVM のデフォルト | codec に使用するエンコーディング( 文字セット名)。指定しない場合、Camel は JVM のデフォルト Charset を 使用します。 |
|
| true の場合、codec は定義された charset を使用して文字列を作成します。false の場合、コーデックはプレーンなバイトアレイをルートに送信し、HL7 Data Format が HL7 メッセージコンテンツから実際の文字セットを決定できるようにします。 |
|
|
は、 |
58.1.1. Mina を使用した HL7 リスナーの公開 リンクのコピーリンクがクリップボードにコピーされました!
Spring XML ファイルでは、ポート 8888
で TCP を使用して HL7 要求をリッスンするように mina エンドポイントを設定します。
<endpoint id="hl7MinaListener" uri="mina:tcp://localhost:8888?sync=true&codec=#hl7codec"/>
<endpoint id="hl7MinaListener" uri="mina:tcp://localhost:8888?sync=true&codec=#hl7codec"/>
sync=true は、このリスナーが同期されているため、呼び出し元に HL7 応答を返すことを示します。HL7 コーデックが codec=#hl7codec で設定されます。hl7codec
は Spring Bean ID であるため、mygreatcodecforhl7
または任意の名前を付けることができることに注意してください。codec も Spring XML ファイルで設定されます。
<bean id="hl7codec" class="org.apache.camel.component.hl7.HL7MLLPCodec"> <property name="charset" value="iso-8859-1"/> </bean>
<bean id="hl7codec" class="org.apache.camel.component.hl7.HL7MLLPCodec">
<property name="charset" value="iso-8859-1"/>
</bean>
この Java DSL の例が示すように、エンドポイント hl7MinaLlistener はルートでコンシューマーとして使用できます。
from("hl7MinaListener") .bean("patientLookupService");
from("hl7MinaListener")
.bean("patientLookupService");
これは、HL7 をリッスンし、HL7 という名前のサービスにルーティングする非常に単純 なルートです。これは Spring Bean ID で、以下のように Spring XML で設定されます。
<bean id="patientLookupService" class="com.mycompany.healthcare.service.PatientLookupService"/>
<bean id="patientLookupService" class="com.mycompany.healthcare.service.PatientLookupService"/>
以下のように、ビジネスロジックを Camel に依存しない POJO クラスに実装できます。
58.1.2. Netty を使用した HL7 リスナーの公開(Camel 2.15 以降から利用可能) リンクのコピーリンクがクリップボードにコピーされました!
Spring XML ファイルでは、ポート 8888
で TCP を使用して HL7 要求をリッスンするように netty エンドポイントを設定します。
<endpoint id="hl7NettyListener" uri="netty:tcp://localhost:8888?sync=true&encoders=#hl7encoder&decoders=#hl7decoder"/>
<endpoint id="hl7NettyListener" uri="netty:tcp://localhost:8888?sync=true&encoders=#hl7encoder&decoders=#hl7decoder"/>
sync=true は、このリスナーが同期されているため、呼び出し元に HL7 応答を返すことを示します。HL7 コーデックは encoders=#hl7encoder*and*decoders=#hl7decoder で設定されます。hl7encoder
および hl7decoder
は Bean ID のみであるため、名前が異なる可能性があることに注意してください。Bean は Spring XML ファイルで設定できます。
<bean id="hl7decoder" class="org.apache.camel.component.hl7.HL7MLLPNettyDecoderFactory"/> <bean id="hl7encoder" class="org.apache.camel.component.hl7.HL7MLLPNettyEncoderFactory"/>
<bean id="hl7decoder" class="org.apache.camel.component.hl7.HL7MLLPNettyDecoderFactory"/>
<bean id="hl7encoder" class="org.apache.camel.component.hl7.HL7MLLPNettyEncoderFactory"/>
この Java DSL の例では、エンドポイント hl7NettyListener をコンシューマーとしてルートで使用できます。
from("hl7NettyListener") .bean("patientLookupService");
from("hl7NettyListener")
.bean("patientLookupService");