Dela via


Använda DICOMweb Standard-API:er med cURL

Den här artikeln visar hur du arbetar med DICOMweb-tjänsten med hjälp av cURL och exempel .dcm DICOM-filer®.

Använd följande exempelfiler:

  • blue-circle.dcm
  • dicom-metadata.csv
  • green-square.dcm
  • red-triangle.dcm

Filnamn, studyUID, seriesUID och instanceUID för DICOM-exempelfilerna är:

Fil 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

Kommentar

Var och en av dessa filer representerar en enda instans och ingår i samma studie. Dessutom är den gröna kvadraten och den röda triangeln en del av samma serie, medan den blå cirkeln är i en separat serie.

Förutsättningar

Om du vill använda DICOM Standard API:er måste du ha en instans av DICOM-tjänsten distribuerad. Mer information finns i Distribuera DICOM-tjänsten med hjälp av Azure-portalen.

När du har distribuerat en instans av DICOM-tjänsten hämtar du URL:en för apptjänsten.

  1. Logga in på Azure-portalen.
  2. Sök efter senaste resurser och välj din DICOM-tjänstinstans.
  3. Kopiera tjänst-URL:en för dicom-tjänsten.
  4. Om du behöver en åtkomsttoken kan du läsa Hämta åtkomsttoken för DICOM-tjänsten.

För den här koden får vi åtkomst till en Azure-tjänst för offentlig förhandsversion. Det är viktigt att du inte laddar upp någon privat hälsoinformation (PHI).

Arbeta med DICOM-tjänsten

DICOMweb Standard använder multipart/related HTTP-begäranden i kombination med DICOM-specifika accepthuvuden. Utvecklare som är bekanta med andra REST-baserade API:er tycker ofta att det är besvärligt att arbeta med DICOMweb Standard. Men när du har fått igång den är den lätt att använda. Det krävs bara lite förtrogenhet för att komma igång.

CURL-kommandona innehåller minst en och ibland två variabler som måste ersättas. Om du vill förenkla körningen av kommandona söker du efter och ersätter följande variabler med dina specifika värden.

  • {Tjänst-URL} Tjänst-URL:en är URL:en för att komma åt din DICOM-tjänst som du etablerade i Azure-portalen, https://<workspacename-dicomservicename>.dicom.azurehealthcareapis.comtill exempel . Se till att ange versionen som en del av URL:en när du gör begäranden. Mer information finns i dokumentationen om API-versionshantering för DICOM-tjänsten.
  • {path-to-dicoms} – sökvägen till katalogen som innehåller red-triangle.dcm-filen, till exempel C:/dicom-server/docs/dcms
    • Se till att använda snedstreck som avgränsare och avsluta katalogen utan ett avslutande snedstreck.

Ladda upp DICOM-instanser (STOW)

Lagra instanser med flera delar/relaterade

Den här begäran avser att visa hur du laddar upp DICOM-filer med hjälp av flera delar/relaterade.

Kommentar

DICOM-tjänsten är mer överseende än DICOM-standarden. Exemplet visar dock en POST-begäran som uppfyller standarden.

Detaljer:

  • Stig:.. /studier
  • Metod: POST
  • Headers:
    • Acceptera: application/dicom+json
    • Innehållstyp: flera delar/relaterade; type="application/dicom"
    • Auktorisering: Bearer {token value}
  • Kropp:
    • Innehållstyp: program/dicom för varje fil som laddas upp, avgränsad med ett gränsvärde

Vissa programmeringsspråk och verktyg fungerar annorlunda. Vissa kräver till exempel att du definierar din egen gräns. För dessa verktyg kan du behöva använda en något ändrad rubrik för innehållstyp. Följande verktyg kan användas.

  • Innehållstyp: flera delar/relaterade; type="application/dicom"; boundary=ABCD1234
  • Innehållstyp: flera delar/relaterade; boundary=ABCD1234
  • Innehållstyp: flera delar/relaterade
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"

Lagra instanser för en specifik studie

Den här begäran visar hur du laddar upp DICOM-filer med hjälp av flera delar/relaterade till en utsedd studie.

