XyDromatics VNA Clinical
Archive Totals
DICOM C-STORE SCP
Host
Recent Studies
| Patient ID | Accession | Study Date | Modality | Study UID | Series | Instances |
|---|---|---|---|---|---|---|
| Loading… | ||||||
Study Search
Results
| Patient ID | Accession | Study Date | Modality | Description | Study UID | Series | Instances |
|---|---|---|---|---|---|---|---|
| Enter a search criterion and click Search. | |||||||
DICOM Peers
Remote modalities and PACS systems the Repository interacts with. Sources (inbound ◀) are peers allowed to send us studies via C-STORE. Destinations (outbound ▶) are peers we forward studies to when answering C-MOVE requests from a Query/Retrieve SCU. A single peer can be both.
| Name | AE Title | Host | Port | Direction | TLS | Enabled | Actions |
|---|---|---|---|---|---|---|---|
| Loading… | |||||||
Add Node
Advanced — presentation-context filters (optional)
Installed License
- Loading…
Licensed Features
Upload License
Select a .lic file issued by the Synthology License
Generator. The file is staged, decrypted, and — on successful parse — replaces the active
license. Feature gating is re-evaluated on the next request; no restart is required.
Authentication & SCP
fo-dicom DicomServiceOptions.MaxPDULength. 256 KB reduces association round-trips
for large pixel data (CT/MR/CR); pre-association negotiation will clamp if a peer doesn’t
support it. 0 = use fo-dicom stock 16384. Restart the service to apply.
Archive Catalog Database
- Current engine
- —
- Configured
- —
Changing the archive catalog DB engine or connection string requires a service restart. The SCP will refuse to start until the catalog is reachable.
Object Storage Backend
- Current backend
- —
- S3 secret
- —
- Azure conn string
- —
The archive’s byte store. Local = filesystem under the data directory. S3 = an S3 or S3-compatible object store (AWS S3, Cloudflare R2, Backblaze B2, Wasabi, MinIO) — set an Endpoint for anything other than AWS S3. AzureBlob = Azure Blob Storage; prefer managed identity (no keys on disk) with the account URL, else a connection string. Changing the backend requires a service restart and does not migrate existing objects. Leave a Secret / Connection string blank to keep the stored (sealed) value. Note: on an object-store backend the local-filesystem maintenance passes (integrity bit-rot scan, on-disk OAS rewrite) are skipped — object durability is delegated to the store.
Health
…
SCP Status
…
Archive Counts
…
Study Browser
No search executed yet — fill in any field (or none, to list everything) and click Search.
Document Store
Upload
Documents
Loading…
Batch Import
Queue a server-side folder for import. The background service walks the folder recursively, parses each .dcm file, and ingests through the same path C-STORE uses. License: batch_import. RBAC: manage_document_store.
| Job ID | Folder | Status | Scanned | Ingested | Skipped | Failed | Created |
|---|---|---|---|---|---|---|---|
| No jobs yet. | |||||||
Export
Export up to 10 studies as a single zip (synchronous streaming). For larger batches, use the future Phase 3 job-queue workflow. License: export. RBAC: manage_document_store.
Dedup Analysis
Content-based deduplication scan — scans up to N instances, computes SHA-256, identifies duplicates and reports potential savings. License: dedup. RBAC: view_storage_tiers.
Archive Analytics
Modality Distribution
Loading…
Retention Policies
Configure how long archived studies are kept. Phase 3A ships preview-only mode: policies compute matching study counts but actual deletion is deferred to Phase 3A.2. License: retention. RBAC: view_retention / manage_retention.
| Name | Filter | Age (d) | Enabled | Last Preview | Match / Bytes | Actions |
|---|---|---|---|---|---|---|
| No policies yet. | ||||||
Legal Holds
Lock listed Study Instance UIDs against deletion under retention policies. Active holds override retention sweeps. License: legal_holds. RBAC: view_legal_holds / manage_legal_holds.
| Name | Reason | Studies | Status | Expires | Created | Actions |
|---|---|---|---|---|---|---|
| No holds yet. | ||||||
Storage Tiers
Hot / warm / cold storage-tier catalog + per-study tier assignment. v1 is label-only: moving a study records a real, queryable tier label for its Study Instance UID — the physical byte relocation across storage back-ends is a documented follow-on, so responses report bytes_relocated=false. License: storage_tiers. RBAC: view_storage_tiers / manage_storage_tiers. Non-device software (FD&C Act §520(o)(1)(D)) — operational storage metadata only, no clinical function.
Loading…
Study tier lookup + move
Integrity
Walks the archive catalog + checks each instance's file is present + readable by fo-dicom. Records anomalies as findings. License: integrity. RBAC: view_storage_tiers. Hash-comparison verify is Phase 3B.2 follow-on.
| Finding | Study UID | SOP UID | Path | Details | Detected | |
|---|---|---|---|---|---|---|
| No findings. | ||||||
Patient Merge
Merge audit log
| When | Source | → | Target | Studies | By | Reason |
|---|---|---|---|---|---|---|
| No merges yet. | ||||||
Consolidate patient records across MRN changes or source-system reconciliation. Merging re-keys every archived study from source to target patient_id in one transaction. Un-merge is not available — review carefully before executing. License: patient_merge. RBAC: view_patient_merge / manage_patient_merge.
| Patient ID | Name | Birth | Sex | Studies | Instances | Size | |
|---|---|---|---|---|---|---|---|
| Click Search to load patients. | |||||||
IOCM Rejections
IHE PCC §4.1 Object Change Management. Mark a study, series, or instance as REJECTED with a reason code. Downstream consumers honor active rejections to hide affected objects from clinical workflows. License: iocm. RBAC: view_iocm / manage_iocm.
| Kind | Target UID | Reason | Details | Status | Created | Actions |
|---|---|---|---|---|---|---|
| No rejections. | ||||||
Clinical Reporting
Author a structured report over a study (patient/study identity enriched from the archive), then render it as a standards-based DICOM Structured Report (Comprehensive SR IOD) or HL7 v2 ORU^R01. License: clinical_reporting (Tier-2 lane). RBAC: view_clinical_reports / manage_clinical_reports.
Author a report
Reports
Loading…
Voice Dictation
Dictate a report against a template (or free text), then finalize into a structured clinical report. v1 is TEXT dictation + template merge only — in-product audio capture + speech-to-text (STT) transcription are a documented follow-on (no audio is captured, stored, or transcoded). License: voice_dictation (Tier-2 VNA_CLINICAL_REPORTING lane). RBAC: view_clinical_reports / manage_clinical_reports.
Dictate a draft
Drafts
Loading…
MinReg
Minimal / exception patient-study pre-registration. Register a patient + expected study so the archive can reconcile inbound DICOM against a known record. De-identifies (PSN-) patient identity on register by default — the patient name is pseudonymised to the fleet PSN- token and the birth date coarsened to year, so no raw PHI is persisted by this surface (uncheck De-identify only for an already-pseudonymous feed). Registration records the identity + reconciles against the live catalog (linked once a matching study is archived); it does not ingest pixels — that is the C-STORE / STOW-RS path. RUO where research. License: minreg. RBAC: view_minreg / manage_minreg. Non-device software (FD&C Act §520(o)(1)(D)).
Register a patient / study
Registrations
Loading…
ADT Sync
HL7 Message Inbox
Loading…
Ingest an HL7 message (paste) — requires manage_hl7
C-CDA
On-the-fly Consolidated CDA (C-CDA) Release 2.1 export of a study's patient + imaging-study header, generated from the archive catalog and streamed as application/xml. The generated document is a metadata interoperability artifact — it carries no clinical interpretation and is NOT-FOR-CLINICAL use (a X-Synthology-Non-Device header + not_for_clinical_use flag travel with every export). License: ccda. RBAC: view_document_store (GET-only). Non-device software (FD&C Act §520(o)(1)(D)).
Generate for a study
Recent exports
Loading…
PIR — Patient Information Reconciliation
Detect duplicate-candidate patients (name + DOB heuristics over the archive catalog) and reconcile them by merge (re-key every study from a source patient to a target) — a clerical data-quality aid; every mutation stays under human operator control. Detection is read-only; merge reuses the archive's real merge primitive (+ optional on-disk PS3.3 OAS chain-preserve rewrite). License: pir. RBAC: view_patient_merge / manage_patient_merge. Non-device software (FD&C Act §520(o)(1)(D)).
Find duplicate candidates
Run a scan to list duplicate-candidate groups.
Reconcile (merge source → target)
Reconciliation log
Loading…
MPPS — Modality Performed Procedure Step
Track DICOM Modality Performed Procedure Step records: a step is created IN PROGRESS (N-CREATE-like) and transitions exactly once to COMPLETED or DISCONTINUED (N-SET-like); a final step is immutable (PS3.4 §F.7.2). Scope (honest): this is the record + REST surface — the DICOM DIMSE N-CREATE / N-SET SCP listener (the network service that lets a modality file these over an association) is a documented follow-on and is not built here (dimse_listener reports the boundary). License: mpps. RBAC: view_mpps / manage_mpps. Non-device software (FD&C Act §520(o)(1)(D)).
Create a step (lands IN PROGRESS)
Steps
Loading…
Site-to-Site Replication
Replicate archive instances to one or more peer VNAs via DICOMweb STOW-RS. The replication service polls every 30 seconds, scans for new instances, and POSTs them to each enabled peer. License: replication. RBAC: view_replication / manage_replication.
auth_type=none or bearer. mTLS is not yet accepted — the server-side auth-type whitelist + client-certificate STOW handshake are a Phase 4B.2 follow-on in the shared replication service; the form intentionally does not offer an mTLS option until that lands (submitting it would be rejected). No mTLS field is shown to avoid a broken control.Add / edit peer
Configured peers
| Name | URL | Auth | Modality | Enabled | Replicated | Last success | Last error | Actions |
|---|---|---|---|---|---|---|---|---|
| No peers configured. | ||||||||
Recent jobs
| Status | Peer | SOP UID | Attempts | Queued | Completed | Last error |
|---|---|---|---|---|---|---|
| No replication jobs yet. | ||||||
FHIR R4 Gateway
Read-only FHIR R4 endpoints projecting the archive catalog into ImagingStudy + DiagnosticReport resources. Standard FHIR JSON Bundle responses. License: fhir. RBAC: view_dicomweb.
GET /fhir/metadata— CapabilityStatementGET /fhir/ImagingStudy?patient=...&accession=...&modality=...&started=...GET /fhir/ImagingStudy/{StudyInstanceUID}GET /fhir/DiagnosticReport?patient=...&identifier=...GET /fhir/DiagnosticReport/{AccessionNumber}
Storage Commitment Journal
DICOM Storage Commitment (PS3.4 Annex J) journal — records every N-ACTION-RQ + N-EVENT-REPORT-RQ pair. Status tracks whether the SCP confirmed each requested SOP UID. License: storage_commitments. RBAC: view_storage_commit / manage_storage_commit.
| Transaction UID | Calling AE | SOP Count | Status | Requested | Responded | |
|---|---|---|---|---|---|---|
| No commitment requests recorded. SCP-side wire-up ships in Phase 4A.2. | ||||||
AI Pipeline
AI-vendor-driven ingestion of SR, SC, and SEG DICOM objects. Each vendor authenticates with an opaque API key (X-Ai-Vendor-Key header). The ingest endpoint enforces a per-vendor allowed-SOP-class list. License: ai_pipeline. RBAC: view_study_browser.
POST /api/ai_pipeline/ingestHeader:
X-Ai-Vendor-Key: <vendor's API key>Body:
multipart/form-data with one file (DICOM bytes).Response:
201 on accept; 401 on auth; 415 on disallowed SOP class.
Register vendor
| Name | API Key | Enabled | SOP Classes | Total Ingest | Last Ingest | Actions |
|---|---|---|---|---|---|---|
| No vendors registered. | ||||||
Ingest audit log
| When | Vendor | Status | SOP Class | Study UID | Source IP | Reason |
|---|---|---|---|---|---|---|
| No ingest events yet. | ||||||
Diagnostic Viewer
Read-only image preview. Pick a study, browse instances, adjust window/level. This is a basic, display-only preview for reference; it is not a diagnostic reading tool. License: diagnostic_viewer. RBAC: view_dicom_viewer.
IHE Profiles
Per-profile config for the 5 IHE profiles allowed in Repository mode. Each profile has its own license feature. Status badge: green = licensed + enabled, amber = licensed not enabled, gray = not licensed. RBAC: view_dicomweb (read) / edit_dicomweb (save).
Runtime honesty: only ARI has live runtime today — it is served by the existing DICOMweb QIDO/WADO surface. The other four profiles (Dose Monitoring, SR Viewer, PDQm, SMART) persist config now; their protocol runtime (Dose-SR receive/auto-forward, SR rendering, PDQm proxy, SMART OAuth2 enforcement) is a per-profile follow-on and is not yet active. See the per-row note under each profile.
Migration
One-shot bulk move of studies to a peer destination over DICOM C-STORE (MigrationDispatchService + OutboundScuService — start jobs run, returning 200). License: migration. RBAC: view_destinations / edit_destinations.
Scheduled Send
Cron-scheduled outbound rules. Phase 7 stores rules + cron expressions opaquely; the scheduler runtime ships in Phase 7.A.2. License: scheduled_send. RBAC: edit_destinations.
Smart Routing
Rule-based routing — match predicates (modality, source AE, age) to a destination. Phase 7 stores rules; the new-arrival match hook ships in Phase 7.A.3. License: smart_routing. RBAC: edit_destinations.