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.
- Logga in på Azure-portalen.
- Sök efter senaste resurser och välj din DICOM-tjänstinstans.
- Kopiera tjänst-URL:en för dicom-tjänsten.
- 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.com
till 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.