Role: Public view
Optional: sign in with your Guardian employee email to use features scoped to your role. Public access remains available without signing in when enabled in Admin settings.
If that address is eligible, we sent a sign-in link. Check your inbox and follow the link to continue.
| Model Name | Version | Access | 🚦 | Modalities | Body Parts | CPT | Avg time (30d) | |
|---|---|---|---|---|---|---|---|---|
| Loading model details... | ||||||||
One model_portfolio row per model (zauron_id). If a row already exists, save does nothing. Optionally pick a procedure type to seed CPT / modality / body part.
Select one or more ICD-10 codes (each must exist in exam_diagnosis). The server creates one new portfolio row per code, copying CPT, modality, body part, thresholds, flags, exclusions, and age gates from the source row. Duplicate rows are skipped with a summary.
Each section below is combined with AND. Inside a section, multiple checked values are combined with OR (e.g. any selected diagnosis ICD, any selected modality). The count is distinct exams in the last 30 days that have an AI detection for this model and satisfy inclusion + diagnosis filters (CPT / modality / body part follow the same rules as CV matching). ICD exclusions are for the discrepancy workflow and are not applied to this count.
What studies should this model run on: optional procedure type (CPT + description) multiselect, plus modality and body-part filters. Leave a dimension empty to allow any value there.
Unique ICD-10 codes that have appeared on ai_detection_event for this model (all time), with descriptions from exam_diagnosis when available. Each portfolio row accepts at most one ICD mapped to accepted_icd10_codes (empty = no ICD filter on the assurance view). Use row-level Fork to create multiple rows with different ICDs. Saving requires the code to exist in exam_diagnosis.
Pick any number of ICD-10 codes below. Fork creates one new row per code with the source row's CPT, modality, body part, thresholds, exclusions, flags, concept name, and age gates; duplicates are skipped.
| ICD-10 | Description | Events | |
|---|---|---|---|
| Open editor to load ICD list… | |||
ICD-10 codes with description (search multiselect, same master list as Mappings). Used as complicating diagnoses for the discrepancy LLM — not for CV routing.
| ICD-10 | Description | |
|---|---|---|
| Open editor to load ICD list… | ||
| Assessment | Date | Status | Progress | Sensitivity | Specificity | PPV |
|---|
| Metric | Automated (Model Zoo cohort) |
Manual Review (Data-Forge) |
Delta |
|---|
| Pred + | Pred - | |
| Actual + | - | - |
| Actual - | - | - |
| Pred + | Pred - | |
| Actual + | - | - |
| Actual - | - | - |
Counts reflect the selected model, ICD code, date range, and optional modality / body-part / CPT filters. Confidences are read from ai_detection_event.conf (not the detection view).
Cohort
Distinct exams that have at least one ai_detection_event row for the chosen zauron_id, with exam_event.datetime_processed inside the selected range (and matching procedure filters when set).
AI predicted positive vs negative
For the selected ICD, consider all detection rows for that exam and model. Let the maximum confidence for that ICD be max_conf. The exam is AI-positive if max_conf ≥ current Prediction Threshold; if there is no row for that ICD, max_conf is treated as absent and the exam is AI-negative.
Actual positive vs negative (reference standard)
Actual-positive if the radiologist assigned that ICD on the exam in exam_event_diagnosis, or any ai_detection_event row for this model and ICD has discrepancy_override true (discrepancy agent affirmed the finding is documented in the report, including equivalent narrative). Otherwise actual-negative.
Cells
Sign in with your Guardian employee email (header) to view and edit your AI notification preferences.
Loading…
| Order ID | Accession | Procedure Name | Assigned To | Est. Time (min) | Order Date |
|---|---|---|---|---|---|
| Loading worklist... | |||||
Filters below were filled or merged from your search query; you can edit them before searching again.
| Procedure description | AI findings | Matching text | Actions | |
|---|---|---|---|---|
| Use filters above and click Search | ||||
Measure inventory and analytics. Row Yes / No / Total reviewed counts (and success %) use the server lookback window
(GUARDIAN_QUALITY_LOOKBACK_DAYS, default 30 days), not all-time. Creating or re-enabling a measure starts AI evaluation immediately; the inventory refreshes every few seconds while backfill runs. Expanded metrics use a single Period control (Week, Month, Quarter, Year, or Custom days); the default Week view uses the same lookback window as the collapsed row. By default only active measures are listed; use Show to include inactive or all.
Define a single yes/no clinical question and modality / CPT / body-part criteria. Only exams already processed by the structuring LLM are eligible.
The AI Quality Agent and per-exam evaluation use prompts stored in the database (quality_measure_disambiguation, quality_measure_agent).
Pooled discrepancy worklist for preliminary peer reviews. Reviewers with Community Watch enabled who also have a radiologist, champion, or trainee role can claim and submit preliminary reviews; others with tab access can browse cases read-only. Cases disappear from the worker pool once someone opens a case until they submit a prelim, release manually, or close the viewer tab without submitting.
| Open | Procedure | Findings | Impact | Exam time | Model |
|---|---|---|---|---|---|
| Loading... | |||||
Cases you authored that were flagged for possible discrepancy (LLM-confirmed or picker-discrepant). Open launches self-review so you can rate AI detections with thumbs — this does not claim a Community Watch pool case.
| Open | Procedure | Findings | Impact | Exam time | Model |
|---|---|---|---|---|---|
| Loading... | |||||
Enter an accession number to flag a case for peer review. If the accession is not in Guardian yet, the server retrieves the final report from your configured reporting source (PowerScribe, FHIR, DB, or DICOM precache, depending on deployment) before opening the case (this may take a few seconds).
Enter the admin password to access the admin panel. For access problems, contact support@zauronlabs.com.
Host and integration snapshot from the informatics service. TLS certificate expiry is shown on each module card. Passwords are never displayed.
Compare template variables to your customer env. Absent keys are missing entirely (not set and not commented). Present keys appear in the customer file as an active assignment or a commented KEY= line. Values are never shown.
| Variable | Status | Template section | Template line |
|---|---|---|---|
| Authenticate to load audit. | |||
Email when database, LLM, Azure Container Registry, disk usage, or module TLS certificates cross configured thresholds. LLM is probed every ~60 s; an alert requires at least 50% failed checks in the interval below—not a single bad ping. Disable temporarily during maintenance, then re-enable when done.
| Condition | Current status |
|---|---|
| Authenticate to load alert status. | |
| Category | Success | Error | Total |
|---|---|---|---|
| Authenticate to load counts. | |||
Counts from guardian_activity_log.
Emails: orchestrator and viewer outbound sends.
Flag Case: lookup, deep links, and dashboard flag-case submit (accession / submitter / review_event).
Review Submit: OHIF viewer peer review (peer_review_submit).
Click a count to open Admin → Logs with matching filters.
| Container | Version | Image | Image digest | Status |
|---|---|---|---|---|
|
data-generator 7905545c15a5 |
latest | sandbox-data-generator:latest |
2e4992463a73…
|
● running (healthy) |
|
dataflow-simulator 9f5edf618d77 |
latest | sandbox-dataflow-simulator:latest |
30f5bc6c4bc9…
|
● running |
|
docker-radbert-embedding-1 0ce44d51e6a0 |
latest | zauron.azurecr.io/guardian-radbert-embedding:latest |
6615a200a15b…
|
● running (healthy) |
|
epic-fhir-site1 6c175df8a9e2 |
latest | sandbox-epic-fhir-site1:latest |
125e7d9faffb…
|
● running (healthy) |
|
epic-fhir-site2 5a4ddc624f26 |
latest | sandbox-epic-fhir-site2:latest |
c352dafec506…
|
● running (healthy) |
|
guardian-dataforge-backend 21e26eeacb00 |
6.16.3 | zauron.azurecr.io/dataforge-backend:6.16.3 |
ebb6139c1e49…
|
● running |
|
guardian-dataforge-frontend 9fe9ba497d48 |
6.16.3 | zauron.azurecr.io/dataforge-frontend:6.16.3 |
ec79f25bb0a8…
|
● running |
|
guardian-dataforge-inference-worker 7a9eac92dd36 |
6.15.6 | zauron.azurecr.io/dataforge-backend:6.15.6 |
5519ef726a7e…
|
● running |
|
guardian-dataforge-nginx 7fa6b10640a5 |
alpine | nginx:alpine |
b3c656d55d7a…
|
● running |
|
guardian-dataforge-sam2-assist e901d214f585 |
latest | zauron.azurecr.io/dataforge-sam2-assist:latest |
037c5bc23034…
|
● running (healthy) |
|
guardian-db-backup ab2456eb3311 |
latest | zauron.azurecr.io/guardian-orchestrator:latest |
2ad50185c7a0…
|
● running (healthy) |
|
guardian-orchestrator bd402fa69210 |
latest | zauron.azurecr.io/guardian-orchestrator:latest |
ef1829ed11f8…
|
● running (healthy) |
|
guardian-traefik 75fdd8e21044 |
latest | zauron.azurecr.io/guardian-traefik:latest |
2f01a65fdbf9…
|
● running (healthy) |
|
guardian-viewer 03e895960f12 |
latest | zauron.azurecr.io/guardian-viewer:latest |
92a7d07cafd7…
|
● running (healthy) |
|
guardian_cv_model_efd21407cdc3cd85 f051548f6006 |
2026-07-05 | zauron.azurecr.io/breast-cancer-multitask:2026-07-05 |
892592c2d075…
|
● running (healthy) |
|
orthanc-pacs-1 84e31a819098 |
latest | jodogne/orthanc-plugins:latest |
fbd5e3747430…
|
● running (healthy) |
|
orthanc-pacs-2 830473a22084 |
latest | jodogne/orthanc-plugins:latest |
fbd5e3747430…
|
● running (healthy) |
|
powerscribe-site1 9ff621f5053d |
latest | sandbox-powerscribe-site1:latest |
a274f056ac3a…
|
● running (healthy) |
|
powerscribe-site2 9dfa6c8a19cf |
latest | sandbox-powerscribe-site2:latest |
2944d23288ad…
|
● running (healthy) |
|
sandbox-ldap 9f36e548b74d |
1.5.0 | osixia/openldap:1.5.0 |
18742e9c449c…
|
● running (healthy) |
|
sandbox-ldap-ui cdd286541e17 |
latest | sandbox-sandbox-ldap-ui:latest |
41900b9e067f…
|
● running (healthy) |
|
sandbox-ohif 0e56879be0a0 |
local | sandbox-ohif:local |
ff4390354eb0…
|
● running (healthy) |
|
sandbox-postgres c1df994f9e1c |
15 | postgres:15 |
822f8795764a…
|
● running (healthy) |
|
sandbox-proxy d5b167bd6f32 |
alpine | nginx:alpine |
b3c656d55d7a…
|
● running |
Name |
Role |
EmailAddress |
PickerActive |
EmailActive |
SelfDiscrepancy |
CommunityWatch |
ExpiryAccess |
Actions |
|---|---|---|---|---|---|---|---|---|
| Authenticate to load users... | ||||||||
Exams matching these criteria will NOT be assigned to this employee. An exam is excluded if ALL non-null criteria match.
First-dibs routing during picker random and discrepant assignment. An exam matches a pathway when all non-empty criteria match (CPT, body part, modality, ICD-10, age). CPT competency still applies separately. Rules aggregate across linked employee records with the same email.
Explicit inclusions that bypass CPT qualification requirements. An exam matches if ALL non-null criteria match.
| Name | Description | Actions |
|---|---|---|
| Loading... | ||
| Name | Description | Actions |
|---|---|---|
| Loading... | ||
| Procedure Description | Procedures (CPT / Body Part / Modality) | LLM instructions | Actions |
|---|---|---|---|
| Authenticate to load procedure types... | |||
| ICD-10 Code | Description | Impact Weight | Source | Actions |
|---|---|---|---|---|
| Authenticate to load ICD-10 codes... | ||||
| Study ID | Accession | Employee | Exam Performed | Assigned | Procedure Description | Sampling | AI Events | Actions |
|---|
| Study ID | Accession | Employee | Exam Performed | Assigned Batch | Sampling | Procedure Description | AI Events | Actions |
|---|
| Study ID | Accession | Reviewer | Exam Performed | Determination | Comments | Completed | Procedure Description | Sampling | AI Events | Actions |
|---|
Search by Guardian Study ID (exam_event.study_event_id). View QC state (Incomplete / Future / Complete), open the viewer, then reset imaging to run the same pipeline as scripts/reprocess_study_events.py (cache + DICOMweb cleanup, DB timestamps, download priority).
How each radiologist scores the cases assigned to them for peer review
How others scored each radiologist's authored cases during peer review
Flag case, peer review, interesting-case feedback, notification rules, and outbound emails. Search by user name or email (autocomplete). Use 📄 to open the log message, email body, and other stored details.
| Time (UTC) | Event | Status | Source | Accession | User | Employee ID | Review ID | Details |
|---|---|---|---|---|---|---|---|---|
| Authenticate in Admin, then open this tab to load logs. | ||||||||
Uncheck all days to disable the automated picker (no scheduled assignment emails). Manual send in the Send Assignments card still works. Peer picker emails go only to users with champion, radiologist, or trainee roles (not admin-only; admin+champion still receives).
Cap how many great-call links appear in Peer — scheduled picker notice
(greatCallsSection).
The send path prefers the last 7 days; if fewer than this maximum qualify, it fills the remainder from great calls in the last 30 days (still capped at this number).
Controls the optional sections in Peer — scheduled picker notice to reviewers. "For You" uses CPT inclusion rules like the picker (no fallback). If none qualify, that section is omitted. "Global" lists top cases by interesting score. Use Save interesting cases below (independent of schedule).
Merge fields: interestingCasesForYouSection,
interestingCasesGlobalSection,
or legacy interestingCasesSection (both combined).
Subject line is plain text (merge tokens only). Message body: Visual mode uses TinyMCE — use toolbar CTA to insert standard email-safe button HTML, or Source code for raw HTML. Merge tokens must stay as literal double-brace placeholders in the saved HTML.
Plain text only. Changes the wording inside generated email content for this merge field. Token names, links, counts, and lists are not editable here.
Clear a field to restore its default text.
Choose a group, set tab visibility, then save. Public applies to visitors without a dashboard email link. Users who open the dashboard via a signed email link use the group matching their role (admin, champion, radiologist, trainee). Admin users always have the Admin tab; password- or JWT-authenticated admins still see every top tab in the UI. The System health and containers panel is part of Admin for anyone who can open Admin — it is not controlled separately here.
| ID | Name | Random Min | Week Min | Week Max | Probation Weight | Probation Days | CPT Threshold | Peds Threshold | Employees | LDAP | Actions |
|---|
Read-only summary of how the orchestrator decides whether local DICOMweb imaging is eligible for cleanup. Cleanup runs every 6 hours.
interesting_case_event) keep DICOMweb for 30 days from the last email send (same GUARDIAN_CLEANUP_BATCH_PROTECTION_DAYS window as tile B).
Per review mode, choose whether the Guardian peer-review side panel shows the accession number.
When unchecked, Express /viewer/api/info omits accession_number for that token type.
Zauron viewer worklist columns from DICOM are unchanged.
These options are global and populate peer review selections in the viewer for all employers.
| ID | Label Key | Label | Actions |
|---|---|---|---|
| Loading review options... | |||
Uses the same notification routing rules and inherited picker email templates (champion / original author) as production. Simulate resolves recipients read-only — no database writes, no production email, and no real exam tokens unless you click Send simulated email.
On the 1st of each month (UTC), sends a 4-sheet Excel workbook (Rad Performance and User Activity for the last full calendar month and YTD through that month) to the recipient groups you select below.
Eligible users are matched on employee_role.role: admins are admin or legacy 0; champions are champion or legacy 1. They must have an active account and an active email (deduped by email). Sending runs on the Guardian orchestrator, not the viewer.
Recipient groups
At least one group must be selected. You can choose admins only, champions only, or both.
Email recipients (name, role, email)
| Name | Role | |
|---|---|---|
| Load Policies to refresh recipients. | ||
Per employer, optional LDAP can be ground truth for name, email, and application roles
(admin, champion, radiologist, trainee mapped to LDAP group DNs; at least one group required, unused roles may be left blank).
Each employer stores connection info (server URI, bind DN/password, base DN, optional TLS CA filename) and group mappings in the database.
CA certificate files live in one shared folder on the server (GUARDIAN_LDAP_TLS_CA_PATH → app/docker/ldap-certs); put one .pem per LDAP server and set the filename on each employer.
Picker active, email active, and access expiry stay in the employee table.
When LDAP is off, the employee table is ground truth. Automatic sync runs every hour; use Sync now for an immediate pull.
| Employer | LDAP | Last sync (UTC) | Actions |
|---|---|---|---|
| Load Policies to refresh. | |||
Checking status...
Must be at least 12 characters and include uppercase, lowercase, number, and special character.