Medical middleware for OEMs

DICOM connectivity for imaging devices, ready to integrate.

DicomPulse is a modular C++20 SDK that gives any medical imaging device or system, from C-arms and mobile X-ray to ultrasound, acquisition workstations and gateways, secure DICOM networking, object creation, anonymization and a hash-chained audit trail — developed under an IEC 62304 lifecycle.

  • C++20
  • IEC 62304 Class B
  • TLS 1.3
  • Windows x64
DicomPulse logo: a translucent volume with a heartbeat line crossing it

Transport

Association handling and the full SCU surface, with TLS 1.3 hardening.

Objects

Build DICOM objects from what your device already produces: images, PDFs, video, reports.

Traceability

Encrypted configuration and a hash-chained audit log you can verify.

Between your device and the hospital

DicomPulse sits between your acquisition software and the hospital's PACS. Call the C++ API, or let the Watcher do it from a folder.

With the C++ API

Your device softwareX-ray, ultrasound, workstation
C++ API
DicomPulse SDK
  • IOD Factory
  • Anonymizer
  • Connectivity
  • Audit
  • Configuration
DICOM · TLS 1.3
PACSHospital archive

Or with the Watcher, no code

Files + JSON sidecarPDF, images, video, GSPS, SR
drop in a folder
DicomPulse Watcherbuilt on the SDK
through the SDK · DICOM
PACSHospital archive

One SDK, focused modules

Use only what your product needs. Each module is verified and documented on its own.

Available

Connectivity & Network

C-ECHO, C-STORE, C-FIND, C-MOVE and C-GET over TLS 1.3, with Storage Commitment: wait for the PACS to confirm that an object is archived. SCP listener to receive C-ECHO and C-STORE. Asynchronous operations returning std::future.

Available

IOD Factory

Build native DX, CR, CT, MR and US images, Secondary Capture, Encapsulated PDF, Grayscale Softcopy Presentation State and Comprehensive Structured Report. H.264 MP4 video stored as Video Photographic, Endoscopic or Microscopic objects, without re-encoding. JPEG Lossless, JPEG 2000 and JPEG-LS; lossy is never the default.

Available

Anonymization

PS3.15 Basic Profile de-identification with consistent pseudonyms, UID remapping, optional date shifting and burned-in text warnings.

Available

Audit

Asynchronous, hash-chained logger designed for IEC 62304-traceable operation records.

Available

Configuration

Centralized encrypted JSON profiles for deployment and setup.

On the roadmap

Roadmap

Workflow & Dose

Modality Worklist / MPPS synchronization and RDSR dose reporting are planned modules.

Roadmap

gRPC service

dicompulse-service, a gRPC-oriented daemon for headless orchestration of the SDK.

Integrate in a few lines

The API is plain C++20 and asynchronous: operations return a std::future.

Send to a PACS
DicomPulse::Network::NetworkConfig cfg;
cfg.enableTLS             = true;
cfg.caCertificatePath     = "certs/ca.pem";
cfg.verifyPeerCertificate = true;
cfg.storeMaxRetries       = 2;        // auto-retry

DicomPulse::Network::NetworkManager nm(&logger);
nm.SetNetworkConfig(cfg);

std::vector<std::string> files = { "img001.dcm" };
auto store = nm.SendStorageRequest(
    "CALLING_AET", "PACS_AET", "192.168.1.10", 11112, files);
DicomPulse::Status status = store.get();
De-identify a file
DicomPulse::Anonymization::Anonymizer anonymizer(&logger);

DicomPulse::Anonymization::AnonymizationOptions options;
// secret: at least 16 characters
options.pseudonymSecret = secretFromSecureStore;
options.shiftDates      = true;  // keep intervals
anonymizer.SetOptions(options);

DicomPulse::Anonymization::AnonymizationResult result;
DicomPulse::Status status =
    anonymizer.AnonymizeFile("in.dcm", "out.dcm", &result);
if (status == DicomPulse::Status::BurnedInTextWarning) {
    // pixels may contain patient text: review it
}

Excerpts. The full API is described in the SDK documentation.

Reference application

DicomPulse Watcher

A hot-folder service, built on the SDK, that turns files dropped in an inbox into DICOM objects and forwards them to one or more PACS. No code to write: configure it, drop files in, and it delivers.

  • PDF, JPEG/PNG/BMP/TIFF and H.264 video with a JSON sidecar
  • GSPS and Structured Reports built from JSON sidecars
  • Routing to several PACS: single, failover or broadcast, with retries
  • Optional anonymized copy for selected destinations
  • Optional Storage Commitment per destination, with a check of each PACS
  • Runs as a Windows service or a console process, with encrypted configuration
  • Tray app with live status and job history; hash-chained audit log
  1. Inboxfile + JSON sidecar
  2. ConvertSecondary Capture, PDF, SR, GSPS, video
  3. DispatchC-STORE to PACS, with retry
  4. Commit & recordStorage Commitment, job history, audit

What anonymization changes

A de-identified copy follows the DICOM PS3.15 Basic Profile. Example with fictitious data.

AttributeOriginalDe-identified copy
Patient's NameROSSI^MARIODP3F9A1C07B2E45D81
Patient IDPAT-9910DP3F9A1C07B2E45D81
Patient's Birth Date19750312removed
Study Date2026101420260916 (shifted, optional)
Study Instance UID1.2.840.113619.2.55.3…2.25.1840273…
Institution NameOspedale San Marcoremoved
Referring PhysicianBIANCHI^LUCAremoved
Private attributes(0009,1001) vendor dataremoved
Body Part ExaminedCHESTCHEST (kept)
KVP7070 (kept)
Pixel Dataunchangedunchanged
Patient Identity Removed—YES
  • The same patient always gets the same pseudonym, so later studies stay linked.
  • References between objects (a GSPS or SR and its images) stay consistent.
  • Pixels are never modified: images that may carry burned-in patient text are flagged, not edited.

Built for regulated environments

DicomPulse is developed as a Class B software item. The lifecycle documentation set is part of the product.

IEC 62304 lifecycle

Intended use, safety classification, development plan, requirements, architecture, risk management, FMEA, verification and validation reports, and a traceability matrix.

Cybersecurity

Vulnerability analysis and a maintained SBOM, TLS 1.3 transport and encrypted configuration.

Intended use. DicomPulse is middleware for data exchange and DICOM object creation. It does not perform diagnosis or image interpretation and does not alter the clinical content of images.

Any imaging system that needs DICOM

X-ray systems

C-arms and mobile units: send acquisitions and reports to the hospital PACS.

Ultrasound and other modalities

Create DX, CR, CT, MR and US images and deliver them reliably, with retry and failover.

Acquisition workstations

Embed DICOM transport and object creation in your own software.

Gateways and ingestion

Convert files from other sources (PDF, images, video) into DICOM with the Watcher.

Integrate DicomPulse in your device

Tell us about your product and we will walk you through the SDK and its documentation set.