Detaljer:

  • Stig:.. /studies/{study}
  • Metod: POST
  • Headers:
    • Acceptera: application/dicom+json
    • Innehållstyp: flera delar/relaterade; type="application/dicom"
    • Auktorisering: Bearer {token value}
  • Kropp:
    • Innehållstyp: program/dicom för varje fil som laddas upp, avgränsad med ett gränsvärde

Vissa programmeringsspråk och verktyg fungerar annorlunda. Vissa kräver till exempel att du definierar din egen gräns. För dessa språk och verktyg kan du behöva använda en något ändrad rubrik för innehållstyp. Följande verktyg kan användas.

  • Innehållstyp: flera delar/relaterade; type="application/dicom"; boundary=ABCD1234
  • Innehållstyp: flera delar/relaterade; boundary=ABCD1234
  • Innehållstyp: flera delar/relaterade
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

Kommentar

Det här är ett icke-standard-API som tillåter uppladdning av en enda DICOM-fil utan att behöva konfigurera POST för flera delar/relaterade. Även om cURL hanterar flera delar/relaterade brunnar tillåter det här API:et verktyg som Postman att ladda upp filer till DICOM-tjänsten.

Följande metod krävs för att ladda upp en enda DICOM-fil.

Detaljer:

  • Stig:.. /studier
  • Metod: POST
  • Headers:
    • Acceptera: application/dicom+json
    • Innehållstyp: program/dicom
    • Auktorisering: Bearer {token value}
  • Kropp:
    • Innehåller en enda DICOM-fil som binära byte.
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-instanser med flera delar/relaterade

Kommentar

Det här är ett icke-standard-API som tillåter att DICOM-filer uppdateras med hjälp av flera delar/relaterade.

Detaljer:

  • Stig:.. /studier
  • Metod: PUT
  • Headers:
    • Acceptera: application/dicom+json
    • Innehållstyp: flera delar/relaterade; type="application/dicom"
    • Auktorisering: Bearer {token value}
  • Kropp:
    • Innehållstyp: program/dicom för varje fil som laddas upp, avgränsad med ett gränsvärde

Vissa programmeringsspråk och verktyg fungerar annorlunda. Vissa kräver till exempel att du definierar din egen gräns. För dessa verktyg kan du behöva använda en något ändrad rubrik för innehållstyp. Följande verktyg kan användas.

  • Innehållstyp: flera delar/relaterade; type="application/dicom"; boundary=ABCD1234
  • Innehållstyp: flera delar/relaterade; boundary=ABCD1234
  • Innehållstyp: flera delar/relaterade
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"

Upsert-instanser för en specifik studie

Kommentar

Det här är ett icke-standard-API som tillåter upsert av DICOM-filer med hjälp av flera delar/relaterade till en utsedd studie.

Detaljer:

  • Stig:.. /studies/{study}
  • Metod: PUT
  • Headers:
    • Acceptera: application/dicom+json
    • Innehållstyp: flera delar/relaterade; type="application/dicom"
    • Auktorisering: Bearer {token value}
  • Kropp:
    • Innehållstyp: program/dicom för varje fil som laddas upp, avgränsad med ett gränsvärde

Vissa programmeringsspråk och verktyg fungerar annorlunda. Vissa kräver till exempel att du definierar din egen gräns. För dessa språk och verktyg kan du behöva använda en något ändrad rubrik för innehållstyp. Följande verktyg kan användas.

  • Innehållstyp: flera delar/relaterade; type="application/dicom"; boundary=ABCD1234
  • Innehållstyp: flera delar/relaterade; boundary=ABCD1234
  • Innehållstyp: flera delar/relaterade
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 enskild instans

Kommentar

Det här är ett icke-standard-API som tillåter upsert för en enda DICOM-fil.

Använd den här metoden för att ladda upp en enda DICOM-fil.

Detaljer:

  • Stig:.. /studier
  • Metod: PUT
  • Headers:
    • Acceptera: application/dicom+json
    • Innehållstyp: program/dicom
    • Auktorisering: Bearer {token value}
  • Kropp:
    • Innehåller en enda DICOM-fil som binära byte.
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"

