RadORU Hub

Admin Login

Change Default Password

Please update the admin password before continuing.

RadORU Hub
Checking health...
warning You must change the default password before using other tabs.

Total Ingested

--

Last Ingested

--

Lookup

Endpoints: /oru/{accession} and /Observation?identifier=

Result

Lookup response

No lookup yet.

Version History

--

Current Version --
Status: --
MRN: --
Date: --
Modality: --
Ingested: --

No previous versions.

Version -- Details

Status: --
MRN: --
Date: --
Modality: --
--

Paste ORU to Ingest

Saves and indexes immediately

upload
Accession will be parsed from your configured field mapping.

API Key

Adds X-API-Key to all requests. Store locally and optionally set server-side.

vpn_key
Enter API key to sign requests. Server enforcement is off.

Change Password

Recommended after first login.

password
Change from the default admin/admin.

Admin Reset Password

Reset any user and require change on next login.

lock_reset
Admin action only.

Mirth Channel Config

Destination host and port for MLLP send

lan
Loading config...

Ingestion Field Mapping

Segment / field / component used to parse accession, MRN, date, modality

tune

Accession

Patient MRN

Study Date

Modality

Result Status (Addendum Handling)

If an Addendum exists and a Final arrives later, the Addendum is preserved.

Facility (Resend & Export grouping)

MSH-4 is the sending facility (e.g. hl7_bsa-hospital). Change the mapping, then backfill to re-derive stored messages.

Read Time & Radiologist (Analytics)

Read time

Radiologist

OBR-36.1 holds the read timestamp (e.g. 20240927163500); OBR-32.2 holds the reading radiologist's surname. Names are stored and shown in capitals. Save, then re-run the backfill on the Analytics tab to re-derive stored messages.

Loading mapping...

Resend & Export

Select stored reports by study date and sending facility

forward_to_inbox

Study date range

Facilities

Loading facilities...

No selection = every facility. Facility comes from MSH-4 (sending facility).

Choose a range and preview the matching reports.

Matching Reports

No preview yet

Preparing resend...

Accession Facility MRN Study Date Modality Status

Exams Read

Volume by read time (OBR-36), not study date or ingest time

insights

Read date range

Quick ranges

Years
Loading…

Group by

Choose a range and apply.

Exams Read

--

 

Radiologists

--

 

Busiest Hour

--

 

Read Data Coverage

--

 

Exams read per month

No data yet

Period Exams Read

By Radiologist

Active days is the number of distinct days with at least one read

Radiologist Exams Read Share Active Days Per Active Day First Read Last Read

Historical Backfill

Derives read time and radiologist from stored HL7 for messages ingested before these fields existed

history

Checking backfill status…

Runs once automatically on first start after upgrading. Re-run after changing the read-time or radiologist field mapping.

Activity Monitor

Recent ingests, queries, and sends

Action Accession MRN Modality When

Validation Rules

Configure HL7 validation rules

Define required/format/regex validations per HL7 segment/field/component.

Data Completeness Report

Overview of missing data across messages

Total Messages

--

Missing MRN

--

Missing Date

--

Completeness

--

API Overview

Auth, ingestion, validation, metrics, and config

api

Auth

POST /auth/login {username, password, remember_me?}
POST /auth/change-password {current_password, new_password}
POST /auth/reset-password {username, new_password, force_change?}
GET  /auth/me
GET  /auth/api-key
POST /auth/api-key {api_key|null}

Send `X-Auth-Token` (from login) and optional `X-API-Key`.

Ingest & Retrieve

POST /ingest {raw_hl7, accession?, patient_id?, study_date?, modality?}
POST /ingest/batch [...]
GET  /oru/{accession}
GET  /Observation?identifier={accession}
POST /send/{accession}
GET  /stats
GET  /activity

Ingestion validates HL7 structure, checks duplicates, and runs rules.

Config & Mapping

GET  /config
POST /config {host, port, timezone}
GET  /ingestion-config
POST /ingestion-config {accession_segment, accession_field, ...}

Timezone sets display TZ for dashboard times.

Validation & Versions

GET  /validation/rules
POST /validation/rules {rule_name, rule_type, target_segment, target_field, ...}
DELETE /validation/rules/{id}
GET  /validation/report/{accession}
GET  /validation/completeness

GET  /oru/{accession}/versions
GET  /oru/{accession}/diff/{v1}/{v2}

Rule types: required_accession (primary/alt), required_field, format, custom_regex.

Reports (Bulk Resend & Export)

GET  /facilities?start_date=&end_date=
GET  /reports?start_date=02/24/2026&end_date=08/04/2026&facility=hl7_bsa-hospital&facility=hl7_bsa-ucc&limit=100&offset=0
GET  /reports/export?format=csv|ndjson|zip&start_date=&end_date=&facility=
POST /reports/resend {start_date, end_date, facilities[], modalities[], result_statuses[], accessions[], delay_ms?, reuse_connection?, limit?}
GET  /reports/resend?limit=10
GET  /reports/resend/{job_id}
POST /reports/resend/{job_id}/cancel
POST /reports/backfill-facility

Dates accept YYYY-MM-DD or MM/DD/YYYY; `facility` repeats or comma-separates, and `__none__` selects messages with no facility. Resend runs as a background job — poll it for progress.

Analytics (exams read)

GET  /analytics/summary?start_date=&end_date=&facility=&modality=&radiologist=
GET  /analytics/reads?group_by=hour|day|week|month|quarter|year|hour_of_day|day_of_week
                      |radiologist|modality|facility|result_status
GET  /analytics/radiologists?limit=500
GET  /analytics/export?view=series|radiologists&group_by=month   (CSV)
GET  /analytics/backfill
POST /analytics/backfill?restart=true
POST /analytics/backfill/cancel

Buckets on the read time (OBR-36.1), stored as the sender's local wall clock — not study date and not ingest time. Radiologist comes from OBR-32.2 and is stored uppercase, so filters and grouping are case-insensitive. Addenda are excluded from read counts unless include_addenda=true.

Metrics

GET /metrics/ingestion-rate?hours=24
GET /metrics/modality-distribution
GET /metrics/send-success-rate?days=7

Used by dashboard charts; extend with Prometheus or alerts as needed.

RadORU Hub v1.0.3

Mark Jones • 2025