Instrukcja zgodności DICOM w wersji 2
Uwaga
Interfejs API w wersji 2 to najnowsza wersja interfejsu API. Aby uzyskać listę zmian w wersji 2 w porównaniu z wersją 1, zobacz Zmiany interfejsu API usługi DICOM w wersji 2
Serwer Medical Imaging Server dla DICOM® obsługuje podzbiór DICOMweb Standard. Pomoc techniczna obejmuje:
Ponadto te niestandardowe interfejsy API są obsługiwane:
- Zestawienie zmian
- Tagi zapytania rozszerzonego
- Aktualizacja zbiorcza
- Importowanie zbiorcze
- Eksportowanie
Usługa korzysta z przechowywania wersji interfejsu API REST. Wersja interfejsu API REST musi być jawnie określona jako część podstawowego adresu URL, jak w poniższym przykładzie:
https://<service_url>/v<version>/studies
Ta wersja instrukcji zgodności odpowiada v2
wersji interfejsów API REST.
Aby uzyskać więcej informacji na temat określania wersji podczas tworzenia żądań, zobacz dokumentację obsługi wersji interfejsu API.
Przykładowe żądania obsługiwanych transakcji można znaleźć w kolekcji Postman.
Sanityzacja preambuły
Usługa ignoruje 128-bajtową preambułę pliku i zastępuje jego zawartość znakami null. Takie zachowanie gwarantuje, że żadne pliki przekazywane przez usługę nie są narażone na złośliwą lukę w zabezpieczeniach. Jednak ta preambuła oczyszczania oznacza również, że preambuły używane do kodowania zawartości w formacie podwójnym, takiej jak TIFF, nie mogą być używane z usługą.
Usługa studiów
Usługa Studiów umożliwia użytkownikom przechowywanie, pobieranie i wyszukiwanie badań DICOM, serii i wystąpień. Dodaliśmy niestandardową transakcję Usuń, aby umożliwić pełny cykl życia zasobów.
Store (STOW-RS)
Ta transakcja używa metody POST lub PUT do przechowywania reprezentacji badań, serii i wystąpień zawartych w ładunku żądania.
Method | Ścieżka | opis |
---|---|---|
KSIĘGUJ | .. /studia | Przechowywanie wystąpień. |
POST | .. /studies/{study} | Przechowywanie wystąpień dla określonego badania. |
ODŁÓŻ | .. /studia | Wystąpienia upsert. |
ODŁÓŻ | .. /studies/{study} | Wystąpienia upsert do określonego badania. |
Parametr study
odpowiada atrybutowi DICOM StudyInstanceUID. Jeśli zostanie określony, każde wystąpienie, które nie należy do dostarczonego badania, zostanie odrzucone z kodem ostrzegawczym 43265
.
Poniżej znajduje się jedyny obsługiwany nagłówek odpowiedzi Accept
:
application/dicom+json
Obsługiwane są następujące Content-Type
nagłówki:
multipart/related; type="application/dicom"
application/dicom
Uwaga
Serwer nie będzie zmuszać ani zastępować atrybutów, które powodują konflikt z istniejącymi danymi dla żądań POST. Wszystkie dane są przechowywane zgodnie z podanymi danymi. W przypadku żądań upsert (PUT) istniejące dane są zastępowane przez odebrane nowe dane.
Przechowywanie wymaganych atrybutów
Następujące elementy DICOM muszą być obecne w każdym pliku DICOM, który próbuje być przechowywany:
StudyInstanceUID
SeriesInstanceUID
SOPInstanceUID
SOPClassUID
PatientID
Uwaga
Wszystkie identyfikatory UID muszą mieć długość od 1 do 64 znaków i zawierać tylko znaki alfanumeryczne lub następujące znaki specjalne: .
, -
. PatientID
nadal jest wymaganym tagiem i może mieć wartość null w danych wejściowych. PatientID
jest weryfikowany na podstawie jego LO
VR
typu.
Każdy przechowywany plik musi mieć unikatową kombinację , StudyInstanceUID
SeriesInstanceUID
i SopInstanceUID
. Kod 45070
ostrzegawczy jest zwracany, jeśli plik o tych samych identyfikatorach już istnieje.
Akceptowane są tylko składnie transferu z jawnymi reprezentacjami wartości.
Uwaga
Żądania są ograniczone do 4 GB. Żaden pojedynczy plik DICOM ani kombinacja plików nie może przekroczyć tego limitu.
Przechowywanie zmian z wersji 1
W poprzednich wersjach żądanie sklepu nie powiodło się, jeśli weryfikacja dowolnego z wymaganych lub możliwych do wyszukania atrybutów nie powiodła się. Począwszy od wersji 2, żądanie kończy się niepowodzeniem tylko wtedy, gdy wymagane atrybuty kończą się niepowodzeniem.
Niepowodzenie walidacji atrybutów, które nie są wymagane przez interfejs API, powoduje, że plik jest przechowywany z ostrzeżeniem. Zostanie wyświetlone ostrzeżenie dotyczące każdego atrybutu kończącego się niepowodzeniem na wystąpienie. Jeśli sekwencja zawiera atrybut, który kończy się niepowodzeniem weryfikacji lub gdy istnieje wiele problemów z pojedynczym atrybutem, zostanie zanotowany tylko pierwszy błąd przyczyny atrybutu.
Jeśli atrybut jest wypełniony wartościami null, atrybut jest indeksowany podczas wyszukiwania i jest przechowywany w metadanych dicom+json. Nie podano ostrzeżenia o walidacji.
Przechowywanie kodów stanu odpowiedzi
Kod | opis |
---|---|
200 (OK) |
Wszystkie wystąpienia SOP w żądaniu były przechowywane. |
202 (Accepted) |
Serwer pochodzenia przechowywał niektóre wystąpienia, a inne zakończyły się niepowodzeniem lub zwróciły ostrzeżenia. Dodatkowe informacje dotyczące tego błędu można znaleźć w treści komunikatu odpowiedzi. |
204 (No Content) |
W żądaniu transakcji sklepu nie podano zawartości. |
400 (Bad Request) |
Żądanie zostało źle sformatowane. Na przykład podany identyfikator wystąpienia badania nie był zgodny z oczekiwanym formatem UID. |
401 (Unauthorized) |
Klient nie jest uwierzytelniony. |
406 (Not Acceptable) |
Określony Accept nagłówek nie jest obsługiwany. |
409 (Conflict) |
Żadne wystąpienia w żądaniu transakcji sklepu nie były przechowywane. |
415 (Unsupported Media Type) |
Podany Content-Type element nie jest obsługiwany. |
424 (Failed Dependency) |
Usługa DICOM nie może uzyskać dostępu do zasobu, od którego zależy wykonanie tego żądania. Przykładem jest niepowodzenie dostępu do połączonej usługi Data Lake Store lub magazynu kluczy do obsługi szyfrowania kluczy zarządzanych przez klienta. |
500 (Internal Server Error) |
Serwer napotkał nieznany błąd wewnętrzny. Spróbuj ponownie później. |
503 (Service Unavailable) |
Usługa jest niedostępna lub zajęta. Spróbuj ponownie później. |
Płatność odpowiedzi sklepu
Ładunek odpowiedzi wypełnia zestaw danych DICOM następującymi elementami:
Tag | Nazwa/nazwisko | opis |
---|---|---|
(0008, 1190) | RetrieveURL |
Adres URL pobierania badania, jeśli identyfikator StudyInstanceUID został podany w żądaniu sklepu i co najmniej jedno wystąpienie zostało pomyślnie zapisane. |
(0008, 1198) | FailedSOPSequence |
Sekwencja wystąpień, których nie można przechowywać. |
(0008, 1199) | ReferencedSOPSequence |
Sekwencja przechowywanych wystąpień. |
Każdy zestaw danych w pliku FailedSOPSequence
zawiera następujące elementy (jeśli plik DICOM, który próbuje zostać zapisany, może zostać odczytany):
Tag | Nazwa/nazwisko | opis |
---|---|---|
(0008, 1150) | ReferencedSOPClassUID |
Unikatowy identyfikator klasy SOP wystąpienia, którego nie można przechowywać. |
(0008, 1155) | ReferencedSOPInstanceUID |
Unikatowy identyfikator wystąpienia SOP wystąpienia, którego nie można przechowywać. |
(0008, 1197) | FailureReason |
Kod przyczyny, dla którego nie można zapisać tego wystąpienia. |
(0008, 1196) | WarningReason |
Element WarningReason wskazuje problemy z walidacją, które zostały wykryte, ale nie były wystarczająco poważne, aby zakończyć się niepowodzeniem operacji magazynu. |
(0074, 1048) | FailedAttributesSequence |
Sekwencja zawiera przyczynę ErrorComment każdego atrybutu, który zakończył się niepowodzeniem. |
Każdy zestaw danych w obiekcie ReferencedSOPSequence
ma następujące elementy:
Tag | Nazwa/nazwisko | opis |
---|---|---|
(0008, 1150) | ReferencedSOPClassUID |
Unikatowy identyfikator klasy SOP wystąpienia, który został zapisany. |
(0008, 1155) | ReferencedSOPInstanceUID |
Unikatowy identyfikator wystąpienia SOP przechowywanego wystąpienia. |
(0008, 1190) | RetrieveURL |
Adres URL pobierania tego wystąpienia na serwerze DICOM. |
Przykładowa odpowiedź z Accept
nagłówkiem application/dicom+json
bez atrybutu FailedAttributesSequence w dokumentacji referencedSOPSequence:
{
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232"]
},
"00081198":
{
"vr":"SQ",
"Value":
[{
"00081150":
{
"vr":"UI","Value":["cd70f89a-05bc-4dab-b6b8-1f3d2fcafeec"]
},
"00081155":
{
"vr":"UI",
"Value":["22c35d16-11ce-43fa-8f86-90ceed6cf4e7"]
},
"00081197":
{
"vr":"US",
"Value":[43265]
}
}]
},
"00081199":
{
"vr":"SQ",
"Value":
[{
"00081150":
{
"vr":"UI",
"Value":["d246deb5-18c8-4336-a591-aeb6f8596664"]
},
"00081155":
{
"vr":"UI",
"Value":["4a858cbb-a71f-4c01-b9b5-85f88b031365"]
},
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232/series/8c4915f5-cc54-4e50-aa1f-9b06f6e58485/instances/4a858cbb-a71f-4c01-b9b5-85f88b031365"]
}
}]
}
}
Przykładowa odpowiedź z Accept
nagłówkiem z elementem application/dicom+json
FailedAttributesSequence w odwołaniu do elementu ReferencedSOPSequence:
{
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232"]
},
"00081199":
{
"vr":"SQ",
"Value":
[{
"00081150":
{
"vr":"UI",
"Value":["d246deb5-18c8-4336-a591-aeb6f8596664"]
},
"00081155":
{
"vr":"UI",
"Value":["4a858cbb-a71f-4c01-b9b5-85f88b031365"]
},
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232/series/8c4915f5-cc54-4e50-aa1f-9b06f6e58485/instances/4a858cbb-a71f-4c01-b9b5-85f88b031365"]
},
"00081196": {
"vr": "US",
"Value": [
1
]
},
"00741048": {
"vr": "SQ",
"Value": [
{
"00000902": {
"vr": "LO",
"Value": [
"DICOM100: (0008,0020) - Content \"NotAValidDate\" does not validate VR DA: one of the date values does not match the pattern YYYYMMDD"
]
}
},
{
"00000902": {
"vr": "LO",
"Value": [
"DICOM100: (0008,002a) - Content \"NotAValidDate\" does not validate VR DT: value does not mach pattern YYYY[MM[DD[HH[MM[SS[.F{1-6}]]]]]]"
]
}
}
]
}
}]
}
}
Kody przyczyn niepowodzenia magazynu
Kod | opis |
---|---|
272 |
Transakcja magazynu nie przechowywała wystąpienia z powodu ogólnej awarii przetwarzania operacji. |
43264 |
Walidacja wystąpienia DICOM nie powiodła się. |
43265 |
Podane wystąpienie StudyInstanceUID nie pasuje do określonego StudyInstanceUID w żądaniu magazynu. |
45070 |
Wystąpienie DICOM z tym samym StudyInstanceUID elementem , SeriesInstanceUID i SopInstanceUID zostało już zapisane. Jeśli chcesz zaktualizować zawartość, najpierw usuń to wystąpienie. |
45071 |
Wystąpienie DICOM jest tworzone przez inny proces lub poprzednia próba utworzenia nie powiodła się, a proces oczyszczania nie został ukończony. Najpierw usuń wystąpienie przed podjęciem próby utworzenia ponownie. |
Kody przyczyn ostrzeżenia magazynu
Kod | opis |
---|---|
45063 |
Zestaw danych wystąpienia DICOM nie jest zgodny z klasą SOP. Transakcja magazynu badań (sekcja 10.5) zauważyła, że zestaw danych nie pasuje do ograniczeń klasy SOP podczas przechowywania wystąpienia. |
1 |
Transakcja magazynu badań (sekcja 10.5) zauważyła, że zestaw danych ma walidację |
Kody błędów magazynu
Kod | opis |
---|---|
100 |
Podane atrybuty wystąpienia nie spełniają kryteriów weryfikacji. |
Pobieranie (WADO-RS)
Ta funkcja pobierania transakcji oferuje obsługę pobierania przechowywanych badań, serii, wystąpień i ramek według odwołania.
Method | Ścieżka | opis |
---|---|---|
GET | .. /studies/{study} | Pobiera wszystkie wystąpienia w ramach badania. |
GET | .. /studies/{study}/metadata | Pobiera metadane dla wszystkich wystąpień w badaniu |
GET | .. /studies/{study}/series/{series} | Pobiera wszystkie wystąpienia w ramach serii |
GET | .. /studies/{study}/series/{series}/metadata | Pobiera metadane dla wszystkich wystąpień w serii |
GET | .. /studies/{study}/series/{series}/instances/{instance} | Pobiera pojedyncze wystąpienie |
GET | .. /studies/{study}/series/{series}/instances/{instance}/metadata | Pobiera metadane dla pojedynczego wystąpienia |
GET | .. /studies/{study}/series/{series}/instances/{instance}/rendered | Pobiera wystąpienie renderowane w formacie obrazu |
GET | .. /studies/{study}/series/{series}/instances/{instance}/frame/{frame} | Pobiera jedną lub wiele ramek z jednego wystąpienia. Aby określić więcej niż jedną ramkę, przecinek rozdziela każdą ramkę do zwrócenia. Na przykład /studies/1/series/2/instance/3/frames/4,5,6 . |
GET | .. /studies/{study}/series/{series}/instances/{instance}/frame/{frame}/rendered | Pobiera pojedynczą ramkę renderowaną w formacie obrazu |
Pobieranie wystąpień w ramach badania lub serii
Następujące Accept
nagłówki są obsługiwane w przypadku pobierania wystąpień w ramach badania lub serii.
multipart/related; type="application/dicom"; transfer-syntax=*
multipart/related; type="application/dicom";
(jeśli składnia transferu nie jest określona, 1.2.840.10008.1.2.1 jest używana jako domyślna)multipart/related; type="application/dicom"; transfer-syntax=1.2.840.10008.1.2.1
multipart/related; type="application/dicom"; transfer-syntax=1.2.840.10008.1.2.4.90
*/*
(gdy składnia transferu nie jest określona,*
jest używana jako wartość domyślna, a wartość domyślna mediaType toapplication/dicom
)
Pobieranie wystąpienia
Następujące Accept
nagłówki są obsługiwane do pobierania określonego wystąpienia.
application/dicom; transfer-syntax=*
multipart/related; type="application/dicom"; transfer-syntax=*
application/dicom;
(gdy składnia transferu nie jest określona,1.2.840.10008.1.2.1
jest używana jako domyślna)multipart/related; type="application/dicom"
(gdy składnia transferu nie jest określona,1.2.840.10008.1.2.1
jest używana jako domyślna)application/dicom; transfer-syntax=1.2.840.10008.1.2.1
multipart/related; type="application/dicom"; transfer-syntax=1.2.840.10008.1.2.1
application/dicom; transfer-syntax=1.2.840.10008.1.2.4.90
multipart/related; type="application/dicom"; transfer-syntax=1.2.840.10008.1.2.4.90
*/*
(gdy składnia transferu nie jest określona,*
jest używana jako wartość domyślna, a wartość domyślna mediaType toapplication/dicom
)
Pobieranie ramek
Następujące Accept
nagłówki są obsługiwane w przypadku pobierania ramek.
multipart/related; type="application/octet-stream"; transfer-syntax=*
multipart/related; type="application/octet-stream";
(gdy składnia transferu nie jest określona,1.2.840.10008.1.2.1
jest używana jako domyślna)multipart/related; type="application/octet-stream"; transfer-syntax=1.2.840.10008.1.2.1
multipart/related; type="image/jp2";
(gdy składnia transferu nie jest określona,1.2.840.10008.1.2.4.90
jest używana jako domyślna)multipart/related; type="image/jp2";transfer-syntax=1.2.840.10008.1.2.4.90
application/octet-stream; transfer-syntax=*
w przypadku pobierania pojedynczej ramki
*/*
(gdy składnia transferu nie jest określona,*
jest używana jako wartość domyślna, a wartość domyślna mediaType toapplication/octet-stream
)
Pobieranie składni transferu
Gdy żądana składnia transferu różni się od oryginalnego pliku, oryginalny plik jest transkodowany do żądanej składni transferu. Oryginalny plik musi być jednym z następujących formatów, aby transkodowanie powiodło się. W przeciwnym razie transkodowanie może zakończyć się niepowodzeniem.
- 1.2.840.10008.1.2 (Little Endian Implicit)
- 1.2.840.10008.1.2.1 (Mały endian jawny)
- 1.2.840.10008.1.2.2 (Jawne VR Big Endian)
- 1.2.840.10008.1.2.4.50 (Proces bazowy JPEG 1)
- 1.2.840.10008.1.2.4.57 (JPEG Lossless)
- 1.2.840.10008.1.2.4.70 (Wartość zaznaczenia bezstratności JPEG 1)
- 1.2.840.10008.1.2.4.90 (tylko bezstratny JPEG 2000)
- 1.2.840.10008.1.2.4.91 (JPEG 2000)
- 1.2.840.10008.1.2.5 (Bezstratne RLE)
Nieobsługiwane transfer-syntax
wyniki w pliku 406 Not Acceptable
.
Pobieranie metadanych (na potrzeby badania, serii lub wystąpienia)
Poniższy Accept
nagłówek jest obsługiwany do pobierania metadanych dla badania, serii lub wystąpienia.
application/dicom+json
Pobieranie metadanych nie zwraca atrybutów z następującymi reprezentacjami wartości.
Nazwa VR | opis |
---|---|
OB | Inny bajt |
OD | Inne podwójne |
OF | Inny zmiennoprzecinkowy |
OL | Inne długie |
OV | Inne 64-bitowe bardzo długie |
OW | Inny wyraz |
ONZ | Nieznane |
Pobrane metadane zawierają znak null, gdy atrybut został wypełniony wartością null i jest przechowywany w następujący sposób.
Pobieranie weryfikacji pamięci podręcznej metadanych (na potrzeby badania, serii lub wystąpienia)
Walidacja pamięci podręcznej jest obsługiwana ETag
przy użyciu mechanizmu. W odpowiedzi na żądanie metadanych element ETag jest zwracany jako jeden z nagłówków. Ten element ETag można buforować i dodawać jako If-None-Match
nagłówek w późniejszych żądaniach dotyczących tych samych metadanych. Jeśli dane istnieją, mogą istnieć dwa typy odpowiedzi.
- Dane pozostają niezmienione od ostatniego żądania:
HTTP 304 (Not Modified)
odpowiedź jest wysyłana bez treści odpowiedzi. - Dane zmienione od ostatniego żądania:
HTTP 200 (OK)
odpowiedź jest wysyłana przy użyciu zaktualizowanego elementu ETag. Wymagane dane są zwracane w ramach treści.
Pobieranie renderowanego obrazu (na przykład lub ramki)
Następujące Accept
nagłówki są obsługiwane w przypadku pobierania renderowanego obrazu wystąpienia lub ramki.
image/jpeg
image/png
W przypadku, gdy nie Accept
określono nagłówka, usługa domyślnie renderuje image/jpeg
wartość .
Usługa obsługuje tylko renderowanie pojedynczej ramki. Jeśli jest wymagane renderowanie dla wystąpienia z wieloma ramkami, domyślnie tylko pierwsza ramka jest renderowana jako obraz.
Podczas określania konkretnej ramki do zwrócenia indeksowanie ramek rozpoczyna się od 1.
Parametr quality
zapytania jest również obsługiwany. Wartość całkowita między 1
i 100
włącznie (1 jest najgorszą jakością i 100 jest najlepszą jakością) może zostać przekazana jako wartość parametru zapytania. Ten parametr jest używany dla obrazów renderowanych jako jpeg
, i jest ignorowany dla png
żądań renderowania. Jeśli parametr nie zostanie określony, zostanie ustawiona wartość domyślna 100
.
Pobieranie oryginalnej wersji
Użycie operacji zbiorczej aktualizacji umożliwia pobranie oryginalnej lub najnowszej wersji badania, serii lub wystąpienia. Najnowsza wersja badania, serii lub wystąpienia jest zawsze zwracana domyślnie. Oryginalna wersja może zostać zwrócona przez ustawienie nagłówka msdicom-request-original
na true
. Oto przykładowe żądanie:
GET ../studies/{study}/series/{series}/instances/{instance}
Accept: multipart/related; type="application/dicom"; transfer-syntax=*
msdicom-request-original: true
Content-Type: application/dicom
Pobieranie kodów stanu odpowiedzi
Kod | opis |
---|---|
200 (OK) |
Pobrano wszystkie żądane dane. |
304 (Not Modified) |
Żądane dane pozostają niezmienione od ostatniego żądania. Zawartość nie jest dodawana do treści odpowiedzi w takim przypadku. Aby uzyskać więcej informacji, zobacz poprzednią sekcję Pobieranie weryfikacji pamięci podręcznej metadanych (na potrzeby badania, serii lub wystąpienia). |
400 (Bad Request) |
Żądanie zostało źle sformatowane. Na przykład podany identyfikator wystąpienia badania nie jest zgodny z oczekiwanym formatem UID lub żądane kodowanie składni transferu nie jest obsługiwane. |
401 (Unauthorized) |
Klient nie jest uwierzytelniony. |
403 (Forbidden) |
Użytkownik nie jest autoryzowany. |
404 (Not Found) |
Nie można odnaleźć określonego zasobu DICOM lub dla renderowanego żądania wystąpienie nie zawiera danych pikseli. |
406 (Not Acceptable) |
Określony Accept nagłówek nie jest obsługiwany lub w przypadku renderowanych i transkodowanych żądań plik był za duży. |
424 (Failed Dependency) |
Usługa DICOM nie może uzyskać dostępu do zasobu, od którego zależy wykonanie tego żądania. Przykładem jest niepowodzenie dostępu do połączonej usługi Data Lake Store lub magazynu kluczy do obsługi szyfrowania kluczy zarządzanych przez klienta. |
503 (Service Unavailable) |
Usługa jest niedostępna lub zajęta. Spróbuj ponownie później. |
Wyszukiwanie (QIDO-RS)
Zapytanie oparte na identyfikatorze obiektów DICOM (QIDO) umożliwia wyszukiwanie analiz, serii i wystąpień według atrybutów.
Method | Ścieżka | opis |
---|---|---|
Wyszukiwanie badań | ||
GET | .. /studia?... | Wyszukiwanie badań |
Wyszukiwanie serii | ||
GET | .. /seria?... | Wyszukiwanie serii |
GET | .. /studies/{study}/series?... | Wyszukiwanie serii w badaniu |
Wyszukiwanie wystąpień | ||
GET | .. /Wystąpień?... | Wyszukiwanie wystąpień |
GET | .. /studies/{study}/instances?... | Wyszukiwanie wystąpień w badaniu |
GET | .. /studies/{study}/series/{series}/instances?... | Wyszukiwanie wystąpień w serii |
Poniższy Accept
nagłówek jest obsługiwany do wyszukiwania.
application/dicom+json
Wyszukiwanie zmian z wersji 1
W interfejsie API w wersji 1 i w wersji 2, jeśli rozszerzony tag zapytania zawiera jakiekolwiek błędy, ponieważ co najmniej jedno z istniejących wystąpień ma wartość tagu, której nie można indeksować, kolejne zapytania wyszukiwania zawierające tag zapytania rozszerzonego są zwracane erroneous-dicom-attributes
zgodnie z opisem w dokumentacji. Jednak tagi (znane również jako atrybuty) z ostrzeżeniami walidacji z STOW-RS nie są uwzględnione w tym nagłówku. Jeśli żądanie magazynu spowoduje wyświetlenie ostrzeżeń dotyczących sprawdzania poprawności atrybutów z możliwością wyszukiwania w momencie przechowywania wystąpienia, te atrybuty mogą nie być używane do wyszukiwania przechowywanego wystąpienia. Jednak wszystkie atrybuty z możliwością wyszukiwania, które zakończyły się niepowodzeniem, mogą zwracać wyniki, jeśli wartości są zastępowane przez wystąpienia w tej samej analizie lub serii, które są przechowywane po awarii lub jeśli wartości są już poprawnie przechowywane przez poprzednie wystąpienie. Jeśli wartości atrybutów nie są zastępowane, nie generują żadnych wyników wyszukiwania.
Atrybut można poprawić w następujący sposób.
- Usuwanie przechowywanego wystąpienia i przekazywanie nowego wystąpienia z poprawionymi danymi
- Przekaż nowe wystąpienie w tej samej analizie/serii z poprawionymi danymi
Obsługiwane parametry wyszukiwania
Obsługiwane są następujące parametry dla każdego zapytania:
Klucz | Wartości pomocy technicznej | Dozwolona liczba | opis |
---|---|---|---|
{attributeID}= |
{value} |
0...N | Wyszukiwanie dopasowania atrybutu/wartości w zapytaniu |
includefield= |
{attributeID} all |
0...N | Inne atrybuty, które mają być zwracane w odpowiedzi. Obsługiwane są zarówno tagi publiczne, jak i prywatne. Jeśli all zostanie podana, zapoznaj się z artykułem Search Response (Odpowiedź na wyszukiwanie), aby uzyskać więcej informacji.Jeśli podano kombinację elementów {attributeID} i all , serwer domyślnie używa all |
limit= |
{value} |
0..1 | Wartość całkowita, aby ograniczyć liczbę wartości zwracanych w odpowiedzi. Wartość może należeć do zakresu 1 >= x <= 200. Wartość domyślna to 100 |
offset= |
{value} |
0..1 | Pomiń {value} wyniki.Jeśli przesunięcie jest większe niż liczba wyników zapytania wyszukiwania, zwracana jest odpowiedź 204 (brak zawartości). |
fuzzymatching= |
true / false |
0..1 | Jeśli do atrybutu PatientName zastosowano dopasowanie rozmyte true. Wykonuje dopasowanie słowa prefiksu do dowolnej części nazwy wewnątrz wartości PatientName. Na przykład jeśli parametr PatientName to "John^Doe", to "joh", "do", "jo do", "Doe" i "John Doe" są zgodne. Jednak "ohn" nie pasuje. |
Atrybuty z możliwością wyszukiwania
Obsługujemy wyszukiwanie następujących atrybutów i typów wyszukiwania.
Słowo kluczowe atrybutu | Wszystkie badania | Wszystkie serie | Wszystkie wystąpienia | Seria badań | Wystąpienia badania | Wystąpienia serii badań |
---|---|---|---|---|---|---|
StudyInstanceUID |
X | X | X | |||
PatientName |
X | X | X | |||
PatientID |
X | X | X | |||
PatientBirthDate |
X | X | X | |||
AccessionNumber |
X | X | X | |||
ReferringPhysicianName |
X | X | X | |||
StudyDate |
X | X | X | |||
StudyDescription |
X | X | X | |||
ModalitiesInStudy |
X | X | X | |||
SeriesInstanceUID |
X | X | X | X | ||
Modality |
X | X | X | X | ||
PerformedProcedureStepStartDate |
X | X | X | X | ||
ManufacturerModelName |
X | X | X | X | ||
SOPInstanceUID |
X | X | X |
Uwaga
Nie obsługujemy wyszukiwania przy użyciu pustego ciągu dla żadnych atrybutów.
Dopasowywanie wyszukiwania
Obsługujemy następujące pasujące typy.
Typ wyszukiwania | Obsługiwany atrybut | Przykład |
---|---|---|
Kwerenda zakresu | StudyDate /PatientBirthDate |
{attributeID}={value1}-{value2} . W przypadku wartości daty/godziny obsługujemy zakres inkluzywny tagu. Ten zakres jest mapowany na attributeID >= {value1} AND attributeID <= {value2} . Jeśli {value1} nie zostanie określony, wszystkie wystąpienia dat/godzin przed i dołączenie {value2} są zgodne. Podobnie, jeśli {value2} nie zostanie określony, wszystkie wystąpienia {value1} i kolejne daty/godziny są zgodne. Jednak jedna z tych wartości musi być obecna. {attributeID}={value1}- i {attributeID}=-{value2} są prawidłowe, jednak {attributeID}=- jest nieprawidłowe. |
Dokładne dopasowanie | Wszystkie obsługiwane atrybuty | {attributeID}={value1} |
Rozmyte dopasowanie | PatientName , ReferringPhysicianName |
Pasuje do dowolnego składnika nazwy rozpoczynającej się od wartości |
Dopasowanie listy identyfikatorów UID | StudyInstanceUID |
Dopasuje badania zidentyfikowane przez wartości podane na liście. Obsługuje przecinek (,) lub ukośnik odwrotny (\) jako prawidłowy separator. {attributeID}=1.2.3,5.6.7,8.9.0 zwróci szczegóły skojarzone ze wszystkimi badaniami, biorąc pod uwagę, że istnieją. |
Identyfikator atrybutu
Tagi można kodować na kilka sposobów dla parametru zapytania. Częściowo zaimplementowaliśmy standard zdefiniowany w programie PS3.18 6.7.1.1.1. Obsługiwane są następujące kodowanie tagu.
Wartość | Przykład |
---|---|
{group}{element} |
0020000D |
{dicomKeyword} |
StudyInstanceUID |
Przykładowe zapytanie wyszukuje wystąpienia:
../instances?Modality=CT&00280011=512&includefield=00280010&limit=5&offset=0
Odpowiedź na wyszukiwanie
Odpowiedź to tablica zestawów danych DICOM. W zależności od zasobu zwracane są domyślnie następujące atrybuty.
Domyślne tagi badania
Tag | Nazwa atrybutu |
---|---|
(0008, 0020) | StudyDate |
(0008, 0050) | AccessionNumber |
(0008, 1030) | StudyDescription |
(0009, 0090) | ReferringPhysicianName |
(0010, 0010) | PatientName |
(0010, 0020) | PatientID |
(0010, 0030) | PatientBirthDate |
(0020, 000D) | StudyInstanceUID |
Domyślne tagi serii
Tag | Nazwa atrybutu |
---|---|
(0008, 0060) | Modality |
(0008, 1090) | ManufacturerModelName |
(0020, 000E) | SeriesInstanceUID |
(0040, 0244) | PerformedProcedureStepStartDate |
Domyślne tagi wystąpienia
Tag | Nazwa atrybutu |
---|---|
(0008, 0018) | SOPInstanceUID |
Jeśli includefield=all
atrybuty te są uwzględniane wraz z atrybutami domyślnymi. Wraz z atrybutami domyślnymi ta lista zawiera pełną listę atrybutów obsługiwanych na każdym poziomie zasobów.
Inne tagi badania
Tag | Nazwa atrybutu |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0030) | StudyTime |
(0008, 0056) | InstanceAvailability |
(0008, 0201) | TimezoneOffsetFromUTC |
(0008, 0063) | AnatomicRegionsInStudyCodeSequence |
(0008, 1032) | ProcedureCodeSequence |
(0008, 1060) | NameOfPhysiciansReadingStudy |
(0008, 1080) | AdmittingDiagnosesDescription |
(0008, 1110) | ReferencedStudySequence |
(0010, 1010) | PatientAge |
(0010, 1020) | PatientSize |
(0010, 1030) | PatientWeight |
(0010, 2180) | Occupation |
(0010, 21B0) | AdditionalPatientHistory |
(0010, 0040) | PatientSex |
(0020, 0010) | StudyID |
Inne tagi serii
Tag | Nazwa atrybutu |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0201) | TimezoneOffsetFromUTC |
(0020, 0011) | Numer serii |
(0020, 0060) | Laterality |
(0008, 0021) | SeriesDate |
(0008, 0031) | SeriesTime |
(0008, 103E) | SeriesDescription |
(0040, 0245) | PerformedProcedureStepStartTime |
(0040, 0275) | RequestAttributesSequence |
Inne tagi wystąpienia
Tag | Nazwa atrybutu |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0016) | SOPClassUID |
(0008, 0056) | InstanceAvailability |
(0008, 0201) | TimezoneOffsetFromUTC |
(0020, 0013) | Numer wystąpienia |
(0028, 0010) | Wiersze |
(0028, 0011) | Kolumny |
(0028, 0100) | BityPrzydzielone |
(0028, 0008) | NumberOfFrames |
Zwracane są następujące atrybuty.
- Wszystkie zgodne parametry zapytania i identyfikatory UID w adresie URL zasobu
IncludeField
atrybuty obsługiwane na tym poziomie zasobów- Jeśli zasób docelowy to
All Series
,Study
zwracane są również atrybuty poziomu. - Jeśli zasób docelowy to
All Instances
,Series
Study
zwracane są również atrybuty poziomów. - Jeśli zasób docelowy to
Study's Instances
,Series
zwracane są również atrybuty poziomu. NumberOfStudyRelatedInstances
atrybut zagregowany jest obsługiwany naStudy
poziomieincludeField
.NumberOfSeriesRelatedInstances
atrybut zagregowany jest obsługiwany naSeries
poziomieincludeField
.
Kody odpowiedzi wyszukiwania
Interfejs API zapytań zwraca jeden z następujących kodów stanu w odpowiedzi.
Kod | opis |
---|---|
200 (OK) |
Ładunek odpowiedzi zawiera wszystkie pasujące zasoby. |
204 (No Content) |
Wyszukiwanie zostało ukończone pomyślnie, ale nie zwróciło żadnych wyników. |
400 (Bad Request) |
Serwer nie mógł wykonać zapytania, ponieważ składnik kwerendy był nieprawidłowy. Treść odpowiedzi zawiera szczegóły błędu. |
401 (Unauthorized) |
Klient nie jest uwierzytelniony. |
403 (Forbidden) |
Użytkownik nie jest autoryzowany. |
414 (URI Too Long) |
Identyfikator URI przekroczył maksymalną obsługiwaną długość 8192 znaków. |
424 (Failed Dependency) |
Usługa DICOM nie może uzyskać dostępu do zasobu, od którego zależy wykonanie tego żądania. Przykładem jest niepowodzenie dostępu do połączonej usługi Data Lake Store lub magazynu kluczy do obsługi szyfrowania kluczy zarządzanych przez klienta. |
503 (Service Unavailable) |
Usługa jest niedostępna lub zajęta. Spróbuj ponownie później. |
Uwagi
- Wykonywanie zapytań przy użyciu elementu
TimezoneOffsetFromUTC (00080201)
nie jest obsługiwane. - Interfejs API zapytania nie zwraca wartości
413 (request entity too large)
. Jeśli żądany limit odpowiedzi zapytania znajduje się poza dopuszczalnym zakresem, zwracane jest nieprawidłowe żądanie. Wszystkie żądane elementy w dopuszczalnym zakresie są rozwiązywane. - Jeśli zasób docelowy to Badanie/seria, istnieje możliwość niespójnych metadanych na poziomie badania/serii w wielu wystąpieniach. Na przykład dwa wystąpienia mogą mieć różne
patientName
. W takim przypadku najnowsze zwycięstwa i można wyszukiwać tylko na najnowszych danych. - Wyniki stronicowane są zoptymalizowane pod kątem zwracania najpierw dopasowanego najnowszego wystąpienia, co może spowodować zduplikowanie rekordów na kolejnych stronach, jeśli dodano nowsze dane pasujące do zapytania.
- Dopasowywanie nie uwzględnia wielkości liter, a nie akcentu dla typów PN VR.
- Dopasowanie nie uwzględnia wielkości liter i jest wrażliwe na akcent dla innych typów VR ciągów.
- Tylko pierwsza wartość jest indeksowana przez pojedynczy wartość elementu danych, który niepoprawnie ma wiele wartości.
- Użycie atrybutów domyślnych lub ograniczenie liczby żądanych wyników maksymalizuje wydajność.
- Gdy atrybut był przechowywany przy użyciu wypełnienia o wartości null, można go wyszukać z dopełnieniem wartości null lub bez niego w kodowaniu identyfikatora URI. Pobrane wyniki są przeznaczone dla atrybutów przechowywanych zarówno z dopełnianiem wartości null, jak i bez.
Delete
Ta transakcja nie jest częścią oficjalnego DICOMweb Standard. Używa metody DELETE do usuwania reprezentacji studiów, serii i wystąpień ze sklepu.
Method | Ścieżka | opis |
---|---|---|
DELETE | .. /studies/{study} | Usuń wszystkie wystąpienia dla określonego badania. |
DELETE | .. /studies/{study}/series/{series} | Usuń wszystkie wystąpienia dla określonej serii w ramach badania. |
DELETE | .. /studies/{study}/series/{series}/instances/{instance} | Usuń określone wystąpienie w ramach serii. |
Parametry study
, series
i instance
odpowiadają odpowiednio atrybutom StudyInstanceUID
DICOM , SeriesInstanceUID
i SopInstanceUID
.
Brak ograniczeń dotyczących nagłówka, Content-Type
nagłówka Accept
lub treści żądania.
Uwaga
Po transakcji Delete usunięte wystąpienia nie będą możliwe do odzyskania.
Kody stanu odpowiedzi
Kod | opis |
---|---|
204 (No Content) |
Po usunięciu wszystkich wystąpień SOP. |
400 (Bad Request) |
Żądanie zostało źle sformatowane. |
401 (Unauthorized) |
Klient nie jest uwierzytelniony. |
403 (Forbidden) |
Użytkownik nie jest autoryzowany. |
404 (Not Found) |
Kiedy określona seria nie została znaleziona w badaniu lub określone wystąpienie nie zostało znalezione w serii. |
424 (Failed Dependency) |
Usługa DICOM nie może uzyskać dostępu do zasobu, od którego zależy wykonanie tego żądania. Przykładem jest niepowodzenie dostępu do połączonej usługi Data Lake Store lub magazynu kluczy do obsługi szyfrowania kluczy zarządzanych przez klienta. |
503 (Service Unavailable) |
Usługa jest niedostępna lub zajęta. Spróbuj ponownie później. |
Usuwanie ładunku odpowiedzi
Treść odpowiedzi jest pusta. Kod stanu to jedyne przydatne informacje zwrócone.
Usługa listy roboczej (UPS-RS)
Usługa DICOM obsługuje sops wypychania i ściągania usługi Worklist Service (UPS-RS). Ta usługa zapewnia dostęp do jednej listy roboczej zawierającej elementy Workitem, z których każda reprezentuje krok ujednoliconej procedury (UPS).
W całej zmiennej {workitem}
w szablonie identyfikatora URI oznacza identyfikator UID elementu Workitem.
Dostępne punkty końcowe UPS-RS obejmują:
Czasownik | Ścieżka | opis |
---|---|---|
KSIĘGUJ | {s}/workitems{? Identyfikator AffectedSOPInstanceUID} | Utwórz element roboczy |
POST | {s}/workitems/{instance}{?transaction} | Aktualizuj element roboczy |
GET | {s}/workitems{?query*} | Wyszukiwanie elementów roboczych |
GET | {s}/workitems/{instance} | Pobieranie elementu roboczego |
ODŁÓŻ | {s}/workitems/{instance}/state | Zmienianie stanu elementu roboczego |
POST | {s}/workitems/{instance}/cancelrequest | Anulowanie elementu roboczego |
POST | {s}/workitems/{instance}/subskrybenci/{AETitle}{?deletionlock} | Tworzenie subskrypcji |
POST | {s}/workitems/1.2.840.10008.5.1.4.34.5/ | Wstrzymywanie subskrypcji |
DELETE | {s}/workitems/{instance}/subskrybenci/{AETitle} | Usuwanie subskrypcji |
GET | {s}/subskrybenci/{AETitle} | Otwieranie kanału subskrypcji |
Tworzenie elementu roboczego
Ta transakcja używa metody POST do utworzenia nowego elementu Workitem.
Method | Ścieżka | opis |
---|---|---|
KSIĘGUJ | .. /workitems | Utwórz element roboczy. |
POST | .. /workitems? {workitem} | Tworzy element Workitem z określonym identyfikatorem UID. |
Jeśli nie zostanie określony w identyfikatorze URI, zestaw danych ładunku musi zawierać element Workitem w atrybucie SOPInstanceUID
.
Nagłówki Accept
i Content-Type
są wymagane w żądaniu i muszą mieć wartość application/dicom+json
.
Istnieje kilka wymagań związanych z atrybutami danych DICOM w kontekście określonej transakcji. Atrybuty mogą być wymagane do obecności, wymagane, aby nie być obecne, wymagane do pustego lub wymagane, aby nie być puste. Te wymagania można znaleźć w tej tabeli.
Uwaga
Chociaż tabela referencyjna mówi, że identyfikator UID wystąpienia SOP nie powinien być obecny, te wskazówki są specyficzne dla protokołu DIMSE i są obsługiwane inaczej w DICOMWeb. Identyfikator UID wystąpienia SOP powinien być obecny w zestawie danych, jeśli nie w identyfikatorze URI.
Uwaga
Wszystkie kody wymagań warunkowych, w tym 1C i 2C, są traktowane jako opcjonalne.
Tworzenie kodów stanu odpowiedzi
Kod | opis |
---|---|
201 (Created) |
Docelowy element Workitem został pomyślnie utworzony. |
400 (Bad Request) |
Wystąpił problem z żądaniem. Na przykład ładunek żądania nie spełnia wymagań. |
401 (Unauthorized) |
Klient nie jest uwierzytelniony. |
403 (Forbidden) |
Użytkownik nie jest autoryzowany. |
409 (Conflict) |
Element Workitem już istnieje. |
415 (Unsupported Media Type) |
Podany Content-Type element nie jest obsługiwany. |
424 (Failed Dependency) |
Usługa DICOM nie może uzyskać dostępu do zasobu, od którego zależy wykonanie tego żądania. Przykładem jest niepowodzenie dostępu do połączonej usługi Data Lake Store lub magazynu kluczy do obsługi szyfrowania kluczy zarządzanych przez klienta. |
503 (Service Unavailable) |
Usługa jest niedostępna lub zajęta. Spróbuj ponownie później. |
Tworzenie ładunku odpowiedzi
Odpowiedź z informacją o powodzeniu nie ma ładunku. Nagłówki Location
i Content-Location
odpowiedzi zawierają odwołanie URI do utworzonego elementu Workitem.
Ładunek odpowiedzi na błąd zawiera komunikat opisujący błąd.
Żądanie anulowania
Ta transakcja umożliwia użytkownikowi żądanie anulowania nienależącego elementu Workitem.
Istnieją cztery prawidłowe stany Workitem:
SCHEDULED
IN PROGRESS
CANCELED
COMPLETED
Ta transakcja kończy się powodzeniem tylko względem elementów Workitems w SCHEDULED
stanie. Każdy użytkownik może przejąć własność elementu Workitem, ustawiając jego identyfikator UID transakcji i zmieniając jego stan na IN PROGRESS
. Od tego momentu użytkownik może modyfikować tylko element Workitem, podając prawidłowy identyfikator UID transakcji. Podczas gdy ups definiuje klasy SOP watch i event SOP, które zezwalają na przesyłanie żądań anulowania i innych zdarzeń, ta usługa DICOM nie implementuje tych klas, a więc żądania anulowania dla elementów roboczych, które zwracają IN PROGRESS
błąd. Posiadany element Workitem można anulować za pośrednictwem transakcji Change Workitem State .
Method | Ścieżka | opis |
---|---|---|
KSIĘGUJ | .. /workitems/{workitem}/cancelrequest | Żądanie anulowania zaplanowanego elementu workitem |
Nagłówek Content-Type
jest wymagany i musi mieć wartość application/dicom+json
.
Ładunek żądania może zawierać informacje o akcji zgodnie z definicją w standardzie DICOM.
Kody stanu odpowiedzi anulowania żądania
Kod | opis |
---|---|
202 (Accepted) |
Żądanie zostało zaakceptowane przez serwer, ale stan docelowy elementu roboczego nie został jeszcze zmieniony. |
400 (Bad Request) |
Wystąpił problem ze składnią żądania. |
401 (Unauthorized) |
Klient nie jest uwierzytelniony. |
403 (Forbidden) |
Użytkownik nie jest autoryzowany. |
404 (Not Found) |
Nie można odnaleźć elementu workitem docelowego. |
409 (Conflict) |
Żądanie jest niespójne z bieżącym stanem elementu docelowego workitem. Na przykład element Docelowy element roboczy jest w SCHEDULED stanie lub COMPLETED . |
415 (Unsupported Media Type) |
Podany Content-Type element nie jest obsługiwany. |
424 (Failed Dependency) |
Usługa DICOM nie może uzyskać dostępu do zasobu, od którego zależy wykonanie tego żądania. Przykładem jest niepowodzenie dostępu do połączonej usługi Data Lake Store lub magazynu kluczy do obsługi szyfrowania kluczy zarządzanych przez klienta. |
503 (Service Unavailable) |
Usługa jest niedostępna lub zajęta. Spróbuj ponownie później. |
Ładunek odpowiedzi na żądanie anulowania
Odpowiedź z informacją o powodzeniu nie ma ładunku, a ładunek odpowiedzi na błąd zawiera komunikat opisujący błąd.
Jeśli wystąpienie elementu roboczego jest już w stanie anulowanym, odpowiedź zawiera następujący nagłówek ostrzeżenia HTTP: 299: The UPS is already in the requested state of CANCELED.
Pobieranie elementu roboczego
Ta transakcja pobiera element Workitem. Odpowiada operacji UPS DIMSE N-GET.
Zapoznaj się z tematem: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.5
Jeśli element Workitem istnieje na serwerze pochodzenia, element Workitem jest zwracany w akceptowalnym typie nośnika. Zwrócony element Workitem nie będzie zawierać atrybutu UID transakcji (0008 1195). Jest to konieczne, aby zachować rolę atrybutu jako blokadę dostępu.
Method | Ścieżka | opis |
---|---|---|
GET | .. /workitems/{workitem} | Żądanie pobrania elementu roboczego |
Nagłówek Accept
jest wymagany i musi mieć wartość application/dicom+json
.
Pobieranie kodów stanu odpowiedzi elementu workitem
Kod | opis |
---|---|
200 (OK) | Wystąpienie elementu Workitem zostało pomyślnie pobrane. |
400 (Nieprawidłowe żądanie) | Wystąpił problem z żądaniem. |
401 (Brak autoryzacji) | Klient nie jest uwierzytelniony. |
403 (Zabronione) | Użytkownik nie jest autoryzowany. |
404 (nie znaleziono) | Nie można odnaleźć elementu workitem docelowego. |
424 (zależność nie powiodła się) | Usługa DICOM nie może uzyskać dostępu do zasobu, od którego zależy wykonanie tego żądania. Przykładem jest niepowodzenie dostępu do połączonej usługi Data Lake Store lub magazynu kluczy do obsługi szyfrowania kluczy zarządzanych przez klienta. |
503 (Usługa niedostępna) | Usługa jest niedostępna lub zajęta. Spróbuj ponownie później. |
Pobieranie ładunku odpowiedzi workitem
- Odpowiedź powodzenia zawiera pojedynczy ładunek części zawierający żądany element Workitem w wybranym typie multimediów.
- Zwrócony element Workitem nie zawiera atrybutu UID transakcji (0008, 1195), ponieważ powinno to być znane tylko właścicielowi.
Aktualizowanie elementu roboczego
Ta transakcja modyfikuje atrybuty istniejącego elementu Workitem. Odpowiada operacji UPS DIMSE N-SET.
Zapoznaj się z tematem: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.6
Aby zaktualizować element Workitem obecnie w SCHEDULED
stanie, Transaction UID
atrybut nie jest obecny. W przypadku elementu workitem w IN PROGRESS
stanie żądanie musi zawierać bieżący identyfikator UID transakcji jako parametr zapytania. Jeśli element Workitem znajduje się już w stanach COMPLETED
lub CANCELED
, odpowiedź to 400 (Bad Request)
.
Method | Ścieżka | opis |
---|---|---|
KSIĘGUJ | .. /workitems/{workitem}? {transaction-uid} | Aktualizowanie transakcji workitem |
Nagłówek Content-Type
jest wymagany i musi mieć wartość application/dicom+json
.
Ładunek żądania zawiera zestaw danych ze zmianami, które mają zostać zastosowane do docelowego elementu Workitem. Po zmodyfikowaniu sekwencji żądanie musi zawierać wszystkie elementy w sekwencji, a nie tylko elementy do modyfikacji. Jeśli musisz zaktualizować wiele atrybutów jako grupę, zaktualizuj je jako wiele atrybutów w jednym żądaniu, a nie jako wiele żądań.
Istnieje wiele wymagań związanych z atrybutami danych DICOM w kontekście określonej transakcji. Atrybuty mogą być wymagane do obecności, wymagane, aby nie być obecne, wymagane do pustego lub wymagane, aby nie być puste. Te wymagania można znaleźć w tej tabeli.
Uwaga
Wszystkie kody wymagań warunkowych, w tym 1C i 2C, są traktowane jako opcjonalne.
Uwaga
Żądanie nie może ustawić wartości atrybutu Stan kroku procedury (0074 1000). Stan kroku procedury jest zarządzany przy użyciu transakcji Zmień stan lub transakcji anulowania żądania.
Aktualizowanie kodów stanu odpowiedzi transakcji workitem
Kod | opis |
---|---|
200 (OK) |
Docelowy element roboczy został zaktualizowany. |
400 (Bad Request) |
Wystąpił problem z żądaniem. Na przykład: (1) docelowy element roboczy był w COMPLETED stanie lub CANCELED . (2) Brak identyfikatora UID transakcji. (3) Identyfikator UID transakcji jest niepoprawny. (4) zestaw danych nie był zgodny z wymaganiami. |
401 (Unauthorized) |
Klient nie jest uwierzytelniony. |
403 (Forbidden) |
Użytkownik nie jest autoryzowany. |
404 (Not Found) |
Nie można odnaleźć elementu workitem docelowego. |
409 (Conflict) |
Żądanie jest niespójne z bieżącym stanem elementu docelowego workitem. |
415 (Unsupported Media Type) |
Podany Content-Type element nie jest obsługiwany. |
424 (Failed Dependency) |
Usługa DICOM nie może uzyskać dostępu do zasobu, od którego zależy wykonanie tego żądania. Przykładem jest niepowodzenie dostępu do połączonej usługi Data Lake Store lub magazynu kluczy do obsługi szyfrowania kluczy zarządzanych przez klienta. |
503 (Service Unavailable) |
Usługa jest niedostępna lub zajęta. Spróbuj ponownie później. |
Aktualizowanie ładunku odpowiedzi transakcji workitem
Serwer pochodzenia obsługuje pola nagłówków zgodnie z wymaganiami w tabeli 11.6.3-2.
Odpowiedź z informacją o powodzeniu nie zawiera ładunku lub ładunku zawierającego dokument Raport o stanie.
Ładunek odpowiedzi na błąd może zawierać raport o stanie opisujący wszelkie błędy, ostrzeżenia lub inne przydatne informacje.
Zmienianie stanu elementu roboczego
Ta transakcja służy do zmiany stanu elementu workitem. Odpowiada operacji UPS DIMSE N-ACTION "Zmień stan UPS". Zmiany stanu są używane do przejmowania własności, ukończenia lub anulowania elementu workitem.
Zapoznaj się z tematem: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.7
Jeśli element Workitem istnieje na serwerze pochodzenia, element Workitem jest zwracany w akceptowalnym typie nośnika. Zwrócony element Workitem nie będzie zawierać atrybutu UID transakcji (0008 1195). Jest to konieczne, aby zachować rolę atrybutu jako blokadę dostępu zgodnie z opisem w tym miejscu.
Method | Ścieżka | opis |
---|---|---|
ODŁÓŻ | .. /workitems/{workitem}/state | Zmienianie stanu elementu roboczego |
Nagłówek Accept
jest wymagany i musi mieć wartość application/dicom+json
.
Ładunek żądania zawiera elementy danych stanu zmiany UPS. Te elementy danych są następujące.
- Identyfikator UID transakcji (0008, 1195). Ładunek żądania zawiera identyfikator UID transakcji. Agent użytkownika tworzy identyfikator UID transakcji podczas żądania przejścia do
IN PROGRESS
stanu dla danego elementu Workitem. Agent użytkownika udostępnia identyfikator UID transakcji w kolejnych transakcjach z tym elementem Workitem. - Stan kroku procedury (0074, 1000). Wartości prawne odpowiadają żądanemu przejściu stanu. Są to:
IN PROGRESS
, lubCOMPLETED
CANCELED
.
Zmienianie kodów stanu odpowiedzi stanu elementu roboczego
Kod | opis |
---|---|
200 (OK) |
Wystąpienie elementu Workitem zostało pomyślnie pobrane. |
400 (Bad Request) |
Nie można wykonać żądania z jednego z następujących powodów: (1) żądanie nie jest prawidłowe, biorąc pod uwagę bieżący stan elementu roboczego docelowego. (2) Brak identyfikatora UID transakcji. (3) Identyfikator UID transakcji jest niepoprawny |
401 (Unauthorized) |
Klient nie jest uwierzytelniony. |
403 (Forbidden) |
Użytkownik nie jest autoryzowany. |
404 (Not Found) |
Nie można odnaleźć elementu workitem docelowego. |
409 (Conflict) |
Żądanie jest niespójne z bieżącym stanem elementu docelowego workitem. |
424 (Failed Dependency) |
Usługa DICOM nie może uzyskać dostępu do zasobu, od którego zależy wykonanie tego żądania. Przykładem jest niepowodzenie dostępu do połączonej usługi Data Lake Store lub magazynu kluczy do obsługi szyfrowania kluczy zarządzanych przez klienta. |
503 (Service Unavailable) |
Usługa jest niedostępna lub zajęta. Spróbuj ponownie później. |
Zmiana ładunku odpowiedzi stanu workitem
- Odpowiedzi obejmują pola nagłówka określone w sekcji 11.7.3.2.
- Odpowiedź z informacją o powodzeniu nie ma ładunku.
- Ładunek odpowiedzi na błąd może zawierać raport o stanie opisujący wszelkie błędy, ostrzeżenia lub inne przydatne informacje.
Wyszukaj elementy robocze
Ta transakcja umożliwia wyszukiwanie elementów roboczych według atrybutów.
Method | Ścieżka | opis |
---|---|---|
GET | .. /workitems? | Wyszukiwanie elementów roboczych |
Poniższy Accept
nagłówek jest obsługiwany do wyszukiwania.
application/dicom+json
Obsługiwane parametry wyszukiwania
Obsługiwane są następujące parametry dla każdego zapytania:
Klucz | Wartości pomocy technicznej | Dozwolona liczba | opis |
---|---|---|---|
{attributeID}= |
{value} |
0...N | Wyszukaj dopasowanie atrybutu/wartości w zapytaniu. |
includefield= |
{attributeID} all |
0...N | Inne atrybuty, które mają być zwracane w odpowiedzi. Można uwzględnić tylko atrybuty najwyższego poziomu — a nie atrybuty, które są częścią sekwencji. Obsługiwane są zarówno tagi publiczne, jak i prywatne. Po all podaniu. Zobacz Odpowiedź wyszukiwania , aby uzyskać więcej informacji o tym, które atrybuty są zwracane dla każdego typu zapytania. Jeśli podano kombinację elementów {attributeID} i all , serwer domyślnie używa wartości "all". |
limit= |
{value} |
0...1 | Wartość całkowita, aby ograniczyć liczbę wartości zwracanych w odpowiedzi. Wartość może należeć do zakresu 1 >= x <= 200 . Domyślnie ustawiono wartość 100 . |
offset= |
{value} |
0...1 | Pomiń wyniki {value}. Jeśli przesunięcie jest większe niż liczba wyników zapytania wyszukiwania, 204 (no content) zwracana jest odpowiedź. |
fuzzymatching= |
true \ false |
0...1 | Jeśli dopasowanie rozmyte jest stosowane do dowolnych atrybutów z reprezentacją wartości Person Name (PN) (VR). Wykonuje dopasowanie słowa prefiksu do dowolnej części nazwy wewnątrz tych atrybutów. Jeśli na przykład PatientName to , to joh , , do jo do , Doe i John Doe John^Doe wszystkie pasują. Jednak ohn nie pasuje. |
Atrybuty z możliwością wyszukiwania
Obsługujemy wyszukiwanie następujących atrybutów.
Słowo kluczowe atrybutu |
---|
PatientName |
PatientID |
ReferencedRequestSequence.AccessionNumber |
ReferencedRequestSequence.RequestedProcedureID |
ScheduledProcedureStepStartDateTime |
ScheduledStationNameCodeSequence.CodeValue |
ScheduledStationClassCodeSequence.CodeValue |
ScheduledStationGeographicLocationCodeSequence.CodeValue |
ProcedureStepState |
StudyInstanceUID |
Uwaga
Nie obsługujemy wyszukiwania przy użyciu pustego ciągu dla żadnych atrybutów.
Dopasowywanie wyszukiwania
Obsługujemy następujące pasujące typy.
Typ wyszukiwania | Obsługiwany atrybut | Przykład |
---|---|---|
Kwerenda zakresu | ScheduledProcedureStepStartDateTime |
{attributeID}={value1}-{value2} . W przypadku wartości daty/godziny obsługujemy zakres inkluzywny tagu. Ten zakres jest mapowany na attributeID >= {value1} AND attributeID <= {value2} . Jeśli {value1} nie zostanie określony, wszystkie wystąpienia dat/godzin przed i dołączenie {value2} są zgodne. Podobnie, jeśli {value2} nie zostanie określony, wszystkie wystąpienia {value1} i kolejne daty/godziny są zgodne. Jednak jedna z tych wartości musi być obecna. {attributeID}={value1}- i {attributeID}=-{value2} są prawidłowe, {attributeID}=- jednak nie są prawidłowe. |
Dokładne dopasowanie | Wszystkie obsługiwane atrybuty | {attributeID}={value1} |
Rozmyte dopasowanie | PatientName |
Pasuje do dowolnego składnika nazwy rozpoczynającej się od wartości. |
Dopasowanie symboli wieloznacznych | PatientID , ReferencedRequestSequence.AccessionNumber , ReferencedRequestSequence.RequestedProcedureID , ProcedureStepState , ScheduledStationNameCodeSequence.CodeValue , ScheduledStationClassCodeSequence.CodeValue , ScheduledStationGeographicLocationCodeSequence.CodeValue |
Obsługiwane są następujące symbole wieloznaczne: * - Dopasuje zero lub więcej znaków. Na przykład — {attributeID}={val*} pasuje do "val", "valid", "value", ale nie "evaluate". ? - Pasuje do pojedynczego znaku. Na przykład — {attributeID}={valu?} pasuje do "value", "valu1", ale nie "valued" lub "valu" |
Uwaga
Chociaż nie obsługujemy dopasowywania pełnej sekwencji, obsługujemy dokładne dopasowanie atrybutów wymienionych w sekwencji.
Identyfikator atrybutu
Tagi można kodować na wiele sposobów dla parametru zapytania. Częściowo zaimplementowaliśmy standard zdefiniowany w programie PS3.18 6.7.1.1.1. Obsługiwane są następujące kodowanie tagu.
Wartość | Przykład |
---|---|
{group}{element} |
00100010 |
{dicomKeyword} |
PatientName |
Przykładowe zapytanie:
../workitems?PatientID=K123&0040A370.00080050=1423JS&includefield=00404005&limit=5&offset=0
Odpowiedź na wyszukiwanie
Odpowiedź to tablica zestawów 0...N
danych DICOM z zwracanymi następującymi atrybutami.
- Wszystkie atrybuty w tabeli DICOM PowerShell 3.4 CC.2.5-3 z zwracanym typem klucza 1 lub 2
- Wszystkie atrybuty w tabeli DICOM PowerShell 3.4 CC.2.5-3 z zwracanym typem klucza 1C, dla którego spełnione są wymagania warunkowe
- Wszystkie inne atrybuty elementu roboczego przekazane jako parametry dopasowania
- Wszystkie inne atrybuty elementu Workitem przekazane jako
includefield
wartości parametrów
Kody odpowiedzi wyszukiwania
Interfejs API zapytań zwraca jeden z następujących kodów stanu w odpowiedzi:
Kod | opis |
---|---|
200 (OK) |
Ładunek odpowiedzi zawiera cały pasujący zasób. |
206 (Partial Content) |
Ładunek odpowiedzi zawiera tylko niektóre wyniki wyszukiwania, a reszta może być żądana za pośrednictwem odpowiedniego żądania. |
204 (No Content) |
Wyszukiwanie zostało ukończone pomyślnie, ale nie zwróciło żadnych wyników. |
400 (Bad Request) |
Wystąpił problem z żądaniem. Na przykład nieprawidłowa składnia parametru zapytania. Treść odpowiedzi zawiera szczegóły błędu. |
401 (Unauthorized) |
Klient nie jest uwierzytelniony. |
403 (Forbidden) |
Użytkownik nie jest autoryzowany. |
424 (Failed Dependency) |
Usługa DICOM nie może uzyskać dostępu do zasobu, od którego zależy wykonanie tego żądania. Przykładem jest niepowodzenie dostępu do połączonej usługi Data Lake Store lub magazynu kluczy do obsługi szyfrowania kluczy zarządzanych przez klienta. |
503 (Service Unavailable) |
Usługa jest niedostępna lub zajęta. Spróbuj ponownie później. |
Dodatkowe uwagi
Interfejs API zapytania nie zwraca wartości 413 (request entity too large)
. Jeśli żądany limit odpowiedzi zapytania znajduje się poza dopuszczalnym zakresem, zwracane jest nieprawidłowe żądanie. Wszystkie żądane elementy w dopuszczalnym zakresie są rozwiązywane.
- Wyniki stronicowane są zoptymalizowane pod kątem pierwszego zwracania dopasowanego najnowszego wystąpienia, co może spowodować zduplikowanie rekordów na kolejnych stronach, jeśli dodano nowsze dane pasujące do zapytania.
- Dopasowywanie jest bez uwzględniania wielkości liter i bez uwzględniania akcentów dla typów VR PN.
- Dopasowywanie jest bez uwzględniania wielkości liter i rozróżnianie akcentów dla innych typów VR ciągów.
- Jeśli istnieje scenariusz polegający na tym, że anulowanie elementu Workitem i wykonywanie zapytań w tym samym czasie odbywa się tak samo, zapytanie najprawdopodobniej wyklucza element Workitem, który jest aktualizowany, a kod odpowiedzi to
206 (Partial Content)
.
Uwaga
DICOM® jest zastrzeżonym znakiem towarowym National Electrical Manufacturers Association for its Standards publikacji odnoszących się do cyfrowej komunikacji informacji medycznych.