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) |
| Success | Exit code 0 |
| Failure | Exit 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
| Network | None. Containers run with --network=none |
| GPU | Available if algorithm is registered with gpuRequired: true |
| Memory | Configurable per algorithm (default 2 GB) |
| Timeout | Configurable per algorithm (default 5 minutes) |
| User | Non-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