DICOM Conformance Statement v2
Hinweis
API Version 2 ist die neueste API-Version. Eine Liste der Änderungen in v2 im Vergleich zu v1 finden Sie unter DICOM-Dienst-API v2-Änderungen
Der Medical Imaging Server für DICOM® unterstützt eine Teilmenge des DICOMweb-Standards. Der Support umfasst:
Darüber hinaus werden diese nicht standardmäßigen APIs unterstützt:
Der Dienst verwendet die REST-API-Versionsverwaltung. Die Version der REST-API muss explizit als Teil der Basis-URL angegeben werden, wie im folgenden Beispiel gezeigt:
https://<service_url>/v<version>/studies
Diese Version der Konformitäts-Anweisung entspricht der v2
Version der REST-APIs.
Weitere Informationen zum Angeben der Version beim Erstellen von Anforderungen finden Sie in der API-Versionsverwaltungsdokumentation.
Sie finden Beispielanforderungen für unterstützte Transaktionen in der Postman-Sammlung.
Präambelbereinigung
Der Dienst ignoriert die 128-Byte-Dateivorschrift und ersetzt den Inhalt durch NULL-Zeichen. Dieses Verhalten stellt sicher, dass keine Dateien, die über den Dienst übergeben werden, anfällig für die böswillige Präambel-Sicherheitsanfälligkeit sind. Diese Präambelbereinigung bedeutet jedoch auch, dass Präambel, die zum Codieren von Inhalten im dualen Format verwendet werden, z. B. TIFF, nicht mit dem Dienst verwendet werden können.
Studienservice
Der Studiendienst ermöglicht Es Benutzern, DICOM-Studien, Reihen und Instanzen zu speichern, abzurufen und zu suchen. Wir haben die nicht standardmäßige Delete-Transaktion hinzugefügt, um einen vollständigen Ressourcenlebenszyklus zu aktivieren.
Store (STOW-RS)
Diese Transaktion verwendet die POST- oder PUT-Methode, um Darstellungen von Studien, Datenreihen und Instanzen in der Anforderungsnutzlast zu speichern.
Methode | Pfad | Beschreibung |
---|---|---|
POST | .. /Studium | Speichern von Instanzen. |
POST | .. /studies/{study} | Speichern sie Instanzen für eine bestimmte Studie. |
PUT | .. /Studium | Upsert-Instanzen. |
PUT | .. /studies/{study} | Upsert-Instanzen für eine bestimmte Studie. |
Der Parameter study
entspricht dem DICOM-Attribut "StudyInstanceUID". Wenn angegeben, wird jede Instanz, die nicht zur bereitgestellten Studie gehört, mit einem 43265
Warncode abgelehnt.
Es folgt der einzige Antwortheader Accept
, der unterstützt wird:
application/dicom+json
Die folgenden Content-Type
Header werden unterstützt:
multipart/related; type="application/dicom"
application/dicom
Hinweis
Der Server erzwingt keine Attribute, die mit vorhandenen Daten für POST-Anforderungen in Konflikt geraten. Alle Daten werden wie bereitgestellt gespeichert. Bei Upsert-Anforderungen (PUT) werden die vorhandenen Daten durch die neuen empfangenen Daten ersetzt.
Erforderliche Attribute speichern
Die folgenden DICOM-Elemente müssen in jeder DICOM-Datei vorhanden sein, die versucht, gespeichert zu werden:
StudyInstanceUID
SeriesInstanceUID
SOPInstanceUID
SOPClassUID
PatientID
Hinweis
Alle UIDs müssen zwischen 1 und 64 Zeichen lang sein und nur alphanumerische Zeichen oder die folgenden Sonderzeichen enthalten: .
, -
. PatientID
ist weiterhin ein erforderliches Tag und kann den Wert in der Eingabe als NULL aufweisen. PatientID
wird basierend auf dem LO
VR
Typ überprüft.
Jede gespeicherte Datei muss eine eindeutige Kombination aus StudyInstanceUID
, , SeriesInstanceUID
und SopInstanceUID
. Der Warncode 45070
wird zurückgegeben, wenn bereits eine Datei mit denselben Bezeichnern vorhanden ist.
Es werden nur Syntaxen mit expliziten Wertdarstellungen akzeptiert.
Hinweis
Anforderungen sind auf 4 GB beschränkt. Dieser Grenzwert kann von keiner einzelnen DICOM-Datei oder einer Einzelnen Kombination von Dateien überschritten werden.
Store-Änderungen von v1
In früheren Versionen schlägt eine Store-Anforderung fehl, wenn eine der erforderlichen oder durchsuchbaren Attribute die Überprüfung fehlgeschlagen ist. Ab V2 schlägt die Anforderung nur fehl, wenn die überprüfung der erforderlichen Attribute fehlschlägt.
Fehler bei der Überprüfung von Attributen, die von der API nicht erforderlich sind, führt dazu, dass die Datei mit einer Warnung gespeichert wird. Es wird eine Warnung zu jedem Fehlerhaften Attribut pro Instanz angezeigt. Wenn eine Sequenz ein Attribut enthält, bei dem die Überprüfung fehlschlägt oder mehrere Probleme mit einem einzelnen Attribut auftreten, wird nur der erste fehlerhafte Attributgrund angegeben.
Wenn ein Attribut mit Nullen aufgefüllt wird, wird das Attribut bei Durchsuchbarem indiziert und wie in dicom+json-Metadaten gespeichert. Es wird keine Überprüfungswarnung bereitgestellt.
Store-Antwortstatuscodes
Code | Beschreibung |
---|---|
200 (OK) |
Alle SOP-Instanzen in der Anforderung wurden gespeichert. |
202 (Accepted) |
Der Ursprungsserver speicherte einige instanzen und andere fehler oder zurückgegebene Warnungen. Weitere Informationen zu diesem Fehler finden Sie möglicherweise im Nachrichtentext der Antwort. |
204 (No Content) |
In der Store-Transaktionsanforderung wurden keine Inhalte bereitgestellt. |
400 (Bad Request) |
Die Anforderung wurde schlecht formatiert. Der angegebene Untersuchungsinstanzbezeichner entspricht beispielsweise nicht dem erwarteten UID-Format. |
401 (Unauthorized) |
Der Client ist nicht authentifiziert. |
406 (Not Acceptable) |
Die angegebene Accept Kopfzeile wird nicht unterstützt. |
409 (Conflict) |
Keine der Instanzen in der Speichertransaktionsanforderung wurde gespeichert. |
415 (Unsupported Media Type) |
Die bereitgestellte Version Content-Type wird nicht unterstützt. |
424 (Failed Dependency) |
Der DICOM-Dienst kann nicht auf eine Ressource zugreifen, von der sie abhängig ist, um diese Anforderung abzuschließen. Ein Beispiel ist ein Fehler beim Zugriff auf den verbundenen Data Lake-Speicher oder der Schlüsseltresor zur Unterstützung der vom Kunden verwalteten Schlüsselverschlüsselung. |
500 (Internal Server Error) |
Auf dem Server ist ein unbekannter interner Fehler aufgetreten. Versuchen Sie es später noch einmal. |
503 (Service Unavailable) |
Der Dienst ist nicht verfügbar oder ausgelastet. Versuchen Sie es später noch einmal. |
Speicherantwortnutzlast
Die Antwortnutzlast füllt ein DICOM-Dataset mit den folgenden Elementen auf:
Tag | Name | Beschreibung |
---|---|---|
(0008, 1190) | RetrieveURL |
Die Abrufen-URL der Studie, wenn die StudyInstanceUID in der Store-Anforderung bereitgestellt wurde und mindestens eine Instanz erfolgreich gespeichert wird. |
(0008, 1198) | FailedSOPSequence |
Die Abfolge von Instanzen, die nicht gespeichert werden konnten. |
(0008, 1199) | ReferencedSOPSequence |
Die Abfolge gespeicherter Instanzen. |
Jedes Dataset in der FailedSOPSequence
Datei weist die folgenden Elemente auf (wenn die ZU speichernde DICOM-Datei gelesen werden könnte):
Tag | Name | Beschreibung |
---|---|---|
(0008, 1150) | ReferencedSOPClassUID |
Der eindeutige SOP-Klassenbezeichner der Instanz, die nicht gespeichert werden konnte. |
(0008, 1155) | ReferencedSOPInstanceUID |
Der eindeutige SOP-Instanzbezeichner der Instanz, die nicht gespeichert werden konnte. |
(0008, 1197) | FailureReason |
Der Grundcode, warum diese Instanz nicht gespeichert werden konnte. |
(0008, 1196) | WarningReason |
Ein WarningReason Hinweis auf Überprüfungsprobleme, die erkannt wurden, aber nicht schwerwiegend genug waren, um den Speichervorgang fehlzuschlagen. |
(0074, 1048) | FailedAttributesSequence |
Die Sequenz davon ErrorComment enthält den Grund für jedes fehlgeschlagene Attribut. |
Jedes Dataset in der Datei ReferencedSOPSequence
weist die folgenden Elemente auf:
Tag | Name | Beschreibung |
---|---|---|
(0008, 1150) | ReferencedSOPClassUID |
Der eindeutige SOP-Klassenbezeichner der gespeicherten Instanz. |
(0008, 1155) | ReferencedSOPInstanceUID |
Der eindeutige SOP-Instanzbezeichner der gespeicherten Instanz. |
(0008, 1190) | RetrieveURL |
Die Abrufen-URL dieser Instanz auf dem DICOM-Server. |
Beispielantwort mit Accept
Header application/dicom+json
ohne FailedAttributesSequence in einer ReferencedSOPSequence:
{
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232"]
},
"00081198":
{
"vr":"SQ",
"Value":
[{
"00081150":
{
"vr":"UI","Value":["cd70f89a-05bc-4dab-b6b8-1f3d2fcafeec"]
},
"00081155":
{
"vr":"UI",
"Value":["22c35d16-11ce-43fa-8f86-90ceed6cf4e7"]
},
"00081197":
{
"vr":"US",
"Value":[43265]
}
}]
},
"00081199":
{
"vr":"SQ",
"Value":
[{
"00081150":
{
"vr":"UI",
"Value":["d246deb5-18c8-4336-a591-aeb6f8596664"]
},
"00081155":
{
"vr":"UI",
"Value":["4a858cbb-a71f-4c01-b9b5-85f88b031365"]
},
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232/series/8c4915f5-cc54-4e50-aa1f-9b06f6e58485/instances/4a858cbb-a71f-4c01-b9b5-85f88b031365"]
}
}]
}
}
Beispielantwort mit Accept
Header application/dicom+json
mit failedAttributesSequence in einer ReferencedSOPSequence:
{
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232"]
},
"00081199":
{
"vr":"SQ",
"Value":
[{
"00081150":
{
"vr":"UI",
"Value":["d246deb5-18c8-4336-a591-aeb6f8596664"]
},
"00081155":
{
"vr":"UI",
"Value":["4a858cbb-a71f-4c01-b9b5-85f88b031365"]
},
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232/series/8c4915f5-cc54-4e50-aa1f-9b06f6e58485/instances/4a858cbb-a71f-4c01-b9b5-85f88b031365"]
},
"00081196": {
"vr": "US",
"Value": [
1
]
},
"00741048": {
"vr": "SQ",
"Value": [
{
"00000902": {
"vr": "LO",
"Value": [
"DICOM100: (0008,0020) - Content \"NotAValidDate\" does not validate VR DA: one of the date values does not match the pattern YYYYMMDD"
]
}
},
{
"00000902": {
"vr": "LO",
"Value": [
"DICOM100: (0008,002a) - Content \"NotAValidDate\" does not validate VR DT: value does not mach pattern YYYY[MM[DD[HH[MM[SS[.F{1-6}]]]]]]"
]
}
}
]
}
}]
}
}
Fehlerursachencodes für den Store
Code | Beschreibung |
---|---|
272 |
Die Store-Transaktion hat die Instanz aufgrund eines allgemeinen Fehlers bei der Verarbeitung des Vorgangs nicht gespeichert. |
43264 |
Die DICOM-Instanz hat die Überprüfung fehlgeschlagen. |
43265 |
Die angegebene Instanz StudyInstanceUID entspricht nicht der in der Store-Anforderung angegebenen StudyInstanceUID Instanz. |
45070 |
Eine DICOM-Instanz mit demselben StudyInstanceUID , SeriesInstanceUID , und SopInstanceUID wurde bereits gespeichert. Wenn Sie den Inhalt aktualisieren möchten, löschen Sie diese Instanz zuerst. |
45071 |
Eine DICOM-Instanz wird von einem anderen Prozess erstellt, oder der vorherige Versuch, einen Fehler zu erstellen, und der Bereinigungsvorgang ist nicht abgeschlossen. Löschen Sie die Instanz zuerst, bevor Sie erneut versuchen, die Instanz zu erstellen. |
Store-Warnungsursachencodes
Code | Beschreibung |
---|---|
45063 |
Ein DICOM-Instanzdatensatz stimmt nicht mit der SOP-Klasse überein. Die Studienspeichertransaktion (Abschnitt 10.5) hat festgestellt, dass das Dataset während des Speichers der Instanz nicht mit den Einschränkungen der SOP-Klasse übereinstimmte. |
1 |
Die Studienspeichertransaktion (Abschnitt 10.5) hat festgestellt, dass das Dataset eine Überprüfung hat. |
Speicherfehlercodes
Code | Beschreibung |
---|---|
100 |
Die bereitgestellten Instanzattribute erfüllten die Überprüfungskriterien nicht. |
Abrufen (WADO-RS)
Diese Retrieve-Transaktion bietet Unterstützung für das Abrufen gespeicherter Studien, Datenreihen, Instanzen und Frames nach Referenz.
Methode | Pfad | Beschreibung |
---|---|---|
GET | .. /studies/{study} | Ruft alle Instanzen innerhalb einer Studie ab. |
GET | .. /studies/{study}/metadata | Ruft die Metadaten für alle Instanzen innerhalb einer Studie ab. |
GET | .. /studies/{study}/series/{series} | Ruft alle Instanzen innerhalb einer Datenreihe ab. |
GET | .. /studies/{study}/series/{series}/metadata | Ruft die Metadaten für alle Instanzen innerhalb einer Datenreihe ab. |
GET | .. /studies/{study}/series/{series}/instances/{instance} | Ruft eine einzelne Instanz ab. |
GET | .. /studies/{study}/series/{series}/instances/{instance}/metadata | Ruft die Metadaten für eine einzelne Instanz ab. |
GET | .. /studies/{study}/series/{series}/instances/{instance}/rendern | Ruft eine Instanz ab, die in einem Bildformat gerendert wird. |
GET | .. /studies/{study}/series/{series}/instances/{instance}/frames/{frames} | Ruft einen oder mehrere Frames aus einer einzelnen Instanz ab. Um mehr als einen Frame anzugeben, trennt ein Komma jeden frame, der zurückgegeben werden soll. Beispiel: /studies/1/series/2/instance/3/frames/4,5,6 . |
GET | .. /studies/{study}/series/{series}/instances/{instance}/frames/{frame}/rendern | Ruft einen einzelnen Frame ab, der in einem Bildformat gerendert wird. |
Abrufen von Instanzen innerhalb einer Studie oder Datenreihe
Die folgenden Accept
Kopfzeilen werden für das Abrufen von Instanzen innerhalb einer Studie oder einer Datenreihe unterstützt.
multipart/related; type="application/dicom"; transfer-syntax=*
multipart/related; type="application/dicom";
(wenn die Transfersyntax nicht angegeben ist, wird 1.2.840.10008.1.2.1 als Standard verwendet)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
*/*
(wenn die Transfersyntax nicht angegeben wird,*
wird als Standard- und mediaType-Standardeinstellung verwendet unterapplication/dicom
)
Abrufen einer Instanz
Die folgenden Accept
Header werden zum Abrufen einer bestimmten Instanz unterstützt.
application/dicom; transfer-syntax=*
multipart/related; type="application/dicom"; transfer-syntax=*
application/dicom;
(wenn die Transfersyntax nicht angegeben ist,1.2.840.10008.1.2.1
wird als Standard verwendet)multipart/related; type="application/dicom"
(wenn die Transfersyntax nicht angegeben ist,1.2.840.10008.1.2.1
wird als Standard verwendet)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
*/*
(wenn die Transfersyntax nicht angegeben wird,*
wird als Standard- und mediaType-Standardeinstellung verwendet unterapplication/dicom
)
Frames abrufen
Die folgenden Accept
Header werden zum Abrufen von Frames unterstützt.
multipart/related; type="application/octet-stream"; transfer-syntax=*
multipart/related; type="application/octet-stream";
(wenn die Transfersyntax nicht angegeben ist,1.2.840.10008.1.2.1
wird als Standard verwendet)multipart/related; type="application/octet-stream"; transfer-syntax=1.2.840.10008.1.2.1
multipart/related; type="image/jp2";
(wenn die Transfersyntax nicht angegeben ist,1.2.840.10008.1.2.4.90
wird als Standard verwendet)multipart/related; type="image/jp2";transfer-syntax=1.2.840.10008.1.2.4.90
application/octet-stream; transfer-syntax=*
für den Abruf einzelner Frames
*/*
(wenn die Transfersyntax nicht angegeben wird,*
wird als Standard- und mediaType-Standardeinstellung verwendet unterapplication/octet-stream
)
Abrufen der Übertragungssyntax
Wenn sich die angeforderte Übertragungssyntax von der ursprünglichen Datei unterscheidet, wird die ursprüngliche Datei in die angeforderte Übertragungssyntax transcodiert. Die Originaldatei muss eines der folgenden Formate sein, damit die Transcodierung erfolgreich ist, andernfalls schlägt die Transcodierung fehl.
- 1.2.840.10008.1.2 (Little Endian Implicit)
- 1.2.840.10008.1.2.1 (Little Endian Explicit)
- 1.2.840.10008.1.2.2 (Explicit VR Big Endian)
- 1.2.840.10008.1.2.4.50 (JPEG Baseline Process 1)
- 1.2.840.10008.1.2.4.57 (JPEG Lossless)
- 1.2.840.10008.1.2.4.70 (JPEG Lossless Selection Value 1)
- 1.2.840.10008.1.2.4.90 (JPEG 2000 Lossless Only)
- 1.2.840.10008.1.2.4.91 (JPEG 2000)
- 1.2.840.10008.1.2.5 (RLE Lossless)
Ein nicht unterstütztes transfer-syntax
Ergebnis in 406 Not Acceptable
.
Abrufen von Metadaten (für Studie, Datenreihe oder Instanz)
Der folgende Accept
Header wird zum Abrufen von Metadaten für eine Studie, eine Datenreihe oder eine Instanz unterstützt.
application/dicom+json
Beim Abrufen von Metadaten werden keine Attribute mit den folgenden Wertdarstellungen zurückgegeben.
VR-Name | Beschreibung |
---|---|
OB | Anderes Byte |
OD | Sonstiges Double |
OF | Sonstiges Float-Format |
OL | Andere lang |
OV | Andere 64-Bit-Sehr lange |
OW | Anderes Wort |
UN | Unbekannt |
Abgerufene Metadaten enthalten das Nullzeichen, wenn das Attribut mit Nullen aufgefüllt und gespeichert wurde.
Abrufen der Metadatencacheüberprüfung (für Studie, Datenreihe oder Instanz)
Die Cacheüberprüfung wird mithilfe des ETag
Mechanismus unterstützt. In der Antwort auf eine Metadatenanforderung wird ETag als einer der Header zurückgegeben. Dieses ETag kann zwischengespeichert und als If-None-Match
Header in den späteren Anforderungen für dieselben Metadaten hinzugefügt werden. Zwei Arten von Antworten sind möglich, wenn die Daten vorhanden sind.
- Die Daten sind seit der letzten Anforderung unverändert: Die
HTTP 304 (Not Modified)
Antwort wird ohne Antworttext gesendet. - Daten wurden seit der letzten Anforderung geändert: Die
HTTP 200 (OK)
Antwort wird mit dem aktualisierten ETag gesendet. Erforderliche Daten werden als Teil des Textkörpers zurückgegeben.
Abrufen gerenderter Bilder (z. B. Frame)
Die folgenden Accept
Kopfzeilen werden zum Abrufen eines gerenderten Bilds in einer Instanz oder einem Frame unterstützt.
image/jpeg
image/png
In dem Fall, dass kein Accept
Header angegeben wird, wird standardmäßig ein image/jpeg
Dienst gerendert.
Der Dienst unterstützt nur das Rendern eines einzelnen Frames. Wenn das Rendern für eine Instanz mit mehreren Frames angefordert wird, wird standardmäßig nur der erste Frame als Bild gerendert.
Wenn Sie einen bestimmten zurückzugebenden Frame angeben, beginnt die Frameindizierung bei 1.
Der quality
Abfrageparameter wird ebenfalls unterstützt. Ein ganzzahliger Wert zwischen 1
und 100
einschließlich (1 ist schlechteste Qualität und 100 die beste Qualität) wird möglicherweise als Wert für den Abfrageparameter übergeben. Dieser Parameter wird für Bilder verwendet, die als jpeg
gerendert werden, und wird für png
Renderanforderungen ignoriert. Wenn der Parameter nicht angegeben ist, wird standardmäßig auf 100
.
Ursprüngliche Version abrufen
Mithilfe des Massenaktualisierungsvorgangs können Sie entweder die ursprüngliche oder neueste Version einer Studie, Serie oder Instanz abrufen. Die neueste Version einer Studie, Serie oder Instanz wird standardmäßig zurückgegeben. Die ursprüngliche Version kann zurückgegeben werden, indem sie die msdicom-request-original
Kopfzeile auf true
. Hier sehen Sie eine Beispielanforderung:
GET ../studies/{study}/series/{series}/instances/{instance}
Accept: multipart/related; type="application/dicom"; transfer-syntax=*
msdicom-request-original: true
Content-Type: application/dicom
Abrufen von Antwortstatuscodes
Code | Beschreibung |
---|---|
200 (OK) |
Alle angeforderten Daten wurden abgerufen. |
304 (Not Modified) |
Die angeforderten Daten sind seit der letzten Anforderung unverändert. Inhalt wird dem Antworttext in diesem Fall nicht hinzugefügt. Weitere Informationen finden Sie im vorherigen Abschnitt Abrufen der Metadatencacheüberprüfung (für Studie, Datenreihe oder Instanz). |
400 (Bad Request) |
Die Anforderung wurde schlecht formatiert. Der angegebene Untersuchungsinstanzbezeichner stimmte beispielsweise nicht mit dem erwarteten UID-Format überein, oder die angeforderte Transfersyntaxcodierung wird nicht unterstützt. |
401 (Unauthorized) |
Der Client ist nicht authentifiziert. |
403 (Forbidden) |
Der Benutzer ist nicht autorisiert. |
404 (Not Found) |
Die angegebene DICOM-Ressource konnte nicht gefunden werden, oder für gerenderte Anforderung enthielt die Instanz keine Pixeldaten. |
406 (Not Acceptable) |
Der angegebene Accept Header wird nicht unterstützt, oder für gerenderte und transcodierte Anforderungen war die angeforderte Datei zu groß. |
424 (Failed Dependency) |
Der DICOM-Dienst kann nicht auf eine Ressource zugreifen, von der sie abhängig ist, um diese Anforderung abzuschließen. Ein Beispiel ist ein Fehler beim Zugriff auf den verbundenen Data Lake-Speicher oder der Schlüsseltresor zur Unterstützung der vom Kunden verwalteten Schlüsselverschlüsselung. |
503 (Service Unavailable) |
Der Dienst ist nicht verfügbar oder ausgelastet. Versuchen Sie es später noch einmal. |
Suche (QIDO-RS)
Mithilfe von Abfragen anhand der ID für DICOM Objects (QIDO) können Sie nach Studien, Datenreihen und Instanzen nach Attributen suchen.
Methode | Pfad | Beschreibung |
---|---|---|
Nach Studien suchen | ||
GET | .. /Studium?... | Suchen nach Studien |
Nach Datenreihen suchen | ||
GET | .. /Reihe?... | Suchen nach Datenreihen |
GET | .. /studies/{study}/series?... | Suchen nach Reihen in einer Studie |
Suchen nach Instanzen | ||
GET | .. /Instanzen?... | Suchen nach Instanzen |
GET | .. /studies/{study}/instances?... | Suchen nach Beispielen in einer Studie |
GET | .. /studies/{study}/series/{series}/instances?... | Suchen nach Instanzen in einer Reihe |
Die folgende Accept
Kopfzeile wird für die Suche unterstützt.
application/dicom+json
Suchänderungen von v1
Wenn in der v1-API und der Fortsetzung für v2 ein erweitertes Abfragetag Fehler aufweist, da mindestens eine der vorhandenen Instanzen einen Tagwert aufweist, der nicht indiziert werden konnte, werden nachfolgende Suchabfragen, die das erweiterte Abfragetag enthalten, wie in der Dokumentation beschrieben zurückgegebenerroneous-dicom-attributes
. Tags (auch als Attribute bezeichnet) mit Validierungswarnungen von STOW-RS sind jedoch nicht in diesem Header enthalten. Wenn eine Speicheranforderung zu Überprüfungswarnungen für durchsuchbare Attribute zum Zeitpunkt der Speicherung der Instanz führt, werden diese Attribute möglicherweise nicht zum Suchen nach der gespeicherten Instanz verwendet. Alle durchsuchbaren Attribute , die bei der Überprüfung fehlgeschlagen sind, können jedoch Ergebnisse zurückgeben, wenn die Werte von Instanzen in derselben Studie oder Datenreihe überschrieben werden, die nach dem fehlgeschlagenen Attribut gespeichert werden, oder wenn die Werte bereits von einer vorherigen Instanz ordnungsgemäß gespeichert wurden. Wenn die Attributwerte nicht überschrieben werden, erzeugen sie keine Suchergebnisse.
Ein Attribut kann wie folgt korrigiert werden.
- Löschen der gespeicherten Instanz und Hochladen einer neuen Instanz mit korrigierten Daten
- Hochladen einer neuen Instanz in derselben Studie/Serie mit korrigierten Daten
Unterstützte Suchparameter
Die folgenden Parameter für jede Abfrage werden unterstützt:
Schlüssel | Supportwerte | Zulässige Anzahl | Beschreibung |
---|---|---|---|
{attributeID}= |
{value} |
0...N | Suchen nach Attribut-/Wertabgleich in der Abfrage |
includefield= |
{attributeID} all |
0...N | Die anderen Attribute, die in der Antwort zurückgegeben werden sollen. Sowohl öffentliche als auch private Tags werden unterstützt. Weitere all Informationen finden Sie in der Suchantwort .Wenn eine Mischung aus {attributeID} und all bereitgestellt wird, verwendet der Server standardmäßig all |
limit= |
{value} |
0..1 | Ganzzahliger Wert, um die Anzahl der in der Antwort zurückgegebenen Werte zu begrenzen. Der Wert kann zwischen dem Bereich 1 >= x <= 200 liegen. Standardmäßig auf 100 festgelegt |
offset= |
{value} |
0..1 | Ergebnisse überspringen {value} .Wenn ein Offset größer als die Anzahl der Suchergebnisse bereitgestellt wird, wird eine Antwort von 204 (keine Inhalte) zurückgegeben. |
fuzzymatching= |
true / false |
0..1 | Wenn true fuzzy matching auf das PatientName-Attribut angewendet wird. Es führt eine Präfixwort-Übereinstimmung eines beliebigen Namensteils innerhalb des PatientName-Werts durch. Wenn "PatientName" beispielsweise "John^Doe" lautet, dann "joh", "do", "jo do", "Doe" und "John Doe" alle übereinstimmen. "ohn" stimmt jedoch nicht überein. |
Durchsuchbare Attribute
Wir unterstützen die Suche nach den folgenden Attributen und Suchtypen.
Attributschlüsselwort | Alle Studien | Alle Serien | Alle Instanzen | Studienreihe | Instanzen der Studie | Instanzen der Studienreihe |
---|---|---|---|---|---|---|
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 |
Hinweis
Die Suche mit einer leeren Zeichenfolge für Attribute wird nicht unterstützt.
Suchabgleich
Wir unterstützen die folgenden übereinstimmenden Typen.
Suchtyp | Unterstütztes Attribut | Beispiel |
---|---|---|
Bereichsabfrage | StudyDate /PatientBirthDate |
{attributeID}={value1}-{value2} . Für Datums-/Uhrzeitwerte unterstützen wir einen inklusiven Bereich auf dem Tag. Dieser Bereich ist zugeordnet attributeID >= {value1} AND attributeID <= {value2} . Wenn {value1} nicht angegeben, werden alle Vorkommen von Datums- und Uhrzeitangaben vor und einschließlich {value2} übereinstimmen. Ebenso werden, wenn {value2} nicht angegeben, alle Vorkommen und {value1} nachfolgende Datums-/Uhrzeiten übereinstimmen. Einer dieser Werte muss jedoch vorhanden sein. {attributeID}={value1}- und {attributeID}=-{value2} sind gültig, {attributeID}=- ist jedoch ungültig. |
Genaue Übereinstimmung | Alle unterstützten Attribute | {attributeID}={value1} |
Fuzzy Match | PatientName , ReferringPhysicianName |
Entspricht einer beliebigen Komponente des Namens, die mit dem Wert beginnt. |
UID-Listen-Übereinstimmung | StudyInstanceUID |
Entspricht Studien, die durch die in der Liste angegebenen Werte identifiziert werden. Unterstützt Komma (,) oder einen umgekehrten Schrägstrich (\) als gültiges Trennzeichen. {attributeID}=1.2.3,5.6.7,8.9.0 gibt Details zurück, die allen Studien zugeordnet sind, sofern sie vorhanden sind. |
Attribut-ID
Tags können auf verschiedene Arten für den Abfrageparameter codiert werden. Wir haben den Standard teilweise wie in PS3.18 6.7.1.1.1.1 definiert implementiert. Die folgenden Codierungen für ein Tag werden unterstützt.
Wert | Beispiel |
---|---|
{group}{element} |
0020000D |
{dicomKeyword} |
StudyInstanceUID |
Beispielabfragesuche für Instanzen:
../instances?Modality=CT&00280011=512&includefield=00280010&limit=5&offset=0
Suchantwort
Die Antwort ist ein Array von DICOM-Datasets. Je nach Ressource werden standardmäßig die folgenden Attribute zurückgegeben.
Standard-Studientags
Tag | Attributname |
---|---|
(0008, 0020) | StudyDate |
(0008, 0050) | AccessionNumber |
(0008, 1030) | StudyDescription |
(0009, 0090) | ReferringPhysicianName |
(0010, 0010) | PatientName |
(0010, 0020) | PatientID |
(0010, 0030) | PatientBirthDate |
(0020, 000D) | StudyInstanceUID |
Standardserientags
Tag | Attributname |
---|---|
(0008, 0060) | Modality |
(0008, 1090) | ManufacturerModelName |
(0020, 000E) | SeriesInstanceUID |
(0040, 0244) | PerformedProcedureStepStartDate |
Standardinstanztags
Tag | Attributname |
---|---|
(0008, 0018) | SOPInstanceUID |
Wenn includefield=all
diese Attribute zusammen mit Standardattributen enthalten sind. Zusammen mit den Standardattributen enthält diese Liste eine vollständige Liste der Attribute, die auf jeder Ressourcenebene unterstützt werden.
Andere Studientags
Tag | Attributname |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0030) | StudyTime |
(0008, 0056) | InstanceAvailability |
(0008, 0201) | TimezoneOffsetFromUTC |
(0008, 0063) | AnatomicRegionsInStudyCodeSequence |
(0008, 1032) | ProcedureCodeSequence |
(0008, 1060) | NameOfPhysiciansReadingStudy |
(0008, 1080) | AdmittingDiagnosesDescription |
(0008, 1110) | ReferencedStudySequence |
(0010, 1010) | PatientAge |
(0010, 1020) | PatientSize |
(0010, 1030) | PatientWeight |
(0010, 2180) | Occupation |
(0010, 21B0) | AdditionalPatientHistory |
(0010, 0040) | PatientSex |
(0020, 0010) | StudyID |
Andere Reihentags
Tag | Attributname |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0201) | TimezoneOffsetFromUTC |
(0020, 0011) | SeriesNumber |
(0020, 0060) | Lateralität |
(0008, 0021) | SeriesDate |
(0008, 0031) | SeriesTime |
(0008, 103E) | SeriesDescription |
(0040, 0245) | PerformedProcedureStepStartTime |
(0040, 0275) | RequestAttributesSequence |
Andere Instanztags
Tag | Attributname |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0016) | SOPClassUID |
(0008, 0056) | InstanceAvailability |
(0008, 0201) | TimezoneOffsetFromUTC |
(0020, 0013) | InstanceNumber |
(0028, 0010) | Zeilen |
(0028, 0011) | Spalten |
(0028, 0100) | BitsAllocated |
(0028, 0008) | NumberOfFrames |
Die folgenden Attribute werden zurückgegeben.
- Alle Abfrageparameter und UIDs der Übereinstimmung in der Ressourcen-URL
IncludeField
Attribute, die auf dieser Ressourcenebene unterstützt werden- Wenn die Zielressource lautet
All Series
,Study
werden auch Ebenenattribute zurückgegeben. - Wenn die Zielressource lautet
All Instances
,Study
werden auch Attribute derSeries
Ebene zurückgegeben. - Wenn die Zielressource lautet
Study's Instances
,Series
werden auch Ebenenattribute zurückgegeben. NumberOfStudyRelatedInstances
Das aggregierte Attribut wird aufStudy
EbeneincludeField
unterstützt.NumberOfSeriesRelatedInstances
Das aggregierte Attribut wird aufSeries
EbeneincludeField
unterstützt.
Suchantwortcodes
Die Abfrage-API gibt einen der folgenden Statuscodes in der Antwort zurück.
Code | Beschreibung |
---|---|
200 (OK) |
Die Antwortnutzlast enthält alle übereinstimmenden Ressourcen. |
204 (No Content) |
Die Suche wurde erfolgreich abgeschlossen, aber keine Ergebnisse zurückgegeben. |
400 (Bad Request) |
Der Server konnte die Abfrage nicht ausführen, da die Abfragekomponente ungültig war. Der Antworttext enthält Details des Fehlers. |
401 (Unauthorized) |
Der Client ist nicht authentifiziert. |
403 (Forbidden) |
Der Benutzer ist nicht autorisiert. |
414 (URI Too Long) |
Der URI hat die maximal unterstützte Länge von 8192 Zeichen überschritten. |
424 (Failed Dependency) |
Der DICOM-Dienst kann nicht auf eine Ressource zugreifen, von der sie abhängig ist, um diese Anforderung abzuschließen. Ein Beispiel ist ein Fehler beim Zugriff auf den verbundenen Data Lake-Speicher oder der Schlüsseltresor zur Unterstützung der vom Kunden verwalteten Schlüsselverschlüsselung. |
503 (Service Unavailable) |
Der Dienst ist nicht verfügbar oder ausgelastet. Versuchen Sie es später noch einmal. |
Hinweise
- Abfragen mithilfe der
TimezoneOffsetFromUTC (00080201)
Abfrage werden nicht unterstützt. - Die Abfrage-API gibt nicht zurück
413 (request entity too large)
. Wenn der angeforderte Abfrageantwortgrenzwert außerhalb des zulässigen Bereichs liegt, wird eine ungültige Anforderung zurückgegeben. Alles, was innerhalb des zulässigen Bereichs angefordert wird, wird aufgelöst. - Wenn die Zielressource "Studie/Serie" ist, gibt es ein Potenzial für inkonsistente Metadaten auf Studien-/Reihenebene über mehrere Instanzen hinweg. Beispielsweise könnten zwei Instanzen unterschiedliche
patientName
haben. In diesem Fall gewinnen die neuesten Gewinne, und Sie können nur nach den neuesten Daten suchen. - Seitenergebnisse werden optimiert, um zuerst übereinstimmende Instanzen zurückzugeben, was möglicherweise zu doppelten Datensätzen auf nachfolgenden Seiten führt, wenn neuere Daten hinzugefügt wurden, die mit der Abfrage übereinstimmen.
- Bei übereinstimmungen wird die Groß-/Kleinschreibung nicht beachtet, und bei PN VR-Typen wird keine Akzente beachtet.
- Bei übereinstimmungen wird die Groß-/Kleinschreibung nicht beachtet, und bei anderen Zeichenfolgen-VR-Typen wird Akzent berücksichtigt.
- Nur der erste Wert wird von einem einzelnen wertigen Datenelement indiziert, das falsch mehrere Werte aufweist.
- Die Verwendung der Standardattribute oder das Einschränken der Anzahl der angeforderten Ergebnisse maximiert die Leistung.
- Wenn ein Attribut mit NULL-Abstand gespeichert wurde, kann es mit oder ohne den NULL-Abstand in der URI-Codierung gesucht werden. Die abgerufenen Ergebnisse beziehen sich auf Attribute, die sowohl mit als auch ohne Nullabstand gespeichert werden.
Löschen
Diese Transaktion ist nicht Teil des offiziellen DICOMweb Standard. Es verwendet die DELETE-Methode, um Darstellungen von Studien, Reihen und Instanzen aus dem Speicher zu entfernen.
Methode | Pfad | Beschreibung |
---|---|---|
DELETE | .. /studies/{study} | Löschen Sie alle Instanzen für eine bestimmte Studie. |
DELETE | .. /studies/{study}/series/{series} | Löschen Sie alle Instanzen für eine bestimmte Datenreihe innerhalb einer Studie. |
DELETE | .. /studies/{study}/series/{series}/instances/{instance} | Löschen sie eine bestimmte Instanz innerhalb einer Datenreihe. |
Parameter study
, series
, und instance
entsprechen den DICOM-Attributen StudyInstanceUID
, SeriesInstanceUID
, bzw SopInstanceUID
. entsprechen.
Es gibt keine Einschränkungen für den Kopfzeilen- oder Content-Type
KopfzeilenAccept
- oder Textkörperinhalt der Anforderung.
Hinweis
Nach einer Löschtransaktion können die gelöschten Instanzen nicht wiederhergestellt werden.
Antwortstatuscodes
Code | Beschreibung |
---|---|
204 (No Content) |
Wenn alle SOP-Instanzen gelöscht werden. |
400 (Bad Request) |
Die Anforderung wurde schlecht formatiert. |
401 (Unauthorized) |
Der Client ist nicht authentifiziert. |
403 (Forbidden) |
Der Benutzer ist nicht autorisiert. |
404 (Not Found) |
Wenn die angegebene Datenreihe in einer Studie nicht gefunden wurde oder die angegebene Instanz nicht innerhalb der Datenreihe gefunden wurde. |
424 (Failed Dependency) |
Der DICOM-Dienst kann nicht auf eine Ressource zugreifen, von der sie abhängig ist, um diese Anforderung abzuschließen. Ein Beispiel ist ein Fehler beim Zugriff auf den verbundenen Data Lake-Speicher oder der Schlüsseltresor zur Unterstützung der vom Kunden verwalteten Schlüsselverschlüsselung. |
503 (Service Unavailable) |
Der Dienst ist nicht verfügbar oder ausgelastet. Versuchen Sie es später noch einmal. |
Antwortnutzlast löschen
Der Antworttext ist leer. Der Statuscode ist die einzige nützliche Information, die zurückgegeben wird.
Worklist Service (UPS-RS)
Der DICOM-Dienst unterstützt die Push- und Pull-SOPs des Arbeitslistendiensts (UPS-RS). Dieser Dienst bietet Zugriff auf eine Arbeitsliste mit Workitems, die jeweils einen Unified Procedure Step (UPS) darstellt.
Im Gesamten steht die Variable {workitem}
in einer URI-Vorlage für eine Workitem UID.
Verfügbare UPS-RS-Endpunkte umfassen:
Verb | Pfad | Beschreibung |
---|---|---|
POST | {s}/workitems{? BetroffeneSOPInstanceUID} | Erstellen eines Arbeitselements |
POST | {s}/workitems/{instance}{?transaction} | Ein Arbeitselement aktualisieren |
GET | {s}/workitems{?query*} | Suchen nach Arbeitselementen |
GET | {s}/workitems/{instance} | Abrufen einer Arbeitsaufgabe |
PUT | {s}/workitems/{instance}/state | Ändern des Arbeitsaufgabenstatus |
POST | {s}/workitems/{instance}/cancelrequest | Arbeitsaufgabe abbrechen |
POST | {s}/workitems/{instance}/subscribers/{AETitle}{?deletionlock} | Abonnement erstellen |
POST | {s}/workitems/1.2.840.10008.5.1.4.34.5/ | Abonnement aussetzen |
DELETE | {s}/workitems/{instance}/subscribers/{AETitle} | Löschen eines Abonnements |
GET | {s}/abonnenten/{AETitle} | Öffnen des Abonnementkanals |
Arbeitselement erstellen
Diese Transaktion verwendet die POST-Methode, um ein neues Workitem zu erstellen.
Methode | Pfad | Beschreibung |
---|---|---|
POST | .. /workitems | Erstellen Sie ein Arbeitselement. |
POST | .. /workitems? {workitem} | Erstellt ein Workitem mit der angegebenen UID. |
Wenn der URI nicht angegeben ist, muss das Nutzlast-Dataset das Workitem im SOPInstanceUID
Attribut enthalten.
Die Accept
Header und Content-Type
Die Kopfzeilen sind in der Anforderung erforderlich und müssen beide den Wert application/dicom+json
aufweisen.
Es gibt mehrere Anforderungen im Zusammenhang mit DICOM-Datenattributen im Kontext einer bestimmten Transaktion. Attribute müssen möglicherweise vorhanden sein, müssen nicht vorhanden sein, müssen leer sein oder nicht leer sein. Diese Anforderungen finden Sie in dieser Tabelle.
Hinweis
Obwohl die Referenztabelle besagt, dass die SOP-Instanz-UID nicht vorhanden sein sollte, ist diese Anleitung spezifisch für das DIMSE-Protokoll und wird in DICOMWeb anders behandelt. DIE SOP-Instanz-UID sollte im Dataset vorhanden sein, wenn nicht im URI.
Hinweis
Alle bedingte Anforderungscodes einschließlich 1C und 2C werden als optional behandelt.
Erstellen von Antwortstatuscodes
Code | Beschreibung |
---|---|
201 (Created) |
Das Zielarbeitselement wurde erfolgreich erstellt. |
400 (Bad Request) |
Es gab ein Problem mit der Anforderung. Die Anforderungsnutzlast erfüllte beispielsweise nicht die Anforderungen. |
401 (Unauthorized) |
Der Client ist nicht authentifiziert. |
403 (Forbidden) |
Der Benutzer ist nicht autorisiert. |
409 (Conflict) |
Das Arbeitselement ist bereits vorhanden. |
415 (Unsupported Media Type) |
Die bereitgestellte Version Content-Type wird nicht unterstützt. |
424 (Failed Dependency) |
Der DICOM-Dienst kann nicht auf eine Ressource zugreifen, von der sie abhängig ist, um diese Anforderung abzuschließen. Ein Beispiel ist ein Fehler beim Zugriff auf den verbundenen Data Lake-Speicher oder der Schlüsseltresor zur Unterstützung der vom Kunden verwalteten Schlüsselverschlüsselung. |
503 (Service Unavailable) |
Der Dienst ist nicht verfügbar oder ausgelastet. Versuchen Sie es später noch einmal. |
Erstellen der Antwortnutzlast
Eine Erfolgsantwort hat keine Nutzlast. Die Header und Antwortheader enthalten einen URI-Verweis auf das erstellte Workitem.The Location
and Content-Location
response headers contain a URI reference to the created Workitem.
Eine Fehlerantwortnutzlast enthält eine Meldung, die den Fehler beschreibt.
Absage anfordern
Diese Transaktion ermöglicht es dem Benutzer, den Abbruch eines nicht im Besitz befindlichen Workitems anzufordern.
Es gibt vier gültige Workitem-Status:
SCHEDULED
IN PROGRESS
CANCELED
COMPLETED
Diese Transaktion ist nur erfolgreich für Workitems im SCHEDULED
Zustand. Jeder Benutzer kann den Besitz eines Workitem-Objekts geltend machen, indem er seine Transaktions-UID festlegt und seinen Zustand auf IN PROGRESS
ändert. Anschließend kann ein Benutzer das Workitem nur ändern, indem er die richtige Transaktions-UID bereitstellt. Während UPS Überwachungs- und Ereignis-SOP-Klassen definiert, mit denen Abbruchanforderungen und andere Ereignisse weitergeleitet werden können, implementiert dieser DICOM-Dienst diese Klassen nicht und sodass Abbruchanforderungen für Arbeitsaufgaben, die IN PROGRESS
einen Fehler zurückgeben. Ein eigenes Workitem-Objekt kann über die Transaktion "Workitem State ändern" abgebrochen werden.
Methode | Pfad | Beschreibung |
---|---|---|
POST | .. /workitems/{workitem}/cancelrequest | Anfordern des Abbruchs eines geplanten Arbeitselements |
Die Content-Type
Kopfzeile ist erforderlich und muss den Wert application/dicom+json
aufweisen.
Die Anforderungsnutzlast kann Aktionsinformationen enthalten, die im DICOM-Standard definiert sind.
Statuscodes für anforderungsabbruchsantwort
Code | Beschreibung |
---|---|
202 (Accepted) |
Die Anforderung wurde vom Server akzeptiert, aber der Status "Zielarbeitselement" wurde noch nicht geändert. |
400 (Bad Request) |
Es gab ein Problem mit der Syntax der Anforderung. |
401 (Unauthorized) |
Der Client ist nicht authentifiziert. |
403 (Forbidden) |
Der Benutzer ist nicht autorisiert. |
404 (Not Found) |
Das Zielarbeitselement wurde nicht gefunden. |
409 (Conflict) |
Die Anforderung ist mit dem aktuellen Status des Zielarbeitselements inkonsistent. Beispielsweise befindet sich das Zielarbeitselement im SCHEDULED Oder COMPLETED Zustand. |
415 (Unsupported Media Type) |
Die bereitgestellte Version Content-Type wird nicht unterstützt. |
424 (Failed Dependency) |
Der DICOM-Dienst kann nicht auf eine Ressource zugreifen, von der sie abhängig ist, um diese Anforderung abzuschließen. Ein Beispiel ist ein Fehler beim Zugriff auf den verbundenen Data Lake-Speicher oder der Schlüsseltresor zur Unterstützung der vom Kunden verwalteten Schlüsselverschlüsselung. |
503 (Service Unavailable) |
Der Dienst ist nicht verfügbar oder ausgelastet. Versuchen Sie es später noch einmal. |
Anforderungsabbruchantwortnutzlast
Eine Erfolgsantwort hat keine Nutzlast, und eine Fehlerantwortnutzlast enthält eine Meldung, die den Fehler beschreibt.
Wenn sich die Workitem-Instanz bereits in einem abgebrochenen Zustand befindet, enthält die Antwort den folgenden HTTP-Warnungsheader: 299: The UPS is already in the requested state of CANCELED.
Arbeitselement abrufen
Diese Transaktion ruft ein Workitem-Objekt ab. Sie entspricht dem UPS DIMSE N-GET-Vorgang.
Referenzieren: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.5
Wenn das Arbeitselement auf dem Ursprungsserver vorhanden ist, wird das Arbeitselement in einem akzeptablen Medientyp zurückgegeben. Das zurückgegebene Workitem-Objekt enthält nicht das Transaktions-UID-Attribut (0008.1195). Dies ist erforderlich, um die Rolle des Attributs als Zugriffssperre beizubehalten.
Methode | Pfad | Beschreibung |
---|---|---|
GET | .. /workitems/{workitem} | Anforderung zum Abrufen eines Workitem-Objekts |
Die Accept
Kopfzeile ist erforderlich und muss den Wert application/dicom+json
aufweisen.
Abrufen von Antwortstatuscodes für Arbeitselemente
Code | Beschreibung |
---|---|
200 (OK) | Die Workitem-Instanz wurde erfolgreich abgerufen. |
400 (Ungültige Anforderung) | Es gab ein Problem mit der Anforderung. |
401 (Nicht autorisiert) | Der Client ist nicht authentifiziert. |
403 (Unzulässig) | Der Benutzer ist nicht autorisiert. |
404 (Nicht gefunden) | Das Zielarbeitselement wurde nicht gefunden. |
424 (Fehlgeschlagene Abhängigkeit) | Der DICOM-Dienst kann nicht auf eine Ressource zugreifen, von der sie abhängig ist, um diese Anforderung abzuschließen. Ein Beispiel ist ein Fehler beim Zugriff auf den verbundenen Data Lake-Speicher oder der Schlüsseltresor zur Unterstützung der vom Kunden verwalteten Schlüsselverschlüsselung. |
503 (Dienst nicht verfügbar) | Der Dienst ist nicht verfügbar oder ausgelastet. Versuchen Sie es später noch einmal. |
Abrufen der Arbeitselementantwortnutzlast
- Eine Erfolgsantwort weist eine einzelne Teilnutzlast auf, die das angeforderte Arbeitselement im ausgewählten Medientyp enthält.
- Das zurückgegebene Workitem-Objekt darf nicht das Transaktions-UID-Attribut (0008, 1195) des Workitem enthalten, da dies nur dem Besitzer bekannt sein sollte.
Workitem aktualisieren
Diese Transaktion ändert Attribute eines vorhandenen Workitem-Objekts. Sie entspricht dem UPS DIMSE N-SET-Vorgang.
Referenzieren: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.6
Um ein Arbeitselement zu aktualisieren, das derzeit im SCHEDULED
Zustand ist, ist das Transaction UID
Attribut nicht vorhanden. Für ein Workitem-Objekt im IN PROGRESS
Status muss die Anforderung die aktuelle Transaktions-UID als Abfrageparameter enthalten. Wenn sich das Workitem-Objekt bereits in den Zuständen COMPLETED
befindet CANCELED
, lautet 400 (Bad Request)
die Antwort .
Methode | Pfad | Beschreibung |
---|---|---|
POST | .. /workitems/{workitem}? {transaction-uid} | Workitem-Transaktion aktualisieren |
Die Content-Type
Kopfzeile ist erforderlich und muss den Wert application/dicom+json
aufweisen.
Die Anforderungsnutzlast enthält ein Dataset mit den Änderungen, die auf das Zielarbeitselement angewendet werden sollen. Wenn eine Sequenz geändert wird, muss die Anforderung alle Elemente in der Sequenz enthalten, nicht nur die zu ändernden Elemente. Wenn Sie mehrere Attribute als Gruppe aktualisieren müssen, aktualisieren Sie sie als mehrere Attribute in einer einzigen Anforderung, nicht als mehrere Anforderungen.
Es gibt viele Anforderungen im Zusammenhang mit DICOM-Datenattributen im Kontext einer bestimmten Transaktion. Attribute müssen möglicherweise vorhanden sein, müssen nicht vorhanden sein, müssen leer sein oder nicht leer sein. Diese Anforderungen finden Sie in dieser Tabelle.
Hinweis
Alle bedingte Anforderungscodes einschließlich 1C und 2C werden als optional behandelt.
Hinweis
Die Anforderung kann den Wert des Prozedurschrittstatus-Attributs (0074.1000) nicht festlegen. Der Prozedurschrittstatus wird mithilfe der Transaktion "Status ändern" oder der Anforderungsabbruchtransaktion verwaltet.
Aktualisieren der Statuscodes für die Transaktionsantwort von Workitem
Code | Beschreibung |
---|---|
200 (OK) |
Das Zielarbeitselement wurde aktualisiert. |
400 (Bad Request) |
Es gab ein Problem mit der Anforderung. Beispiel: (1) Das Zielarbeitselement befindet sich im COMPLETED Oder-Zustand CANCELED . (2) Die Transaktions-UID fehlt. (3) Die Transaktions-UID ist falsch. (4) Das Dataset entspricht nicht den Anforderungen. |
401 (Unauthorized) |
Der Client ist nicht authentifiziert. |
403 (Forbidden) |
Der Benutzer ist nicht autorisiert. |
404 (Not Found) |
Das Zielarbeitselement wurde nicht gefunden. |
409 (Conflict) |
Die Anforderung ist mit dem aktuellen Status des Zielarbeitselements inkonsistent. |
415 (Unsupported Media Type) |
Die bereitgestellte Version Content-Type wird nicht unterstützt. |
424 (Failed Dependency) |
Der DICOM-Dienst kann nicht auf eine Ressource zugreifen, von der sie abhängig ist, um diese Anforderung abzuschließen. Ein Beispiel ist ein Fehler beim Zugriff auf den verbundenen Data Lake-Speicher oder der Schlüsseltresor zur Unterstützung der vom Kunden verwalteten Schlüsselverschlüsselung. |
503 (Service Unavailable) |
Der Dienst ist nicht verfügbar oder ausgelastet. Versuchen Sie es später noch einmal. |
Workitem-Transaktionsantwortnutzlast aktualisieren
Der Ursprungsserver unterstützt Kopfzeilenfelder nach Bedarf in Tabelle 11.6.3-2.
Eine Erfolgsantwort hat entweder keine Nutzlast oder eine Nutzlast, die ein Statusberichtsdokument enthält.
Eine Nutzlast der Fehlerantwort kann einen Statusbericht enthalten, der Fehler, Warnungen oder andere nützliche Informationen beschreibt.
Arbeitselementstatus ändern
Diese Transaktion wird verwendet, um den Status eines Workitem-Objekts zu ändern. Es entspricht dem UPS DIMSE N-ACTION-Vorgang "UPS State ändern". Statusänderungen werden verwendet, um den Besitz, den Abschluss oder das Abbrechen eines Workitem-Objekts anzufordern.
Referenzieren: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.7
Wenn das Arbeitselement auf dem Ursprungsserver vorhanden ist, wird das Arbeitselement in einem akzeptablen Medientyp zurückgegeben. Das zurückgegebene Workitem-Objekt enthält nicht das Transaktions-UID-Attribut (0008,1195). Dies ist erforderlich, um die Rolle des Attributs wie hier beschrieben als Zugriffssperre beizubehalten.
Methode | Pfad | Beschreibung |
---|---|---|
PUT | .. /workitems/{workitem}/state | Arbeitselementstatus ändern |
Die Accept
Kopfzeile ist erforderlich und muss den Wert application/dicom+json
aufweisen.
Die Anforderungsnutzlast enthält die Change UPS State Data Elements. Diese Datenelemente sind wie folgt.
- Transaktions-UID (0008, 1195). Die Anforderungsnutzlast enthält eine Transaktions-UID. Der Benutzer-Agent erstellt die Transaktions-UID, wenn ein Übergang zum
IN PROGRESS
Status für ein bestimmtes Arbeitselement angefordert wird. Der Benutzer-Agent stellt die Transaktions-UID in nachfolgenden Transaktionen mit diesem Workitem bereit. - Prozedurschrittstatus (0074, 1000). Die rechtlichen Werte entsprechen dem angeforderten Zustandsübergang. Dies sind:
IN PROGRESS
, ,COMPLETED
, oderCANCELED
.
Ändern der Antwortstatuscodes des Workitem-Zustands
Code | Beschreibung |
---|---|
200 (OK) |
Die Workitem-Instanz wurde erfolgreich abgerufen. |
400 (Bad Request) |
Die Anforderung kann aus einem der folgenden Gründe nicht ausgeführt werden: (1) Die Anforderung ist aufgrund des aktuellen Status des Zielarbeitselements ungültig. (2) Die Transaktions-UID fehlt. (3) Die Transaktions-UID ist falsch. |
401 (Unauthorized) |
Der Client ist nicht authentifiziert. |
403 (Forbidden) |
Der Benutzer ist nicht autorisiert. |
404 (Not Found) |
Das Zielarbeitselement wurde nicht gefunden. |
409 (Conflict) |
Die Anforderung ist mit dem aktuellen Status des Zielarbeitselements inkonsistent. |
424 (Failed Dependency) |
Der DICOM-Dienst kann nicht auf eine Ressource zugreifen, von der sie abhängig ist, um diese Anforderung abzuschließen. Ein Beispiel ist ein Fehler beim Zugriff auf den verbundenen Data Lake-Speicher oder der Schlüsseltresor zur Unterstützung der vom Kunden verwalteten Schlüsselverschlüsselung. |
503 (Service Unavailable) |
Der Dienst ist nicht verfügbar oder ausgelastet. Versuchen Sie es später noch einmal. |
Change Workitem state response payload
- Antworten umfassen die Kopfzeilenfelder, die in Abschnitt 11.7.3.2 angegeben sind.
- Eine Erfolgsantwort hat keine Nutzlast.
- Eine Nutzlast der Fehlerantwort kann einen Statusbericht enthalten, der Fehler, Warnungen oder andere nützliche Informationen beschreibt.
Sucharbeitselemente
Mit dieser Transaktion können Sie nach Attributen nach Workitems suchen.
Methode | Pfad | Beschreibung |
---|---|---|
GET | .. /workitems? | Nach Arbeitselementen suchen |
Die folgende Accept
Kopfzeile wird für die Suche unterstützt.
application/dicom+json
Unterstützte Suchparameter
Die folgenden Parameter für jede Abfrage werden unterstützt:
Schlüssel | Supportwerte | Zulässige Anzahl | Beschreibung |
---|---|---|---|
{attributeID}= |
{value} |
0...N | Suchen Sie in der Abfrage nach Attribut-/Wertabgleich. |
includefield= |
{attributeID} all |
0...N | Die anderen Attribute, die in der Antwort zurückgegeben werden sollen. Nur Attribute auf oberster Ebene können eingeschlossen werden – nicht Attribute, die Teil von Sequenzen sind. Sowohl öffentliche als auch private Tags werden unterstützt. Wann all wird angegeben. Weitere Informationen dazu, welche Attribute für jeden Abfragetyp zurückgegeben werden, finden Sie unter Search Response . Wenn eine Mischung aus {attributeID} und all bereitgestellt wird, verwendet der Server standardmäßig "alle". |
limit= |
{value} |
0...1 | Ganzzahliger Wert, um die Anzahl der in der Antwort zurückgegebenen Werte zu begrenzen. Der Wert kann zwischen dem Bereich 1 >= x <= 200 liegen. Standardmäßig auf 100 . |
offset= |
{value} |
0...1 | Überspringen Sie {value}-Ergebnisse. Wenn ein Offset größer als die Anzahl der Suchergebnisse bereitgestellt wird, wird eine 204 (no content) Antwort zurückgegeben. |
fuzzymatching= |
true \ false |
0...1 | Wenn "true fuzzy matching" auf attribute mit der Person Name (PN) Value Representation (VR) angewendet wird. Es erfolgt eine Präfixwort-Übereinstimmung mit einem beliebigen Namensteil innerhalb dieser Attribute. Wenn es sich z. B. um John^Doe eine Übereinstimmung handelt, PatientName joh dann , do , jo do und Doe John Doe alle übereinstimmungen. Stimmt jedoch ohn nicht überein. |
Durchsuchbare Attribute
Wir unterstützen die Suche nach den folgenden Attributen.
Attributschlüsselwort |
---|
PatientName |
PatientID |
ReferencedRequestSequence.AccessionNumber |
ReferencedRequestSequence.RequestedProcedureID |
ScheduledProcedureStepStartDateTime |
ScheduledStationNameCodeSequence.CodeValue |
ScheduledStationClassCodeSequence.CodeValue |
ScheduledStationGeographicLocationCodeSequence.CodeValue |
ProcedureStepState |
StudyInstanceUID |
Hinweis
Die Suche mit einer leeren Zeichenfolge für Attribute wird nicht unterstützt.
Suchabgleich
Wir unterstützen die folgenden übereinstimmenden Typen.
Suchtyp | Unterstütztes Attribut | Beispiel |
---|---|---|
Bereichsabfrage | ScheduledProcedureStepStartDateTime |
{attributeID}={value1}-{value2} . Für Datums-/Uhrzeitwerte unterstützen wir einen inklusiven Bereich auf dem Tag. Dieser Bereich ist zugeordnet attributeID >= {value1} AND attributeID <= {value2} . Wenn {value1} nicht angegeben, werden alle Vorkommen von Datums- und Uhrzeitangaben vor und einschließlich {value2} übereinstimmen. Ebenso werden, wenn {value2} nicht angegeben, alle Vorkommen und {value1} nachfolgende Datums-/Uhrzeiten übereinstimmen. Einer dieser Werte muss jedoch vorhanden sein. {attributeID}={value1}- und {attributeID}=-{value2} sind gültig, {attributeID}=- ist jedoch ungültig. |
Genaue Übereinstimmung | Alle unterstützten Attribute | {attributeID}={value1} |
Fuzzy Match | PatientName |
Entspricht einer beliebigen Komponente des Namens, die mit dem Wert beginnt. |
WildCard-Übereinstimmung | PatientID , ReferencedRequestSequence.AccessionNumber , ReferencedRequestSequence.RequestedProcedureID , ProcedureStepState , ScheduledStationNameCodeSequence.CodeValue , ScheduledStationClassCodeSequence.CodeValue , ScheduledStationGeographicLocationCodeSequence.CodeValue |
Folgende Wildcardzeichen werden unterstützt: * - Entspricht null oder mehr Zeichen. Beispiel: {attributeID}={val*} entspricht "val", "valid", "value", but not "evaluate". ? - Entspricht einem einzelnen Zeichen. Beispiel: {attributeID}={valu?} entspricht "Value", "valu1", aber nicht "valued" oder "valu" |
Hinweis
Obwohl der vollständige Sequenzabgleich nicht unterstützt wird, wird die genaue Übereinstimmung der in einer Sequenz enthaltenen Attribute unterstützt.
Attribut-ID
Tags können auf viele Arten für den Abfrageparameter codiert werden. Wir haben den Standard teilweise wie in PS3.18 6.7.1.1.1.1 definiert implementiert. Die folgenden Codierungen für ein Tag werden unterstützt.
Wert | Beispiel |
---|---|
{group}{element} |
00100010 |
{dicomKeyword} |
PatientName |
Beispielabfrage:
../workitems?PatientID=K123&0040A370.00080050=1423JS&includefield=00404005&limit=5&offset=0
Suchantwort
Die Antwort ist ein Array von 0...N
DICOM-Datasets mit den folgenden zurückgegebenen Attributen.
- Alle Attribute in DICOM PowerShell 3.4 Table CC.2.5-3 mit einem Rückgabeschlüsseltyp von 1 oder 2
- Alle Attribute in DICOM PowerShell 3.4 Table CC.2.5-3 mit einem Rückgabeschlüsseltyp von 1C, für den die bedingten Anforderungen erfüllt sind
- Alle anderen Workitem-Attribute, die als Übereinstimmungsparameter übergeben werden
- Alle anderen Workitem-Attribute, die als
includefield
Parameterwerte übergeben werden
Suchantwortcodes
Die Abfrage-API gibt einen der folgenden Statuscodes in der Antwort zurück:
Code | Beschreibung |
---|---|
200 (OK) |
Die Antwortnutzlast enthält alle übereinstimmenden Ressourcen. |
206 (Partial Content) |
Die Antwortnutzlast enthält nur einige der Suchergebnisse, und der Rest kann über die entsprechende Anforderung angefordert werden. |
204 (No Content) |
Die Suche wurde erfolgreich abgeschlossen, aber keine Ergebnisse zurückgegeben. |
400 (Bad Request) |
Es gab ein Problem mit der Anforderung. Beispiel: Ungültige Abfrageparametersyntax. Der Antworttext enthält Details des Fehlers. |
401 (Unauthorized) |
Der Client ist nicht authentifiziert. |
403 (Forbidden) |
Der Benutzer ist nicht autorisiert. |
424 (Failed Dependency) |
Der DICOM-Dienst kann nicht auf eine Ressource zugreifen, von der sie abhängig ist, um diese Anforderung abzuschließen. Ein Beispiel ist ein Fehler beim Zugriff auf den verbundenen Data Lake-Speicher oder der Schlüsseltresor zur Unterstützung der vom Kunden verwalteten Schlüsselverschlüsselung. |
503 (Service Unavailable) |
Der Dienst ist nicht verfügbar oder ausgelastet. Versuchen Sie es später noch einmal. |
Zusätzliche Hinweise
Die Abfrage-API gibt nicht zurück 413 (request entity too large)
. Wenn der angeforderte Abfrageantwortgrenzwert außerhalb des zulässigen Bereichs liegt, wird eine ungültige Anforderung zurückgegeben. Alles, was innerhalb des zulässigen Bereichs angefordert wird, wird aufgelöst.
- Seitenergebnisse sind so optimiert, dass zuerst übereinstimmungsgleiche Instanzen zurückgegeben werden, was zu doppelten Datensätzen auf nachfolgenden Seiten führen kann, wenn neuere Daten hinzugefügt wurden, die mit der Abfrage übereinstimmen.
- Bei übereinstimmungen wird die Groß-/Kleinschreibung nicht beachtet, und bei PN VR-Typen wird die Groß-/Kleinschreibung nicht beachtet.
- Bei übereinstimmungen wird die Groß-/Kleinschreibung beachtet, und bei anderen Zeichenfolgen-VR-Typen wird die Groß-/Kleinschreibung beachtet.
- Wenn es ein Szenario gibt, in dem das Abbrechen eines Arbeitselements und das Abfragen desselben gleichzeitig erfolgt, schließt die Abfrage höchstwahrscheinlich das Arbeitselement aus, das aktualisiert wird, und der Antwortcode lautet
206 (Partial Content)
.
Hinweis
DICOM® ist die eingetragene Marke des National Electrical Manufacturers Association für seine Standards-Publikationen über die digitale Kommunikation medizinischer Informationen.