Bir C-MOVE çağrısı sırasında başarıyla alınamayan tüm SOP örneklerinin bir listesini nasıl alabilirim?
Bir PACS sunucusundan (C-MOVE) görüntüleri indirmek için PyNetDicom kullanıyorum. PACS'ye C-MOVE istekleri gönderen bir SCU ve C-STORE isteklerini alan bir SCP uyguladım.
Tüm çalışmaları indiriyorum, yani bir seferde birkaç bin DICOM görüntüsü. Nedense bazılarını alamıyorum. C-MOVE isteklerinden aldığım yanıtlar, kaç görüntünün başarıyla gönderildiğini ve kaçının başarısız olduğunu (ayrıca kaçının devam ettiğini ve herhangi bir uyarı olduğunu) gösterir.
Başaramadım sadece kaç bilmek istiyorum, ama aynı zamanda hangi olanları ben Başarısız SOP Örnek UID Listesini almak istiyorum yani başarısız oldu. Bu kodumun ilgili kısmı:
# 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
Bu çalışmaz, tanımlayıcı her zaman None
, status.Status
işlemin başarısız olduğunu gösterse bile . Yanlış bir şey mi yapıyorum yoksa ilişkilendirdiğim PACS DICOM uyumlu değil mi?
Yanıtlar
C-MOVE SCU olarak hareket ettiğinizde başarısız örnekler için tanımlayıcıyı (SOP Örneği UID) almanın bir yolu yoktur.
- Ayrıntıları / günlükleri ayrı olarak (DICOM'dan) almak için C-MOVE SCP'yi devreye alabilirsiniz.
- Başarısızlık üzerine idiyse sizin C-MAĞAZA SCP, günlükleri veya ayrıntıları orada kontrol edin. Başarısızlık C-STORE SCU'da (diğer sistem) ise bu yardımcı olmayabilir, onları tekrar devreye sokmanız gerekir.
Tam olarak bir çözüm değil, ancak C-MOVE'dan önce SERIES düzeyinde sorgulama (C-FIND) yapabilir ve NumberOfSeriesRelatedInstances
önceden çekilecek örnek sayısını ( ) alabilirsiniz . Ancak bu yalnızca bir sayı verir; tanımlayıcı değil. Aynı durum ÇALIŞMA ve HASTA seviyesindeki sorgu için de geçerlidir.
Depolama Taahhüdü bu durumda yararlı olmayabilir çünkü yine, örnekler sisteminizde mevcut değildir; tanımlayıcıları bilmiyorsunuz.
IMAGE düzeyinde sorgu (C-FIND) ile, Seri Örnek UID'sini aktarabilir ve bu seriler için örneklerin listesini alabilirsiniz. Ancak, SOP Örneği UID'yi de zorlayan bazı sistemlerle karşılaştım. Sizin durumunuzdaki başka bir sistem bunu destekliyorsa, aşağıdakileri yapabilirsiniz:
- Adım adım HASTA, ÇALIŞMA, SERİ ve GÖRÜNTÜ düzeyinde sorgu (C-FIND) yapın. Daha fazla ayrıntı için bu yanıta başvurabilirsiniz .
- Çıkışı bir yerde saklayın (bellek içi liste veya veritabanı veya herhangi bir şekilde).
- Normal C-MOVE'unuzu yapın ve alınan örnekleri kayıtlı listenizle karşılaştırın. Eksik olan şey, aradığınızın listesi.
Yorumunuzu cevaplamak için:
Failed SOP Instance UID List (0008,0058)
Etiketi kaçırdım .
C.4.2.1.4.2 Yanıt Tanımlayıcı Yapısı
Başarısız SOP Örneği UID Listesi (0008,0058), bu C-MOVE işleminin başarısız olduğu C-STORE alt işlem SOP Eşgörünümlerinin UID'lerinin bir listesini belirtir. Bir C-MOVE yanıtındaki bir Tanımlayıcı, C-MOVE yanıt durum değerine dayalı olarak Başarısız SOP Örneği UID Listesini (0008,0058) koşullu olarak içermelidir. Başarısız C-STORE alt işlemi yoksa, Başarısız SOP Örneği UID Listesi (0008,0058) yoktur ve bu nedenle C-MOVE yanıtında Veri Seti gönderilmeyecektir.
Referans: DICOM PS3.4 2020e - Hizmet Sınıfı Özellikleri
Görünüşe göre işini yapması gerekiyor. Ama açıkçası, bu tür başarısız örneklerin listesini gönderen C-MOVE SCP'ye hiç rastlamadım (veya fark etmedim). Kodunuzdan verileri de almıyorsunuz. Ona güvenmemenizi tavsiye edeceğim.