기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
이미지 세트 복사
CopyImageSet
작업을 사용하여에서 이미지 세트를 복사합니다 HealthImaging. 사용자는 이 비동기 프로세스를 사용하여 이미지 세트의 내용을 새 이미지 세트 또는 기존 이미지 세트로 복사합니다. 새 이미지 세트에 복사하여 이미지 세트를 분할하고 별도의 복사본을 생성할 수 있습니다. 기존 이미지 세트에 복사하여 두 이미지 세트를 병합할 수도 있습니다. 자세한 내용은 AWS HealthImaging API 참조의 CopyImageSet
섹션을 참조하세요.
참고
CopyImageSet
작업을 사용할 때는 다음 사항에 유의하세요.
-
CopyImageSet
작업은 새 이미지 세트 또는 새 버전의를 생성합니다destinationImageSet
. 자세한 내용은 이미지 세트 버전 목록 단원을 참조하십시오. -
복사는 비동기 프로세스입니다. 따라서 상태(
imageSetState
) 및 상태(imageSetWorkflowStatus
) 응답 요소를 사용하여 잠긴 이미지 세트에서 어떤 작업이 발생하고 있는지 알 수 있습니다. 잠긴 이미지 세트에서는 다른 쓰기 작업을 수행할 수 없습니다. -
CopyImageSet
에서는 이미지 세트 내에서 SOP 인스턴스가 고유UIDs해야 합니다. -
를 사용하여 SOP 인스턴스의 하위 집합을 복사할 수 있습니다
copiableAttributes
. 이렇게 하면에서 하나 이상의 SOP 인스턴스를 선택하여sourceImageSet
에 복사할 수 있습니다destinationImageSet
. -
CopyImageSet
작업이 성공하지 못하면를 호출GetImageSet
하고message
속성을 검토합니다. 자세한 내용은 이미지 세트 속성 가져오기 단원을 참조하십시오. -
실제 DICOM 가져오기로 인해 DICOM 시리즈당 여러 이미지 세트가 생성될 수 있습니다. 선택적
force
파라미터가 제공되지 않는 한CopyImageSet
작업을destinationImageSet
수행하려면sourceImageSet
및에 일관된 메타데이터가 있어야 합니다. -
sourceImageSet
와 사이에 일관성 없는 메타데이터 요소가 있더라도 작업을 강제로 수행하도록force
파라미터를 설정합니다destinationImageSet
. 이러한 경우 환자, 연구 및 시리즈 메타데이터는에서 변경되지 않습니다destinationImageSet
.
이미지 세트를 복사하려면
에 대한 액세스 기본 설정에 따라 탭을 선택합니다AWS HealthImaging.
- CLI
-
- AWS CLI
-
예제 1: 대상 없이 이미지 세트 복사
다음
copy-image-set
예제에서는 대상 없이 이미지 세트의 복사본을 만듭니다.aws medical-imaging copy-image-set \ --datastore-id
12345678901234567890123456789012
\ --source-image-set-idea92b0d8838c72a3f25d00d13616f87e
\ --copy-image-set-information '{"sourceImageSet": {"latestVersionId": "1" } }
'출력:
{ "destinationImageSetProperties": { "latestVersionId": "2", "imageSetWorkflowStatus": "COPYING", "updatedAt": 1680042357.432, "imageSetId": "b9a06fef182a5f992842f77f8e0868e5", "imageSetState": "LOCKED", "createdAt": 1680042357.432 }, "sourceImageSetProperties": { "latestVersionId": "1", "imageSetWorkflowStatus": "COPYING_WITH_READ_ONLY_ACCESS", "updatedAt": 1680042357.432, "imageSetId": "ea92b0d8838c72a3f25d00d13616f87e", "imageSetState": "LOCKED", "createdAt": 1680027126.436 }, "datastoreId": "12345678901234567890123456789012" }
예제 2: 대상과 함께 이미지 세트 복사
다음
copy-image-set
예제에서는 대상을 사용하여 이미지 세트의 복사본을 만듭니다.aws medical-imaging copy-image-set \ --datastore-id
12345678901234567890123456789012
\ --source-image-set-idea92b0d8838c72a3f25d00d13616f87e
\ --copy-image-set-information '{"sourceImageSet": {"latestVersionId": "1" }, "destinationImageSet": { "imageSetId": "b9a06fef182a5f992842f77f8e0868e5", "latestVersionId": "1"} }
'출력:
{ "destinationImageSetProperties": { "latestVersionId": "2", "imageSetWorkflowStatus": "COPYING", "updatedAt": 1680042505.135, "imageSetId": "b9a06fef182a5f992842f77f8e0868e5", "imageSetState": "LOCKED", "createdAt": 1680042357.432 }, "sourceImageSetProperties": { "latestVersionId": "1", "imageSetWorkflowStatus": "COPYING_WITH_READ_ONLY_ACCESS", "updatedAt": 1680042505.135, "imageSetId": "ea92b0d8838c72a3f25d00d13616f87e", "imageSetState": "LOCKED", "createdAt": 1680027126.436 }, "datastoreId": "12345678901234567890123456789012" }
예제 3: 소스 이미지 세트의 인스턴스 하위 집합을 대상 이미지 세트로 복사합니다.
다음
copy-image-set
예제에서는 소스 이미지 세트에서 대상 이미지 세트로 DICOM 인스턴스 하나를 복사합니다. 환자, 연구 및 시리즈 수준 속성의 불일치를 재정의하기 위해 힘 파라미터가 제공됩니다.aws medical-imaging copy-image-set \ --datastore-id
12345678901234567890123456789012
\ --source-image-set-idea92b0d8838c72a3f25d00d13616f87e
\ --copy-image-set-information '{"sourceImageSet": {"latestVersionId": "1","DICOMCopies": {"copiableAttributes": "{\"SchemaVersion\":\"1.1\",\"Study\":{\"Series\":{\"1.3.6.1.4.1.5962.99.1.3673257865.2104868982.1369432891697.3666.0\":{\"Instances\":{\"1.3.6.1.4.1.5962.99.1.3673257865.2104868982.1369432891697.3669.0\":{}}}}}}"}},"destinationImageSet": {"imageSetId": "b9eb50d8ee682eb9fcf4acbf92f62bb7","latestVersionId": "1"}}
' \ --force출력:
{ "destinationImageSetProperties": { "latestVersionId": "2", "imageSetWorkflowStatus": "COPYING", "updatedAt": 1680042505.135, "imageSetId": "b9eb50d8ee682eb9fcf4acbf92f62bb7", "imageSetState": "LOCKED", "createdAt": 1680042357.432 }, "sourceImageSetProperties": { "latestVersionId": "1", "imageSetWorkflowStatus": "COPYING_WITH_READ_ONLY_ACCESS", "updatedAt": 1680042505.135, "imageSetId": "ea92b0d8838c72a3f25d00d13616f87e", "imageSetState": "LOCKED", "createdAt": 1680027126.436 }, "datastoreId": "12345678901234567890123456789012" }
자세한 내용은 AWS HealthImaging 개발자 안내서의 이미지 세트 복사를 참조하세요.
-
자세한 API 내용은 AWS CLI 명령 참조CopyImageSet
의 섹션을 참조하세요.
-
- Java
-
- SDK Java 2.x용
-
/** * Copy an AWS HealthImaging image set. * * @param medicalImagingClient - The AWS HealthImaging client object. * @param datastoreId - The datastore ID. * @param imageSetId - The image set ID. * @param latestVersionId - The version ID. * @param destinationImageSetId - The optional destination image set ID, ignored if null. * @param destinationVersionId - The optional destination version ID, ignored if null. * @param force - The force flag. * @param subsets - The optional subsets to copy, ignored if null. * @return - The image set ID of the copy. * @throws MedicalImagingException - Base exception for all service exceptions thrown by AWS HealthImaging. */ public static String copyMedicalImageSet(MedicalImagingClient medicalImagingClient, String datastoreId, String imageSetId, String latestVersionId, String destinationImageSetId, String destinationVersionId, boolean force, Vector<String> subsets) { try { CopySourceImageSetInformation.Builder copySourceImageSetInformation = CopySourceImageSetInformation.builder() .latestVersionId(latestVersionId); // Optionally copy a subset of image instances. if (subsets != null) { String subsetInstanceToCopy = getCopiableAttributesJSON(imageSetId, subsets); copySourceImageSetInformation.dicomCopies(MetadataCopies.builder() .copiableAttributes(subsetInstanceToCopy) .build()); } CopyImageSetInformation.Builder copyImageSetBuilder = CopyImageSetInformation.builder() .sourceImageSet(copySourceImageSetInformation.build()); // Optionally designate a destination image set. if (destinationImageSetId != null) { copyImageSetBuilder = copyImageSetBuilder.destinationImageSet(CopyDestinationImageSet.builder() .imageSetId(destinationImageSetId) .latestVersionId(destinationVersionId) .build()); } CopyImageSetRequest copyImageSetRequest = CopyImageSetRequest.builder() .datastoreId(datastoreId) .sourceImageSetId(imageSetId) .copyImageSetInformation(copyImageSetBuilder.build()) .force(force) .build(); CopyImageSetResponse response = medicalImagingClient.copyImageSet(copyImageSetRequest); return response.destinationImageSetProperties().imageSetId(); } catch (MedicalImagingException e) { System.err.println(e.awsErrorDetails().errorMessage()); throw e; } }
복사 가능한 속성을 생성하는 유틸리티 함수입니다.
/** * Create a JSON string of copiable image instances. * * @param imageSetId - The image set ID. * @param subsets - The subsets to copy. * @return A JSON string of copiable image instances. */ private static String getCopiableAttributesJSON(String imageSetId, Vector<String> subsets) { StringBuilder subsetInstanceToCopy = new StringBuilder( """ { "SchemaVersion": 1.1, "Study": { "Series": { " """ ); subsetInstanceToCopy.append(imageSetId); subsetInstanceToCopy.append( """ ": { "Instances": { """ ); for (String subset : subsets) { subsetInstanceToCopy.append('"' + subset + "\": {},"); } subsetInstanceToCopy.deleteCharAt(subsetInstanceToCopy.length() - 1); subsetInstanceToCopy.append(""" } } } } } """); return subsetInstanceToCopy.toString(); }
-
자세한 API 내용은 AWS SDK for Java 2.x API 참조CopyImageSet의 섹션을 참조하세요.
참고
더 많은 기능이 있습니다 GitHub. AWS 코드 예시 리포지토리
에서 전체 예시를 찾고 설정 및 실행하는 방법을 배워보세요. -
- JavaScript
-
- SDK for JavaScript (v3)
-
이미지 세트를 복사하는 유틸리티 함수입니다.
import { CopyImageSetCommand } from "@aws-sdk/client-medical-imaging"; import { medicalImagingClient } from "../libs/medicalImagingClient.js"; /** * @param {string} datastoreId - The ID of the data store. * @param {string} imageSetId - The source image set ID. * @param {string} sourceVersionId - The source version ID. * @param {string} destinationImageSetId - The optional ID of the destination image set. * @param {string} destinationVersionId - The optional version ID of the destination image set. * @param {boolean} force - Force the copy action. * @param {[string]} copySubsets - A subset of instance IDs to copy. */ export const copyImageSet = async ( datastoreId = "xxxxxxxxxxx", imageSetId = "xxxxxxxxxxxx", sourceVersionId = "1", destinationImageSetId = "", destinationVersionId = "", force = false, copySubsets = [], ) => { try { const params = { datastoreId: datastoreId, sourceImageSetId: imageSetId, copyImageSetInformation: { sourceImageSet: { latestVersionId: sourceVersionId }, }, force: force, }; if (destinationImageSetId !== "" && destinationVersionId !== "") { params.copyImageSetInformation.destinationImageSet = { imageSetId: destinationImageSetId, latestVersionId: destinationVersionId, }; } if (copySubsets.length > 0) { let copySubsetsJson; copySubsetsJson = { SchemaVersion: 1.1, Study: { Series: { imageSetId: { Instances: {}, }, }, }, }; for (let i = 0; i < copySubsets.length; i++) { copySubsetsJson.Study.Series.imageSetId.Instances[copySubsets[i]] = {}; } params.copyImageSetInformation.dicomCopies = copySubsetsJson; } const response = await medicalImagingClient.send( new CopyImageSetCommand(params), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: 'd9b219ce-cc48-4a44-a5b2-c5c3068f1ee8', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // datastoreId: 'xxxxxxxxxxxxxx', // destinationImageSetProperties: { // createdAt: 2023-09-27T19:46:21.824Z, // imageSetArn: 'arn:aws:medical-imaging:us-east-1:xxxxxxxxxxx:datastore/xxxxxxxxxxxxx/imageset/xxxxxxxxxxxxxxxxxxx', // imageSetId: 'xxxxxxxxxxxxxxx', // imageSetState: 'LOCKED', // imageSetWorkflowStatus: 'COPYING', // latestVersionId: '1', // updatedAt: 2023-09-27T19:46:21.824Z // }, // sourceImageSetProperties: { // createdAt: 2023-09-22T14:49:26.427Z, // imageSetArn: 'arn:aws:medical-imaging:us-east-1:xxxxxxxxxxx:datastore/xxxxxxxxxxxxx/imageset/xxxxxxxxxxxxxxxx', // imageSetId: 'xxxxxxxxxxxxxxxx', // imageSetState: 'LOCKED', // imageSetWorkflowStatus: 'COPYING_WITH_READ_ONLY_ACCESS', // latestVersionId: '4', // updatedAt: 2023-09-27T19:46:21.824Z // } // } return response; } catch (err) { console.error(err); } };
대상 없이 이미지 세트를 복사합니다.
await copyImageSet( "12345678901234567890123456789012", "12345678901234567890123456789012", "1", );
대상이 있는 이미지 세트를 복사합니다.
await copyImageSet( "12345678901234567890123456789012", "12345678901234567890123456789012", "1", "12345678901234567890123456789012", "1", false, );
이미지 세트의 하위 집합을 대상으로 복사하고 강제로 복사합니다.
await copyImageSet( "12345678901234567890123456789012", "12345678901234567890123456789012", "1", "12345678901234567890123456789012", "1", true, ["12345678901234567890123456789012", "11223344556677889900112233445566"], );
-
자세한 API 내용은 AWS SDK for JavaScript API 참조CopyImageSet의 섹션을 참조하세요.
참고
더 많은 기능이 있습니다 GitHub. AWS 코드 예시 리포지토리
에서 전체 예시를 찾고 설정 및 실행하는 방법을 배워보세요. -
- Python
-
- SDK Python용(Boto3)
-
이미지 세트를 복사하는 유틸리티 함수입니다.
class MedicalImagingWrapper: def __init__(self, health_imaging_client): self.health_imaging_client = health_imaging_client def copy_image_set( self, datastore_id, image_set_id, version_id, destination_image_set_id=None, destination_version_id=None, force=False, subsets=[], ): """ Copy an image set. :param datastore_id: The ID of the data store. :param image_set_id: The ID of the image set. :param version_id: The ID of the image set version. :param destination_image_set_id: The ID of the optional destination image set. :param destination_version_id: The ID of the optional destination image set version. :param force: Force the copy. :param subsets: The optional subsets to copy. For example: ["12345678901234567890123456789012"]. :return: The copied image set ID. """ try: copy_image_set_information = { "sourceImageSet": {"latestVersionId": version_id} } if destination_image_set_id and destination_version_id: copy_image_set_information["destinationImageSet"] = { "imageSetId": destination_image_set_id, "latestVersionId": destination_version_id, } if len(subsets) > 0: copySubsetsJson = { "SchemaVersion": "1.1", "Study": {"Series": {"imageSetId": {"Instances": {}}}}, } for subset in subsets: copySubsetsJson["Study"]["Series"]["imageSetId"]["Instances"][ subset ] = {} copy_image_set_information["sourceImageSet"]["DICOMCopies"] = { "copiableAttributes": json.dumps(copySubsetsJson) } copy_results = self.health_imaging_client.copy_image_set( datastoreId=datastore_id, sourceImageSetId=image_set_id, copyImageSetInformation=copy_image_set_information, force=force, ) except ClientError as err: logger.error( "Couldn't copy image set. Here's why: %s: %s", err.response["Error"]["Code"], err.response["Error"]["Message"], ) raise else: return copy_results["destinationImageSetProperties"]["imageSetId"]
대상 없이 이미지 세트를 복사합니다.
copy_image_set_information = { "sourceImageSet": {"latestVersionId": version_id} } copy_results = self.health_imaging_client.copy_image_set( datastoreId=datastore_id, sourceImageSetId=image_set_id, copyImageSetInformation=copy_image_set_information, force=force, )
대상이 있는 이미지 세트를 복사합니다.
copy_image_set_information = { "sourceImageSet": {"latestVersionId": version_id} } if destination_image_set_id and destination_version_id: copy_image_set_information["destinationImageSet"] = { "imageSetId": destination_image_set_id, "latestVersionId": destination_version_id, } copy_results = self.health_imaging_client.copy_image_set( datastoreId=datastore_id, sourceImageSetId=image_set_id, copyImageSetInformation=copy_image_set_information, force=force, )
이미지 세트의 하위 집합을 복사합니다.
copy_image_set_information = { "sourceImageSet": {"latestVersionId": version_id} } if len(subsets) > 0: copySubsetsJson = { "SchemaVersion": "1.1", "Study": {"Series": {"imageSetId": {"Instances": {}}}}, } for subset in subsets: copySubsetsJson["Study"]["Series"]["imageSetId"]["Instances"][ subset ] = {} copy_image_set_information["sourceImageSet"]["DICOMCopies"] = { "copiableAttributes": json.dumps(copySubsetsJson) } copy_results = self.health_imaging_client.copy_image_set( datastoreId=datastore_id, sourceImageSetId=image_set_id, copyImageSetInformation=copy_image_set_information, force=force, )
다음 코드는 MedicalImagingWrapper 객체를 인스턴스화합니다.
client = boto3.client("medical-imaging") medical_imaging_wrapper = MedicalImagingWrapper(client)
-
API 자세한 내용은 CopyImageSet의 AWS SDK Python(Boto3) API 참조를 참조하세요.
참고
더 많은 기능이 있습니다 GitHub. AWS 코드 예시 리포지토리
에서 전체 예시를 찾고 설정 및 실행하는 방법을 배워보세요. -
가용성 예제
필요한 예제를 찾을 수 없습니까? 이 페이지의 오른쪽 사이드바에 있는 피드백 제공 링크를 사용하여 코드 예제를 요청합니다.