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

dcmtk : dcmqrscp 로 DICOM Query/Retrieve 테스트 (C-FIND, C-MOVE)

by 알탱2 2022. 2. 7.
반응형

dcmtk 를 활용하여 DICOM Query/Retrieve를 사용해야하는 상황이 있었는데, 이전에는 scu역할(client)만 필요하여 findscu, movescu를 활용한 적이 있있다. 하지만 이번엔 findscu, movescu의 scp역할(server)이 필요하게 되어 검색을 하다보니 dcmqrscp를 활용할 수 있어 보여 테스트를 해보았다.

 

** dcmtk 설치하는 방법은 생략한다. 다른 포스트에서 진행하고 추후 링크로 대체할 예정이다.

 

 

0. DCMQRIDX로 검색될 DICOM의 index 정보를 생성

dcmqrscp에서 AETable 설정 영역에 dicom이 포함된 Storage Path 정보를 입력할 예정이다.

해당 Path에 index.bat 파일에서 index 정보를 파싱하여 file을 찾게 되는데, index.bat 파일에 dicom 정보를 하나하나 등록을 해줘야하는 것으로 보인다.

** dcmqrscp를 실행하면 기본적으로 index.bat 파일이 생기는데, dcmqridx로 dicom을 등록해주기 전엔 의미없는 파일이라 삭제해도 상관없다.

 

(1) a.dcm 파일의 index 등록 Command : 

dcmqridx {index.bat 파일 생성 경로} {등록하려는 dicom filepath}
dcmqridx /home/qrtest/dcm/ /home/qrtest/dcm/a.dcm
  • dcmqrscp에서 AETable 설정 영역에 dicom이 포함된 Storage Path 정보를 입력할 예정이다.
  • 해당 Path에 index.bat 파일에서 index 정보를 파싱하여 file을 찾게 되는데, index.bat 파일에 dicom 정보를 하나하나 등록을 해줘야하는 것으로 보인다.

 

1. DCMQRSCP 실행하기

(1) 설정 파일 위치 : (dcmtk 설치 시, 기본 cfg 경로)

/usr/local/etc/dcmtk/dcmqrscp.cfg

(2) 설정 파일 내용 : 

# 주요 변경 설정 항목들
NetworkTCPPort : dcmqrscp 의 LISTEN Port
HostTable : BEGIN과 END 사이에 설정하며, C-MOVE 요청 시, dicom 전송 목적지 정보를 추가
AETable : BEDIN과 END 사이에 설정하며, findscu/movescu 에서 -aec 옵션인 Called AETitle 정보에 넣어줄 AETitle과 정보 제공할 dicom이 존재하는 Storage Path 맵핑 정보를 추가

(3) 실행 Command : 

** 더 많은 옵션은 dcmqrscp --help를 통해 추가하도록 한다.

dcmqrscp -ll info

 

 

2. FINDSCU로 a.dcm 조회하기

-S : 결과를 study 단위로.
-k "0000,0000=string" : keyword 검색 0000,0000 tag에 string이라는 value가 포함된 조건으로 검색
-aec : Called AETitle 정보로, dcmqrscp.cfg에 AETable에 명시된 값만 허용됨
findscu -S -k "0008,0052=STUDY" -k "0010,0020=20190101000001" -aec JINAKIM 10.120.1.40 109 -ll info

findscu로 2개의 dicom-data-set이 검색된 결과

 

 

3. MOVESCU로 a.dcm을 원격지 STORESCP에 전송 요청하기

3.1 C-MOVE 요청을 통해 검색 결과 dicom을 수신할 storescp 실행

dcmqrscp.cfg에 HostTable 에 명시된 값과 일치 하도록 실행
storescp +xa +uf -xs -od /home/qrtest/recv/ --aetitle JINAKIM_QR 10009 -fe .dcm

 

 

3.2 movescu로 C-MOVE 요청

-S : 결과를 study 단위로..
-k "0000,0000=string" : keyword 검색 0000,0000 tag에 string이라는 value가 포함된 조건으로 검색
-aec : Called AETitle 정보로, dcmqrscp.cfg에 AETable에 명시된 값만 허용됨
-aem : Move destination AETitle 정보로, dcmqrscp.cfg에 HostTable에 명시된 값과 일치 해야 함
movescu -S -k "0008,0052=STUDY" -k 0020,000d=1.2.345.678900.1234567890.1 -aec JINAKIM -aem JINAKIM_QR 10.120.1.40 109 -ll info

 

반응형

댓글