Hämta DICOM (WADO)

Hämta alla instanser i en studie

Den här begäran hämtar alla instanser i en enda studie och returnerar dem som en samling med multipart/relaterade byte.

Detaljer:

  • Stig:.. /studies/{study}
  • Metod: GET
  • Headers:
    • Acceptera: flera delar/relaterade; type="application/dicom"; transfer-syntax=*
    • Auktorisering: Bearer {token value}
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"

Det här cURL-kommandot visar de nedladdade byteen i utdatafilen (suppressWarnings.txt), men de är inte direkta DICOM-filer, utan bara en textrepresentation av den flerdelade/relaterade nedladdningen.

Hämta metadata för alla instanser i studien

Den här begäran hämtar metadata för alla instanser i en enda studie.

Detaljer:

  • Stig:.. /studies/{study}/metadata
  • Metod: GET
  • Headers:
    • Acceptera: application/dicom+json
    • Auktorisering: Bearer {token value}

Det här cURL-kommandot visar de nedladdade byteen i utdatafilen (suppressWarnings.txt), men de är inte direkta DICOM-filer, utan bara en textrepresentation av den flerdelade/relaterade nedladdningen.

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}"

Hämta alla instanser i en serie

Den här begäran hämtar alla instanser i en enda serie och returnerar dem som en samling med fleraparts-/relaterade byte.

Detaljer:

  • Stig:.. /studies/{study}/series/{series}
  • Metod: GET
  • Headers:
    • Acceptera: flera delar/relaterade; type="application/dicom"; transfer-syntax=*
    • Auktorisering: Bearer {token value}

Det här cURL-kommandot visar de nedladdade byteen i utdatafilen (suppressWarnings.txt), men det är inte DICOM-filen, utan bara en textrepresentation av den multipart-/relaterade nedladdningen.

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"

Hämta metadata för alla instanser i en serie

Den här begäran hämtar metadata för alla instanser i en enda studie.

Detaljer:

  • Stig:.. /studies/{study}/series/{series}/metadata
  • Metod: GET
  • Headers:
    • Acceptera: application/dicom+json
    • Auktorisering: Bearer {token value}
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}"

Hämta en enskild instans i en serie av en studie

Den här begäran hämtar en enskild instans och returnerar den som en DICOM-formaterad ström med byte.

Detaljer:

  • Stig:.. /studies/{study}/series{series}/instances/{instance}
  • Metod: GET
  • Headers:
    • Acceptera: program/dicom; transfer-syntax=*
    • Auktorisering: Bearer {token value}
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"

Hämta metadata för en enskild instans i en serie av en studie

Den här begäran hämtar metadata för en enskild instans i en enda studie och serie.

Detaljer:

  • Stig:.. /studies/{study}/series/{series}/instances/{instance}/metadata
  • Metod: GET
  • Headers:
    • Acceptera: application/dicom+json
    • Auktorisering: Bearer {token value}
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}"

Hämta en eller flera bildrutor från en enda instans

Den här begäran hämtar en eller flera bildrutor från en enda instans och returnerar dem som en samling med fleraparts-/relaterade byte. Flera bildrutor kan hämtas genom att skicka en kommaavgränsad lista med ramnummer. Alla DICOM-instanser med bilder har minst en bildruta, vilket ofta bara är den bild som är associerad med själva instansen.

Detaljer:

  • Stig:.. /studies/{study}/series{series}/instances/{instance}/frames/1,2,3
  • Metod: GET
  • Headers:
    • Acceptera: flera delar/relaterade; type="application/octet-stream"; transfer-syntax=1.2.840.10008.1.2.1 (standard) eller
    • Acceptera: flera delar/relaterade; type="application/octet-stream"; transfer-syntax=* eller
    • Acceptera: flera delar/relaterade; type="application/octet-stream";
    • Auktorisering: Bearer {token value}
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"

Fråga DICOM (QIDO)

I följande exempel söker vi efter objekt med hjälp av deras unika identifierare. Du kan också söka efter andra attribut, till exempel PatientName.

Sök efter studier

Den här begäran möjliggör sökningar efter en eller flera studier med DICOM-attribut.

