Skip to content

πŸ§ͺ Hands-on DICOM integration examples using InterSystems IRIS for Health and dcm4che simulator. Store, query, retrieve, and manage WorkLists with Docker.

License

Notifications You must be signed in to change notification settings

intersystems-ib/workshop-iris-dicom-interop

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

28 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ§ͺ Simple DICOM Integration with InterSystems IRIS for Health + dcm4che Simulator

License Docker Ready VS Code Compatible Maintained InterSystems IRIS

This repository provides hands-on examples of DICOM integration using InterSystems IRIS for Health and the dcm4che DICOM simulator.

You'll find:

  • A working IRIS production for handling DICOM messages
  • Tools to simulate common DICOM workflows (store, query, retrieve)
  • A sample WorkList scenario integrated with a MySQL database

Perfect for testing, learning, or building healthcare imaging integrations.


🧰 Requirements

To run this project, you’ll need:


πŸš€ Getting Started

Once you’ve got Docker installed, you can get up and running with:

docker-compose build
docker-compose up -d

That's it β€” you're ready to dive in!


🧭 Explore the IRIS Production

Open the DICOM production interface in your browser:

πŸ‘‰ DICOM.Production
πŸ” Credentials: superuser / SYS


πŸ“₯ Use Case 1: Receiving DICOM with Embedded PDF

Description: A DICOM file containing a PDF report is received by IRIS. The system extracts metadata from the DICOM header (e.g. patient name, study ID) and stores both the PDF and metadata in another system (like an EHR or document store).

How to run it:

  1. Open a shell in the tools container:

    docker exec -it tools bash
  2. Generate a DICOM file with embedded PDF:

    ./pdf2dcm -f /shared/pdf/metadata.xml -- /shared/pdf/sample.pdf /shared/pdf/embeddedpdf.dcm
  3. Send it to IRIS:

    ./storescu -b DCM_PDF_SCP -c IRIS_PDF_SCU@iris:2010 /shared/pdf/embeddedpdf.dcm
  4. πŸ“¨ Check the messages in IRIS:
    πŸ‘‰ Message Viewer


πŸ” Use Case 2: Query / Retrieve (C-FIND / C-MOVE)

Description: IRIS queries a PACS using a DICOM C-FIND to locate imaging studies, then uses C-MOVE to retrieve one of the matching documents.

Querying with C-FIND

  1. Open the tools container:

    docker exec -it tools bash
  2. Inspect a DICOM file:

    ./dcmdump /shared/dicom/d1I00001.dcm
  3. Create the DICOMDIR database:

    ./dcmdir -c /shared/DICOMDIR --fs-id SAMPLEDICOMS --fs-desc /shared/dicom/descriptor /shared/dicom
  4. Start the simulated archive:

    ./dcmqrscp --ae-config /shared/ae.properties -b DCM_QRY_SCP:3010 --dicomdir /shared/DICOMDIR
  5. Connect to IRIS:

    docker exec -it iris bash
    iris session iris
  6. Run the C-FIND:

    do ##class(DICOM.BS.QueryService).TestFind()

    πŸ‘‰ View results in QueryService Messages

Retrieving with C-MOVE

  1. Request a study using C-MOVE:

    do ##class(DICOM.BS.MoveService).TestMove()

    πŸ‘‰ Track the transfer:
    MoveService |
    DICOM Store In


πŸ“‹ Use Case 3: WorkList Management (C-FIND + SQL)

Description: An imaging device sends a C-FIND request to IRIS to retrieve scheduled studies. IRIS queries an external MySQL database, builds the WorkList response, and sends it back.

πŸ›’οΈ Check the external MySQL WorkList DB

  1. Enter the MySQL container:

    docker exec -it mysql bash
    mysql --host=localhost --user=testuser testdb -p  # Password: testpassword
  2. View WorkList data:

    SELECT * FROM WorkList;

πŸ“‘ Request the WorkList using C-FIND

  1. Open the tools container:

    docker exec -it tools bash
  2. Send a WorkList query:

    ./findscu -b DCM_WL -c IRIS_WL@iris:1112 -m StudyDate=20250404

🧠 See how IRIS handled it

πŸ‘‰ Check DICOM WL Find In Messages


🌐 Use Case 4: Store Document over the Web

Description: An imaging device sends an image over HTTP using a STOW-RS (HTTP POST) request to IRIS, which receives, extracts, and processes the DICOM image.

  1. Open the tools container:

    docker exec -it tools bash
  2. Send a DICOM image using STOW-RS:

    ./stowrs --url http://iris:52773/dicom/studies /shared/dicom/d1I00001.dcm
  3. In IRIS, check the received message in the DICOM REST Service Messages


πŸŽ‰ You're All Set!

You now have a fully working, simulated DICOM integration lab using IRIS for Health and dcm4che. Use it to learn, test, build prototypes β€” and have fun doing it!


πŸ“š Learn More

About

πŸ§ͺ Hands-on DICOM integration examples using InterSystems IRIS for Health and dcm4che simulator. Store, query, retrieve, and manage WorkLists with Docker.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • ObjectScript 96.5%
  • Dockerfile 2.8%
  • Shell 0.7%