56장. HL7


HL7 구성 요소는 H API 라이브러리 를 사용하여 HL7 MLLP 프로토콜 및 HL7 v2 메시지 와 함께 사용됩니다.

이 구성 요소는 다음을 지원합니다.

  • Mina용 HL7 MLLP codec
  • Netty용 HL7 MLLP codec
  • /에서 HAPI 및 String으로 변환기를 입력합니다.
  • HL7 DataFormat HAPI 라이브러리 사용

Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-hl7</artifactId>
    <version>{CamelSBVersion}</version>
    <!-- use the same version as your Camel core version -->
</dependency>

56.1. HL7 MLLP 프로토콜

HL7은 종종 텍스트 기반 TCP 소켓 기반 프로토콜인 HL7 MLLP 프로토콜과 함께 사용됩니다. 이 구성 요소는 MLLP 프로토콜을 준수하는 Mina 및 Netty Codec와 함께 제공되므로 TCP 전송 계층을 통해 HL7 요청을 수락하는 HL7 리스너를 쉽게 노출할 수 있습니다. HL7 리스너 서비스를 공개하기 위해 camel-mina 또는 link:camel-netty 구성 요소는 HL7MLLPCodec (mina) 또는 HL7MLLPNettyDecoder/HL7MLNettyEncoder (Netty)와 함께 사용됩니다.

HL7 MLLP 코덱은 다음과 같이 구성할 수 있습니다.

이름기본값설명

startByte

0x0b

HL7 페이로드에 대한 시작 바이트입니다.

endByte1

0x1c

HL7 페이로드에 대한 첫 번째 엔드 바이트입니다.

endByte2

0x0d

HL7 페이로드를 포괄하는 두 번째 엔드포인트입니다.

charset

JVM 기본값

코덱에 사용할 인코딩( charset 이름)입니다. 제공되지 않는 경우 Camel은 JVM 기본 요금을 사용합니다.

produceString

true

true인 경우 codec는 정의된 charset을 사용하여 문자열을 생성합니다. false인 경우 codec는 일반 바이트 배열을 경로로 보내 HL7 데이터 형식이 HL7 메시지 콘텐츠에서 실제 charset을 결정할 수 있도록 합니다.

convertLFtoCR

false

\n \r (0x0d, 13진수)로 HL7로 변환합니다. HAPI 라이브러리에는 \r 을 사용해야 합니다.

56.1.1. Mina를 사용하여 HL7 리스너 노출

Spring XML 파일에서 포트 8888 의 TCP를 사용하여 HL7 요청을 수신 대기하도록 mina 끝점을 구성합니다.

<endpoint id="hl7MinaListener" uri="mina:tcp://localhost:8888?sync=true&amp;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>

그런 다음 엔드포인트 hl7MinaLlistener 는 경로에서 소비자로 사용할 수 있습니다.이 Java DSL 예는 다음과 같습니다.

from("hl7MinaListener")
  .bean("patientLookupService");

이것은 HL7을 수신하고 patientLookupService 라는 서비스로 라우팅하는 매우 간단한 경로입니다. 이는 Spring XML에서 다음과 같이 구성된 Spring 빈 ID이기도 합니다.

<bean id="patientLookupService" class="com.mycompany.healthcare.service.PatientLookupService"/>

다음과 같이 Camel에 의존하지 않는 POJO 클래스에서 비즈니스 논리를 구현할 수 있습니다.

import ca.uhn.hl7v2.HL7Exception;
import ca.uhn.hl7v2.model.Message;
import ca.uhn.hl7v2.model.v24.segment.QRD;

public class PatientLookupService {
    public Message lookupPatient(Message input) throws HL7Exception {
        QRD qrd = (QRD)input.get("QRD");
        String patientId = qrd.getWhoSubjectFilter(0).getIDNumber().getValue();

        // find patient data based on the patient id and create a HL7 model object with the response
        Message response = ... create and set response data
        return response
    }

56.1.2. Netty를 사용하여 HL7 리스너 노출 ( Camel 2.15 이후에서 사용 가능)

Spring XML 파일에서는 포트 8888 의 TCP를 사용하여 HL7 요청을 수신 대기하도록 netty 엔드포인트를 구성합니다.

<endpoint id="hl7NettyListener" uri="netty:tcp://localhost:8888?sync=true&amp;encoders=#hl7encoder&amp;decoders=#hl7decoder"/>

sync=true 는 이 리스너가 동기임을 나타내며 이에 따라 HL7 응답을 호출자에게 반환합니다. HL7 codec는 인코더=#hl7encoder*and*decoders=#hl7decoder 로 설정됩니다. hl7encoderhl7decoder 는 빈 ID일 뿐이므로 이름을 다르게 지정할 수 있습니다. 빈은 Spring XML 파일에 설정할 수 있습니다.

<bean id="hl7decoder" class="org.apache.camel.component.hl7.HL7MLLPNettyDecoderFactory"/>
<bean id="hl7encoder" class="org.apache.camel.component.hl7.HL7MLLPNettyEncoderFactory"/>

끝점 hl7NettyListener 는 다음 Java DSL 예제에서 설명하므로 경로에서 사용할 수 있습니다.

from("hl7NettyListener")
  .bean("patientLookupService");
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.