Amazon HealthImaging · Arazzo Workflow

Amazon HealthImaging Import DICOM and Search

Version 1.0.0

Start a DICOM import job, poll until COMPLETED, then search the imported image sets.

1 workflow 1 source API 1 provider
View Spec View on GitHub HealthcareHIPAAMachine LearningMedical ImagingDICOMArazzoWorkflows

Provider

amazon-healthimaging

Workflows

import-dicom-and-search
Run a DICOM import job to completion and search the resulting image sets.
Starts a DICOM import job from an S3 input prefix, waits for the job to finish, and then searches the data store for image sets so the caller can locate what was imported.
3 steps inputs: clientToken, dataAccessRoleArn, datastoreId, inputS3Uri, jobName, outputS3Uri outputs: firstImageSetId, imageSetsMetadataSummaries, jobId, jobStatus
1
startImportJob
StartDICOMImportJob
Start the DICOM import job. The response returns the job identifier and an initial job status (typically SUBMITTED).
2
pollImportJob
GetDICOMImportJob
Read the import job properties and check progress. Repeats while the job is still SUBMITTED or IN_PROGRESS.
3
searchImageSets
SearchImageSets
Search the data store for image sets after the import completed, returning the first page of metadata summaries.

Source API Descriptions

Arazzo Workflow Specification

amazon-healthimaging-import-dicom-and-search-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Amazon HealthImaging Import DICOM and Search
  summary: Start a DICOM import job, poll until COMPLETED, then search the imported image sets.
  description: >-
    Imports a batch of DICOM P10 files from S3 into an active data store and
    surfaces the resulting image sets. The workflow starts the import job, polls
    the job properties until it reaches COMPLETED or FAILED, and on success
    searches the data store for the image sets that the import produced. Every
    step spells out its request inline so the flow can be read and executed
    without opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: healthImagingApi
  url: ../openapi/amazon-healthimaging-openapi.yaml
  type: openapi
workflows:
- workflowId: import-dicom-and-search
  summary: Run a DICOM import job to completion and search the resulting image sets.
  description: >-
    Starts a DICOM import job from an S3 input prefix, waits for the job to
    finish, and then searches the data store for image sets so the caller can
    locate what was imported.
  inputs:
    type: object
    required:
    - datastoreId
    - dataAccessRoleArn
    - clientToken
    - inputS3Uri
    - outputS3Uri
    properties:
      datastoreId:
        type: string
        description: The identifier of the ACTIVE data store to import into.
      jobName:
        type: string
        description: An optional name for the import job.
      dataAccessRoleArn:
        type: string
        description: ARN of the IAM role granting access to the medical imaging resources.
      clientToken:
        type: string
        description: A unique idempotency token for the import request.
      inputS3Uri:
        type: string
        description: The S3 prefix containing the DICOM P10 files to import.
      outputS3Uri:
        type: string
        description: The S3 prefix where import results are written.
  steps:
  - stepId: startImportJob
    description: >-
      Start the DICOM import job. The response returns the job identifier and an
      initial job status (typically SUBMITTED).
    operationId: StartDICOMImportJob
    parameters:
    - name: datastoreId
      in: path
      value: $inputs.datastoreId
    requestBody:
      contentType: application/json
      payload:
        jobName: $inputs.jobName
        dataAccessRoleArn: $inputs.dataAccessRoleArn
        clientToken: $inputs.clientToken
        inputS3Uri: $inputs.inputS3Uri
        outputS3Uri: $inputs.outputS3Uri
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      jobId: $response.body#/jobId
      jobStatus: $response.body#/jobStatus
  - stepId: pollImportJob
    description: >-
      Read the import job properties and check progress. Repeats while the job
      is still SUBMITTED or IN_PROGRESS.
    operationId: GetDICOMImportJob
    parameters:
    - name: datastoreId
      in: path
      value: $inputs.datastoreId
    - name: jobId
      in: path
      value: $steps.startImportJob.outputs.jobId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      jobStatus: $response.body#/jobProperties/jobStatus
      endedAt: $response.body#/jobProperties/endedAt
    onSuccess:
    - name: jobCompleted
      type: goto
      stepId: searchImageSets
      criteria:
      - context: $response.body
        condition: $.jobProperties.jobStatus == "COMPLETED"
        type: jsonpath
    - name: jobFailed
      type: end
      criteria:
      - context: $response.body
        condition: $.jobProperties.jobStatus == "FAILED"
        type: jsonpath
    - name: jobRunning
      type: goto
      stepId: pollImportJob
      criteria:
      - context: $response.body
        condition: $.jobProperties.jobStatus == "IN_PROGRESS"
        type: jsonpath
    - name: jobSubmitted
      type: goto
      stepId: pollImportJob
      criteria:
      - context: $response.body
        condition: $.jobProperties.jobStatus == "SUBMITTED"
        type: jsonpath
  - stepId: searchImageSets
    description: >-
      Search the data store for image sets after the import completed, returning
      the first page of metadata summaries.
    operationId: SearchImageSets
    parameters:
    - name: datastoreId
      in: path
      value: $inputs.datastoreId
    - name: maxResults
      in: query
      value: 50
    requestBody:
      contentType: application/json
      payload:
        searchCriteria: {}
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      imageSetsMetadataSummaries: $response.body#/imageSetsMetadataSummaries
      firstImageSetId: $response.body#/imageSetsMetadataSummaries/0/imageSetId
      nextToken: $response.body#/nextToken
  outputs:
    jobId: $steps.startImportJob.outputs.jobId
    jobStatus: $steps.pollImportJob.outputs.jobStatus
    firstImageSetId: $steps.searchImageSets.outputs.firstImageSetId
    imageSetsMetadataSummaries: $steps.searchImageSets.outputs.imageSetsMetadataSummaries