取得影像集中繼資料 - AWS HealthImaging

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

取得影像集中繼資料

使用 GetImageSetMetadata動作來擷取 HealthImaging 中指定影像集中繼資料。下列功能表提供 AWS CLI AWS SDKs AWS 管理主控台 的 和 程式碼範例程序。如需詳細資訊,請參閱《AWS HealthImaging API 參考GetImageSetMetadata》中的 。

注意

根據預設,HealthImaging 會傳回映像集最新版本的中繼資料屬性。若要檢視舊版映像集的中繼資料,請將您的請求versionId提供給 。

影像集中繼資料會以 壓縮,gzip並以 JSON 物件的形式傳回。因此,您必須先解壓縮 JSON 物件,才能檢視標準化中繼資料。如需詳細資訊,請參閱中繼資料標準化

使用 GetDICOMInstanceMetadata HealthImaging 的 DICOMweb 服務表示法,傳回 DICOM 執行個體中繼資料 (.json 檔案)。如需詳細資訊,請參閱從 HealthImaging 取得 DICOM 執行個體中繼資料

若要取得影像集中繼資料

根據您對 AWS HealthImaging 的存取偏好設定,選擇選單。

  1. 開啟 HealthImaging 主控台資料存放區頁面

  2. 選擇資料存放區。

    資料存放區詳細資訊頁面隨即開啟,影像索引標籤預設為選取。

  3. 選擇影像集。

    影像集詳細資訊頁面隨即開啟,影像集中繼資料會顯示在影像集中繼資料檢視器區段下方。

C++
適用於 C++ 的 SDK

取得影像集中繼資料的公用程式函數。

//! Routine which gets a HealthImaging image set's metadata. /*! \param dataStoreID: The HealthImaging data store ID. \param imageSetID: The HealthImaging image set ID. \param versionID: The HealthImaging image set version ID, ignored if empty. \param outputFilePath: The path where the metadata will be stored as gzipped json. \param clientConfig: Aws client configuration. \\return bool: Function succeeded. */ bool AwsDoc::Medical_Imaging::getImageSetMetadata(const Aws::String &dataStoreID, const Aws::String &imageSetID, const Aws::String &versionID, const Aws::String &outputFilePath, const Aws::Client::ClientConfiguration &clientConfig) { Aws::MedicalImaging::Model::GetImageSetMetadataRequest request; request.SetDatastoreId(dataStoreID); request.SetImageSetId(imageSetID); if (!versionID.empty()) { request.SetVersionId(versionID); } Aws::MedicalImaging::MedicalImagingClient client(clientConfig); Aws::MedicalImaging::Model::GetImageSetMetadataOutcome outcome = client.GetImageSetMetadata( request); if (outcome.IsSuccess()) { std::ofstream file(outputFilePath, std::ios::binary); auto &metadata = outcome.GetResult().GetImageSetMetadataBlob(); file << metadata.rdbuf(); } else { std::cerr << "Failed to get image set metadata: " << outcome.GetError().GetMessage() << std::endl; } return outcome.IsSuccess(); }

取得不含版本的影像集中繼資料。

if (AwsDoc::Medical_Imaging::getImageSetMetadata(dataStoreID, imageSetID, "", outputFilePath, clientConfig)) { std::cout << "Successfully retrieved image set metadata." << std::endl; std::cout << "Metadata stored in: " << outputFilePath << std::endl; }

取得含版本的影像集中繼資料。

if (AwsDoc::Medical_Imaging::getImageSetMetadata(dataStoreID, imageSetID, versionID, outputFilePath, clientConfig)) { std::cout << "Successfully retrieved image set metadata." << std::endl; std::cout << "Metadata stored in: " << outputFilePath << std::endl; }
  • 如需 API 詳細資訊,請參閱《適用於 C++ 的 AWS SDK API 參考》中的 GetImageSetMetadata

注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

CLI
AWS CLI

範例 1:取得不含版本的影像集中繼資料

下列 get-image-set-metadata 程式碼範例會取得影像集的中繼資料,而不指定版本。

注意:outfile 為必要參數

aws medical-imaging get-image-set-metadata \ --datastore-id 12345678901234567890123456789012 \ --image-set-id ea92b0d8838c72a3f25d00d13616f87e \ studymetadata.json.gz

傳回的中繼資料會以 gzip 壓縮,並存放在 studymetadata.json.gz 檔案中。若要檢視傳回 JSON 物件的內容,您必須先解壓縮它。

輸出:

{ "contentType": "application/json", "contentEncoding": "gzip" }

範例 2:使用版本取得影像集中繼資料

下列 get-image-set-metadata 程式碼範例會取得具有指定版本之影像集的中繼資料。

注意:outfile 為必要參數

aws medical-imaging get-image-set-metadata \ --datastore-id 12345678901234567890123456789012 \ --image-set-id ea92b0d8838c72a3f25d00d13616f87e \ --version-id 1 \ studymetadata.json.gz

傳回的中繼資料會以 gzip 壓縮,並存放在 studymetadata.json.gz 檔案中。若要檢視傳回 JSON 物件的內容,您必須先解壓縮它。

輸出:

{ "contentType": "application/json", "contentEncoding": "gzip" }

如需詳細資訊,請參閱《AWS HealthImaging 開發人員指南》中的取得影像集中繼資料

