149장. HL7 DataFormat


Camel 버전 2.0에서 사용 가능

HL7 구성 요소는 HAPI 라이브러리 를 사용하여 HL7 MLLP 프로토콜 및 HL7 v2 메시지 작업에 사용됩니다.

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

  • Mina의 HL7 MLLP codec
  • Camel 2.15 이후 Netty4 용 HL7 MLLP codec
  • 유형 from/to HAPI 및 문자열
  • HAPI 라이브러리를 사용한 HL7 DataFormat
  • camel-mina2 구성 요소와 잘 통합되어 있으므로 더 쉽게 사용할 수 있습니다.

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

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-hl7</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

149.1. HL7 MLLP 프로토콜

HL7은 종종 텍스트 기반 TCP 소켓 기반 프로토콜인 HL7 MLLP 프로토콜과 함께 사용됩니다. 이 구성 요소에는 MLLP 프로토콜을 준수하는 Mina 및 Netty4 Codec가 포함되어 있으므로 TCP 전송 계층을 통해 HL7 요청을 수락하는 HL7 리스너를 쉽게 노출할 수 있습니다. HL7 리스너 서비스를 노출하기 위해 camel-mina2 또는 camel-netty4 구성 요소는 HL7MLLPCodec (mina2) 또는 HL7MLLP NettyDecoder/HL7MLLPNettyPNettyEncoder(Netty 4)와 함께 사용됩니다.

HL7 MLLP codec는 다음과 같이 구성할 수 있습니다.

Expand
이름기본값설명

startByte

0x0b

HL7 페이로드가 포함된 시작 바이트입니다.

endByte1

0x1c

첫 번째 끝 바이트는 HL7 페이로드를 포함합니다.

endByte2

0x0d

두 번째 끝 바이트는 HL7 페이로드를 포함합니다.

charset

JVM 기본값

codec에 사용할 인코딩(Charset name)입니다. 제공되지 않는 경우 Camel은 JVM 기본 Charset 을 사용합니다.

produceString

true

( Camel 2.14.1부터) true인 경우 codec는 정의된 charset을 사용하여 문자열을 생성합니다. false인 경우 codec는 일반 바이트 배열을 경로에 전송하여 HL7 데이터 형식에서 HL7 메시지 콘텐츠에서 실제 문자 집합을 확인할 수 있습니다.

convertLFtoCR

false

\n\r (0x0d, 13 10진수)로 변환합니다. HL7은 세그먼트 종료자로 \r 을 규정합니다. HAPI 라이브러리는 \r 를 사용해야 합니다.

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

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

<endpoint id="hl7MinaListener" uri="mina2:tcp://localhost:8888?sync=true&amp;codec=#hl7codec"/>
Copy to Clipboard Toggle word wrap

sync=true 는 이 리스너가 동기적이므로 호출자에게 HL7 응답을 반환함을 나타냅니다. HL7 codec는 codec=#hl7codec 로 설정됩니다. hl7codec 는 Spring 빈 ID일 뿐이므로 mygreatcodecforhl7 이라는 이름을 지정할 수 있습니다. codec는 Spring XML 파일에서도 설정됩니다.

<bean id="hl7codec" class="org.apache.camel.component.hl7.HL7MLLPCodec">
    <property name="charset" value="iso-8859-1"/>
</bean>
Copy to Clipboard Toggle word wrap

그러면 엔드포인트 hl7MinaLlistener 를 이 Java DSL 예제로 설명하므로 경로에서 소비자로 사용할 수 있습니다.

from("hl7MinaListener")
  .bean("patientLookupService");
Copy to Clipboard Toggle word wrap

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

<bean id="patientLookupService" class="com.mycompany.healthcare.service.PatientLookupService"/>
Copy to Clipboard Toggle word wrap

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

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
    }
Copy to Clipboard Toggle word wrap

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

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

<endpoint id="hl7NettyListener" uri="netty4:tcp://localhost:8888?sync=true&amp;encoder=#hl7encoder&amp;decoder=#hl7decoder"/>
Copy to Clipboard Toggle word wrap

sync=true 는 이 리스너가 동기적이므로 호출자에게 HL7 응답을 반환함을 나타냅니다. HL7 codec는 encoder=#hl7encoder*and*decoder=#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"/>
Copy to Clipboard Toggle word wrap

그러면 엔드포인트 hl7NettyListener 를 경로에서 소비자로 사용할 수 있습니다. 이 Java DSL 예제에서는 다음을 보여줍니다.

from("hl7NettyListener")
  .bean("patientLookupService");
Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat