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 služby App Service.

  1. Přihlaste se k portálu Azure.
  2. Vyhledejte nedávné prostředky a vyberte instanci služby DICOM.
  3. Zkopírujte adresu URL služby služby DICOM.
  4. 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é jejich nahrazením 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.comna 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
    • Nezapomeňte použít lomítka jako oddělovače a ukončit adresář 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:

  • Cestu:.. /Studie
  • Metoda: POST
  • Záhlaví:
    • 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. Tyto 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:

  • Cestu:.. /studies/{study}
  • Metoda: POST
  • Záhlaví:
    • 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. Tyto 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:

  • Cestu:.. /Studie
  • Metoda: POST
  • Záhlaví:
    • 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:

  • Cestu:.. /Studie
  • Metoda: PUT
  • Záhlaví:
    • 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. Tyto 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:

  • Cestu:.. /studies/{study}
  • Metoda: PUT
  • Záhlaví:
    • 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. Tyto 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:

  • Cestu:.. /Studie
  • Metoda: PUT
  • Záhlaví:
    • 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:

  • Cestu:.. /studies/{study}
  • Metoda: GET
  • Záhlaví:
    • 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:

  • Cestu:.. /studies/{study}/metadata
  • Metoda: GET
  • Záhlaví:
    • 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:

  • Cestu:.. /studies/{study}/series/{series}
  • Metoda: GET
  • Záhlaví:
    • 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:

  • Cestu:.. /studies/{study}/series/{series}/metadata
  • Metoda: GET
  • Záhlaví:
    • 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:

  • Cestu:.. /studies/{study}/series{series}/instance/{instance}
  • Metoda: GET
  • Záhlaví:
    • 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:

  • Cestu:.. /studies/{study}/series/{series}/instance/{instance}/metadata
  • Metoda: GET
  • Záhlaví:
    • 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 jen obrázek přidružený k samotné instanci.

Podrobnosti:

  • Cestu:.. /studies/{study}/series{series}/instance/{instance}/frames/1,2,3
  • Metoda: GET
  • Záhlaví:
    • 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:

  • Cestu:.. /Studie? StudyInstanceUID={study}
  • Metoda: GET
  • Záhlaví:
    • 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:

  • Cestu:.. /Série? SeriesInstanceUID={series}
  • Metoda: GET
  • Záhlaví:
    • 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:

  • Cestu:.. /studies/{study}/series? SeriesInstanceUID={series}
  • Metoda: GET
  • Záhlaví:
    • 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:

  • Cestu:.. /Instance? SOPInstanceUID={instance}
  • Metoda: GET
  • Záhlaví:
    • 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:

  • Cestu:.. /studies/{study}/instance? SOPInstanceUID={instance}
  • Metoda: GET
  • Záhlaví:
    • 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:

  • Cestu:.. /studies/{study}/series/{series}/instance? SOPInstanceUID={instance}
  • Metoda: GET
  • Záhlaví:
    • 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:

  • Cestu:.. /studies/{study}/series/{series}/instance/{instance}
  • Metoda: DELETE
  • Záhlaví:
    • 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:

  • Cestu:.. /studies/{study}/series/{series}
  • Metoda: DELETE
  • Záhlaví:
    • 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:

  • Cestu:.. /studies/{study}
  • Metoda: DELETE
  • Záhlaví:
    • 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.