SUNSETTED PRODUCT. NO LONGER MAINTAINED: There is a new evolved version of this product, this is now sunsetted.
Please use GoSmart.Health DICOM py Mock Server
DICOMweb Modality Worklist test data generator.
This project is a small Node.js and Express application that generates realistic test worklist entries and exposes them through a DICOMweb-style QIDO endpoint. It is useful when you need test data for PACS, modality, imaging workflow, or demo environments without setting up a full RIS, database, or hospital system.
The app also includes a browser UI for viewing generated worklist entries as a list or as raw JSON.
- Patient names, MRNs, accession numbers, study dates, and DICOM UIDs
- Referring and performing physician names
- Department-specific modalities and reasons for study
- Configurable worklist size and simulated patient flow over time
- Manually added patient-study records for matching external test systems
Generated names are synthetic and based on name lists, not real patient data.
Install dependencies:
yarn installBuild the TypeScript server and browser client:
npm run buildStart the server:
npm startOpen the UI:
http://localhost:3000
Fetch generated studies:
http://localhost:3000/api/studies
Returns generated worklist entries as DICOM-style JSON.
http://localhost:3000/api/studies
Returns a requested number of entries, capped by generator.absoluteMax in
config/appConfig.js.
http://localhost:3000/api/studies?limit=100
Changes the simulated hourly patient generation rate for that request.
http://localhost:3000/api/studies?hourly=25
Returns the configured department, modality, and study reason data.
http://localhost:3000/api/departments
Adds a custom patient-study record to the generated worklist.
Example body:
{
"accession": "ACC12345",
"dob": "1980-01-01T00:00:00.000Z",
"gender": "O",
"mrn": "MRN12345",
"modality": "VL",
"patientName": "SMITH^ALEX",
"reason": "Test encounter",
"studyDate": "2026-05-13T00:00:00.000Z",
"studyUid": "1.2.826.0.1.3680043.10.1000.1"
}Main configuration lives in config/appConfig.js.
Important settings:
generator.defaultMax: default number of generated entriesgenerator.absoluteMax: upper limit for generated entriesgenerator.hourlyPatients: simulated patient turnover per hourgenerator.persistConfig: whether query parameters should persist during the server lifecyclespeedLimit: request slowdown settingsdepartments: active departments, modalities, and reasons for study
Department example:
{
active: true,
department: "CARD",
modalities: ["US", "MR", "DX", "VL"],
reasons: [
"Unstable angina",
"Precordial pain"
]
}Department fields:
active: whether this department participates in generated entriesdepartment: department code or display name, mapped into the DICOM responsemodalities: possible modalities for this departmentreasons: possible study reasons for this department
Common commands:
npm run build
npm test
npm startThe server is written in TypeScript and compiled with the root
tsconfig.json. The browser client is in client and is
bundled with webpack into public/jsd/main.js.
The project currently keeps generated JavaScript files in the repository. After
editing TypeScript, run npm run build so the generated files stay in sync.
Run the full suite:
npm testThe package test command compiles TypeScript first and then runs the compiled JavaScript tests. This keeps the command compatible with current Mocha and Node.js behavior.
For IDEs that run .ts specs directly with ts-node/register, the test files
use CommonJS require bindings so extensionless local imports resolve reliably.
Build an image:
docker build -t dcm-mwl-testgen .Run it:
docker run --rm -p 3000:3000 dcm-mwl-testgenThen open:
http://localhost:3000
List view:
JSON view:
This is intentionally a lightweight test tool. It does not implement the full DICOMweb QIDO query model. Unsupported query parameters are currently ignored.
The goal is to provide useful, realistic-enough worklist data quickly, with a small codebase that is easy to inspect and modify.
Issues, fixes, and small improvements are welcome.
Before submitting a change:
npm run build
npm testPlease keep the project simple and consistent with the existing stack:
- Node.js
- Express
- TypeScript
- Mithril
- webpack
ISC

