Condividi tramite


Istruzione di conformità DICOM v1

Nota

L'API versione 2 è la versione più recente dell'API e deve essere usata al posto di v1. Per informazioni dettagliate, vedere l'istruzione di conformità DICOM v2 .

Medical Imaging Server per DICOM® supporta un subset dello standard DICOMweb. Il supporto include:

Sono supportate anche le API non standard seguenti:

Il servizio usa il controllo delle versioni dell'API REST. La versione dell'API REST deve essere specificata in modo esplicito come parte dell'URL di base, come nell'esempio seguente:

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

Questa versione dell'istruzione di conformità corrisponde alla v1 versione delle API REST.

Per altre informazioni su come specificare la versione durante l'esecuzione di richieste, vedere la documentazione sul controllo delle versioni dell'API.

È possibile trovare richieste di esempio per le transazioni supportate nella raccolta Postman.

Purificazione preambolo

Il servizio ignora il preambolo file a 128 byte e ne sostituisce il contenuto con caratteri Null. Questo comportamento garantisce che nessun file passato attraverso il servizio sia vulnerabile alla vulnerabilità del preambolo dannoso. Tuttavia, questo preambolo di purificazione significa anche che i preamboli usati per codificare contenuto in formato doppio, ad esempio TIFF, non possono essere usati con il servizio.

Servizio Studi

Il servizio Studies consente agli utenti di archiviare, recuperare e cercare studi, serie e istanze DICOM. È stata aggiunta la transazione Delete non standard per abilitare un ciclo di vita completo delle risorse.

Store (STOW-RS)

Questa transazione usa il metodo POST o PUT per archiviare rappresentazioni di studi, serie e istanze contenute nel payload della richiesta.

metodo Percorso Descrizione
POST .. /Studi Archiviare le istanze.
POST .. /studies/{study} Archiviare le istanze per uno studio specifico.
PUT .. /Studi Istanze di Upsert.
PUT .. /studies/{study} Istanze di Upsert per uno studio specifico.

Il parametro study corrisponde all'attributo DICOM StudyInstanceUID. Se specificato, qualsiasi istanza che non appartiene allo studio fornito viene rifiutata con un codice di 43265 avviso.

Sono supportate le intestazioni seguenti Accept per la risposta:

  • application/dicom+json

Sono supportate le intestazioni seguenti Content-Type :

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

Nota

Il server non commetterà o sostituirà gli attributi in conflitto con i dati esistenti per le richieste POST. Tutti i dati vengono archiviati come specificato. Per le richieste upsert (PUT), i dati esistenti vengono sostituiti dai nuovi dati ricevuti.

Archiviare gli attributi obbligatori

Gli elementi DICOM seguenti devono essere presenti in ogni file DICOM che tenta di archiviare:

  • StudyInstanceUID
  • SeriesInstanceUID
  • SOPInstanceUID
  • SOPClassUID
  • PatientID

Nota

Tutti gli UID devono avere una lunghezza compresa tra 1 e 64 caratteri e contenere solo caratteri alfa numerici o i caratteri speciali seguenti: ., -. PatientID viene convalidato in base al tipo LOVR .

Ogni file archiviato deve avere una combinazione univoca di StudyInstanceUID, SeriesInstanceUIDe SopInstanceUID. Il codice 45070 di avviso viene restituito se esiste già un file con gli stessi identificatori.

Vengono accettate solo le sintassi di trasferimento con rappresentazioni di valore esplicite.

Archiviare i codici di stato della risposta

Codice Descrizione
200 (OK) Tutte le istanze SOP nella richiesta vengono archiviate.
202 (Accepted) Alcune istanze della richiesta vengono archiviate ma altre non sono riuscite.
204 (No Content) Nessun contenuto specificato nella richiesta di transazione di archiviazione.
400 (Bad Request) La richiesta non è stata formattata in modo corretto. Ad esempio, l'identificatore dell'istanza di studio fornita non è conforme al formato UID previsto.
401 (Unauthorized) Il client non è autenticato.
403 (Forbidden) L'utente non è autorizzato.
406 (Not Acceptable) L'intestazione specificata Accept non è supportata.
409 (Conflict) Nessuna delle istanze nella richiesta di transazione di archiviazione è stata archiviata.
415 (Unsupported Media Type) L'oggetto fornito Content-Type non è supportato.
503 (Service Unavailable) Il servizio non è disponibile o occupato. Riprovare.

Archiviare il payload della risposta

Il payload della risposta popola un set di dati DICOM con gli elementi seguenti:

Tag Nome Descrizione
(0008, 1190) RetrieveURL URL di recupero dello studio se studyInstanceUID è stato fornito nella richiesta di archiviazione e almeno un'istanza viene archiviata correttamente.
(0008, 1198) FailedSOPSequence Sequenza di istanze che non sono riuscite a archiviare.
(0008, 1199) ReferencedSOPSequence Sequenza di istanze archiviate.

Ogni set di dati in FailedSOPSequence ha gli elementi seguenti (se il file DICOM che tenta di essere archiviato potrebbe essere letto):

Tag Nome Descrizione
(0008, 1150) ReferencedSOPClassUID Identificatore univoco della classe SOP dell'istanza che non è riuscita a archiviare.
(0008, 1155) ReferencedSOPInstanceUID Identificatore univoco dell'istanza SOP dell'istanza che non è stato possibile archiviare.
(0008, 1197) FailureReason Codice motivo per cui questa istanza non è riuscita a archiviare.
(0074, 1048) FailedAttributesSequence Sequenza di che include il motivo di ErrorComment ogni attributo non riuscito.

