Použití rozhraní API DICOMweb Standard s cURL
Tento článek ukazuje, jak pracovat se službou DICOMweb pomocí cURL a ukázkových souborů .dcm DICOM®.
Použijte tyto ukázkové soubory:
- blue-circle.dcm
- dicom-metadata.csv
- green-square.dcm
- red-triangle.dcm
Název souboru, studyUID, seriesUID a instanceUID ukázkových souborů DICOM jsou:
Soubor | StudyUID | SeriesUID | INSTANCEUID |
---|---|---|---|
green-square.dcm | 1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420 | 1.2.826.0.1.3680043.8.498.45787841905473114233124723359129632652 | 1.2.826.0.1.3680043.8.498.12714725698140337137334606354172323212 |
red-triangle.dcm | 1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420 | 1.2.826.0.1.3680043.8.498.45787841905473114233124723359129632652 | 1.2.826.0.1.3680043.8.498.47359123102728459884412887463296905395 |
blue-circle.dcm | 1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420 | 1.2.826.0.1.3680043.8.498.77033797676425927098669402985243398207 | 1.2.826.0.1.3680043.8.498.13273713909719068980354078852867170114 |
Poznámka:
Každý z těchto souborů představuje jednu instanci a je součástí stejné studie. Také zelený čtverec a červený trojúhelník jsou součástí stejné řady, zatímco modrý kruh je v samostatné řadě.
Požadavky
Pokud chcete používat rozhraní API standardu DICOM, musíte mít nasazenou instanci služby DICOM. Další informace najdete v tématu Nasazení služby DICOM pomocí webu Azure Portal.
Po nasazení instance služby DICOM načtěte adresu URL vaší služby App Service.
- Přihlaste se k portálu Azure.
- Vyhledejte nedávné prostředky a vyberte instanci služby DICOM.
- Zkopírujte adresu URL služby služby DICOM.
- Pokud potřebujete přístupový token, přečtěte si téma Získání přístupového tokenu pro službu DICOM.
Pro tento kód přistupujeme ke službě Azure Public Preview. Je důležité, abyste nenahráli žádné soukromé zdravotní údaje (PHI).
Práce se službou DICOM
DiCOMweb Standard velmi využívá multipart/related
požadavky HTTP v kombinaci s hlavičkami přijetí specifické pro DICOM. Vývojáři obeznámení s dalšími rozhraními API založenými na REST často hledají práci s diCOMweb Standard awkward. Po zprovoznění je ale snadné ho používat. Stačí trochu povědomosti, abyste mohli začít.
Příkazy cURL obsahují alespoň jednu a někdy dvě proměnné, které musí být nahrazeny. Pokud chcete zjednodušit spouštění příkazů, vyhledejte a nahraďte následující proměnné vašimi konkrétními hodnotami.
- {Service URL} Adresa URL služby je adresa URL pro přístup ke službě DICOM, kterou jste zřídili například
https://<workspacename-dicomservicename>.dicom.azurehealthcareapis.com
na webu Azure Portal. Při vytváření požadavků nezapomeňte zadat verzi jako součást adresy URL. Další informace najdete v dokumentaci ke správě verzí rozhraní API pro službu DICOM. - {path-to-dicoms} – cesta k adresáři, který obsahuje red-triangle.dcm soubor, například
C:/dicom-server/docs/dcms
- Zajistěte použití lomítek jako oddělovačů a ukončení adresáře bez koncového lomítka.
Nahrání instancí DICOM (STOW)
Ukládání instancí pomocí vícedílné nebo související instance
Tato žádost má v úmyslu ukázat, jak nahrát soubory DICOM pomocí vícedílné části nebo souvisejícího souboru.
Poznámka:
Služba DICOM je více lenientní než standard DICOM. Příklad však ukazuje požadavek POST, který je v souladu se standardem.
Podrobnosti:
- Cesta:.. /studie
- Metoda: POST
- Hlavičky:
- Přijmout: application/dicom+json
- Typ obsahu: vícedílné/související; type="application/dicom"
- Autorizace: Nosný {hodnota tokenu}
- Tělo:
- Content-Type: application/dicom for each file upload, separated by a boundary value
Některé programovací jazyky a nástroje se chovají odlišně. Některé například vyžadují, abyste definovali vlastní hranici. U těchto nástrojů možná budete muset použít mírně upravenou hlavičku Content-Type. Následující nástroje lze úspěšně použít.
- Typ obsahu: vícedílné/související; type="application/dicom"; boundary=ABCD1234
- Typ obsahu: vícedílné/související; boundary=ABCD1234
- Typ obsahu: vícedílné/související
curl --location --request POST "{Service URL}/v{version}/studies"
--header "Accept: application/dicom+json"
--header "Content-Type: multipart/related; type=\"application/dicom\""
--header "Authorization: Bearer {token value}"
--form "file1=@{path-to-dicoms}/red-triangle.dcm;type=application/dicom"
--trace-ascii "trace.txt"
Ukládání instancí pro konkrétní studii
Tento požadavek ukazuje, jak nahrát soubory DICOM pomocí více částí nebo souvisejících s určenou studií.
Podrobnosti:
- Cesta:.. /studies/{study}
- Metoda: POST
- Hlavičky:
- Přijmout: application/dicom+json
- Typ obsahu: vícedílné/související; type="application/dicom"
- Autorizace: Nosný {hodnota tokenu}
- Tělo:
- Content-Type: application/dicom for each file upload, separated by a boundary value
Některé programovací jazyky a nástroje se chovají odlišně. Některé například vyžadují, abyste definovali vlastní hranici. U těchto jazyků a nástrojů možná budete muset použít mírně upravenou hlavičku Content-Type. Následující nástroje lze úspěšně použít.
- Typ obsahu: vícedílné/související; type="application/dicom"; boundary=ABCD1234
- Typ obsahu: vícedílné/související; boundary=ABCD1234
- Typ obsahu: vícedílné/související
curl --request POST "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420"
--header "Accept: application/dicom+json"
--header "Content-Type: multipart/related; type=\"application/dicom\""
--header "Authorization: Bearer {token value}"
--form "file1=@{path-to-dicoms}/blue-circle.dcm;type=application/dicom"
Store-single-instance
Poznámka:
Toto je nestandardní rozhraní API, které umožňuje nahrání jednoho souboru DICOM bez nutnosti konfigurovat POST pro vícedílné nebo související soubory. I když cURL zpracovává vícedílné nebo související dobře, toto rozhraní API umožňuje nástrojům, jako je Postman, nahrát soubory do služby DICOM.
K nahrání jednoho souboru DICOM se vyžaduje následující metoda.
Podrobnosti:
- Cesta:.. /studie
- Metoda: POST
- Hlavičky:
- Přijmout: application/dicom+json
- Typ obsahu: application/dicom
- Autorizace: Nosný {hodnota tokenu}
- Tělo:
- Obsahuje jeden soubor DICOM jako binární bajty.
curl --location --request POST "{Service URL}/v{version}/studies"
--header "Accept: application/dicom+json"
--header "Content-Type: application/dicom"
--header "Authorization: Bearer {token value}"
--data-binary "@{path-to-dicoms}/green-square.dcm"
Upsert instance využívající vícedílné nebo související instance
Poznámka:
Toto je nestandardní rozhraní API, které umožňuje upsert souborů DICOM pomocí vícedílných/souvisejících souborů.
Podrobnosti:
- Cesta:.. /studie
- Metoda: PUT
- Hlavičky:
- Přijmout: application/dicom+json
- Typ obsahu: vícedílné/související; type="application/dicom"
- Autorizace: Nosný {hodnota tokenu}
- Tělo:
- Content-Type: application/dicom for each file upload, separated by a boundary value
Některé programovací jazyky a nástroje se chovají odlišně. Některé například vyžadují, abyste definovali vlastní hranici. U těchto nástrojů možná budete muset použít mírně upravenou hlavičku Content-Type. Následující nástroje lze úspěšně použít.
- Typ obsahu: vícedílné/související; type="application/dicom"; boundary=ABCD1234
- Typ obsahu: vícedílné/související; boundary=ABCD1234
- Typ obsahu: vícedílné/související
curl --location --request PUT "{Service URL}/v{version}/studies"
--header "Accept: application/dicom+json"
--header "Content-Type: multipart/related; type=\"application/dicom\""
--header "Authorization: Bearer {token value}"
--form "file1=@{path-to-dicoms}/red-triangle.dcm;type=application/dicom"
--trace-ascii "trace.txt"
Instance upsertu pro určitou studii
Poznámka:
Jedná se o nestandardní rozhraní API, které umožňuje upsertování souborů DICOM pomocí více částí/souvisejících s určenou studií.
Podrobnosti:
- Cesta:.. /studies/{study}
- Metoda: PUT
- Hlavičky:
- Přijmout: application/dicom+json
- Typ obsahu: vícedílné/související; type="application/dicom"
- Autorizace: Nosný {hodnota tokenu}
- Tělo:
- Content-Type: application/dicom for each file upload, separated by a boundary value
Některé programovací jazyky a nástroje se chovají odlišně. Některé například vyžadují, abyste definovali vlastní hranici. U těchto jazyků a nástrojů možná budete muset použít mírně upravenou hlavičku Content-Type. Následující nástroje lze úspěšně použít.
- Typ obsahu: vícedílné/související; type="application/dicom"; boundary=ABCD1234
- Typ obsahu: vícedílné/související; boundary=ABCD1234
- Typ obsahu: vícedílné/související
curl --request PUT "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420"
--header "Accept: application/dicom+json"
--header "Content-Type: multipart/related; type=\"application/dicom\""
--header "Authorization: Bearer {token value}"
--form "file1=@{path-to-dicoms}/blue-circle.dcm;type=application/dicom"
Upsert single instance
Poznámka:
Toto je nestandardní rozhraní API, které umožňuje upsert jednoho souboru DICOM.
Tuto metodu použijte k nahrání jednoho souboru DICOM.
Podrobnosti:
- Cesta:.. /studie
- Metoda: PUT
- Hlavičky:
- Přijmout: application/dicom+json
- Typ obsahu: application/dicom
- Autorizace: Nosný {hodnota tokenu}
- Tělo:
- Obsahuje jeden soubor DICOM jako binární bajty.
curl --location --request PUT "{Service URL}/v{version}/studies"
--header "Accept: application/dicom+json"
--header "Content-Type: application/dicom"
--header "Authorization: Bearer {token value}"
--data-binary "@{path-to-dicoms}/green-square.dcm"
Načtení DICOM (WADO)
Načtení všech instancí ve studii
Tento požadavek načte všechny instance v rámci jedné studie a vrátí je jako kolekci vícedílných nebo souvisejících bajtů.
Podrobnosti:
- Cesta:.. /studies/{study}
- Metoda: GET
- Hlavičky:
- Přijmout: vícedílné/související; type="application/dicom"; transfer-syntax=*
- Autorizace: Nosný {hodnota tokenu}
curl --request GET "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420"
--header "Accept: multipart/related; type=\"application/dicom\"; transfer-syntax=*"
--header "Authorization: Bearer {token value}"
--output "suppressWarnings.txt"
Tento příkaz cURL zobrazuje stažené bajty ve výstupním souboru (suppressWarnings.txt), ale nejsou přímými soubory DICOM, pouze textovým znázorněním vícedílného/souvisejícího stahování.
Načtení metadat všech instancí ve studii
Tento požadavek načte metadata pro všechny instance v rámci jedné studie.
Podrobnosti:
- Cesta:.. /studies/{study}/metadata
- Metoda: GET
- Hlavičky:
- Přijmout: application/dicom+json
- Autorizace: Nosný {hodnota tokenu}
Tento příkaz cURL zobrazuje stažené bajty ve výstupním souboru (suppressWarnings.txt), ale nejsou přímými soubory DICOM, pouze textovým znázorněním vícedílného/souvisejícího stahování.
curl --request GET "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420/metadata"
--header "Accept: application/dicom+json"
--header "Authorization: Bearer {token value}"
Načtení všech instancí v rámci řady
Tento požadavek načte všechny instance v rámci jedné řady a vrátí je jako kolekci vícedílných nebo souvisejících bajtů.
Podrobnosti:
- Cesta:.. /studies/{study}/series/{series}
- Metoda: GET
- Hlavičky:
- Přijmout: vícedílné/související; type="application/dicom"; transfer-syntax=*
- Autorizace: Nosný {hodnota tokenu}
Tento příkaz cURL zobrazuje stažené bajty ve výstupním souboru (suppressWarnings.txt), ale nejedná se o soubor DICOM, pouze textové vyjádření vícedílného stahování/souvisejícího stahování.
curl --request GET "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420/series/1.2.826.0.1.3680043.8.498.45787841905473114233124723359129632652"
--header "Accept: multipart/related; type=\"application/dicom\"; transfer-syntax=*"
--header "Authorization: Bearer {token value}"
--output "suppressWarnings.txt"
Načtení metadat všech instancí v rámci řady
Tento požadavek načte metadata pro všechny instance v rámci jedné studie.
Podrobnosti:
- Cesta:.. /studies/{study}/series/{series}/metadata
- Metoda: GET
- Hlavičky:
- Přijmout: application/dicom+json
- Autorizace: Nosný {hodnota tokenu}
curl --request GET "{Service URL}/v{version}/studies1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420/series/1.2.826.0.1.3680043.8.498.45787841905473114233124723359129632652/metadata"
--header "Accept: application/dicom+json"
--header "Authorization: Bearer {token value}"
Načtení jedné instance v rámci řady studie
Tento požadavek načte jednu instanci a vrátí ji jako datový proud DICOM formátovaný bajty.
Podrobnosti:
- Cesta:.. /studies/{study}/series{series}/instance/{instance}
- Metoda: GET
- Hlavičky:
- Přijmout: application/dicom; transfer-syntax=*
- Autorizace: Nosný {hodnota tokenu}
curl --request GET "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420/series/1.2.826.0.1.3680043.8.498.45787841905473114233124723359129632652/instances/1.2.826.0.1.3680043.8.498.47359123102728459884412887463296905395"
--header "Accept: application/dicom; transfer-syntax=*"
--header "Authorization: Bearer {token value}"
--output "suppressWarnings.txt"
Načtení metadat jedné instance v rámci řady studií
Tento požadavek načte metadata pro jednu instanci v rámci jedné studie a řady.
Podrobnosti:
- Cesta:.. /studies/{study}/series/{series}/instance/{instance}/metadata
- Metoda: GET
- Hlavičky:
- Přijmout: application/dicom+json
- Autorizace: Nosný {hodnota tokenu}
curl --request GET "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420/series/1.2.826.0.1.3680043.8.498.45787841905473114233124723359129632652/instances/1.2.826.0.1.3680043.8.498.47359123102728459884412887463296905395/metadata"
--header "Accept: application/dicom+json"
--header "Authorization: Bearer {token value}"
Načtení jednoho nebo více rámců z jedné instance
Tento požadavek načte jeden nebo více rámců z jedné instance a vrátí je jako kolekci vícedílných nebo souvisejících bajtů. Více snímků lze načíst předáním čárkami odděleného seznamu čísel snímků. Všechny instance DICOM s obrázky mají minimálně jeden rámec, což je často jednoduše obrázek přidružený k samotné instanci.
Podrobnosti:
- Cesta:.. /studies/{study}/series{series}/instance/{instance}/frames/1,2,3
- Metoda: GET
- Hlavičky:
- Přijmout: vícedílné/související; type="application/octet-stream"; transfer-syntax=1.2.840.10008.1.2.1 (výchozí) nebo
- Přijmout: vícedílné/související; type="application/octet-stream"; transfer-syntax=* nebo
- Přijmout: vícedílné/související; type="application/octet-stream";
- Autorizace: Nosný {hodnota tokenu}
curl --request GET "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420/series/1.2.826.0.1.3680043.8.498.45787841905473114233124723359129632652/instances/1.2.826.0.1.3680043.8.498.47359123102728459884412887463296905395/frames/1"
--header "Accept: multipart/related; type=\"application/octet-stream\"; transfer-syntax=1.2.840.10008.1.2.1"
--header "Authorization: Bearer {token value}"
--output "suppressWarnings.txt"
Dotaz DICOM (QIDO)
V následujících příkladech vyhledáme položky pomocí jejich jedinečných identifikátorů. Můžete také vyhledat další atributy, například PatientName
.
Hledání studií
Tento požadavek umožňuje vyhledat jednu nebo více studií podle atributů DICOM.
Další informace o podporovaných atributech DICOM naleznete v dicom Conformance Statement.
Podrobnosti:
- Cesta:.. /studie? StudyInstanceUID={study}
- Metoda: GET
- Hlavičky:
- Přijmout: application/dicom+json
- Autorizace: Nosný {hodnota tokenu}
curl --request GET "{Service URL}/v{version}/studies?StudyInstanceUID=1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420"
--header "Accept: application/dicom+json"
--header "Authorization: Bearer {token value}"
Hledání řad
Tento požadavek umožňuje hledat jednu nebo více řad podle atributů DICOM.
Další informace o podporovaných atributech DICOM naleznete v dicom Conformance Statement.
Podrobnosti:
- Cesta:.. /řada? SeriesInstanceUID={series}
- Metoda: GET
- Hlavičky:
- Přijmout: application/dicom+json
- Autorizace: Nosný {hodnota tokenu}
curl --request GET "{Service URL}/v{version}/series?SeriesInstanceUID=1.2.826.0.1.3680043.8.498.45787841905473114233124723359129632652"
--header "Accept: application/dicom+json"
--header "Authorization: Bearer {token value}"
Hledání řad v rámci studie
Tento požadavek umožňuje vyhledat jednu nebo více řad v rámci jedné studie pomocí atributů DICOM.
Další informace o podporovaných atributech DICOM naleznete v dicom Conformance Statement.
Podrobnosti:
- Cesta:.. /studies/{study}/series? SeriesInstanceUID={series}
- Metoda: GET
- Hlavičky:
- Přijmout: application/dicom+json
- Autorizace: Nosný {hodnota tokenu}
curl --request GET "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420/series?SeriesInstanceUID=1.2.826.0.1.3680043.8.498.45787841905473114233124723359129632652"
--header "Accept: application/dicom+json"
--header "Authorization: Bearer {token value}"
Hledání instancí
Tento požadavek umožňuje hledat jednu nebo více instancí podle atributů DICOM.
Další informace o podporovaných atributech DICOM naleznete v dicom Conformance Statement.
Podrobnosti:
- Cesta:.. /instance? SOPInstanceUID={instance}
- Metoda: GET
- Hlavičky:
- Přijmout: application/dicom+json
- Autorizace: Nosný {hodnota tokenu}
curl --request GET "{Service URL}/v{version}/instances?SOPInstanceUID=1.2.826.0.1.3680043.8.498.47359123102728459884412887463296905395"
--header "Accept: application/dicom+json"
--header "Authorization: Bearer {token value}"
Hledání instancí ve studii
Tento požadavek umožňuje vyhledávat jednu nebo více instancí v rámci jedné studie pomocí atributů DICOM.
Další informace o podporovaných atributech DICOM naleznete v dicom Conformance Statement.
Podrobnosti:
- Cesta:.. /studies/{study}/instance? SOPInstanceUID={instance}
- Metoda: GET
- Hlavičky:
- Přijmout: application/dicom+json
- Autorizace: Nosný {hodnota tokenu}
curl --request GET "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420/instances?SOPInstanceUID=1.2.826.0.1.3680043.8.498.47359123102728459884412887463296905395"
--header "Accept: application/dicom+json"
--header "Authorization: Bearer {token value}"
Hledání instancí ve studii a řadě
Tento požadavek umožňuje vyhledávat jednu nebo více instancí v rámci jedné studie a jedné řady podle atributů DICOM.
Další informace o podporovaných atributech DICOM naleznete v dicom Conformance – příkaz
Podrobnosti:
- Cesta:.. /studies/{study}/series/{series}/instance? SOPInstanceUID={instance}
- Metoda: GET
- Hlavičky:
- Přijmout: application/dicom+json
- Autorizace: Nosný {hodnota tokenu}
curl --request GET "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420/series/1.2.826.0.1.3680043.8.498.45787841905473114233124723359129632652/instances?SOPInstanceUID=1.2.826.0.1.3680043.8.498.47359123102728459884412887463296905395"
--header "Accept: application/dicom+json"
--header "Authorization: Bearer {token value}"
Odstranění DICOM
Odstranění konkrétní instance v rámci studie a řady
Tento požadavek odstraní jednu instanci v rámci jedné studie a jedné řady.
Odstranění není součástí standardu DICOM, ale přidává se pro usnadnění.
Podrobnosti:
- Cesta:.. /studies/{study}/series/{series}/instance/{instance}
- Metoda: DELETE
- Hlavičky:
- Autorizace: Nosný {hodnota tokenu}
curl --request DELETE "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420/series/1.2.826.0.1.3680043.8.498.45787841905473114233124723359129632652/instances/1.2.826.0.1.3680043.8.498.47359123102728459884412887463296905395"
--header "Authorization: Bearer {token value}"
Odstranění konkrétní řady v rámci studie
Tento požadavek odstraní jednu řadu (a všechny podřízené instance) v rámci jedné studie.
Odstranění není součástí standardu DICOM, ale přidává se pro usnadnění.
Podrobnosti:
- Cesta:.. /studies/{study}/series/{series}
- Metoda: DELETE
- Hlavičky:
- Autorizace: Nosný {hodnota tokenu}
curl --request DELETE "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498.13230779778012324449356534479549187420/series/1.2.826.0.1.3680043.8.498.45787841905473114233124723359129632652"
--header "Authorization: Bearer {token value}"
Odstranění konkrétní studie
Tento požadavek odstraní jednu studii (a všechny podřízené řady a instance).
Odstranění není součástí standardu DICOM, ale přidává se pro usnadnění.
Podrobnosti:
- Cesta:.. /studies/{study}
- Metoda: DELETE
- Hlavičky:
- Autorizace: Nosný {hodnota tokenu}
curl--request DELETE "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498
--header "Authorization: Bearer {token value}"
Poznámka:
DICOM® je registrovaná ochranná známka asociace National Electrical Manufacturers Association pro publikace standardů týkající se digitální komunikace s lékařskými informacemi.