META-INF.smithy.medicalimaging.smithy Maven / Gradle / Ivy
Show all versions of aws-medical-imaging-spec Show documentation
$version: "2.0"
namespace com.amazonaws.medicalimaging
use aws.api#arn
use aws.api#arnReference
use aws.api#service
use aws.auth#sigv4
use aws.iam#conditionKeys
use aws.iam#defineConditionKeys
use aws.iam#disableConditionKeyInference
use aws.protocols#restJson1
/// This is the AWS HealthImaging API Reference. AWS HealthImaging is an AWS service for storing, accessing,
/// and analyzing medical images. For an introduction to the service, see the
/// AWS HealthImaging Developer Guide
/// .
///
/// We recommend using one of the AWS Software Development Kits (SDKs) for your programming language, as
/// they take care of request authentication, serialization, and connection management. For more information,
/// see Tools to build on AWS.
/// For information about using AWS HealthImaging API actions in one of the language-specific AWS SDKs, refer to the
/// See Also link at the end of each section that describes an API action or data type.
///
/// The following sections list AWS HealthImaging API actions categorized according to functionality. Links are
/// provided to actions within this Reference, along with links back to corresponding sections in the
/// AWS HealthImaging Developer Guide so you can view console procedures and CLI/SDK code examples.
///
/// Data store actions
///
///
/// -
///
/// CreateDatastore
/// – See
/// Creating a data store.
///
/// -
///
/// GetDatastore
/// – See
/// Getting data store properties.
///
/// -
///
/// ListDatastores
/// – See
/// Listing data stores.
///
/// -
///
/// DeleteDatastore
/// – See
/// Deleting a data store.
///
///
///
/// Import job actions
///
///
/// -
///
/// StartDICOMImportJob
/// – See
/// Starting an import job.
///
/// -
///
/// GetDICOMImportJob
/// – See
/// Getting import job properties.
///
/// -
///
/// ListDICOMImportJobs
/// – See
/// Listing import jobs.
///
///
///
/// Image set access actions
///
///
/// -
///
/// SearchImageSets
/// – See
/// Searching image sets.
///
/// -
///
/// GetImageSet
/// – See
/// Getting image set properties.
///
/// -
///
/// GetImageSetMetadata
/// – See
/// Getting image set metadata.
///
/// -
///
/// GetImageFrame
/// – See
/// Getting image set pixel data.
///
///
///
/// Image set modification actions
///
///
/// -
///
/// ListImageSetVersions
/// – See
/// Listing image set versions.
///
/// -
///
/// UpdateImageSetMetadata
/// – See
/// Updating image set metadata.
///
/// -
///
/// CopyImageSet
/// – See
/// Copying an image set.
///
/// -
///
/// DeleteImageSet
/// – See
/// Deleting an image set.
///
///
///
/// Tagging actions
///
///
/// -
///
/// TagResource
/// – See
/// Tagging a data store and
/// Tagging an image set.
///
/// -
///
/// ListTagsForResource
/// – See
/// Tagging a data store and
/// Tagging an image set.
///
/// -
///
/// UntagResource
/// – See
/// Tagging a data store and
/// Tagging an image set.
///
///
@service(
sdkId: "Medical Imaging"
arnNamespace: "medical-imaging"
endpointPrefix: "medical-imaging"
)
@sigv4(
name: "medical-imaging"
)
@defineConditionKeys(
"aws:ResourceTag/${TagKey}": {
type: "String"
documentation: "Filters access by a tag key and value pair of a resource"
}
"aws:RequestTag/${TagKey}": {
type: "String"
documentation: "Filters access by a tag key and value pair that is allowed in the request"
}
"aws:TagKeys": {
type: "String"
documentation: "Filters access by a list of tag keys that are allowed in the request"
}
)
@restJson1
@title("AWS Health Imaging")
service AHIGatewayService {
version: "2023-07-19"
operations: [
CopyImageSet
DeleteImageSet
GetDICOMImportJob
GetImageFrame
GetImageSet
GetImageSetMetadata
ListDICOMImportJobs
ListImageSetVersions
ListTagsForResource
SearchImageSets
StartDICOMImportJob
TagResource
UntagResource
UpdateImageSetMetadata
]
resources: [
DatastoreResource
ImageSetResource
]
}
@arn(
template: "datastore/{datastoreId}"
)
@conditionKeys([
"aws:ResourceTag/${TagKey}"
])
@disableConditionKeyInference
resource DatastoreResource {
identifiers: {
datastoreId: DatastoreId
}
create: CreateDatastore
read: GetDatastore
delete: DeleteDatastore
list: ListDatastores
}
@arn(
template: "datastore/{datastoreId}/imageset/{imageSetId}"
)
@conditionKeys([
"aws:ResourceTag/${TagKey}"
])
@disableConditionKeyInference
resource ImageSetResource {
identifiers: {
datastoreId: DatastoreId
imageSetId: ImageSetId
}
}
/// Copy an image set.
@endpoint(
hostPrefix: "runtime-"
)
@http(
uri: "/datastore/{datastoreId}/imageSet/{sourceImageSetId}/copyImageSet"
method: "POST"
)
operation CopyImageSet {
input: CopyImageSetRequest
output: CopyImageSetResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ResourceNotFoundException
ServiceQuotaExceededException
ThrottlingException
ValidationException
]
}
/// Create a data store.
@conditionKeys([
"aws:RequestTag/${TagKey}"
"aws:TagKeys"
])
@http(
method: "POST"
uri: "/datastore"
)
@idempotent
operation CreateDatastore {
input: CreateDatastoreRequest
output: CreateDatastoreResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ServiceQuotaExceededException
ThrottlingException
ValidationException
]
}
/// Delete a data store.
///
/// Before a data store can be deleted, you must first delete all image sets within it.
///
@http(
method: "DELETE"
uri: "/datastore/{datastoreId}"
)
@idempotent
operation DeleteDatastore {
input: DeleteDatastoreRequest
output: DeleteDatastoreResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// Delete an image set.
@endpoint(
hostPrefix: "runtime-"
)
@http(
uri: "/datastore/{datastoreId}/imageSet/{imageSetId}/deleteImageSet"
method: "POST"
)
@idempotent
operation DeleteImageSet {
input: DeleteImageSetRequest
output: DeleteImageSetResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// Get data store properties.
@http(
method: "GET"
uri: "/datastore/{datastoreId}"
)
@readonly
operation GetDatastore {
input: GetDatastoreRequest
output: GetDatastoreResponse
errors: [
AccessDeniedException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// Get the import job properties to learn more about the job or job progress.
@http(
method: "GET"
uri: "/getDICOMImportJob/datastore/{datastoreId}/job/{jobId}"
)
@readonly
operation GetDICOMImportJob {
input: GetDICOMImportJobRequest
output: GetDICOMImportJobResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// Get an image frame (pixel data) for an image set.
@endpoint(
hostPrefix: "runtime-"
)
@http(
uri: "/datastore/{datastoreId}/imageSet/{imageSetId}/getImageFrame"
method: "POST"
)
@readonly
operation GetImageFrame {
input: GetImageFrameRequest
output: GetImageFrameResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// Get image set properties.
@endpoint(
hostPrefix: "runtime-"
)
@http(
uri: "/datastore/{datastoreId}/imageSet/{imageSetId}/getImageSet"
method: "POST"
)
@readonly
operation GetImageSet {
input: GetImageSetRequest
output: GetImageSetResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// Get metadata attributes for an image set.
@endpoint(
hostPrefix: "runtime-"
)
@http(
uri: "/datastore/{datastoreId}/imageSet/{imageSetId}/getImageSetMetadata"
method: "POST"
)
@readonly
operation GetImageSetMetadata {
input: GetImageSetMetadataRequest
output: GetImageSetMetadataResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// List data stores created by this AWS account.
@http(
method: "GET"
uri: "/datastore"
)
@paginated(
inputToken: "nextToken"
outputToken: "nextToken"
pageSize: "maxResults"
items: "datastoreSummaries"
)
@readonly
operation ListDatastores {
input: ListDatastoresRequest
output: ListDatastoresResponse
errors: [
AccessDeniedException
InternalServerException
ThrottlingException
ValidationException
]
}
/// List import jobs created by this AWS account for a specific data store.
@http(
method: "GET"
uri: "/listDICOMImportJobs/datastore/{datastoreId}"
)
@paginated(
inputToken: "nextToken"
outputToken: "nextToken"
pageSize: "maxResults"
items: "jobSummaries"
)
@readonly
operation ListDICOMImportJobs {
input: ListDICOMImportJobsRequest
output: ListDICOMImportJobsResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// List image set versions.
@endpoint(
hostPrefix: "runtime-"
)
@http(
uri: "/datastore/{datastoreId}/imageSet/{imageSetId}/listImageSetVersions"
method: "POST"
)
@paginated(
inputToken: "nextToken"
outputToken: "nextToken"
pageSize: "maxResults"
items: "imageSetPropertiesList"
)
@readonly
operation ListImageSetVersions {
input: ListImageSetVersionsRequest
output: ListImageSetVersionsResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// Lists all tags associated with a medical imaging resource.
@http(
method: "GET"
uri: "/tags/{resourceArn}"
)
@readonly
operation ListTagsForResource {
input: ListTagsForResourceRequest
output: ListTagsForResourceResponse
errors: [
AccessDeniedException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// Search image sets based on defined input attributes.
@endpoint(
hostPrefix: "runtime-"
)
@http(
uri: "/datastore/{datastoreId}/searchImageSets"
method: "POST"
)
@paginated(
inputToken: "nextToken"
outputToken: "nextToken"
pageSize: "maxResults"
items: "imageSetsMetadataSummaries"
)
operation SearchImageSets {
input: SearchImageSetsRequest
output: SearchImageSetsResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// Start importing bulk data into an ACTIVE
data store. The import job imports DICOM P10 files
/// found in the S3 prefix specified by the inputS3Uri
parameter. The import job stores
/// processing results in the file specified by the outputS3Uri
parameter.
@http(
method: "POST"
uri: "/startDICOMImportJob/datastore/{datastoreId}"
)
@idempotent
operation StartDICOMImportJob {
input: StartDICOMImportJobRequest
output: StartDICOMImportJobResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ResourceNotFoundException
ServiceQuotaExceededException
ThrottlingException
ValidationException
]
}
/// Adds a user-specifed key and value tag to a medical imaging resource.
@conditionKeys([
"aws:RequestTag/${TagKey}"
"aws:TagKeys"
])
@http(
method: "POST"
uri: "/tags/{resourceArn}"
)
@idempotent
operation TagResource {
input: TagResourceRequest
output: TagResourceResponse
errors: [
AccessDeniedException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// Removes tags from a medical imaging resource.
@conditionKeys([
"aws:TagKeys"
])
@http(
method: "DELETE"
uri: "/tags/{resourceArn}"
)
@idempotent
operation UntagResource {
input: UntagResourceRequest
output: UntagResourceResponse
errors: [
AccessDeniedException
InternalServerException
ResourceNotFoundException
ThrottlingException
ValidationException
]
}
/// Update image set metadata attributes.
@endpoint(
hostPrefix: "runtime-"
)
@http(
uri: "/datastore/{datastoreId}/imageSet/{imageSetId}/updateImageSetMetadata"
method: "POST"
)
operation UpdateImageSetMetadata {
input: UpdateImageSetMetadataRequest
output: UpdateImageSetMetadataResponse
errors: [
AccessDeniedException
ConflictException
InternalServerException
ResourceNotFoundException
ServiceQuotaExceededException
ThrottlingException
ValidationException
]
}
/// The user does not have sufficient access to perform this action.
@error("client")
@httpError(403)
structure AccessDeniedException {
@required
message: String
}
/// Updating or deleting a resource can cause an inconsistent state.
@error("client")
@httpError(409)
structure ConflictException {
@required
message: String
}
/// Copy the destination image set.
structure CopyDestinationImageSet {
/// The image set identifier for the destination image set.
@required
imageSetId: ImageSetId
/// The latest version identifier for the destination image set.
@required
latestVersionId: ImageSetExternalVersionId
}
/// Copy the image set properties of the destination image set.
structure CopyDestinationImageSetProperties {
/// The image set identifier of the copied image set properties.
@required
imageSetId: ImageSetId
/// The latest version identifier for the destination image set properties.
@required
latestVersionId: ImageSetExternalVersionId
/// The image set state of the destination image set properties.
imageSetState: ImageSetState
/// The image set workflow status of the destination image set properties.
imageSetWorkflowStatus: ImageSetWorkflowStatus
/// The timestamp when the destination image set properties were created.
createdAt: Date
/// The timestamp when the destination image set properties were last updated.
updatedAt: Date
/// The Amazon Resource Name (ARN) assigned to the destination image set.
imageSetArn: Arn
}
/// Copy image set information.
structure CopyImageSetInformation {
/// The source image set.
@required
sourceImageSet: CopySourceImageSetInformation
/// The destination image set.
destinationImageSet: CopyDestinationImageSet
}
@input
structure CopyImageSetRequest {
/// The data store identifier.
@httpLabel
@required
datastoreId: DatastoreId
/// The source image set identifier.
@httpLabel
@required
sourceImageSetId: ImageSetId
/// Copy image set information.
@httpPayload
@required
copyImageSetInformation: CopyImageSetInformation
}
@output
structure CopyImageSetResponse {
/// The data store identifier.
@required
datastoreId: DatastoreId
/// The properties of the source image set.
@required
sourceImageSetProperties: CopySourceImageSetProperties
/// The properties of the destination image set.
@required
destinationImageSetProperties: CopyDestinationImageSetProperties
}
/// Copy source image set information.
structure CopySourceImageSetInformation {
/// The latest version identifier for the source image set.
@required
latestVersionId: ImageSetExternalVersionId
}
/// Copy source image set properties.
structure CopySourceImageSetProperties {
/// The image set identifier for the copied source image set.
@required
imageSetId: ImageSetId
/// The latest version identifier for the copied source image set.
@required
latestVersionId: ImageSetExternalVersionId
/// The image set state of the copied source image set.
imageSetState: ImageSetState
/// The workflow status of the copied source image set.
imageSetWorkflowStatus: ImageSetWorkflowStatus
/// The timestamp when the source image set properties were created.
createdAt: Date
/// The timestamp when the source image set properties were updated.
updatedAt: Date
/// The Amazon Resource Name (ARN) assigned to the source image set.
imageSetArn: Arn
}
@input
structure CreateDatastoreRequest {
/// The data store name.
datastoreName: DatastoreName
/// A unique identifier for API idempotency.
@idempotencyToken
@required
clientToken: ClientToken
/// The tags provided when creating a data store.
tags: TagMap
/// The Amazon Resource Name (ARN) assigned to the AWS Key Management Service (AWS KMS) key for accessing encrypted data.
kmsKeyArn: KmsKeyArn
}
@output
structure CreateDatastoreResponse {
/// The data store identifier.
@required
datastoreId: DatastoreId
/// The data store status.
@required
datastoreStatus: DatastoreStatus
}
/// The properties associated with the data store.
structure DatastoreProperties {
/// The data store identifier.
@required
datastoreId: DatastoreId
/// The data store name.
@required
datastoreName: DatastoreName
/// The data store status.
@required
datastoreStatus: DatastoreStatus
/// The Amazon Resource Name (ARN) assigned to the AWS Key Management Service (AWS KMS) key for accessing encrypted data.
kmsKeyArn: KmsKeyArn
/// The Amazon Resource Name (ARN) for the data store.
datastoreArn: Arn
/// The timestamp when the data store was created.
createdAt: Date
/// The timestamp when the data store was last updated.
updatedAt: Date
}
/// List of summaries of data stores.
structure DatastoreSummary {
/// The data store identifier.
@required
datastoreId: DatastoreId
/// The data store name.
@required
datastoreName: DatastoreName
/// The data store status.
@required
datastoreStatus: DatastoreStatus
/// The Amazon Resource Name (ARN) for the data store.
datastoreArn: Arn
/// The timestamp when the data store was created.
createdAt: Date
/// The timestamp when the data store was last updated.
updatedAt: Date
}
@input
structure DeleteDatastoreRequest {
/// The data store identifier.
@httpLabel
@required
datastoreId: DatastoreId
}
@output
structure DeleteDatastoreResponse {
/// The data store identifier.
@required
datastoreId: DatastoreId
/// The data store status.
@required
datastoreStatus: DatastoreStatus
}
@input
structure DeleteImageSetRequest {
/// The data store identifier.
@httpLabel
@required
datastoreId: DatastoreId
/// The image set identifier.
@httpLabel
@required
imageSetId: ImageSetId
}
@output
structure DeleteImageSetResponse {
/// The data store identifier.
@required
datastoreId: DatastoreId
/// The image set identifier.
@required
imageSetId: ImageSetId
/// The image set state.
@required
imageSetState: ImageSetState
/// The image set workflow status.
@required
imageSetWorkflowStatus: ImageSetWorkflowStatus
}
/// Properties of the import job.
structure DICOMImportJobProperties {
/// The import job identifier.
@required
jobId: JobId
/// The import job name.
@required
jobName: JobName
/// The filters for listing import jobs based on status.
@required
jobStatus: JobStatus
/// The data store identifier.
@required
datastoreId: DatastoreId
/// The Amazon Resource Name (ARN) that grants permissions to access medical imaging resources.
@required
dataAccessRoleArn: RoleArn
/// The timestamp for when the import job was ended.
endedAt: Date
/// The timestamp for when the import job was submitted.
submittedAt: Date
/// The input prefix path for the S3 bucket that contains the DICOM P10 files to be imported.
@required
inputS3Uri: S3Uri
/// The output prefix of the S3 bucket to upload the results of the DICOM import job.
@required
outputS3Uri: S3Uri
/// The error message thrown if an import job fails.
message: Message
}
/// Summary of import job.
structure DICOMImportJobSummary {
/// The import job identifier.
@required
jobId: JobId
/// The import job name.
@required
jobName: JobName
/// The filters for listing import jobs based on status.
@required
jobStatus: JobStatus
/// The data store identifier.
@required
datastoreId: DatastoreId
/// The Amazon Resource Name (ARN) that grants permissions to access medical imaging resources.
dataAccessRoleArn: RoleArn
/// The timestamp when an import job ended.
endedAt: Date
/// The timestamp when an import job was submitted.
submittedAt: Date
/// The error message thrown if an import job fails.
message: Message
}
/// The aggregated structure to store DICOM study date and study time for search capabilities.
structure DICOMStudyDateAndTime {
/// The DICOM study date provided in yyMMdd
format.
@required
DICOMStudyDate: DICOMStudyDate
/// The DICOM study time provided in HHmmss.FFFFFF
format.
DICOMStudyTime: DICOMStudyTime
}
/// The DICOM attributes returned as a part of a response. Each image set has these properties
/// as part of a search result.
structure DICOMTags {
/// The unique identifier for a patient in a DICOM Study.
DICOMPatientId: DICOMPatientId
/// The patient name.
DICOMPatientName: DICOMPatientName
/// The patient birth date.
DICOMPatientBirthDate: DICOMPatientBirthDate
/// The patient sex.
DICOMPatientSex: DICOMPatientSex
/// The DICOM provided identifier for studyInstanceUid.>
DICOMStudyInstanceUID: DICOMStudyInstanceUID
/// The DICOM provided studyId.
DICOMStudyId: DICOMStudyId
/// The description of the study.
DICOMStudyDescription: DICOMStudyDescription
/// The total number of series in the DICOM study.
DICOMNumberOfStudyRelatedSeries: DICOMNumberOfStudyRelatedSeries = 0
/// The total number of instances in the DICOM study.
DICOMNumberOfStudyRelatedInstances: DICOMNumberOfStudyRelatedInstances = 0
/// The accession number for the DICOM study.
DICOMAccessionNumber: DICOMAccessionNumber
/// The study date.
DICOMStudyDate: DICOMStudyDate
/// The study time.
DICOMStudyTime: DICOMStudyTime
}
/// The object containing removableAttributes
and updatableAttributes
.
structure DICOMUpdates {
/// The DICOM tags to be removed from ImageSetMetadata
.
removableAttributes: DICOMAttribute
/// The DICOM tags that need to be updated in ImageSetMetadata
.
updatableAttributes: DICOMAttribute
}
@input
structure GetDatastoreRequest {
/// The data store identifier.
@httpLabel
@required
datastoreId: DatastoreId
}
@output
structure GetDatastoreResponse {
/// The data store properties.
@required
datastoreProperties: DatastoreProperties
}
@input
structure GetDICOMImportJobRequest {
/// The data store identifier.
@httpLabel
@required
datastoreId: DatastoreId
/// The import job identifier.
@httpLabel
@required
jobId: JobId
}
@output
structure GetDICOMImportJobResponse {
/// The properties of the import job.
@required
jobProperties: DICOMImportJobProperties
}
@input
structure GetImageFrameRequest {
/// The data store identifier.
@httpLabel
@required
datastoreId: DatastoreId
/// The image set identifier.
@httpLabel
@required
imageSetId: ImageSetId
/// Information about the image frame (pixel data) identifier.
@httpPayload
@required
imageFrameInformation: ImageFrameInformation
}
@output
structure GetImageFrameResponse {
/// The blob containing the aggregated image frame information.
@httpPayload
@required
imageFrameBlob: PayloadBlob
/// The format in which the image frame information is returned to the customer. Default is
/// application/octet-stream
.
@httpHeader("Content-Type")
contentType: String
}
@input
structure GetImageSetMetadataRequest {
/// The data store identifier.
@httpLabel
@required
datastoreId: DatastoreId
/// The image set identifier.
@httpLabel
@required
imageSetId: ImageSetId
/// The image set version identifier.
@httpQuery("version")
versionId: ImageSetExternalVersionId
}
@output
structure GetImageSetMetadataResponse {
/// The blob containing the aggregated metadata information for the image set.
@httpPayload
@required
imageSetMetadataBlob: ImageSetMetadataBlob
/// The format in which the study metadata is returned to the customer. Default is text/plain
.
@httpHeader("Content-Type")
contentType: String
/// The compression format in which image set metadata attributes are returned.
@httpHeader("Content-Encoding")
contentEncoding: String
}
@input
structure GetImageSetRequest {
/// The data store identifier.
@httpLabel
@required
datastoreId: DatastoreId
/// The image set identifier.
@httpLabel
@required
imageSetId: ImageSetId
/// The image set version identifier.
@httpQuery("version")
versionId: ImageSetExternalVersionId
}
@output
structure GetImageSetResponse {
/// The data store identifier.
@required
datastoreId: DatastoreId
/// The image set identifier.
@required
imageSetId: ImageSetId
/// The image set version identifier.
@required
versionId: ImageSetExternalVersionId
/// The image set state.
@required
imageSetState: ImageSetState
/// The image set workflow status.
imageSetWorkflowStatus: ImageSetWorkflowStatus
/// The timestamp when image set properties were created.
createdAt: Date
/// The timestamp when image set properties were updated.
updatedAt: Date
/// The timestamp when the image set properties were deleted.
deletedAt: Date
/// The error message thrown if an image set action fails.
message: Message
/// The Amazon Resource Name (ARN) assigned to the image set.
imageSetArn: Arn
}
/// Information about the image frame (pixel data) identifier.
structure ImageFrameInformation {
/// The image frame (pixel data) identifier.
@required
imageFrameId: ImageFrameId
}
/// The image set properties.
structure ImageSetProperties {
/// The image set identifier.
@required
imageSetId: ImageSetId
/// The image set version identifier.
@required
versionId: ImageSetExternalVersionId
/// The image set state.
@required
imageSetState: ImageSetState
/// The image set workflow status.
ImageSetWorkflowStatus: ImageSetWorkflowStatus
/// The timestamp when the image set properties were created.
createdAt: Date
/// The timestamp when the image set properties were updated.
updatedAt: Date
/// The timestamp when the image set properties were deleted.
deletedAt: Date
/// The error message thrown if an image set action fails.
message: Message
}
/// Summary of the image set metadata.
structure ImageSetsMetadataSummary {
/// The image set identifier.
@required
imageSetId: ImageSetId
/// The image set version.
version: Integer
/// The time an image set is created in AWS HealthImaging. Sample creation
/// date is provided in 1985-04-12T23:20:50.52Z
format.
createdAt: Date
/// The time when an image was last updated in AWS HealthImaging.
updatedAt: Date
/// The DICOM tags associated with the image set.
DICOMTags: DICOMTags
}
/// An unexpected error occurred during processing of the request.
@error("server")
@httpError(500)
structure InternalServerException {
@required
message: String
}
@input
structure ListDatastoresRequest {
/// The data store status.
@httpQuery("datastoreStatus")
datastoreStatus: DatastoreStatus
/// The pagination token used to request the list of data stores on the next page.
@httpQuery("nextToken")
nextToken: NextToken
/// Valid Range: Minimum value of 1. Maximum value of 50.
@httpQuery("maxResults")
@range(
min: 1
max: 50
)
maxResults: Integer
}
@output
structure ListDatastoresResponse {
/// The list of summaries of data stores.
datastoreSummaries: DatastoreSummaries
/// The pagination token used to retrieve the list of data stores on the next page.
nextToken: NextToken
}
@input
structure ListDICOMImportJobsRequest {
/// The data store identifier.
@httpLabel
@required
datastoreId: DatastoreId
/// The filters for listing import jobs based on status.
@httpQuery("jobStatus")
jobStatus: JobStatus
/// The pagination token used to request the list of import jobs on the next page.
@httpQuery("nextToken")
nextToken: NextToken
/// The max results count. The upper bound is determined by load testing.
@httpQuery("maxResults")
@range(
min: 1
max: 50
)
maxResults: Integer
}
@output
structure ListDICOMImportJobsResponse {
/// A list of job summaries.
@required
jobSummaries: DICOMImportJobSummaries
/// The pagination token used to retrieve the list of import jobs on the next page.
nextToken: NextToken
}
@input
structure ListImageSetVersionsRequest {
/// The data store identifier.
@httpLabel
@required
datastoreId: DatastoreId
/// The image set identifier.
@httpLabel
@required
imageSetId: ImageSetId
/// The pagination token used to request the list of image set versions on the next page.
@httpQuery("nextToken")
nextToken: NextToken
/// The max results count.
@httpQuery("maxResults")
@range(
min: 1
max: 50
)
maxResults: Integer
}
@output
structure ListImageSetVersionsResponse {
/// Lists all properties associated with an image set.
@required
imageSetPropertiesList: ImageSetPropertiesList
/// The pagination token used to retrieve the list of image set versions on the next page.
nextToken: NextToken
}
@input
structure ListTagsForResourceRequest {
/// The Amazon Resource Name (ARN) of the medical imaging resource to list tags for.
@httpLabel
@required
resourceArn: Arn
}
@output
structure ListTagsForResourceResponse {
/// A list of all tags associated with a medical imaging resource.
@required
tags: TagMap
}
/// The request references a resource which does not exist.
@error("client")
@httpError(404)
structure ResourceNotFoundException {
@required
message: String
}
/// The search criteria.
@sensitive
structure SearchCriteria {
/// The filters for the search criteria.
@length(
min: 1
max: 2
)
filters: SearchFilters
}
/// The search filter.
structure SearchFilter {
/// The search filter values.
@length(
min: 1
max: 2
)
@required
values: SearchByAttributeValues
/// The search filter operator for imageSetDateTime
.
@required
operator: Operator
}
@input
structure SearchImageSetsRequest {
/// The identifier of the data store where the image sets reside.
@httpLabel
@required
datastoreId: DatastoreId
/// The search criteria that filters by applying a maximum of 1 item to SearchByAttribute
.
@httpPayload
searchCriteria: SearchCriteria
/// The maximum number of results that can be returned in a search.
@httpQuery("maxResults")
@range(
min: 1
max: 50
)
maxResults: Integer
/// The token used for pagination of results returned in the response. Use the token returned from the previous
/// request to continue results where the previous request ended.
@httpQuery("nextToken")
nextToken: NextToken
}
@output
structure SearchImageSetsResponse {
/// The model containing the image set results.
@required
imageSetsMetadataSummaries: ImageSetsMetadataSummaries
/// The token for pagination results.
nextToken: NextToken
}
/// The request caused a service quota to be exceeded.
@error("client")
@httpError(402)
structure ServiceQuotaExceededException {
@required
message: String
}
@input
structure StartDICOMImportJobRequest {
/// The import job name.
jobName: JobName
/// The Amazon Resource Name (ARN) of the IAM role that grants permission to access medical imaging resources.
@required
dataAccessRoleArn: RoleArn
/// A unique identifier for API idempotency.
@idempotencyToken
@required
clientToken: ClientToken
/// The data store identifier.
@httpLabel
@required
datastoreId: DatastoreId
/// The input prefix path for the S3 bucket that contains the DICOM files to be imported.
@required
inputS3Uri: S3Uri
/// The output prefix of the S3 bucket to upload the results of the DICOM import job.
@required
outputS3Uri: S3Uri
}
@output
structure StartDICOMImportJobResponse {
/// The data store identifier.
@required
datastoreId: DatastoreId
/// The import job identifier.
@required
jobId: JobId
/// The import job status.
@required
jobStatus: JobStatus
/// The timestamp when the import job was submitted.
@required
submittedAt: Date
}
@input
@references([
{
resource: "com.amazonaws.medicalimaging#DatastoreResource"
ids: {
datastoreId: "resourceArn"
}
}
{
resource: "com.amazonaws.medicalimaging#ImageSetResource"
ids: {
datastoreId: "resourceArn"
imageSetId: "resourceArn"
}
}
])
structure TagResourceRequest {
/// The Amazon Resource Name (ARN) of the medical imaging resource that tags are being added to.
@httpLabel
@required
resourceArn: Arn
/// The user-specified key and value tag pairs added to a medical imaging resource.
@required
tags: TagMap
}
@output
structure TagResourceResponse {}
/// The request was denied due to throttling.
@error("client")
@httpError(429)
structure ThrottlingException {
@required
message: String
}
@input
@references([
{
resource: "com.amazonaws.medicalimaging#DatastoreResource"
ids: {
datastoreId: "resourceArn"
}
}
{
resource: "com.amazonaws.medicalimaging#ImageSetResource"
ids: {
datastoreId: "resourceArn"
imageSetId: "resourceArn"
}
}
])
structure UntagResourceRequest {
/// The Amazon Resource Name (ARN) of the medical imaging resource that tags are being removed from.
@httpLabel
@required
resourceArn: Arn
/// The keys for the tags to be removed from the medical imaging resource.
@httpQuery("tagKeys")
@required
tagKeys: TagKeyList
}
@output
structure UntagResourceResponse {}
@input
structure UpdateImageSetMetadataRequest {
/// The data store identifier.
@httpLabel
@required
datastoreId: DatastoreId
/// The image set identifier.
@httpLabel
@required
imageSetId: ImageSetId
/// The latest image set version identifier.
@httpQuery("latestVersion")
@required
latestVersionId: ImageSetExternalVersionId
/// Update image set metadata updates.
@httpPayload
@required
updateImageSetMetadataUpdates: MetadataUpdates
}
@output
structure UpdateImageSetMetadataResponse {
/// The data store identifier.
@required
datastoreId: DatastoreId
/// The image set identifier.
@required
imageSetId: ImageSetId
/// The latest image set version identifier.
@required
latestVersionId: ImageSetExternalVersionId
/// The image set state.
@required
imageSetState: ImageSetState
/// The image set workflow status.
imageSetWorkflowStatus: ImageSetWorkflowStatus
/// The timestamp when image set metadata was created.
createdAt: Date
/// The timestamp when image set metadata was updated.
updatedAt: Date
/// The error message thrown if an update image set metadata action fails.
message: Message
}
/// The input fails to satisfy the constraints specified by an AWS service.
@error("client")
@httpError(400)
structure ValidationException {
@required
message: String
}
/// Contains DICOMUpdates.
union MetadataUpdates {
/// The object containing removableAttributes
and updatableAttributes
.
DICOMUpdates: DICOMUpdates
}
/// The search input attribute value.
union SearchByAttributeValue {
/// The patient ID input for search.
DICOMPatientId: DICOMPatientId
/// The DICOM accession number for search.
DICOMAccessionNumber: DICOMAccessionNumber
/// The DICOM study ID for search.
DICOMStudyId: DICOMStudyId
/// The DICOM study instance UID for search.
DICOMStudyInstanceUID: DICOMStudyInstanceUID
/// The created at time of the image set provided for search.
createdAt: Date
/// The aggregated structure containing DICOM study date and study time for search.
DICOMStudyDateAndTime: DICOMStudyDateAndTime
}
list DatastoreSummaries {
member: DatastoreSummary
}
list DICOMImportJobSummaries {
member: DICOMImportJobSummary
}
list ImageSetPropertiesList {
member: ImageSetProperties
}
list ImageSetsMetadataSummaries {
member: ImageSetsMetadataSummary
}
list SearchByAttributeValues {
member: SearchByAttributeValue
}
list SearchFilters {
member: SearchFilter
}
@length(
min: 0
max: 200
)
list TagKeyList {
member: TagKey
}
map TagMap {
key: TagKey
value: TagValue
}
@pattern("^arn:aws((-us-gov)|(-iso)|(-iso-b)|(-cn))?:medical-imaging:[a-z0-9-]+:[0-9]{12}:datastore/[0-9a-z]{32}(/imageset/[0-9a-z]{32})?$")
string Arn
@length(
min: 1
max: 64
)
@pattern("^[A-Za-z0-9._-]+$")
string ClientToken
@pattern("^[0-9a-z]{32}$")
string DatastoreId
@length(
min: 1
max: 256
)
@pattern("^[A-Za-z0-9._/#-]+$")
string DatastoreName
enum DatastoreStatus {
CREATING
CREATE_FAILED
ACTIVE
DELETING
DELETED
}
timestamp Date
@length(
min: 0
max: 16
)
@sensitive
string DICOMAccessionNumber
@length(
min: 1
max: 10000
)
@sensitive
blob DICOMAttribute
@default(0)
@range(
min: 0
max: 10000
)
integer DICOMNumberOfStudyRelatedInstances
@default(0)
@range(
min: 0
max: 10000
)
integer DICOMNumberOfStudyRelatedSeries
@length(
min: 0
max: 18
)
@sensitive
string DICOMPatientBirthDate
@length(
min: 0
max: 64
)
@sensitive
string DICOMPatientId
@length(
min: 0
max: 256
)
@sensitive
string DICOMPatientName
@length(
min: 0
max: 16
)
@sensitive
string DICOMPatientSex
@length(
min: 0
max: 18
)
@sensitive
string DICOMStudyDate
@length(
min: 0
max: 64
)
@sensitive
string DICOMStudyDescription
@length(
min: 0
max: 16
)
@sensitive
string DICOMStudyId
@length(
min: 0
max: 64
)
@pattern("^(?:[1-9][0-9]*|0)(\\.(?:[1-9][0-9]*|0))*$")
@sensitive
string DICOMStudyInstanceUID
@length(
min: 0
max: 28
)
@sensitive
string DICOMStudyTime
@pattern("^[0-9a-z]{32}$")
string ImageFrameId
@pattern("^\\d+$")
string ImageSetExternalVersionId
@pattern("^[0-9a-z]{32}$")
string ImageSetId
@streaming
blob ImageSetMetadataBlob
enum ImageSetState {
ACTIVE
LOCKED
DELETED
}
enum ImageSetWorkflowStatus {
CREATED
COPIED
COPYING
COPYING_WITH_READ_ONLY_ACCESS
COPY_FAILED
UPDATING
UPDATED
UPDATE_FAILED
DELETING
DELETED
}
@length(
min: 1
max: 32
)
@pattern("^[0-9a-z]+$")
string JobId
@length(
min: 1
max: 64
)
@pattern("^[A-Za-z0-9._/#-]+$")
string JobName
enum JobStatus {
SUBMITTED
IN_PROGRESS
COMPLETED
FAILED
}
/// ARN referencing a KMS key or KMS key alias.
@arnReference
@length(
min: 1
max: 512
)
@pattern("^arn:aws[a-zA-Z-]{0,16}:kms:[a-z]{2}(-[a-z]{1,16}){1,3}-\\d{1}:\\d{12}:((key/[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})|(alias/[a-zA-Z0-9:/_-]{1,256}))$")
string KmsKeyArn
@length(
min: 1
max: 2048
)
@pattern("^[\\w -:]+$")
string Message
@length(
min: 1
max: 8192
)
@pattern("^\\p{ASCII}{0,8192}$")
string NextToken
enum Operator {
EQUAL
BETWEEN
}
@streaming
blob PayloadBlob
@arnReference(
type: "AWS::IAM::Role"
)
@length(
min: 20
max: 2048
)
@pattern("^arn:aws(-[^:]+)?:iam::[0-9]{12}:role/.+$")
string RoleArn
@length(
min: 1
max: 1024
)
@pattern("^s3://[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9](/.*)?$")
string S3Uri
@length(
min: 1
max: 128
)
@pattern("^(?!aws:)[a-zA-Z+-=._:/]+$")
string TagKey
@length(
min: 0
max: 256
)
string TagValue