Java
適用於 Java 2.x 的 SDK
public static void getMedicalImageSetMetadata(MedicalImagingClient medicalImagingClient, String destinationPath, String datastoreId, String imagesetId, String versionId) { try { GetImageSetMetadataRequest.Builder getImageSetMetadataRequestBuilder = GetImageSetMetadataRequest.builder() .datastoreId(datastoreId) .imageSetId(imagesetId); if (versionId != null) { getImageSetMetadataRequestBuilder = getImageSetMetadataRequestBuilder.versionId(versionId); } medicalImagingClient.getImageSetMetadata(getImageSetMetadataRequestBuilder.build(), FileSystems.getDefault().getPath(destinationPath)); System.out.println("Metadata downloaded to " + destinationPath); } catch (MedicalImagingException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
  • 如需 API 詳細資訊,請參閱《AWS SDK for Java 2.x API 參考》中的 GetImageSetMetadata

注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

JavaScript
適用於 JavaScript (v3) 的 SDK

取得影像集中繼資料的公用程式函數。

import { GetImageSetMetadataCommand } from "@aws-sdk/client-medical-imaging"; import { medicalImagingClient } from "../libs/medicalImagingClient.js"; import { writeFileSync } from "node:fs"; /** * @param {string} metadataFileName - The name of the file for the gzipped metadata. * @param {string} datastoreId - The ID of the data store. * @param {string} imagesetId - The ID of the image set. * @param {string} versionID - The optional version ID of the image set. */ export const getImageSetMetadata = async ( metadataFileName = "metadata.json.gzip", datastoreId = "xxxxxxxxxxxxxx", imagesetId = "xxxxxxxxxxxxxx", versionID = "", ) => { const params = { datastoreId: datastoreId, imageSetId: imagesetId }; if (versionID) { params.versionID = versionID; } const response = await medicalImagingClient.send( new GetImageSetMetadataCommand(params), ); const buffer = await response.imageSetMetadataBlob.transformToByteArray(); writeFileSync(metadataFileName, buffer); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '5219b274-30ff-4986-8cab-48753de3a599', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // contentType: 'application/json', // contentEncoding: 'gzip', // imageSetMetadataBlob: <ref *1> IncomingMessage {} // } return response; };

取得不含版本的影像集中繼資料。

try { await getImageSetMetadata( "metadata.json.gzip", "12345678901234567890123456789012", "12345678901234567890123456789012", ); } catch (err) { console.log("Error", err); }

取得含版本的影像集中繼資料。

try { await getImageSetMetadata( "metadata2.json.gzip", "12345678901234567890123456789012", "12345678901234567890123456789012", "1", ); } catch (err) { console.log("Error", err); }
  • 如需 API 詳細資訊,請參閱《適用於 JavaScript 的 AWS SDK API 參考》中的 GetImageSetMetadata

注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

Python
適用於 Python 的 SDK (Boto3)

取得影像集中繼資料的公用程式函數。

class MedicalImagingWrapper: def __init__(self, health_imaging_client): self.health_imaging_client = health_imaging_client def get_image_set_metadata( self, metadata_file, datastore_id, image_set_id, version_id=None ): """ Get the metadata of an image set. :param metadata_file: The file to store the JSON gzipped metadata. :param datastore_id: The ID of the data store. :param image_set_id: The ID of the image set. :param version_id: The version of the image set. """ try: if version_id: image_set_metadata = self.health_imaging_client.get_image_set_metadata( imageSetId=image_set_id, datastoreId=datastore_id, versionId=version_id, ) else: image_set_metadata = self.health_imaging_client.get_image_set_metadata( imageSetId=image_set_id, datastoreId=datastore_id ) print(image_set_metadata) with open(metadata_file, "wb") as f: for chunk in image_set_metadata["imageSetMetadataBlob"].iter_chunks(): if chunk: f.write(chunk) except ClientError as err: logger.error( "Couldn't get image metadata. Here's why: %s: %s", err.response["Error"]["Code"], err.response["Error"]["Message"], ) raise

取得不含版本的影像集中繼資料。

image_set_metadata = self.health_imaging_client.get_image_set_metadata( imageSetId=image_set_id, datastoreId=datastore_id )

取得含版本的影像集中繼資料。

image_set_metadata = self.health_imaging_client.get_image_set_metadata( imageSetId=image_set_id, datastoreId=datastore_id, versionId=version_id, )

下列程式碼會執行個體化 MedicalImagingWrapper 物件。

client = boto3.client("medical-imaging") medical_imaging_wrapper = MedicalImagingWrapper(client)
  • 如需 API 詳細資訊,請參閱《AWS SDK for Python (Boto3) API 參考》中的 GetImageSetMetadata

注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

可用性範例

找不到所需的內容嗎? 使用此頁面右側的提供意見回饋連結來請求程式碼範例。

傳輸語法中繼資料

匯入 DICOM 資料時,HealthImaging 會將傳輸語法屬性的原始值保留在影像集中繼資料中。匯入的原始 DICOM 資料的傳輸語法會儲存為 TransferSyntaxUID。HealthImaging 使用 StoredTransferSyntaxUID表示用於編碼資料存放區中影像影格資料的格式:1.2.840.10008.1.2.4.202適用於啟用 HTJ2K 的資料存放區 (預設),1.2.840.10008.1.2.4.90以及適用於啟用 JPEG 2000 無失真資料存放區的格式。