Container Interface Specification

How to package an algorithm for Prism

Overview

Prism runs algorithms as standard OCI/Docker containers. Your container reads DICOM input, processes it, and writes results. No SDK, no library, no API integration required.

Interface

Input/input/ — directory containing DICOM files (read-only mount)
Output/output/ — directory for results (writable mount)
SuccessExit code 0
FailureExit code non-zero (stderr captured in logs)

Output Formats

Write one of the following to /output/:

  • results.json — structured findings as JSON
  • DICOM Structured Report — .dcm file conforming to DICOM SR
  • Secondary Capture — annotated image as DICOM SC
  • DICOM passthrough — modified DICOM files

results.json Schema

{
  "findings": [
    {
      "code": "RID28473",
      "display": "Pulmonary nodule",
      "present": true,
      "confidence": 0.92,
      "location": {
        "type": "bbox",
        "coords": [120, 340, 45, 45]
      }
    }
  ],
  "summary": "Single pulmonary nodule detected",
  "processingTimeMs": 2340
}

Runtime Environment

NetworkNone. Containers run with --network=none
GPUAvailable if algorithm is registered with gpuRequired: true
MemoryConfigurable per algorithm (default 2 GB)
TimeoutConfigurable per algorithm (default 5 minutes)
UserNon-root (UID 1000)

Registration

Register your algorithm via the Prism dashboard or API. Provide the container image reference, resource requirements, and supported modalities. Prism handles pulling the image, scheduling, pseudonymization, and result delivery.

Testing Locally

# Test your container locally
mkdir -p /tmp/input /tmp/output
cp study/*.dcm /tmp/input/

docker run --rm --network=none \
  -v /tmp/input:/input:ro \
  -v /tmp/output:/output \
  your-algorithm:v1.0

cat /tmp/output/results.json