第58章 HL7
HL7 コンポーネントは、HAPI ライブラリー を使用して HL7 MLLP プロトコルおよび HL7 v2 メッセージ を操作するために使用されます。
このコンポーネントは以下をサポートします。
Maven ユーザーは、このコンポーネントの pom.xml
に以下の依存関係を追加する必要があります。
58.1. HL7 MLLP プロトコル リンクのコピーリンクがクリップボードにコピーされました!
HL7 は、多くの場合、テキストベースの TCP ソケットベースのプロトコルである HL7 MLLP プロトコルと共に使用されます。このコンポーネントには、MLLP プロトコルに準拠する Mina および Netty コーデックが付属しているため、TCP トランスポート層を介して HL7 要求を受け入れる HL7 リスナーを簡単に公開できます。HL7 リスナーサービスを公開するには、camel-mina または link: camel-netty コンポーネントを HL7MLLPCodec (mina) または HL7MLLPNettyDecoder/HL7MLLPNettyEncoder (Netty) と合わせて使用します。
HL7 MLLP コーデックは、次のように設定できます。
名前 | デフォルト値 | 説明 |
---|---|---|
|
| HL7 ペイロードにまたがる開始バイト。 |
|
| HL7 ペイロードにまたがる最初のエンドバイト。 |
|
| HL7 ペイロードにまたがる 2 番目のエンドバイト。 |
| JVM デフォルト | コーデックに使用するエンコーディング (文字セット名)。指定しない場合、Camel は JVM のデフォルトの文字セット を使用します。 |
|
| true の場合、コーデックは定義された文字セットを使用して文字列を作成します。false の場合、コーデックはプレーンバイト配列をルートに送信し、HL7 データ形式で HL7 メッセージコンテンツからの実際の文字セットを判別できるようにします。 |
|
|
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
などの名前を指定できることに注意してください。コーデックは、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 をルートで consumer として使用できます。
from("hl7MinaListener") .bean("patientLookupService");
from("hl7MinaListener")
.bean("patientLookupService");
これは、HL7 をリッスンし、patientLookupService という名前のサービスにルーティングする非常に単純なルートです。これは 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 を consumer としてルートで使用できます。
from("hl7NettyListener") .bean("patientLookupService");
from("hl7NettyListener")
.bean("patientLookupService");