Sdílet prostřednictvím


DiCOM Conformance – příkaz v1

Poznámka:

Rozhraní API verze 2 je nejnovější verze rozhraní API a mělo by se používat místo verze 1. Podrobnosti naleznete v dicom Conformance Statement v2 .

Medical Imaging Server for DICOM® podporuje podmnožinu DICOMweb Standard. Podpora zahrnuje:

Kromě toho se podporují následující nestandardní rozhraní API:

Služba používá správu verzí rozhraní REST API. Jako součást základní adresy URL musí být explicitně zadána verze rozhraní REST API, jak je znázorněno v následujícím příkladu:

https://<service_url>/v<version>/studies

Tato verze příkazu shody odpovídá v1 verzi rozhraní REST API.

Informace o tom, jak určit verzi při provádění požadavků, najdete v dokumentaci k správě verzí rozhraní API.

Ukázkové žádosti o podporované transakce najdete v kolekci Postman.

Preambule Sanitizace

Služba ignoruje 128bajtů soubor preambule a nahradí jeho obsah znaky null. Toto chování zajišťuje, aby žádné soubory předávané službou nebyly ohroženy ohrožením zabezpečení zlými úmysly. Tato preambule sanitizace ale také znamená, že preambule používané ke kódování obsahu duálního formátu, jako je TIFF, nelze se službou používat.

Studuje službu

Služba Studies Service umožňuje uživatelům ukládat, načítat a vyhledávat studie DICOM, řady a instance. Přidali jsme nestandardní transakci Delete, která umožňuje celý životní cyklus prostředků.

Store (STOW-RS)

Tato transakce používá metodu POST nebo PUT k ukládání reprezentací studií, řad a instancí obsažených v datové části požadavku.

metoda Cesta Popis
POST .. /studie Ukládat instance.
POST .. /studies/{study} Uložte instance pro konkrétní studii.
PUT .. /studie Instance upsertu
PUT .. /studies/{study} Instance upsertu pro určitou studii.

Parametr study odpovídá atributu StudyInstanceUIDDICOM . Pokud je zadáno, všechny instance, které nepatří do poskytnuté studie, budou odmítnuty s kódem 43265 upozornění.

Podporuje se následující Accept hlavička odpovědi:

  • application/dicom+json

Podporují se následující Content-Type hlavičky:

  • multipart/related; type="application/dicom"
  • application/dicom

Poznámka:

Server nebude přetěžovat ani nahrazovat atributy, které jsou v konfliktu s existujícími daty pro požadavky POST. Všechna data se ukládají podle potřeby. U žádostí o upsert (PUT) se stávající data nahradí přijatými novými daty.

Ukládání požadovaných atributů

Následující prvky DICOM musí být přítomny v každém souboru DICOM, který se pokouší uložit:

  • StudyInstanceUID
  • SeriesInstanceUID
  • SOPInstanceUID
  • SOPClassUID
  • PatientID

Poznámka:

Všechna identifikátory UID musí mít délku 1 až 64 znaků a obsahují pouze alfanumerické znaky nebo následující speciální znaky: ., -. PatientID je ověřen na základě jeho LO VR typu.

Každý uložený soubor musí mít jedinečnou kombinaci StudyInstanceUID, SeriesInstanceUIDa SopInstanceUID. Kód 45070 upozornění se vrátí, pokud soubor se stejnými identifikátory již existuje.

Akceptují se pouze syntaxe přenosu s explicitními reprezentacemi hodnot.

Uložení stavových kódů odpovědí

Kód Popis
200 (OK) Všechny instance SOP v požadavku jsou uloženy.
202 (Accepted) Některé instance v požadavku jsou uložené, ale jiné se nezdařily.
204 (No Content) V žádosti o transakci úložiště nebyl poskytnut žádný obsah.
400 (Bad Request) Požadavek byl špatně naformátován. Zadaný identifikátor instance studie například neodpovídá očekávanému formátu UID.
401 (Unauthorized) Klient není ověřený.
403 (Forbidden) Uživatel nemá oprávnění.
406 (Not Acceptable) Zadaná Accept hlavička není podporovaná.
409 (Conflict) Žádná z instancí v požadavku na transakci úložiště nebyla uložena.
415 (Unsupported Media Type) Content-Type Poskytnutá služba není podporovaná.
503 (Service Unavailable) Služba není k dispozici nebo je zaneprázdněná. Zkuste to později.

Uložení datové části odpovědi

Datová část odpovědi naplní datovou sadu DICOM následujícími prvky.

Značka Název Popis
(0008, 1190) RetrieveURL Adresa URL načtení studie, pokud StudyInstanceUID byla poskytnuta v požadavku na úložiště a alespoň jedna instance je úspěšně uložena.
(0008, 1198) FailedSOPSequence Posloupnost instancí, které se nepodařilo uložit
(0008, 1199) ReferencedSOPSequence Posloupnost uložených instancí

Každá datová sada obsahuje FailedSOPSequence následující prvky (pokud by se soubor DICOM, který se pokouší uložit, mohl být přečtený).

Značka Název Popis
(0008, 1150) ReferencedSOPClassUID Jedinečný identifikátor třídy SOP instance, která se nepodařilo uložit
(0008, 1155) ReferencedSOPInstanceUID Jedinečný identifikátor instance SOP, která se nepodařilo uložit
(0008, 1197) FailureReason Kód důvodu, proč se této instanci nepodařilo uložit
(0074, 1048) FailedAttributesSequence Posloupnost ErrorComment , která zahrnuje důvod každého neúspěšného atributu