Ogni set di dati in ReferencedSOPSequence ha gli elementi seguenti:

Tag Nome Descrizione
(0008, 1150) ReferencedSOPClassUID Identificatore univoco della classe SOP dell'istanza che non è riuscita a archiviare.
(0008, 1155) ReferencedSOPInstanceUID Identificatore univoco dell'istanza SOP dell'istanza che non è stato possibile archiviare.
(0008, 1190) RetrieveURL URL di recupero di questa istanza nel server DICOM.

Risposta di esempio con Accept intestazione 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"]
      }
    }]
  }
}

Codici di motivo dell'errore di archiviazione

Codice Descrizione
272 La transazione di archiviazione non ha archiviato l'istanza a causa di un errore generale durante l'elaborazione dell'operazione.
43264 L'istanza DICOM non ha superato la convalida.
43265 L'istanza StudyInstanceUID specificata non corrisponde all'oggetto specificato StudyInstanceUID nella richiesta di archiviazione.
45070 Un'istanza DICOM con lo stesso StudyInstanceUIDoggetto , SeriesInstanceUIDe SopInstanceUID è già archiviata. Se si desidera aggiornare il contenuto, eliminare prima questa istanza.
45071 Un'istanza DICOM viene creata da un altro processo o il tentativo precedente di creare non è riuscito e il processo di pulizia non è completo. Eliminare prima di tentare di creare di nuovo l'istanza.

Archiviare i codici motivo di avviso

Codice Descrizione
45063 Un set di dati dell'istanza DICOM non corrisponde alla classe SOP. La transazione dell'archivio studi (sezione 10.5) ha osservato che il set di dati non corrisponde ai vincoli della classe SOP durante l'archiviazione dell'istanza.

Archivia codici di errore

Codice Descrizione
100 Gli attributi dell'istanza forniti non soddisfano i criteri di convalida.

Recuperare (WADO-RS)

Questa transazione di recupero offre il supporto per il recupero di studi archiviati, serie, istanze e frame per riferimento.

metodo Percorso Descrizione
GET .. /studies/{study} Recupera tutte le istanze all'interno di uno studio.
GET .. /studies/{study}/metadata Recupera i metadati per tutte le istanze all'interno di uno studio.
GET .. /studies/{study}/series/{series} Recupera tutte le istanze all'interno di una serie.
GET .. /studies/{study}/series/{series}/metadata Recupera i metadati per tutte le istanze all'interno di una serie.
GET .. /studies/{study}/series/{series}/instances/{instance} Recupera una singola istanza.
GET .. /studies/{study}/series/{series}/instances/{instance}/metadata Recupera i metadati per una singola istanza.
GET .. /studies/{study}/series/{series}/instances/{instance}/renderd Recupera un'istanza di cui viene eseguito il rendering in un formato immagine
GET .. /studies/{study}/series/{series}/instances/{instance}/frames/{frames} Recupera uno o più fotogrammi da una singola istanza. Per specificare più fotogrammi, usare una virgola per separare ogni fotogramma da restituire. Ad esempio: /studies/1/series/2/instance/3/frames/4,5,6.
GET .. /studies/{study}/series/{series}/instances/{instance}/frames/{frame}/renderd Recupera un singolo frame di cui viene eseguito il rendering in un formato immagine.

Recuperare istanze all'interno di uno studio o di una serie

Le intestazioni seguenti Accept sono supportate per il recupero di istanze all'interno di uno studio o di una serie:

  • multipart/related; type="application/dicom"; transfer-syntax=*
  • multipart/related; type="application/dicom"; Quando non viene specificata la sintassi di trasferimento, viene usata come impostazione predefinita 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
  • */* Quando non viene specificata la sintassi di trasferimento, * viene usata come impostazione predefinita e mediaType viene application/dicomusato per impostazione predefinita .

Recuperare un'istanza

Le intestazioni seguenti Accept sono supportate per il recupero di un'istanza specifica:

  • application/dicom; transfer-syntax=*
  • multipart/related; type="application/dicom"; transfer-syntax=*
  • application/dicom; (quando la sintassi di trasferimento non è specificata, 1.2.840.10008.1.2.1 viene usata come impostazione predefinita)
  • multipart/related; type="application/dicom" (quando la sintassi di trasferimento non è specificata, 1.2.840.10008.1.2.1 viene usata come impostazione predefinita)
  • 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
  • */* Quando non viene specificata la sintassi di trasferimento, * viene usata come impostazione predefinita e mediaType viene application/dicomusato per impostazione predefinita .

Recuperare fotogrammi

