Udostępnij za pośrednictwem


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:

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ę , StudyInstanceUIDSeriesInstanceUIDi 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 StudyInstanceUIDelementem , SeriesInstanceUIDi 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 to application/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 to application/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 to application/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 nieuwzglę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=allatrybuty 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 na Study poziomie includeField.
  • NumberOfSeriesRelatedInstances atrybut zagregowany jest obsługiwany na Series poziomie includeField.

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, seriesi instance odpowiadają odpowiednio atrybutom StudyInstanceUIDDICOM , SeriesInstanceUIDi 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, lub COMPLETEDCANCELED.

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, , dojo do, Doe i John Doe John^Doewszystkie 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.