DICOM middleware per l'imaging medicale

Connettività DICOM per dispositivi di imaging, pronta da integrare.

DicomPulse è un SDK C++20 modulare che offre a qualsiasi dispositivo o sistema di imaging medicale, dagli archi a C e RX mobili agli ecografi, dalle workstation di acquisizione ai gateway, rete DICOM sicura, creazione di oggetti, anonimizzazione e un audit trail con hash a catena, sviluppato secondo un ciclo di vita IEC 62304.

  • C++20
  • IEC 62304 Class B
  • TLS 1.3
  • Windows x64
Logo DicomPulse: un volume trasparente attraversato da una linea di battito

Trasporto

Gestione delle associazioni e superficie SCU completa, con TLS 1.3.

Oggetti

Crea oggetti DICOM da ciò che il tuo dispositivo già produce: immagini, PDF, video, referti.

Tracciabilità

Configurazione cifrata e un log di audit con hash a catena, verificabile.

Tra il tuo dispositivo e l'ospedale

DicomPulse sta tra il software di acquisizione e il PACS dell'ospedale. Usa le API C++, oppure lascia che sia il Watcher a farlo da una cartella.

Con le API C++

Software del tuo dispositivoRX, ecografia, workstation
API C++
DicomPulse SDK
  • IOD Factory
  • Anonimizzazione
  • Connettività
  • Audit
  • Configurazione
DICOM · TLS 1.3
PACSArchivio ospedaliero

Oppure con il Watcher, senza codice

File + sidecar JSONPDF, immagini, video, GSPS, SR
deposita in una cartella
DicomPulse Watchercostruito sull'SDK
tramite l'SDK · DICOM
PACSArchivio ospedaliero

Un SDK, moduli mirati

Usa solo ciò che serve al tuo prodotto. Ogni modulo è verificato e documentato singolarmente.

Disponibile

Connettività e rete

C-ECHO, C-STORE, C-FIND, C-MOVE e C-GET su TLS 1.3, con Storage Commitment: attende la conferma del PACS che l'oggetto è archiviato. Listener SCP per ricevere C-ECHO e C-STORE. Operazioni asincrone che restituiscono std::future.

Disponibile

IOD Factory

Crea immagini native DX, CR, CT, MR e US, Secondary Capture, Encapsulated PDF, Grayscale Softcopy Presentation State e Comprehensive Structured Report. Video H.264 MP4 salvati come oggetti Video Photographic, Endoscopic o Microscopic, senza ricodifica. JPEG Lossless, JPEG 2000 e JPEG-LS; la compressione con perdita non è mai predefinita.

Disponibile

Anonimizzazione

De-identificazione secondo il Basic Profile PS3.15, con pseudonimi coerenti, rimappatura degli UID, spostamento date opzionale e avvisi sul testo incorporato nei pixel.

Disponibile

Audit

Logger asincrono con hash a catena, pensato per registrazioni operative tracciabili secondo IEC 62304.

Disponibile

Configurazione

Profili JSON cifrati e centralizzati per deployment e setup.

In roadmap

Roadmap

Workflow e dose

Sincronizzazione Modality Worklist / MPPS e report di dose RDSR sono moduli pianificati.

Roadmap

Servizio gRPC

dicompulse-service, un demone basato su gRPC per l'orchestrazione headless dell'SDK.

Integra in poche righe

Le API sono C++20 e asincrone: le operazioni restituiscono un std::future.

Invia a un PACS
DicomPulse::Network::NetworkConfig cfg;
cfg.enableTLS             = true;
cfg.caCertificatePath     = "certs/ca.pem";
cfg.verifyPeerCertificate = true;
cfg.storeMaxRetries       = 2;        // ritentativi automatici

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-identifica un file
DicomPulse::Anonymization::Anonymizer anonymizer(&logger);

DicomPulse::Anonymization::AnonymizationOptions options;
// segreto: almeno 16 caratteri
options.pseudonymSecret = secretFromSecureStore;
options.shiftDates      = true;  // mantiene gli intervalli
anonymizer.SetOptions(options);