Každá datová sada obsahuje ReferencedSOPSequence následující prvky.

Značka Název Popis
(0008, 1150) ReferencedSOPClassUID Jedinečný identifikátor třídy SOP instance, která se nepodařilo uložit
(0008, 1155) ReferencedSOPInstanceUID Jedinečný identifikátor instance SOP, která se nepodařilo uložit
(0008, 1190) RetrieveURL Adresa URL pro načtení této instance na serveru DICOM

Příklad odpovědi s hlavičkou Accept application/dicom+json:

{
  "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"]
      }
    }]
  }
}

Kódy důvodů selhání úložiště

Kód Popis
272 Transakce úložiště neukládala instanci kvůli obecné chybě při zpracování operace.
43264 Ověření instance DICOM se nezdařilo.
43265 Zadaná instance StudyInstanceUID neodpovídá zadanému StudyInstanceUID v požadavku úložiště.
45070 Instance DICOM se stejným StudyInstanceUIDobjektem , SeriesInstanceUIDa SopInstanceUID je již uložena. Pokud chcete aktualizovat obsah, nejprve odstraňte tuto instanci.
45071 Instanci DICOM vytváří jiný proces nebo předchozí pokus o vytvoření selhal a proces vyčištění není dokončen. Před dalším pokusem o vytvoření instance nejprve odstraňte.

Ukládat kódy důvodů upozornění

Kód Popis
45063 Sada dat instance DICOM neodpovídá třídě SOP. Studie Store Transaction (oddíl 10.5) zjistil, že sada dat neodpovídá omezením třídy SOP během ukládání instance.

Ukládat kódy chyb

Kód Popis
100 Zadané atributy instance nesplnily ověřovací kritéria.

Načtení (WADO-RS)

Tato transakce načítání nabízí podporu pro načítání uložených studií, řad, instancí a rámců odkazem.

metoda Cesta Popis
GET .. /studies/{study} Načte všechny instance v rámci studie.
GET .. /studies/{study}/metadata Načte metadata pro všechny instance v rámci studie.
GET .. /studies/{study}/series/{series} Načte všechny instance v rámci řady.
GET .. /studies/{study}/series/{series}/metadata Načte metadata pro všechny instance v rámci řady.
GET .. /studies/{study}/series/{series}/instance/{instance} Načte jednu instanci.
GET .. /studies/{study}/series/{series}/instance/{instance}/metadata Načte metadata pro jednu instanci.
GET .. /studies/{study}/series/{series}/instance/{instance}/rendered Načte instanci vykreslenou do formátu obrázku.
GET .. /studies/{study}/series/{series}/instance/{instance}/frames/{frames} Načte jeden nebo více rámců z jedné instance; Chcete-li zadat více než jeden rámec, použijte čárku k oddělení každého rámce, který se má vrátit. Například /studies/1/series/2/instance/3/frames/4,5,6.
GET .. /studies/{study}/series/{series}/instance/{instance}/frames/{frame}/rendered Načte jeden rámec vykreslený do formátu obrázku.

Načtení instancí ve studii nebo řadě

Následující Accept hlavičky jsou podporovány pro načítání instancí v rámci studie nebo řady.

  • multipart/related; type="application/dicom"; transfer-syntax=*
  • multipart/related; type="application/dicom"; (pokud není zadána syntaxe přenosu, použije se jako výchozí hodnota 1.2.840.10008.1.2.1).
  • 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
  • */*(pokud není zadána syntaxe přenosu, * použije se jako výchozí hodnota a výchozí hodnota mediaType )application/dicom

Načtení instance

Pro načtení konkrétní instance se podporují následující Accept hlavičky:

  • application/dicom; transfer-syntax=*
  • multipart/related; type="application/dicom"; transfer-syntax=*
  • application/dicom; (pokud není zadána syntaxe přenosu, 1.2.840.10008.1.2.1 použije se jako výchozí)
  • multipart/related; type="application/dicom" (pokud není zadána syntaxe přenosu, 1.2.840.10008.1.2.1 použije se jako výchozí)
  • 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
  • */*(pokud není zadána syntaxe přenosu, * použije se jako výchozí hodnota a výchozí hodnota mediaType )application/dicom

Načtení rámců

