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 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 StudyInstanceUID
DICOM . Se specificato, qualsiasi istanza che non appartiene allo studio fornito viene rifiutata con un codice di 43265
avviso.
L'intestazione seguente Accept
per la risposta è supportata:
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 LO
VR
.
Ogni file archiviato deve avere una combinazione univoca di StudyInstanceUID
, SeriesInstanceUID
e 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 è riuscito a archiviare |
(0008, 1197) | FailureReason |
Codice motivo per cui questa istanza non è riuscita ad 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 è riuscito a 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 StudyInstanceUID oggetto , SeriesInstanceUID e 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 vieneapplication/dicom
usato per impostazione predefinita .
Recuperare un'istanza
Per il recupero di un'istanza specifica sono supportate le intestazioni seguenti Accept
:
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 vieneapplication/dicom
usato per impostazione predefinita .
Recuperare fotogrammi
Le intestazioni seguenti Accept
sono supportate per il recupero dei fotogrammi.
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 vieneapplication/octet-stream
usato per impostazione predefinita .
Recuperare la sintassi di trasferimento
Quando la sintassi di trasferimento richiesta è diversa dal file originale, il file originale viene transcodificato nella 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: la
HTTP 304 (Not Modified)
risposta viene inviata senza corpo della risposta. - I dati sono stati modificati dopo l'ultima richiesta: la
HTTP 200 (OK)
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 sia 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 jpeg
e viene ignorato per png
le richieste di rendering. Se non specificato, per impostazione predefinita il parametro è 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. In questo caso, il contenuto non viene aggiunto al corpo della risposta. 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 una 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 |
L'intestazione seguente Accept
è supportata per la ricerca:
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. Per altre informazioni sugli attributi restituiti per ogni tipo di query, vedere Search Response (Risposta di ricerca).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 | Ignora {value} risultati; 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 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, di cui 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 |
Ecco un esempio di query che cerca le 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 nelStudy
livelloincludeField
.NumberOfSeriesRelatedInstances
L'attributo aggregato è supportato nelSeries
livelloincludeField
.
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 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 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 per altri tipi vr stringa.
- Solo il primo valore viene indicizzato se un singolo elemento dati con valori ha 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 di 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 parametri study
, series
e instance
corrispondono rispettivamente agli attributi StudyInstanceUID
DICOM , SeriesInstanceUID
e 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 è stata formattata in modo non 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 indicazioni sono specifiche del protocollo DIMSE 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 DIMSE 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 viene restituito in un tipo di supporto accettabile. L'elemento di lavoro restituito non conterrà 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 conterrà 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 DIMSE N-SET.
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 COMPLETED di lavoro di destinazione era nello 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 ha payload o un 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 DIMSE 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 viene restituito in un tipo di supporto accettabile. L'elemento workitem restituito non conterrà 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 contiene gli elementi Change UPS State Data. 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
,COMPLETED
oCANCELED
.
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 ha 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 |
L'intestazione seguente Accept
è supportata per la ricerca.
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 del valore PN (Person Name) (VR); Viene eseguita 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 do e Doe John Doe tutte corrispondono. Tuttaviaohn , non corrisponde. |
Attributi ricercabili
È supportata la ricerca su questi attributi.
Parola chiave Attribute |
---|
PatientName |
PatientID |
ReferencedRequestSequence.AccessionNumber |
ReferencedRequestSequence.RequestedProcedureID |
ScheduledProcedureStepStartDateTime |
ScheduledStationNameCodeSequence.CodeValue |
ScheduledStationClassCodeSequence.CodeValue |
ScheduledStationGeographicLocationCodeSequence.CodeValue |
ProcedureStepState |
StudyInstanceUID |
Ricerca corrispondente
Questi tipi di corrispondenza sono supportati.
Tipo di ricerca | Attributo supportato | Esempio |
---|---|---|
Query di intervallo | ScheduledProcedureStepStartDateTime |
{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 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 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.
- 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 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 elemento di lavoro si verificano 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.