본문 바로가기
Engineering/DICOM, DIMSE Protocol, HL7

dcm4che toolkit으로 HL7 전송 테스트 (hl7snd / hl7rcv)

by 알탱2 2023. 4. 24.
반응형

평소 DIMSE protocol로 dicom을 주고 받는 테스트를 하기 위해 dcmtk 를 사용하고 있는데, HL7 message를 송/수신 테스트가 필요하여 툴을 알아 보았다. 이전까지 HL7 메세지 수신 테스트는 다른 팀 분이 소개해 준 HL7 SOUP 이라는 유료 프로그램을 구매하여 사용하고 있는 중이다. 하지만 해당 프로그램은 윈도우용만 제공 되었고, 자동화를 고민하는 중이라 리눅스에서 실행 가능한 HL7 Receiver가 필요하여 검색을 하였다.

 

dcm4che toolkit 에서 dicom toolkit 외에 hl7을 위한 toolkit도 제공하고 있어 간단히 테스트를 해보았다.

우선 dcm4che의 경우 dcmtk와 달리 java 기반이라 실행을 위해서는 java 1.6 이상이 설치된 환경에서 실행이 가능하였다.

(참고로 아래 환경은 centos7 이다.)

 

< java 설치 >

yum install java-1.8.0-openjdk
yum install java-1.8.0-openjdk-devel

 

< dcm4che 다운로드 & hl7rcv 실행 >

  • Link 에서 최신 버전(zip)을 다운로드 받는다.
  • 리눅스 서버에 zip 파일을 업로드 하고 아래 명령어를 따라 압축 해제 후, hl7rcv 를 실행한다. (수신 포트는 10102 로 실행하였다.)
unzip dcm4che-5.29.2.zip
cd dcm4che-5.29.2/bin/

./hl7rcv --directory /home/jinakim/recv --charset UTF-8 --uuid -b 10102

 

< hl7 sample message 작성 & hl7snd 실행 >

  • Link 에 hl7 sample message를 1개 copy하여 vim 편집기로 파일을 생성하였다. 
  • hl7snd 를 실행하여 위에서 실행한 hl7rcv 로 전송한다.
./hl7snd -c 10.120.201.1:10102 ./hl7sample1.hl7

 

< 결과 확인 >

hl7snd 에서도 전송이 성공되었고, hl7rcv 에서도 수신이 성공되었다. (로그에 에러 로그가 없었고, 송신한 메세지가 hl7rcv를 실행한 콘솔에 stdout 로그로 그대로 출력되었다.

그리고 아래와 같이 수신된 로그가 파일로 출력되었다는 로그도 출력되었다. 

22:51:26.011 INFO  - M-WRITE /home/jinakim/recv/ADT^A01/8b517509-dedd-4217-bc6e-929400de209e

 

 

< 추가 comments >

toolkit help 가이드에 나와 있는 Link Link (2024.04.19 업데이트)에서 hl7 sample message를 다운로드 받아서 전송을 할 때는 sender와 receiver에서 종료 시점에 exception error 가 발생하면서 파일이 생성되지 않았다. 이유는 아직 모르겠다... 흠... 나중에 더 파봐야지...

(2024.04.19 업데이트)

위 이슈와 동일하게 내부 제품에서 생성되는 hl7 메세지의 경우에도 같은 현상(hl7rcv 에서 메세지 수신 시 exception error 발생하며 수신 파일이 생성되지 않는 이슈, 다만 실제 수신 메세지는 콘솔 로그에 출력되긴 함)이 발생하였었다.

이 toolkit 을 실제 제품에서 활용하지 못할 것 같아서 추가로 확인해 보았는데.. 실제 확인된 원인은 toolkit 에서 필수로 확인하는 데이터 메세지가 메세지에 포함되지 않으면 예외처리가 되어 있지 않아서 발생한 것으로 확인하였다.

실제 제품에서는 Receiving Application 과 Receiving Facility 값이 빈 값(|||)으로 포함되어서 발생하였던 문제였고, 위 샘플 예제에서는 Sending Application 관련 정보가 누락된 이슈로 보여진다.

결론은.. toolkit 에서 요구되는 필수 항목이 누락된 메세지로 생성되는 제품의 경우 이 toolkit을 원활하게 사용할 수는 없을 것 같다.. ㅜㅜ

반응형

댓글