DicomPulse::Anonymization::AnonymizationResult result;
DicomPulse::Status status =
    anonymizer.AnonymizeFile("in.dcm", "out.dcm", &result);
if (status == DicomPulse::Status::BurnedInTextWarning) {
    // i pixel possono contenere testo del paziente: verificare
}

Estratti. Le API complete sono descritte nella documentazione dell'SDK.

Applicazione di riferimento

DicomPulse Watcher

Un servizio a cartella sorvegliata, costruito sull'SDK, che trasforma i file depositati in una inbox in oggetti DICOM e li inoltra a uno o più PACS. Nessun codice da scrivere: lo configuri, depositi i file e li consegna.

  • PDF, JPEG/PNG/BMP/TIFF e video H.264 con sidecar JSON
  • GSPS e Structured Report generati da sidecar JSON
  • Instradamento verso più PACS: singolo, failover o broadcast, con ritentativi
  • Copia anonimizzata opzionale per le destinazioni scelte
  • Storage Commitment opzionale per destinazione, con verifica di ogni PACS
  • Funziona come servizio Windows o processo console, con configurazione cifrata
  • App nella tray con stato in tempo reale e storico dei job; log di audit con hash a catena
  1. Inboxfile + sidecar JSON
  2. ConversioneSecondary Capture, PDF, SR, GSPS, video
  3. InvioC-STORE al PACS, con ritentativi
  4. Conferma e registroStorage Commitment, storico job, audit

Cosa cambia con l'anonimizzazione

Una copia de-identificata segue il Basic Profile DICOM PS3.15. Esempio con dati fittizi.

AttributoOriginaleCopia de-identificata
Patient's NameROSSI^MARIODP3F9A1C07B2E45D81
Patient IDPAT-9910DP3F9A1C07B2E45D81
Patient's Birth Date19750312rimosso
Study Date2026101420260916 (spostata, opzionale)
Study Instance UID1.2.840.113619.2.55.3…2.25.1840273…
Institution NameOspedale San Marcorimosso
Referring PhysicianBIANCHI^LUCArimosso
Private attributes(0009,1001) dati del costruttorerimossi
Body Part ExaminedCHESTCHEST (mantenuto)
KVP7070 (mantenuto)
Pixel Datainvariatiinvariati
Patient Identity Removed—YES
  • Lo stesso paziente riceve sempre lo stesso pseudonimo, così gli esami successivi restano collegati.
  • I riferimenti tra oggetti (un GSPS o un SR e le sue immagini) restano coerenti.
  • I pixel non vengono mai modificati: le immagini che possono contenere testo impresso sono segnalate, non modificate.

Pensato per ambienti regolamentati

DicomPulse è sviluppato come elemento software di Classe B. La documentazione del ciclo di vita fa parte del prodotto.

Ciclo di vita IEC 62304

Destinazione d'uso, classificazione di sicurezza, piano di sviluppo, requisiti, architettura, gestione del rischio, FMEA, report di verifica e validazione e matrice di tracciabilità.

Cybersecurity

Analisi delle vulnerabilità e SBOM mantenuto, trasporto TLS 1.3 e configurazione cifrata.

Destinazione d'uso. DicomPulse è un middleware per lo scambio di dati e la creazione di oggetti DICOM. Non esegue diagnosi né interpretazione di immagini e non altera il contenuto clinico delle immagini.

Qualsiasi sistema di imaging che usa il DICOM

Sistemi a raggi X

Archi a C e RX mobili: invia acquisizioni e referti al PACS ospedaliero.

Ecografia e altre modalità

Crea immagini DX, CR, CT, MR e US e consegnale in modo affidabile, con ritentativi e failover.

Workstation di acquisizione

Integra trasporto DICOM e creazione di oggetti nel tuo software.

Gateway e acquisizione dati

Converti file di altre fonti (PDF, immagini, video) in DICOM con il Watcher.

Integra DicomPulse nel tuo dispositivo

Raccontaci il tuo prodotto: ti guideremo tra SDK e documentazione.