C-MOVE 호출 중에 성공적으로 검색되지 않은 모든 SOP 인스턴스 목록을 가져 오는 방법은 무엇입니까?
PACS 서버에서 (C-MOVE) 이미지를 다운로드하기 위해 PyNetDicom을 사용하고 있습니다. C-MOVE 요청을 PACS로 보내는 SCU와 C-STORE 요청을받는 SCP를 구현했습니다.
한 번에 수천 개의 DICOM 이미지를 의미하는 전체 연구를 다운로드합니다. 어떤 이유로 나는 그들 중 일부를받지 못했습니다. C-MOVE 요청에서받은 응답은 성공적으로 전송 된 이미지 수와 실패한 이미지 수 (진행중인 이미지 수와 경고 포함)를 보여줍니다.
나는 실패뿐만 아니라 얼마나 많은 알고 싶습니다, 또한 어떤 사람들은 내가 실패 SOP 인스턴스 UID 목록을 얻으려면 의미하지 못했습니다. 이것은 내 코드의 관련 부분입니다.
# Not shown: Implementation of association (assoc) and making a dataset to query PACS (query_dataset)
responses = assoc.send_c_move(query_dataset, b'NAME_OF_STORAGE_SCP', StudyRootQueryRetrieveInformationModelMove)
for (status, identifier) in responses:
# This works
remaining_operations = status.NumberOfRemainingOperations
completed_operations = status.NumberOfCompletedOperations
failed_operations = status.NumberOfFailedOperations
warning_operations = status.NumberOfWarningOperations
if identifier:
failed_UID_list = identifier.FailedSOPInstanceUIDList # This does not work
이것은 작동하지 않으며 식별자는 작업이 실패했음을 표시 하더라도 항상 입니다. 내가 뭘 잘못 했나요, 아니면 내가 연결하는 PACS가 DICOM과 호환되지 않나요?None
status.Status
답변
C-MOVE SCU로 작동 할 때 실패한 인스턴스에 대한 식별자 (SOP 인스턴스 UID)를 가져올 수있는 방법이 없습니다.
- C-MOVE SCP를 사용하여 세부 정보 / 로그를 별도로 가져올 수 있습니다 (DICOM에서).
- 실패가에 있던 경우에 당신의 C-STORE SCP, 로그 또는 세부 사항이 확인하십시오. C-STORE SCU (다른 시스템)에서 오류가 발생한 경우에는 도움이되지 않을 수 있습니다. 다시 연결해야합니다.
정확히 해결책은 아니지만 C-MOVE 전에 SERIES 수준 쿼리 (C-FIND)를 수행하고 미리 가져올 인스턴스 수 ( NumberOfSeriesRelatedInstances
)를 가져올 수 있습니다. 그러나 이것은 단지 계산을 제공합니다. 식별자가 아닙니다. STUDY 및 환자 수준 쿼리에 대해서도 마찬가지입니다.
이 경우에도 스토리지 약정은 시스템에 인스턴스가 존재하지 않기 때문에 유용하지 않을 수 있습니다. 당신은 식별자를 모릅니다.
IMAGE 레벨 쿼리 (C-FIND)를 사용하면 시리즈 인스턴스 UID를 전달하고 해당 시리즈의 인스턴스 목록을 가져올 수 있습니다. 그러나 SOP 인스턴스 UID를 강제하는 일부 시스템을 발견했습니다. 케이스의 다른 시스템이이를 지원하는 경우 다음을 수행 할 수 있습니다.
- 환자, 연구, 시리즈 및 이미지 수준 쿼리 (C-FIND)를 단계적으로 수행합니다. 자세한 내용 은 이 답변을 참조하십시오.
- 출력을 어딘가에 저장합니다 (메모리 내 목록 또는 데이터베이스 등).
- 정기적 인 C-MOVE를 수행하고 수신 된 인스턴스를 저장된 목록과 비교하십시오. 누락 된 것은 무엇이든 찾고있는 목록입니다.
귀하의 의견에 답변하려면
나는 Failed SOP Instance UID List (0008,0058)
태그를 놓쳤다 .
C.4.2.1.4.2 응답 식별자 구조
실패한 SOP 인스턴스 UID 목록 (0008,0058)은이 C-MOVE 작업이 실패한 C-STORE 하위 작업 SOP 인스턴스의 UID 목록을 지정합니다. C-MOVE 응답의 식별자는 C-MOVE 응답 상태 값에 따라 Failed SOP 인스턴스 UID 목록 (0008,0058)을 조건부로 포함해야합니다. C-STORE 하위 작업이 실패하지 않으면 실패한 SOP 인스턴스 UID 목록 (0008,0058)이 없으므로 C-MOVE 응답에서 데이터 세트가 전송되지 않습니다.
참조 : DICOM PS3.4 2020e-서비스 등급 사양
그것은 당신의 일을해야하는 것 같습니다. 그러나 솔직히 나는 실패한 인스턴스 목록을 보내는 C-MOVE SCP를 본 적이 없었습니다. 코드에서 데이터도 수신하지 않습니다. 나는 그것에 의존하지 않는 것이 좋습니다.