Mer information om dicom-attribut som stöds finns i DICOM-kompatibilitetsuttryck.

Detaljer:

  • Stig:.. /studier? StudyInstanceUID={study}
  • Metod: GET
  • Headers:
    • Acceptera: application/dicom+json
    • Auktorisering: Bearer {token value}
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}"

Sök efter serier

Den här begäran aktiverar sökningar efter en eller flera serier med DICOM-attribut.

Mer information om dicom-attribut som stöds finns i DICOM-kompatibilitetsuttryck.

Detaljer:

  • Stig:.. /serie? SeriesInstanceUID={series}
  • Metod: GET
  • Headers:
    • Acceptera: application/dicom+json
    • Auktorisering: Bearer {token value}
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}"

Söka efter serier i en studie

Med den här begäran kan du söka efter en eller flera serier i en enda studie med DICOM-attribut.

Mer information om dicom-attribut som stöds finns i DICOM-kompatibilitetsuttryck.

Detaljer:

  • Stig:.. /studies/{study}/series? SeriesInstanceUID={series}
  • Metod: GET
  • Headers:
    • Acceptera: application/dicom+json
    • Auktorisering: Bearer {token value}
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}"

Sök efter instanser

Med den här begäran kan du söka efter en eller flera instanser med DICOM-attribut.

Mer information om dicom-attribut som stöds finns i DICOM-kompatibilitetsuttryck.

Detaljer:

  • Stig:.. /Instanser? SOPInstanceUID={instance}
  • Metod: GET
  • Headers:
    • Acceptera: application/dicom+json
    • Auktorisering: Bearer {token value}
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}"

Sök efter instanser i en studie

Med den här begäran kan du söka efter en eller flera instanser i en enda studie med DICOM-attribut.

Mer information om dicom-attribut som stöds finns i DICOM-kompatibilitetsuttryck.

Detaljer:

  • Stig:.. /studies/{study}/instances? SOPInstanceUID={instance}
  • Metod: GET
  • Headers:
    • Acceptera: application/dicom+json
    • Auktorisering: Bearer {token value}
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}"

Sök efter instanser i en studie och serie

Den här begäran gör det möjligt att söka efter en eller flera instanser i en enda studie och en enda serie med DICOM-attribut.

Mer information om dicom-attribut som stöds finns i DICOM-kompatibilitetsuttryck

Detaljer:

  • Stig:.. /studies/{study}/series/{series}/instances? SOPInstanceUID={instance}
  • Metod: GET
  • Headers:
    • Acceptera: application/dicom+json
    • Auktorisering: Bearer {token value}
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}"

Ta bort DICOM

Ta bort en specifik instans i en studie och serie

Den här begäran tar bort en enskild instans i en enda studie och en enda serie.

Borttagning är inte en del av DICOM-standarden, men läggs till för enkelhetens skull.

Detaljer:

  • Stig:.. /studies/{study}/series/{series}/instances/{instance}
  • Metod: TA BORT
  • Headers:
    • Auktorisering: Bearer {token value}
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}"

Ta bort en specifik serie i en studie

Den här begäran tar bort en enskild serie (och alla underordnade instanser) i en enda studie.

Borttagning är inte en del av DICOM-standarden, men läggs till för enkelhetens skull.

Detaljer:

  • Stig:.. /studies/{study}/series/{series}
  • Metod: TA BORT
  • Headers:
    • Auktorisering: Bearer {token value}
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}"

Ta bort en specifik studie

Den här begäran tar bort en enskild studie (och alla underordnade serier och instanser).

Borttagning är inte en del av DICOM-standarden, men läggs till för enkelhetens skull.

Detaljer:

  • Stig:.. /studies/{study}
  • Metod: TA BORT
  • Headers:
    • Auktorisering: Bearer {token value}
curl--request DELETE "{Service URL}/v{version}/studies/1.2.826.0.1.3680043.8.498
--header "Authorization: Bearer {token value}"

Kommentar

DICOM® är ett registrerat varumärke som tillhör National Electrical Manufacturers Association för dess standarder publikationer som rör digital kommunikation av medicinsk information.