Medical imaging software development is how you build the stack, not how a hospital buys it. Architecture, DICOM in and out, a processing pipeline, and — if you make a clinical claim — FDA SaMD. The buyer explainer (PACS / RIS / viewer / archive) is medical imaging software.
This is not a code tutorial. There is no repo and no train loop on this page. Python viewers live at the DICOM/NIfTI MVP and VTK in Python. Reading a file is a different job.
Where to point the work
The useful products sit on a clinician’s repetitive or time-critical step, not on “we built a CNN.”
- Auto measure / segment. Tumor volume (RECIST), an organ outline the radiologist would otherwise draw. Minutes per case, if the mask is good enough to edit.
- Triage. Head CT with a bleed goes to the top of the worklist. The radiologist still reads it. The software does not diagnose.
- Workflow orchestration. Order → study → result, without a ZIP on a share. Boring. This is what hospitals actually pay for.
Look at the whole image lifecycle (acquire → store → read → report). The gaps between those steps are where products stick. A clever algorithm with no PACS hook is a demo.
Architecture: cloud, on-prem, hybrid
Pick this first. Changing it after you have customers is a rewrite. Hospitals that will not let PHI leave the building force on-prem or a hybrid with a local DICOM gateway. Startups that want GPU burst without a rack go cloud, then discover the first health system wants a box in their VLAN.
| Piece | On-prem | Cloud | Hybrid | What actually decides |
|---|---|---|---|---|
| Storage | Local PACS / NAS. You own the disks. | S3 / GCS. Pay for what you keep. | PHI on-site; anonymized or bulk compute in the cloud | Residency (HIPAA / GDPR), archive cost, retrieve latency |
| Processing | Workstations / a GPU box. Capacity is what you bought. | EC2 / Azure VMs. Scale the job, then shrink it. | Real-time on-site; batch / training in the cloud | Clinical latency vs transfer cost |
| DICOM | A listener on the hospital LAN | DICOMweb / an API behind a tunnel | Local gateway that forwards to the pipeline | Vendor PACS quirks, private tags, security review |
| Ship / maintain | On-site IT, a change window | CI/CD, a console | Both. This is the expensive option to operate. | CapEx vs OpEx, how often you can patch |
A stroke flag on a CT needs milliseconds-to-minutes, often at the edge. A research job over last year’s archive can be a batch on rented GPUs. Match the pipeline to the clock the clinician is on.
DICOM and the processing step
DICOM is the pixels plus the tags (who, which machine, which series). Vendor implementations are not identical. An app trained on one “clean” dump will drop studies from the next hospital. Do not throw tags away.
- Parse with a library that already lost those fights. pydicom (Python) or dcm4che (Java). Handle missing tags. Validate the ones you cannot live without (StudyInstanceUID, the pixel module).
- Keep the metadata. Map and store tags, including private ones. You will need them when a retrieve fails or a regulator asks what the model saw.
- Process without inventing disease. Gaussian / median for noise (low-dose CT). Histogram equalization for contrast (watch the noise). Resize / rotate without interpolation artifacts a reader will call a lesion. Enhancement is a prep step. The methods map is medical image processing.
AI features that get used
Clinicians use AI that removes a click or reorders a worklist. They do not use a “digital doctor.” Data is the constraint: augmentation (rotate / flip / intensity jitter on volumes) and transfer learning are how most teams ship with a small labeled set. Test the ugly cases (odd protocol, metal, a missing series) or the model will be confident and wrong. Do not invent a train loop here — that is nnU-Net if the job is a 3D mask.
FDA SaMD — classify before you code the claim
What the software does in the clinic decides the path. Weave QMS (ISO 13485) and the evidence into the build. Do not bolt a 510(k) onto a finished demo.
| What it does | Example | Typical class | Path | What you owe |
|---|---|---|---|---|
| Inform | Tumor diameter / RECIST number. Doctor decides. | I / low II | 510(k) exempt or traditional 510(k) | General controls, QMS, labeling. Maybe a predicate comparison. |
| Drive | AI flags a lesion “high risk.” Used in the decision. | II | 510(k) or De Novo | Performance data, cybersecurity, ISO 13485. Months, not weeks. |
| Diagnose / treat | Autonomous “this is diabetic retinopathy.” No human gate. | III | PMA | Clinical trial evidence. Years. |
Most new imaging AI aims at a 510(k) against a predicate. Every claim in the submission needs a study you can show. Start the file on day one.
Lab to clinic
- Real DICOM, not the tutorial set. Different vendors, missing tags, huge series. That is where parsers and memory blow up.
- PACS / EHR integration. C-STORE / Q/R or DICOMweb that does not corrupt the study. Plan the hook on day one; “we’ll plug it in later” is the usual failure.
- UAT with the people who click. Watch a radiologist use it on a real list. A powerful UI they will not open is a failed product.
| Pitfall | The mistake | The fix |
|---|---|---|
| Tech first | A model in search of a problem | Shadow a reading room. Start from the click they hate. |
| Integration last | “It will just talk to their PACS” | Standards plus vendor quirks, budgeted |
| Unusable power | A 40-click masterpiece | UAT until the fellow can do it without you |
PYCAD builds this when the viewer, the DICOM hook, or the model has to live in a clinic app. Case studies.