Per il recupero dei fotogrammi sono supportate le intestazioni seguenti Accept :

  • multipart/related; type="application/octet-stream"; transfer-syntax=*
  • multipart/related; type="application/octet-stream"; (quando la sintassi di trasferimento non è specificata, 1.2.840.10008.1.2.1 viene usata come impostazione predefinita)
  • multipart/related; type="application/octet-stream"; transfer-syntax=1.2.840.10008.1.2.1
  • multipart/related; type="image/jp2"; (quando la sintassi di trasferimento non è specificata, 1.2.840.10008.1.2.4.90 viene usata come impostazione predefinita)
  • multipart/related; type="image/jp2";transfer-syntax=1.2.840.10008.1.2.4.90
  • */* Quando non viene specificata la sintassi di trasferimento, * viene usata come impostazione predefinita e mediaType viene application/octet-streamusato per impostazione predefinita .

Recuperare la sintassi di trasferimento

Quando la sintassi di trasferimento richiesta è diversa dal file originale, il file originale viene transcodificato per la sintassi di trasferimento richiesta. Il file originale deve essere uno dei formati seguenti per la transcodifica, altrimenti la transcodifica potrebbe non riuscire:

  • 1.2.840.10008.1.2 (implicito Little Endian)
  • 1.2.840.10008.1.2.1 (Little Endian Explicit)
  • 1.2.840.10008.1.2.2 (Explicit VR Big Endian)
  • 1.2.840.10008.1.2.4.50 (processo di base JPEG 1)
  • 1.2.840.10008.1.2.4.57 (JPEG senza perdita)
  • 1.2.840.10008.1.2.4.70 (valore di selezione senza perdita JPEG 1)
  • 1.2.840.10008.1.2.4.90 (solo JPEG 2000 senza perdita)
  • 1.2.840.10008.1.2.4.91 (JPEG 2000)
  • 1.2.840.10008.1.2.5 (senza perdita RLE)

Un risultato non supportato transfer-syntax in 406 Not Acceptable.

Recuperare i metadati (per studio, serie o istanza)

L'intestazione seguente Accept è supportata per il recupero di metadati per uno studio, una serie o un'istanza:

  • application/dicom+json

Il recupero dei metadati non restituisce attributi con le rappresentazioni di valore seguenti:

Nome VR Descrizione
OB Altro byte
OD Altro doppio
OF Altro float
OL Altro long
OV Altri 64 bit molto lunghi
OW Altre parole
UN Sconosciuto

Recuperare la convalida della cache dei metadati (per studio, serie o istanza)

La convalida della cache è supportata tramite il ETag meccanismo . Nella risposta a una richiesta di metadati, ETag viene restituito come una delle intestazioni. Questo ETag può essere memorizzato nella cache e aggiunto come If-None-Match intestazione nelle richieste successive per gli stessi metadati. Se i dati esistono, sono possibili due tipi di risposte:

  • I dati sono invariati dall'ultima richiesta: HTTP 304 (Not Modified) la risposta viene inviata senza corpo della risposta.
  • Dati modificati dall'ultima richiesta: HTTP 200 (OK) la risposta viene inviata con ETag aggiornato. I dati obbligatori vengono restituiti anche come parte del corpo.

Recuperare un'immagine di cui è stato eseguito il rendering (ad esempio o frame)

Le intestazioni seguenti Accept sono supportate per il recupero di un'immagine sottoposta a rendering di un'istanza o di un frame:

  • image/jpeg
  • image/png

Nel caso in cui non venga specificata alcuna Accept intestazione, il servizio esegue il rendering di un oggetto image/jpeg per impostazione predefinita.

Il servizio supporta solo il rendering di un singolo frame. Se viene richiesto il rendering per un'istanza con più fotogrammi, per impostazione predefinita viene eseguito il rendering solo del primo fotogramma come immagine.

Quando si specifica un frame specifico da restituire, l'indicizzazione dei fotogrammi inizia da 1.

Il quality parametro di query è supportato anche. Un valore intero compreso tra 1 e 100 inclusivo (1 è di qualità peggiore e 100 è la migliore qualità) può essere passato come valore per il parametro di query. Questo parametro viene usato per le immagini di cui viene eseguito il rendering come jpege viene ignorato per png le richieste di rendering. Se il parametro non è specificato per impostazione predefinita su 100.

Recuperare i codici di stato della risposta

Codice Descrizione
200 (OK) Tutti i dati richiesti sono stati recuperati.
304 (Not Modified) I dati richiesti non sono stati modificati dopo l'ultima richiesta. Il contenuto non viene aggiunto al corpo della risposta in questo caso. Per altre informazioni, vedere la sezione precedente Recuperare la convalida della cache dei metadati (per studio, serie o istanza).
400 (Bad Request) La richiesta non è stata formattata in modo corretto. Ad esempio, l'identificatore dell'istanza di studio fornita non è conforme al formato UID previsto o la codifica della sintassi di trasferimento richiesta non è supportata.
401 (Unauthorized) Il client non è autenticato.
403 (Forbidden) L'utente non è autorizzato.
404 (Not Found) Impossibile trovare la risorsa DICOM specificata o per la richiesta sottoposta a rendering l'istanza non contiene dati pixel.
406 (Not Acceptable) L'intestazione specificata Accept non è supportata o per il rendering e le transazioni richiedono che il file richiesto sia troppo grande.
503 (Service Unavailable) Il servizio non è disponibile o occupato. Riprovare.

Ricerca (QIDO-RS)

La query basata sull'ID per oggetti DICOM (QIDO) consente di cercare studi, serie e istanze in base agli attributi.

metodo Percorso Descrizione
Cerca studi
GET .. /Studi?... Ricerca di studi
Cercare serie
GET .. /Serie?... Cercare serie
GET .. /studies/{study}/series?... Cercare serie in uno studio
Cercare istanze
GET .. /Istanze?... Cercare le istanze
GET .. /studies/{study}/instances?... Cercare istanze in uno studio
GET .. /studies/{study}/series/{series}/instances?... Cercare istanze in una serie

Per la ricerca sono supportate le intestazioni seguenti Accept :

  • application/dicom+json

Parametri di ricerca supportati

Sono supportati i parametri seguenti per ogni query:

Chiave Valori di supporto Conteggio consentito Descrizione
{attributeID}= {value} 0...N Cercare la corrispondenza tra attributi e valori nella query.
includefield= {attributeID}
all
0...N Gli altri attributi da restituire nella risposta. Sono supportati sia tag pubblici che privati.
Quando all viene specificato, fare riferimento a Search Response (Risposta di ricerca) per altre informazioni sugli attributi restituiti per ogni tipo di query.
Se viene specificata una combinazione di {attributeID} e all , per impostazione predefinita il server usa all.
limit= {value} 0..1 Valore intero per limitare il numero di valori restituiti nella risposta.
Il valore può essere compreso tra l'intervallo 1 >= x <= 200. Il valore predefinito è 100.
offset= {value} 0..1 Ignorare {value} i risultati.
Se viene fornito un offset maggiore del numero di risultati della query di ricerca, viene restituita una risposta 204 (nessun contenuto).
fuzzymatching= true / false 0..1 Se la corrispondenza fuzzy true viene applicata all'attributo PatientName. Esegue una corrispondenza di parola con prefisso di qualsiasi parte del nome all'interno del valore PatientName. Ad esempio, se PatientName è "John^Doe", "joh", "do", "jo do", "Doe" e "John Doe" corrispondono tutti. Tuttavia, "ohn" non corrisponde.

Attributi ricercabili

È supportata la ricerca negli attributi e nei tipi di ricerca seguenti.

Parola chiave Attribute Tutti gli studi Tutte le serie Tutte le istanze Serie di studi Istanze dello studio Istanze della serie di 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

Ricerca corrispondente

Sono supportati i tipi di corrispondenza seguenti.

Tipo di ricerca Attributo supportato Esempio
Query di intervallo StudyDate/PatientBirthDate {attributeID}={value1}-{value2}. Per i valori di data/ora, è supportato un intervallo inclusivo nel tag . Viene eseguito il mapping a attributeID >= {value1} AND attributeID <= {value2}. Se {value1} non viene specificato, vengono confrontate tutte le occorrenze di date/ore precedenti a e incluse {value2} . Analogamente, se {value2} non viene specificato, vengono confrontate tutte le occorrenze di {value1} e le date/ore successive. Tuttavia, uno di questi valori deve essere presente. {attributeID}={value1}- e {attributeID}=-{value2} sono validi, tuttavia, {attributeID}=- non è valido.
Corrispondenza esatta Tutti gli attributi supportati {attributeID}={value1}
Corrispondenza fuzzy PatientName, ReferringPhysicianName Corrisponde a qualsiasi componente del nome che inizia con il valore .

ID attributo

I tag possono essere codificati in diversi modi per il parametro di query. Lo standard è stato parzialmente implementato come definito in PS3.18 6.7.1.1.1. Sono supportate le codifiche seguenti per un tag:

Valore Esempio
{group}{element} 0020000D
{dicomKeyword} StudyInstanceUID

Query di esempio per la ricerca di istanze:

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

Risposta di ricerca

La risposta è una matrice di set di dati DICOM. A seconda della risorsa, per impostazione predefinita vengono restituiti gli attributi seguenti:

Tag di studio predefiniti

Tag Nome attributo
(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

Tag serie predefiniti

Tag Nome attributo
(0008, 0005) SpecificCharacterSet
(0008, 0060) Modality
(0008, 0201) TimezoneOffsetFromUTC
(0008, 103E) SeriesDescription
(0020, 000E) SeriesInstanceUID
(0040, 0244) PerformedProcedureStepStartDate
(0040, 0245) PerformedProcedureStepStartTime
(0040, 0275) RequestAttributesSequence

Tag di istanza predefiniti

Tag Nome attributo
(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

Se includefield=all, gli attributi seguenti vengono inclusi insieme agli attributi predefiniti. Insieme agli attributi predefiniti, questo è l'elenco completo degli attributi supportati a ogni livello di risorsa.

Tag di studio aggiuntivi

Tag Nome attributo
(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

Altri tag serie

Tag Nome attributo
(0020, 0011) SeriesNumber
(0020, 0060) Laterality
(0008, 0021) SeriesDate
(0008, 0031) SeriesTime

Vengono restituiti gli attributi seguenti:

  • Tutti i parametri di query e gli UID corrispondenti nell'URL della risorsa.
  • IncludeField attributi supportati a livello di risorsa.
  • Se la risorsa di destinazione è All Series, Study vengono restituiti anche gli attributi di livello.
  • Se la risorsa di destinazione è All Instances, Study vengono restituiti anche gli attributi di livello.Series
  • Se la risorsa di destinazione è Study's Instances, Series vengono restituiti anche gli attributi di livello.
  • NumberOfStudyRelatedInstances L'attributo aggregato è supportato nel Study livello includeField.
  • NumberOfSeriesRelatedInstances L'attributo aggregato è supportato nel Series livello includeField.

Codici di risposta di ricerca

L'API di query restituisce uno dei codici di stato seguenti nella risposta:

Codice Descrizione
200 (OK) Il payload della risposta contiene tutte le risorse corrispondenti.
204 (No Content) La ricerca è stata completata correttamente ma non ha restituito risultati.
400 (Bad Request) Il server non è riuscito a eseguire la query perché il componente di query non è valido. Il corpo della risposta contiene i dettagli dell'errore.
401 (Unauthorized) Il client non è autenticato.
403 (Forbidden) L'utente non è autorizzato.
503 (Service Unavailable) Il servizio non è disponibile o occupato. Riprovare.

Altre note

  • L'esecuzione di query con non TimezoneOffsetFromUTC (00080201) è supportata.
  • L'API di query non restituisce 413 (request entity too large). Se il limite di risposta della query richiesto non rientra nell'intervallo accettabile, viene restituita una richiesta non valida. Qualsiasi elemento richiesto all'interno dell'intervallo accettabile viene risolto.
  • Quando la risorsa di destinazione è Study/Series, esiste un potenziale per i metadati a livello di studio/serie incoerenti tra più istanze. Ad esempio, due istanze potrebbero avere patientName diverso. In questo caso, la più recente vince ed è possibile eseguire ricerche solo sui dati più recenti.
  • I risultati di paging sono ottimizzati per restituire prima di tutto l'istanza più recente corrispondente, ciò potrebbe comportare record duplicati nelle pagine successive se sono stati aggiunti dati più recenti corrispondenti alla query.
  • La corrispondenza fa distinzione tra maiuscole e minuscole e distinzione tra caratteri accentati e non accentati per i tipi VR PN.
  • La corrispondenza fa distinzione tra maiuscole e minuscole e distinzione tra caratteri accentati e non accentati per altri tipi vr stringa.
  • Solo il primo valore viene indicizzato di un singolo elemento dati con valori che contiene erroneamente più valori.

Elimina

Questa transazione non fa parte dello standard DICOMwe ufficiale. Usa il metodo DELETE per rimuovere le rappresentazioni di Studi, Serie e Istanze dall'archivio.

metodo Percorso Descrizione
DELETE .. /studies/{study} Eliminare tutte le istanze per uno studio specifico.
DELETE .. /studies/{study}/series/{series} Eliminare tutte le istanze per una serie specifica all'interno di uno studio.
DELETE .. /studies/{study}/series/{series}/instances/{instance} Eliminare un'istanza specifica all'interno di una serie.

I studyparametri , seriese instance corrispondono rispettivamente agli attributi StudyInstanceUIDDICOM , SeriesInstanceUIDe SopInstanceUID .

Non esistono restrizioni relative all'intestazione, Content-Type all'intestazione o al contenuto del corpo della Accept richiesta.

Nota

Dopo una transazione di eliminazione, le istanze eliminate non saranno recuperabili.

Codici di stato della risposta

Codice Descrizione
204 (No Content) Quando vengono eliminate tutte le istanze SOP.
400 (Bad Request) La richiesta non è stata formattata in modo corretto.
401 (Unauthorized) Il client non è autenticato.
403 (Forbidden) L'utente non è autorizzato.
404 (Not Found) Quando la serie specificata non è stata trovata all'interno di uno studio o l'istanza specificata non è stata trovata all'interno della serie.
503 (Service Unavailable) Il servizio non è disponibile o occupato. Riprovare.

Eliminare il payload della risposta

Il corpo della risposta è vuoto. Il codice di stato è l'unica informazione utile restituita.

Servizio Worklist (UPS-RS)

Il servizio DICOM supporta i SOP push e pull del servizio Worklist (UPS-RS). Il servizio Worklist fornisce l'accesso a un elenco di lavoro contenente elementi di lavoro, ognuno dei quali rappresenta un passaggio di procedura unificata (UPS).

In tutto, la variabile {workitem} in un modello URI è l'acronimo di workitem UID.

Gli endpoint UPS-RS disponibili includono:

Verbo Percorso Descrizione
POST {s}/workitems{? AffectedSOPInstanceUID} Creare un elemento di lavoro
POST {s}/workitems/{instance}{?transaction} Aggiornare un elemento di lavoro
GET {s}/workitems{?query*} Cercare elementi di lavoro
GET {s}/workitems/{instance} Recuperare un elemento di lavoro
PUT {s}/workitems/{instance}/state Modificare lo stato dell'elemento di lavoro
POST {s}/workitems/{instance}/cancelrequest Annullare l'elemento di lavoro
POST {s}/workitems/{instance}/subscribers/{AETitle}{?deletionlock} Creazione di una sottoscrizione
POST {s}/workitems/1.2.840.10008.5.1.4.34.5/ Sospendere la sottoscrizione
DELETE {s}/workitems/{instance}/subscribers/{AETitle} Eliminare una sottoscrizione
GET {s}/subscribers/{AETitle} Aprire il canale di sottoscrizione

Creare l'elemento di lavoro

Questa transazione usa il metodo POST per creare un nuovo elemento Workitem.

metodo Percorso Descrizione
POST .. /workitems Creare un elemento di lavoro.
POST .. /workitems? {workitem} Crea un elemento di lavoro con l'UID specificato.

Se non specificato nell'URI, il set di dati del payload deve contenere l'elemento Workitem nell'attributo SOPInstanceUID .

Le Accept intestazioni e Content-Type sono necessarie nella richiesta e devono avere entrambi il valore application/dicom+json.

Esistono diversi requisiti correlati agli attributi di dati DICOM nel contesto di una transazione specifica. È possibile che gli attributi siano presenti, che non siano presenti, che devono essere vuoti o che non siano vuoti. Questi requisiti sono disponibili in questa tabella.

Nota

Anche se la tabella di riferimento indica che l'UID dell'istanza SOP non deve essere presente, queste linee guida sono specifiche del protocollo DIM edizione Standard e vengono gestite in modo diverso in DICOMWeb. L'UID dell'istanza SOP deve essere presente nel set di dati, se non nell'URI.

Nota

Tutti i codici dei requisiti condizionali inclusi 1C e 2C vengono considerati facoltativi.

Creare codici di stato della risposta

Codice Descrizione
201 (Created) L'elemento di lavoro di destinazione è stato creato correttamente.
400 (Bad Request) Si è verificato un problema con la richiesta. Ad esempio, il payload della richiesta non soddisfa i requisiti.
401 (Unauthorized) Il client non è autenticato.
403 (Forbidden) L'utente non è autorizzato.
409 (Conflict) L'elemento di lavoro esiste già.
415 (Unsupported Media Type) L'oggetto fornito Content-Type non è supportato.
503 (Service Unavailable) Il servizio non è disponibile o occupato. Riprovare.

Creare il payload della risposta

Una risposta di esito positivo non ha payload. Le Location intestazioni di risposta e Content-Location contengono un riferimento URI all'elemento workitem creato.

Un payload di risposta di errore contiene un messaggio che descrive l'errore.

Richiedere l'annullamento

Questa transazione consente all'utente di richiedere l'annullamento di un elemento di lavoro non proprietario.

Esistono quattro stati di Workitem validi:

  • SCHEDULED
  • IN PROGRESS
  • CANCELED
  • COMPLETED

Questa transazione ha esito positivo solo su Elementi di lavoro nello SCHEDULED stato . Qualsiasi utente può richiedere la proprietà di un elemento di lavoro impostando il relativo UID transazione e modificandone lo stato su IN PROGRESS. Da allora, un utente può modificare solo l'elemento di lavoro specificando l'UID transazione corretto. Mentre UPS definisce le classi SOP watch ed event che consentono l'inoltro di richieste di annullamento e altri eventi, questo servizio DICOM non implementa queste classi e quindi le richieste di annullamento sugli elementi di lavoro che restituiscono IN PROGRESS un errore. Un elemento di lavoro di proprietà può essere annullato tramite la transazione Change Workitem State .

metodo Percorso Descrizione
POST .. /workitems/{workitem}/cancelrequest Richiedere l'annullamento di un elemento di lavoro pianificato

L'intestazione Content-Type è obbligatoria e deve avere il valore application/dicom+json.

Il payload della richiesta può includere informazioni sull'azione definite nello standard DICOM.

Codici di stato della risposta di annullamento della richiesta

Codice Descrizione
202 (Accepted) La richiesta è stata accettata dal server, ma lo stato dell'elemento di lavoro di destinazione rimane invariato.
400 (Bad Request) Si è verificato un problema con la sintassi della richiesta.
401 (Unauthorized) Il client non è autenticato.
403 (Forbidden) L'utente non è autorizzato.
404 (Not Found) L'elemento di lavoro di destinazione non è stato trovato.
409 (Conflict) La richiesta non è coerente con lo stato corrente dell'elemento di lavoro di destinazione. Ad esempio, l'elemento di lavoro di destinazione è nello SCHEDULED stato o COMPLETED .
415 (Unsupported Media Type) L'oggetto fornito Content-Type non è supportato.

Payload della risposta di annullamento della richiesta

Una risposta di esito positivo non ha payload e un payload di risposta di errore contiene un messaggio che descrive l'errore. Se l'istanza dell'elemento di lavoro è già in uno stato annullato, la risposta include l'intestazione di avviso HTTP seguente: 299: The UPS is already in the requested state of CANCELED.

Recuperare l'elemento di lavoro

Questa transazione recupera un elemento Workitem. Corrisponde all'operazione UPS DIM edizione Standard N-GET.

Fare riferimento a: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.5

Se l'elemento di lavoro esiste nel server di origine, l'elemento di lavoro verrà restituito in un tipo di supporto accettabile. L'elemento di lavoro restituito non contiene l'attributo Transaction UID (0008,1195). Ciò è necessario per mantenere il ruolo dell'attributo come blocco di accesso.

metodo Percorso Descrizione
GET .. /workitems/{workitem} Richiesta di recupero di un elemento di lavoro

L'intestazione Accept è obbligatoria e deve avere il valore application/dicom+json.

Recuperare i codici di stato della risposta di Workitem

Codice Descrizione
200 (OK) L'istanza dell'elemento di lavoro è stata recuperata correttamente.
400 (Richiesta non valida) Si è verificato un problema con la richiesta.
401 (Non autorizzato) Il client non è autenticato.
403 (accesso negato) L'utente non è autorizzato.
404 (non trovato) L'elemento di lavoro di destinazione non è stato trovato.

Recuperare il payload della risposta dell'elemento di lavoro

  • Una risposta di esito positivo ha un payload in una singola parte contenente l'elemento di lavoro richiesto nel tipo di supporto selezionato.
  • L'elemento Workitem restituito non deve contenere l'attributo Transaction UID (0008, 1195) dell'elemento Workitem, perché deve essere noto solo al proprietario.

Aggiornare l'elemento di lavoro

Questa transazione modifica gli attributi di un elemento di lavoro esistente. Corrisponde all'operazione UPS DIM edizione Standard N-edizione Standard T.

Fare riferimento a: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.6

Per aggiornare un elemento di lavoro attualmente nello SCHEDULED stato, l'attributo Transaction UID non deve essere presente. Per un elemento di lavoro nello IN PROGRESS stato, la richiesta deve includere l'UID transazione corrente come parametro di query. Se l'elemento di lavoro è già presente negli COMPLETED stati o CANCELED , la risposta è 400 (Bad Request).

metodo Percorso Descrizione
POST .. /workitems/{workitem}? {transaction-uid} Aggiornare la transazione dell'elemento di lavoro

L'intestazione Content-Type è obbligatoria e deve avere il valore application/dicom+json.

Il payload della richiesta contiene un set di dati con le modifiche da applicare all'elemento di lavoro di destinazione. Quando viene modificata una sequenza, la richiesta deve includere tutti gli elementi nella sequenza, non solo gli elementi da modificare. Quando più attributi devono essere aggiornati come gruppo, eseguire l'aggiornamento come più attributi in una singola richiesta, non come più richieste.

Esistono molti requisiti correlati agli attributi di dati DICOM nel contesto di una transazione specifica. È possibile che gli attributi siano presenti, che non siano presenti, che devono essere vuoti o che non siano vuoti. Questi requisiti sono disponibili in questa tabella.

Nota

Tutti i codici dei requisiti condizionali inclusi 1C e 2C vengono considerati facoltativi.

Nota

La richiesta non può impostare il valore dell'attributo Procedure Step State (0074.1000). Lo stato del passaggio della procedura viene gestito tramite la transazione Change State o la transazione Request Cancellation.

Aggiornare i codici di stato della risposta delle transazioni Workitem

Codice Descrizione
200 (OK) L'elemento di lavoro di destinazione è stato aggiornato.
400 (Bad Request) Si è verificato un problema con la richiesta. Ad esempio: (1) l'elemento di lavoro di destinazione era nello COMPLETED stato o CANCELED . (2) L'UID della transazione non è presente. (3) L'UID della transazione non è corretto. (4) il set di dati non è conforme ai requisiti.
401 (Unauthorized) Il client non è autenticato.
403 (Forbidden) L'utente non è autorizzato.
404 (Not Found) L'elemento di lavoro di destinazione non è stato trovato.
409 (Conflict) La richiesta non è coerente con lo stato corrente dell'elemento di lavoro di destinazione.
415 (Unsupported Media Type) L'oggetto fornito Content-Type non è supportato.

Aggiornare il payload della risposta della transazione Workitem

Il server di origine supporta i campi di intestazione come richiesto nella tabella 11.6.3-2.

Una risposta di esito positivo non avrà payload o payload contenente un documento report sullo stato.

Un payload di risposta agli errori può contenere un report sullo stato che descrive eventuali errori, avvisi o altre informazioni utili.

Modificare lo stato dell'elemento di lavoro

Questa transazione viene utilizzata per modificare lo stato di un elemento di lavoro. Corrisponde all'operazione UPS DIM edizione Standard N-ACTION "Change UPS State". Le modifiche di stato vengono usate per richiedere la proprietà, il completamento o l'annullamento di un elemento di lavoro.

Fare riferimento a: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.7

Se l'elemento di lavoro esiste nel server di origine, l'elemento di lavoro verrà restituito in un tipo di supporto accettabile. L'elemento di lavoro restituito non contiene l'attributo Transaction UID (0008,1195). Questo è necessario per mantenere il ruolo di questo attributo come blocco di accesso, come descritto qui.

metodo Percorso Descrizione
PUT .. /workitems/{workitem}/state Modificare lo stato dell'elemento di lavoro

L'intestazione Accept è obbligatoria e deve avere il valore application/dicom+json.

Il payload della richiesta deve contenere gli elementi di dati Change UPS State. Questi elementi di dati sono:

  • UID transazione (0008, 1195). Il payload della richiesta include un UID della transazione. L'agente utente crea l'UID della transazione quando si richiede una transizione allo IN PROGRESS stato per un determinato elemento di lavoro. L'agente utente fornisce l'UID della transazione nelle transazioni successive con tale elemento di lavoro.
  • Stato passaggio routine (0074, 1000). I valori legali corrispondono alla transizione di stato richiesta. Sono: IN PROGRESS, COMPLETEDo CANCELED.

Modificare i codici di stato della risposta dello stato dell'elemento di lavoro

Codice Descrizione
200 (OK) L'istanza dell'elemento di lavoro è stata recuperata correttamente.
400 (Bad Request) La richiesta non può essere eseguita per uno dei motivi seguenti: (1) la richiesta non è valida in base allo stato corrente dell'elemento di lavoro di destinazione. (2) L'UID della transazione non è presente. (3) L'UID della transazione non è corretto
401 (Unauthorized) Il client non è autenticato.
403 (Forbidden) L'utente non è autorizzato.
404 (Not Found) L'elemento di lavoro di destinazione non è stato trovato.
409 (Conflict) La richiesta non è coerente con lo stato corrente dell'elemento di lavoro di destinazione.

Modificare il payload della risposta allo stato dell'elemento di lavoro

  • Le risposte includono i campi di intestazione specificati nella sezione 11.7.3.2.
  • Una risposta di esito positivo non avrà payload.
  • Un payload di risposta agli errori può contenere un report sullo stato che descrive eventuali errori, avvisi o altre informazioni utili.

Cerca elementi di lavoro

Questa transazione consente di cercare Elementi di lavoro in base agli attributi.

metodo Percorso Descrizione
GET .. /workitems? Cercare Elementi di lavoro

Per la ricerca sono supportate le intestazioni seguenti Accept :

  • application/dicom+json

Parametri di ricerca supportati

Sono supportati i parametri seguenti per ogni query:

Chiave Valori di supporto Conteggio consentito Descrizione
{attributeID}= {value} 0...N Cercare la corrispondenza tra attributi e valori nella query.
includefield= {attributeID}
all
0...N Gli altri attributi da restituire nella risposta. È possibile includere solo gli attributi di primo livello, non gli attributi che fanno parte delle sequenze. Sono supportati sia tag pubblici che privati. Quando all viene specificato, vedere Search Response (Risposta di ricerca) per altre informazioni sugli attributi restituiti per ogni tipo di query. Se viene specificata una combinazione di {attributeID} e all , per impostazione predefinita il server usa 'all'.
limit= {value} 0...1 Valore intero per limitare il numero di valori restituiti nella risposta. Il valore può essere compreso tra l'intervallo 1 >= x <= 200. Il valore predefinito è 100.
offset= {value} 0...1 Ignorare i risultati di {value}. Se viene fornito un offset maggiore del numero di risultati della query di ricerca, viene restituita una 204 (no content) risposta.
fuzzymatching= true | false 0...1 Se la corrispondenza fuzzy true viene applicata a qualsiasi attributo con la rappresentazione vr (Person Name) Value Representation (PN). Esegue una corrispondenza di parola con prefisso di qualsiasi parte del nome all'interno di questi attributi. Ad esempio, se PatientName è John^Doe, joh, do, jo doe DoeJohn Doe tutte corrispondono. Tuttaviaohn, non corrisponde.
Attributi ricercabili

È supportata la ricerca in questi attributi:

Parola chiave Attribute
PatientName
PatientID
ReferencedRequestSequence.AccessionNumber
ReferencedRequestSequence.RequestedProcedureID
ScheduledProcedureStepStartDateTime
ScheduledStationNameCodeSequence.CodeValue
ScheduledStationClassCodeSequence.CodeValue
ScheduledStationGeographicLocationCodeSequence.CodeValue
ProcedureStepState
StudyInstanceUID
Ricerca corrispondente

Sono supportati questi tipi di corrispondenza:

Tipo di ricerca Attributo supportato Esempio
Query di intervallo Scheduled​Procedure​Step​Start​Date​Time {attributeID}={value1}-{value2}. Per i valori di data/ora, è supportato un intervallo inclusivo nel tag . Viene eseguito il mapping a attributeID >= {value1} AND attributeID <= {value2}. Se {value1} non viene specificato, vengono confrontate tutte le occorrenze di date/ore precedenti a e incluse {value2} . Analogamente, se {value2} non viene specificato, vengono confrontate tutte le occorrenze di {value1} e le date/ore successive. Tuttavia, uno di questi valori deve essere presente. {attributeID}={value1}- e {attributeID}=-{value2} sono validi, tuttavia, {attributeID}=- non è valido.
Corrispondenza esatta Tutti gli attributi supportati {attributeID}={value1}
Corrispondenza fuzzy PatientName Corrisponde a qualsiasi componente del nome che inizia con il valore .

Nota

Anche se non è supportata la corrispondenza completa della sequenza, è supportata la corrispondenza esatta sugli attributi elencati in una sequenza.

ID attributo

I tag possono essere codificati in molti modi per il parametro di query. Lo standard è stato parzialmente implementato come definito in PS3.18 6.7.1.1.1. Sono supportate le codifiche seguenti per un tag:

Valore Esempio
{group}{element} 00100010
{dicomKeyword} PatientName

Query di esempio:

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

Risposta di ricerca

La risposta è una matrice di set di 0...N dati DICOM con gli attributi seguenti restituiti:

  • Tutti gli attributi in DICOM PowerShell 3.4 Table CC.2.5-3 con un tipo di chiave restituito 1 o 2
  • Tutti gli attributi in DICOM PowerShell 3.4 Table CC.2.5-3 con un tipo di chiave restituito 1C per cui vengono soddisfatti i requisiti condizionali
  • Tutti gli altri attributi workitem passati come parametri di corrispondenza
  • Tutti gli altri attributi workitem passati come includefield valori di parametro

Codici di risposta di ricerca

L'API di query restituisce uno dei codici di stato seguenti nella risposta:

Codice Descrizione
200 (OK) Il payload della risposta contiene tutte le risorse corrispondenti.
206 (Partial Content) Il payload della risposta contiene solo alcuni dei risultati della ricerca e il resto può essere richiesto tramite la richiesta appropriata.
204 (No Content) La ricerca è stata completata correttamente ma non ha restituito risultati.
400 (Bad Request) Si è verificato un problema con la richiesta. Ad esempio, sintassi del parametro di query non valida. Il corpo della risposta contiene i dettagli dell'errore.
401 (Unauthorized) Il client non è autenticato.
403 (Forbidden) L'utente non è autorizzato.
503 (Service Unavailable) Il servizio non è disponibile o occupato. Riprovare.

Altre note

L'API di query non 413 (request entity too large)è . Se il limite di risposta della query richiesto non rientra nell'intervallo accettabile, viene restituita una richiesta non valida. Qualsiasi elemento richiesto all'interno dell'intervallo accettabile viene risolto.

  • I risultati di paging sono ottimizzati per restituire prima l'istanza più recente corrispondente, che potrebbe comportare record duplicati nelle pagine successive se sono stati aggiunti dati più recenti corrispondenti alla query.
  • La corrispondenza non fa distinzione tra maiuscole e minuscole e non fa distinzione tra caratteri accentati per i tipi VR PN.
  • La corrispondenza non fa distinzione tra maiuscole e minuscole e fa distinzione tra caratteri accentati e non accentati per altri tipi vr stringa.
  • Se si verifica uno scenario in cui l'annullamento di un elemento di lavoro e l'esecuzione di query sullo stesso avviene contemporaneamente, la query esclude probabilmente l'elemento di lavoro che viene aggiornato e il codice di risposta è 206 (Partial Content).

Nota

DICOM® è il marchio registrato della National Electrical Manufacturers Association per le sue pubblicazioni Standard relative alle comunicazioni digitali delle informazioni mediche.