Pro načítání rámců se podporují následující Accept hlavičky.

  • multipart/related; type="application/octet-stream"; transfer-syntax=*
  • multipart/related; type="application/octet-stream"; (pokud není zadána syntaxe přenosu, 1.2.840.10008.1.2.1 použije se jako výchozí)
  • multipart/related; type="application/octet-stream"; transfer-syntax=1.2.840.10008.1.2.1
  • multipart/related; type="image/jp2"; (pokud není zadána syntaxe přenosu, 1.2.840.10008.1.2.4.90 použije se jako výchozí)
  • multipart/related; type="image/jp2";transfer-syntax=1.2.840.10008.1.2.4.90
  • */*(pokud není zadána syntaxe přenosu, * použije se jako výchozí hodnota a výchozí hodnota mediaType )application/octet-stream

Načtení syntaxe přenosu

Pokud se požadovaná syntaxe přenosu liší od původního souboru, původní soubor se překóduje na požadovanou syntaxi přenosu. Původní soubor musí být jedním z následujících formátů pro úspěšné překódování, jinak může překódování selhat.

  • 1.2.840.10008.1.2 (Little Endian Implicit)
  • 1.2.840.10008.1.2.1 (Little Endian Explicit)
  • 1.2.840.10008.1.2.2 (Explicitní VR Big Endian)
  • 1.2.840.10008.1.2.4.50 (Standardní proces JPEG 1)
  • 1.2.840.10008.1.2.4.57 (JPEG Lossless)
  • 1.2.840.10008.1.2.4.70 (Jpeg Lossless Selection Value 1)
  • 1.2.840.10008.1.2.4.90 (JPEG 2000 Pouze bezeztrátové)
  • 1.2.840.10008.1.2.4.91 (JPEG 2000)
  • 1.2.840.10008.1.2.5 (RLE Bezeztrátové)

Nepodporovaný transfer-syntax výsledek je 406 Not Acceptable.

Načtení metadat (pro studium, řadu nebo instanci)

Následující Accept hlavička je podporovaná pro načítání metadat pro studii, řadu nebo instanci.

  • application/dicom+json

Načítání metadat nevrací atributy s následujícími reprezentacemi hodnot.

Název VR Popis
OB Jiný bajt
OD Druhý double
OF Jiné plovoucí
OL Jiné dlouhé
OV Jiný 64bitový velmi dlouhý
AU Jiné slovo
OSN Neznámý

Načtení ověření mezipaměti metadat (pro studii, řadu nebo instanci)

Ověřování mezipaměti se podporuje pomocí ETag mechanismu. V odpovědi na požadavek na metadata se jako jedna z hlaviček vrátí značka ETag. Tato značka ETag může být uložena do mezipaměti a přidána jako If-None-Match hlavička v pozdějších požadavcích na stejná metadata. Pokud data existují, můžou být možné dva typy odpovědí:

  • Data se od posledního požadavku nezměnila: HTTP 304 (Not Modified) Odpověď se odešle bez textu odpovědi.
  • Data se od posledního požadavku změnila: HTTP 200 (OK) Odpověď se odešle s aktualizovanou značkou ETag. Povinná data se vrátí také jako součást těla.

Načtení vykresleného obrázku (například nebo rámce)

Accept Následující hlavičky jsou podporovány pro načtení vykresleného obrázku instance nebo rámce.

  • image/jpeg
  • image/png

V případě, že není zadána žádná Accept hlavička, služba ve výchozím nastavení vykreslí image/jpeg .

Služba podporuje pouze vykreslování jednoho rámce. Pokud je vykreslování požadováno pro instanci s více snímky, ve výchozím nastavení se jako obrázek vykreslí pouze první snímek.

Při zadávání konkrétního rámce, který se má vrátit, začíná indexování snímků na 1.

Podporuje quality se také parametr dotazu. Celočíselná hodnota od 1 dosadí 100 (1 je nejhorší kvalita a 100 nejlepší kvalita) může být předána jako hodnota parametru dotazu. Tento parametr se používá pro obrázky vykreslené jako jpega pro žádosti o vykreslení se ignoruje png . Pokud není zadán, parametr se ve výchozím nastavení nastaví na 100hodnotu .

Načtení stavových kódů odpovědí

Kód Popis
200 (OK) Všechna požadovaná data byla načtena.
304 (Not Modified) Požadovaná data se od posledního požadavku nezměnila. V tomto případě se obsah nepřidá do textu odpovědi. Další informace najdete v předchozí části Načtení ověření mezipaměti metadat (pro studii, řadu nebo instanci).
400 (Bad Request) Požadavek byl špatně naformátován. Zadaný identifikátor instance studie například neodpovídá očekávanému formátu UID nebo se nepodporuje požadované kódování syntaxe přenosu.
401 (Unauthorized) Klient není ověřený.
403 (Forbidden) Uživatel nemá oprávnění.
404 (Not Found) Zadaný prostředek DICOM nebyl nalezen nebo pro vykreslený požadavek instance neobsahoval pixelová data.
406 (Not Acceptable) Zadaná Accept hlavička není podporovaná nebo pro vykreslení a transkódování požadavků, o které byl požadovaný soubor příliš velký.
503 (Service Unavailable) Služba není k dispozici nebo je zaneprázdněná. Zkuste to později.

Hledání (QIDO-RS)

Dotaz založený na ID objektů DICOM (QIDO) umožňuje vyhledávat studie, řady a instance podle atributů.

metoda Cesta Popis
Hledat studie
GET .. /studie?... Hledání studií
Hledat řady
GET .. /řada?... Hledání řad
GET .. /studies/{study}/series?... Hledání řad ve studii
Hledání instancí
GET .. /instance?... Hledání instancí
GET .. /studies/{study}/instance?... Hledání instancí ve studii
GET .. /studies/{study}/series/{series}/instance?... Hledání instancí v řadě

Hledání se podporuje v následující Accept hlavičce:

  • application/dicom+json

Podporované parametry hledání

Podporují se následující parametry pro každý dotaz.

Klíč Hodnoty podpory Povolený počet Popis
{attributeID}= {value} 0...N Hledání shody atributů a hodnot v dotazu
includefield= {attributeID}
all
0...N Ostatní atributy, které se mají vrátit v odpovědi; Podporují se veřejné i soukromé značky.
Je-li all k dispozici. Další informace o tom, které atributy se vrátí pro každý typ dotazu, najdete v odpovědi vyhledávání.
Pokud je k dispozici kombinace {attributeID} a all je k dispozici, server použije výchozí hodnotu all.
limit= {value} 0..1 Celočíselná hodnota pro omezení počtu hodnot vrácených v odpovědi;
Hodnota může být mezi rozsahem 1 >= x <= 200, výchozí hodnota je 100.
offset= {value} 0..1 Přeskočit {value} výsledky;
Pokud je zadaný posun větší než počet výsledků vyhledávacího dotazu, 204 (no content) vrátí se odpověď.
fuzzymatching= true / false 0..1 Pokud je u atributu PatientName použita pravdivá přibližná shoda; V rámci hodnoty PatientName se slovo předpony shoduje s libovolnou částí názvu. Pokud je například PatientName "John^Doe", pak "joh", "do", "jo do", "Doe" a "John Doe" všechny shody. Ale "ohn" se neshoduje.

Prohledávatelné atributy

Podporujeme vyhledávání následujících atributů a typů hledání.

Klíčové slovo atributu Všechny studie Všechny řady Všechny instance Řada studií Instance studie Instance řady studií
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

Porovnávání hledání

Podporujeme následující odpovídající typy.

Typ hledání Podporovaný atribut Příklad
Dotaz rozsahu StudyDate/PatientBirthDate {attributeID}={value1}-{value2}. U hodnot data a času podporujeme inkluzivní rozsah značky, který je namapován na attributeID >= {value1} AND attributeID <= {value2}. Pokud {value1} není zadáno, budou se všechny výskyty kalendářních dat a časů před a zahrnutím {value2} shodovat. Podobně platí, že pokud {value2} není zadáno, budou se shodovat všechny výskyty a následná data a časy {value1} . Jedna z těchto hodnot však musí být přítomna. {attributeID}={value1}- a {attributeID}=-{value2} jsou platné, {attributeID}=- ale jsou neplatné.
Přesná shoda Všechny podporované atributy {attributeID}={value1}
Přibližná shoda PatientName, ReferringPhysicianName Odpovídá libovolné komponentě názvu, která začíná hodnotou.

ID atributu

Značky lze kódovat několika způsoby pro parametr dotazu. Částečně jsme implementovali standard definovaný v PS3.18 6.7.1.1.1. Podporují se následující kódování značky.

Hodnota Příklad
{group}{element} 0020000D
{dicomKeyword} StudyInstanceUID

Tady je příklad dotazu, který hledá instance:

../instances?Modality=CT&00280011=512&includefield=00280010&limit=5&offset=0

Odpověď hledání

Odpověď je pole datových sad DICOM. V závislosti na prostředku se ve výchozím nastavení vrátí následující atributy.

Výchozí značky studie

Značka Název atributu
(0008, 0005) SpecificCharacterSet
(0008, 0020) StudyDate
(0008, 0030) StudyTime
(0008, 0050) AccessionNumber
(0008, 0056) InstanceAvailability
(0008, 0090) ReferringPhysicianName
(0008, 0201) TimezoneOffsetFromUTC
(0010, 0010) PatientName
(0010, 0020) PatientID
(0010, 0030) PatientBirthDate
(0010, 0040) PatientSex
(0020, 0010) StudyID
(0020, 000D) StudyInstanceUID

Výchozí značky řad

Značka Název atributu
(0008, 0005) SpecificCharacterSet
(0008, 0060) Modality
(0008, 0201) TimezoneOffsetFromUTC
(0008, 103E) SeriesDescription
(0020, 000E) SeriesInstanceUID
(0040, 0244) PerformedProcedureStepStartDate
(0040, 0245) PerformedProcedureStepStartTime
(0040, 0275) RequestAttributesSequence

Výchozí značky instancí

Značka Název atributu
(0008, 0005) SpecificCharacterSet
(0008, 0016) SOPClassUID
(0008, 0018) SOPInstanceUID
(0008, 0056) InstanceAvailability
(0008, 0201) TimezoneOffsetFromUTC
(0020, 0013) InstanceNumber
(0028, 0010) Rows
(0028, 0011) Columns
(0028, 0100) BitsAllocated
(0028, 0008) NumberOfFrames

Pokud includefield=alljsou spolu s výchozími atributy zahrnuté následující atributy. Společně s výchozími atributy je to úplný seznam atributů podporovaných na jednotlivých úrovních prostředků.

Zvláštní studijní značky

Značka Název atributu
(0008, 1030) Study Description
(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

Jiné značky řad

Značka Název atributu
(0020, 0011) SeriesNumber
(0020, 0060) Laterality
(0008, 0021) SeriesDate
(0008, 0031) SeriesTime

Vrátí se následující atributy:

  • Všechny parametry dotazu a identifikátory UID v adrese URL prostředku.
  • IncludeField atributy podporované na této úrovni prostředků.
  • Pokud je All Seriescílový prostředek , Study vrátí se také atributy na úrovni.
  • Pokud je All Instancescílový prostředek , Study pak a Series úrovně atributy jsou také vráceny.
  • Pokud je Study's Instancescílový prostředek , Series vrátí se také atributy na úrovni.
  • NumberOfStudyRelatedInstances Agregovaný atribut je podporován na Study úrovni includeField.
  • NumberOfSeriesRelatedInstances Agregovaný atribut je podporován na Series úrovni includeField.

Kódy odpovědí vyhledávání

Rozhraní API pro dotazy vrátí v odpovědi jeden z následujících stavových kódů.

Kód Popis
200 (OK) Datová část odpovědi obsahuje všechny odpovídající prostředky.
204 (No Content) Hledání se úspěšně dokončilo, ale nevrátil žádné výsledky.
400 (Bad Request) Server nemohl provést dotaz, protože součást dotazu je neplatná. Tělo odpovědi obsahuje podrobnosti o selhání.
401 (Unauthorized) Klient není ověřený.
403 (Forbidden) Uživatel nemá oprávnění.
503 (Service Unavailable) Služba není k dispozici nebo je zaneprázdněná. Zkuste to později.

Další poznámky

  • Dotazování pomocí příkazu TimezoneOffsetFromUTC (00080201) není podporováno.
  • Rozhraní API pro dotazy nevrací 413 (request entity too large). Pokud je požadovaný limit odpovědi dotazu mimo přijatelný rozsah, vrátí se chybný požadavek. Vše, co je požadováno v přijatelném rozsahu, se vyřeší.
  • Pokud je cílovým prostředkem studie nebo řada, existuje potenciál pro nekonzistentní metadata na úrovni studie nebo řady napříč několika instancemi. Například dvě instance můžou mít jiný název patientName. V tomto případě nejnovější vítězství a můžete hledat pouze nejnovější data.
  • Stránkované výsledky jsou optimalizované tak, aby nejprve vrátily odpovídající nejnovější instanci, což může vést k duplicitním záznamům na dalších stránkách, pokud byla přidána novější data odpovídající dotazu.
  • Porovnávání nerozlišuje malá a velká písmena a u typů PN VR se nerozlišuje velká a malá písmena.
  • Porovnávání nerozlišuje malá a velká písmena a u jiných typů řetězcových virtuálních počítačů se rozlišují malá a velká písmena.
  • Pouze první hodnota je indexována, pokud jeden hodnotný datový prvek nesprávně obsahuje více hodnot.

Odstranění

Tato transakce není součástí oficiálního standardu DICOMwe. Používá metodu DELETE k odebrání reprezentací studií, řad a instancí z úložiště.

metoda Cesta Popis
DELETE .. /studies/{study} Odstranění všech instancí pro konkrétní studii
DELETE .. /studies/{study}/series/{series} Odstranění všech instancí pro určitou řadu v rámci studie
DELETE .. /studies/{study}/series/{series}/instance/{instance} Odstranění konkrétní instance v rámci řady

Parametry study, seriesa instance odpovídají atributům StudyInstanceUIDDICOM , SeriesInstanceUIDa SopInstanceUID v uvedeném pořadí.

Hlavička, hlavička Accept Content-Type nebo základní obsah požadavku nejsou nijak omezena.

Poznámka:

Po odstranění transakce nebudou odstraněné instance obnovitelné.

Stavové kódy odpovědí

Kód Popis
204 (No Content) Při odstranění všech instancí SOP
400 (Bad Request) Požadavek byl špatně naformátován.
401 (Unauthorized) Klient není ověřený.
403 (Forbidden) Uživatel nemá oprávnění.
404 (Not Found) Pokud se v rámci studie nenašla zadaná řada nebo nebyla v rámci řady nalezena zadaná instance.
503 (Service Unavailable) Služba není k dispozici nebo je zaneprázdněná. Zkuste to později.

Odstranění datové části odpovědi

Tělo odpovědi je prázdné. Stavový kód je jediné užitečné informace, které se vrátí.

Služba pracovního seznamu (UPS-RS)

Služba DICOM podporuje SOPs nabízených a vyžádaných změn služby worklist (UPS-RS). Služba Worklist poskytuje přístup k jednomu pracovnímu seznamu obsahujícímu pracovní položky, z nichž každá představuje sjednocený krok procedury (UPS).

Proměnná {workitem} v šabloně identifikátoru URI je zkratka pro UID workitem.

Mezi dostupné koncové body UPS-RS patří:

Verb (Příkaz) Cesta Popis
POST {s}/workitems{? AffectedSOPInstanceUID} Vytvoření pracovní položky
POST {s}/workitems/{instance}{?transaction} Aktualizace pracovní položky
GET {s}/workitems{?query*} Vyhledávání pracovních položek
GET {s}/workitems/{instance} Načtení pracovní položky
PUT {s}/workitems/{instance}/state Změna stavu pracovní položky
POST {s}/workitems/{instance}/cancelrequest Zrušit pracovní položku
POST {s}/workitems/{instance}/subscribers/{AETitle}{?deletionlock} Vytvoření odběru
POST {s}/workitems/1.2.840.10008.5.1.4.34.5/ Pozastavení předplatného
DELETE {s}/workitems/{instance}/subscribers/{AETitle} Odstranění předplatného
GET {s}/odběratelé/{AETitle} Otevření kanálu předplatného

Vytvoření pracovní položky

Tato transakce používá metodu POST k vytvoření nového Workitem.

metoda Cesta Popis
POST .. /workitems Vytvoření pracovní položky
POST .. /workitems? {workitem} Vytvoří workitem se zadaným UID.

Pokud není zadáno v identifikátoru URI, datová sada datové části musí obsahovat v atributu SOPInstanceUID Workitem.

V Accept požadavku jsou požadovány hlavičky Content-Type a obě musí mít hodnotu application/dicom+json.

V kontextu konkrétní transakce existuje několik požadavků souvisejících s atributy dat DICOM. Atributy můžou být nutné, aby byly přítomny, nemusely být přítomny, musely být prázdné nebo aby nebyly prázdné. Tyto požadavky najdete v této tabulce.

Poznámka:

I když referenční tabulka uvádí, že UID instance SOP by neměl být k dispozici, tyto pokyny jsou specifické pro protokol DIMSE a zpracovávají se jinak v DICOMWebu. Identifikátor UID instance SOP by měl být v datové sadě, pokud není v identifikátoru URI.

Poznámka:

Všechny kódy podmíněných požadavků včetně 1C a 2C jsou považovány za volitelné.

Vytvoření stavových kódů odpovědí

Kód Popis
201 (Created) Cílová pracovní hodnota byla úspěšně vytvořena.
400 (Bad Request) Došlo k problému s žádostí. Datová část požadavku například nesplňuje požadavky.
401 (Unauthorized) Klient není ověřený.
403 (Forbidden) Uživatel nemá oprávnění.
409 (Conflict) Workitem již existuje.
415 (Unsupported Media Type) Content-Type Poskytnutá služba není podporovaná.
503 (Service Unavailable) Služba není k dispozici nebo je zaneprázdněná. Zkuste to později.

Vytvoření datové části odpovědi

Odpověď na úspěch nemá žádnou datovou část. Hlavičky Location odpovědi Content-Location obsahují odkaz na identifikátor URI vytvořené pracovní položky.

Datová část odpovědi na chybu obsahuje zprávu popisující selhání.

Žádost o zrušení

Tato transakce umožňuje uživateli požádat o zrušení neowned Workitem.

Existují čtyři platné stavy Workitem.

  • SCHEDULED
  • IN PROGRESS
  • CANCELED
  • COMPLETED

Tato transakce je úspěšná pouze proti Workitems ve SCHEDULED stavu. Každý uživatel může nárokovat vlastnictví Workitem nastavením UID transakce a změnou jeho stavu na IN PROGRESS. Od tého dne může uživatel upravit pouze Workitem zadáním správného UID transakce. Zatímco UPS definuje třídy Watch a Event SOP, které umožňují předávat žádosti o zrušení a další události, tato služba DICOM tyto třídy neimplementuje, a tak žádosti o zrušení na pracovní položky, které IN PROGRESS vrací selhání. Vlastněný Workitem lze zrušit prostřednictvím transakce Change Workitem State .

metoda Cesta Popis
POST .. /workitems/{workitem}/cancelrequest Žádost o zrušení naplánované pracovní položky

Záhlaví Content-Type je povinné a musí mít hodnotu application/dicom+json.

Datová část požadavku může obsahovat informace o akci definované ve standardu DICOM.

Stavové kódy žádosti o zrušení odpovědi

Kód Popis
202 (Accepted) Požadavek přijal server, ale stav Cílové pracovní položky se nezmění.
400 (Bad Request) Došlo k potížím se syntaxí požadavku.
401 (Unauthorized) Klient není ověřený.
403 (Forbidden) Uživatel nemá oprávnění.
404 (Not Found) Cílová práce nebyla nalezena.
409 (Conflict) Požadavek je nekonzistentní s aktuálním stavem cílové pracovní položky. Například cílová pracovní položka je ve stavu nebo COMPLETED ve SCHEDULED stavu.
415 (Unsupported Media Type) Content-Type Poskytnutá služba není podporovaná.

Datová část odpovědi na zrušení požadavku

Odpověď na úspěch nemá žádnou datovou část a datová část odpovědi na selhání obsahuje zprávu popisující selhání. Pokud je instance Workitem již ve zrušeném stavu, odpověď obsahuje následující hlavičku upozornění HTTP: 299: The UPS is already in the requested state of CANCELED.

Načtení pracovní položky

Tato transakce načte Workitem. Odpovídá operaci UPS DIMSE N-GET.

Přečtěte si: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.5

Pokud pracovní položka existuje na zdrojovém serveru, vrátí se pracovní položka v přijatelném typu média. Vrácený workitem nebude obsahovat atribut UID transakce (0008 1195). To je nezbytné k zachování role atributu jako přístupový zámek.

metoda Cesta Popis
GET .. /workitems/{workitem} Žádost o načtení workitem

Záhlaví Accept je povinné a musí mít hodnotu application/dicom+json.

Načtení stavových kódů odpovědi Workitem

Kód Popis
200 (OK) Instance workitem byla úspěšně načtena.
400 (Chybný požadavek) Došlo k problému s žádostí.
401 (Neautorizováno) Klient není ověřený.
403 (zakázáno) Uživatel nemá oprávnění.
404 (Nenalezena) Cílová práce nebyla nalezena.

Načtení datové části odpovědi Workitem

  • Odpověď na úspěch má datovou část s jednou částí obsahující požadovanou pracovní položku ve vybraném typu média.
  • Vrácená funkce Workitem nebude obsahovat atribut UID transakce (0008, 1195), protože by měl být znám pouze vlastníkovi.

Aktualizace workitem

Tato transakce upravuje atributy existujícího Workitem. Odpovídá operaci UPS DIMSE N-SET.

Přečtěte si: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.6

Pokud chcete aktualizovat pracovní položku, která je aktuálně ve SCHEDULED stavu, Transaction UID atribut by neměl být k dispozici. Pro Workitem ve IN PROGRESS stavu musí požadavek obsahovat aktuální UID transakce jako parametr dotazu. Pokud je pracovní položka již ve COMPLETED stavu nebo CANCELED ve stavu, je 400 (Bad Request)odpověď .

metoda Cesta Popis
POST .. /workitems/{workitem}? {transaction-uid} Aktualizace transakce Workitem

Záhlaví Content-Type je povinné a musí mít hodnotu application/dicom+json.

Datová část požadavku obsahuje datovou sadu se změnami, které se mají použít na cílovou pracovní část. Při úpravě sekvence musí požadavek obsahovat všechny položky v sekvenci, nejen položky, které se mají upravit. Pokud je potřeba aktualizovat více atributů jako skupinu, proveďte aktualizaci jako více atributů v jednom požadavku, ne jako více požadavků.

V kontextu konkrétní transakce existuje mnoho požadavků souvisejících s atributy dat DICOM. Atributy můžou být nutné, aby byly přítomny, nemusely být přítomny, musely být prázdné nebo aby nebyly prázdné. Tyto požadavky najdete v této tabulce.

Poznámka:

Všechny kódy podmíněných požadavků včetně 1C a 2C jsou považovány za volitelné.

Poznámka:

Požadavek nemůže nastavit hodnotu atributu Krok procedury (0074 1000). Stav kroku procedury se spravuje pomocí transakce Změnit stav nebo požadavek zrušení transakce.

Aktualizace stavových kódů odpovědí na transakci Workitem

Kód Popis
200 (OK) Cílová pracovní hodnota byla aktualizována.
400 (Bad Request) Došlo k problému s žádostí. Příklad: (1) Cílová práce byla ve stavu nebo CANCELED ve COMPLETED stavu. (2) Chybí UID transakce. (3) Id transakce je nesprávné. (4) Datová sada nevyhovuje požadavkům.
401 (Unauthorized) Klient není ověřený.
403 (Forbidden) Uživatel nemá oprávnění.
404 (Not Found) Cílová práce nebyla nalezena.
409 (Conflict) Požadavek je nekonzistentní s aktuálním stavem cílové pracovní položky.
415 (Unsupported Media Type) Content-Type Poskytnutá služba není podporovaná.

Aktualizace datové části odpovědi na transakci Workitem

Server původu podporuje pole hlaviček podle potřeby v tabulce 11.6.3-2.

Odpověď na úspěch nemá žádnou datovou část nebo datovou část obsahující dokument zprávy o stavu.

Datová část odpovědi na selhání může obsahovat zprávu o stavu popisující případné chyby, upozornění nebo jiné užitečné informace.

Změnit stav pracovní položky

Tato transakce se používá ke změně stavu workitem. Odpovídá operaci UPS DIMSE N-ACTION "Změnit stav UPS". Změny stavu se používají k deklaraci vlastnictví, dokončení nebo zrušení workitem.

Přečtěte si: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.7

Pokud pracovní položka existuje na zdrojovém serveru, vrátí se pracovní položka v přijatelném typu média. Vrácený workitem nebude obsahovat atribut UID transakce (0008 1195). To je nezbytné k zachování role tohoto atributu jako zámku přístupu, jak je popsáno zde.

metoda Cesta Popis
PUT .. /workitems/{workitem}/state Změnit stav pracovní položky

Záhlaví Accept je povinné a musí mít hodnotu application/dicom+json.

Datová část požadavku obsahuje elementy change UPS State Data Elements. Mezi tyto datové prvky patří:

  • UID transakce (0008, 1195). Datová část požadavku zahrnuje UID transakce. Uživatelský agent vytvoří UID transakce při vyžádání přechodu do IN PROGRESS stavu pro danou workitem. Uživatelský agent poskytuje UID transakce v následných transakcích s tímto Workitem.
  • Stav kroku postupu (0074, 1000). Právní hodnoty odpovídají požadovanému přechodu stavu. Jsou: IN PROGRESS, COMPLETEDnebo CANCELED.

Změna stavových kódů odpovědi workitem

Kód Popis
200 (OK) Instance Workitem byla úspěšně načtena.
400 (Bad Request) Požadavek nejde provést z jednoho z následujících důvodů. (1) Požadavek není platný vzhledem k aktuálnímu stavu cílové pracovní položky. (2) Chybí UID transakce. (3) Id transakce je nesprávné.
401 (Unauthorized) Klient není ověřený.
403 (Forbidden) Uživatel nemá oprávnění.
404 (Not Found) Cílová práce nebyla nalezena.
409 (Conflict) Požadavek je nekonzistentní s aktuálním stavem cílové pracovní položky.

Datová část odpovědi na změnu stavu workitem

  • Odpovědi zahrnují pole hlaviček zadaná v oddílu 11.7.3.2.
  • Odpověď na úspěch nemá žádnou datovou část.
  • Datová část odpovědi na selhání může obsahovat zprávu o stavu popisující případné chyby, upozornění nebo jiné užitečné informace.

Hledání pracovních položek

Tato transakce umožňuje vyhledávat Workitems podle atributů.

metoda Cesta Popis
GET .. /workitems? Hledání pracovních položek

Hledání se podporuje v následující Accept hlavičce.

  • application/dicom+json

Podporované parametry hledání

Podporují se následující parametry pro každý dotaz.

Klíč Hodnoty podpory Povolený počet Popis
{attributeID}= {value} 0...N Hledání shody atributů a hodnot v dotazu
includefield= {attributeID}
all
0...N Ostatní atributy, které se mají vrátit v odpovědi; Zahrnout lze pouze atributy nejvyšší úrovně , nikoli atributy, které jsou součástí sekvencí. Podporují se veřejné i soukromé značky. Po all zadání najdete další informace o tom, které atributy se vrátí pro každý typ dotazu, viz Odpověď vyhledávání. Pokud je k dispozici kombinace {attributeID} a all je k dispozici, server ve výchozím nastavení použije "all".
limit= {value} 0...1 Celočíselná hodnota pro omezení počtu hodnot vrácených v odpovědi; Hodnota může být mezi rozsahem 1 >= x <= 200, výchozí hodnota 100.
offset= {value} 0...1 Přeskočit počet výsledků: {value} Pokud je zadaný posun větší než počet výsledků vyhledávacího dotazu, 204 (no content) vrátí se odpověď.
fuzzymatching= true | false 0...1 Pokud se pro všechny atributy s reprezentací hodnoty PN (Person Name) (PN) použije pravda přibližná shoda; Provede se shoda slova předpony libovolné části názvu uvnitř těchto atributů. Pokud je například PatientName , pak joh, do, jo doDoe a John Doe všechny John^Doeshody. Neshoduje se všakohn.
Prohledávatelné atributy

Podporujeme vyhledávání těchto atributů.

Klíčové slovo atributu
PatientName
PatientID
ReferencedRequestSequence.AccessionNumber
ReferencedRequestSequence.RequestedProcedureID
ScheduledProcedureStepStartDateTime
ScheduledStationNameCodeSequence.CodeValue
ScheduledStationClassCodeSequence.CodeValue
ScheduledStationGeographicLocationCodeSequence.CodeValue
ProcedureStepState
StudyInstanceUID
Porovnávání hledání

Tyto typy porovnávání podporujeme.

Typ hledání Podporovaný atribut Příklad
Dotaz rozsahu Scheduled​Procedure​Step​Start​Date​Time {attributeID}={value1}-{value2}. U hodnot data a času podporujeme inkluzivní rozsah značky. To je namapováno na attributeID >= {value1} AND attributeID <= {value2}. Pokud {value1} není zadáno, budou se všechny výskyty kalendářních dat a časů před a zahrnutím {value2} shodovat. Podobně platí, že pokud {value2} není zadáno, budou se shodovat všechny výskyty a následná data a časy {value1} . Jedna z těchto hodnot však musí být přítomna. {attributeID}={value1}- a {attributeID}=-{value2} jsou platné, {attributeID}=- ale jsou neplatné.
Přesná shoda Všechny podporované atributy {attributeID}={value1}
Přibližná shoda PatientName Odpovídá libovolné komponentě názvu, která začíná hodnotou.

Poznámka:

I když nepodporujeme úplné porovnávání sekvencí, podporujeme přesnou shodu u atributů uvedených v posloupnosti.

ID atributu

Značky lze kódovat mnoha způsoby pro parametr dotazu. Částečně jsme implementovali standard definovaný v PS3.18 6.7.1.1.1. Podporují se následující kódování značky.

Hodnota Příklad
{group}{element} 00100010
{dicomKeyword} PatientName

Příklad dotazu:

../workitems?PatientID=K123&0040A370.00080050=1423JS&includefield=00404005&limit=5&offset=0

Odpověď hledání

Odpověď je pole datových 0...N sad DICOM s následujícími vrácenými atributy:

Kódy odpovědí vyhledávání

Rozhraní API pro dotazy vrátí v odpovědi jeden z následujících stavových kódů.

Kód Popis
200 (OK) Datová část odpovědi obsahuje všechny odpovídající prostředky.
206 (Partial Content) Datová část odpovědi obsahuje pouze některé výsledky hledání a zbytek je možné vyžádat prostřednictvím příslušného požadavku.
204 (No Content) Hledání se úspěšně dokončilo, ale nevrátil žádné výsledky.
400 (Bad Request) Došlo k problému s žádostí. Například neplatná syntaxe parametru dotazu. Tělo odpovědi obsahuje podrobnosti o selhání.
401 (Unauthorized) Klient není ověřený.
403 (Forbidden) Uživatel nemá oprávnění.
503 (Service Unavailable) Služba není k dispozici nebo je zaneprázdněná. Zkuste to později.

Další poznámky

Rozhraní API pro dotazy nevrací 413 (request entity too large). Pokud je požadovaný limit odpovědi dotazu mimo přijatelný rozsah, vrátí se chybný požadavek. Vše, co je požadováno v přijatelném rozsahu, se vyřeší.

  • Stránkované výsledky jsou optimalizované tak, aby se vrátily jako první odpovídající nejnovější instance, což může vést k duplicitním záznamům na následujících stránkách, pokud byla přidána novější data odpovídající dotazu.
  • Porovnávání nerozlišuje malá a velká písmena a u typů PN VR se nerozlišuje velká a malá písmena.
  • Porovnávání nerozlišuje malá a velká písmena a u jiných typů řetězcových virtuálních počítačů se rozlišují malá a velká písmena.
  • Pokud dojde ke scénáři, kdy dojde ke zrušení workitem a dotazování stejného workitem ve stejnou dobu, dotaz pravděpodobně vyloučí aktualizaci Workitem a kód odpovědi je 206 (Partial Content).

Poznámka:

DICOM® je registrovaná ochranná známka asociace National Electrical Manufacturers Association pro publikace standardů týkající se digitální komunikace s lékařskými informacemi.