The reviewed record for clinical notes
ClinicalBrief turns note text into structured findings, puts every one in front of a clinician before it counts, and links each back to the sentence it came from.
Clinicians write notes all day, but what is in them is hard to search, check or share.
Every AI output stays pending until a person decides, and every decision is written down.
54 y/o female. History of type 2 diabetes and hypertension. Denies chest pain. Mother had breast cancer. Continue metformin 500 mg twice daily.
- approvedType 2 diabetes mellitusCondition · E11.9
- approvedHypertensionCondition · I10
- pendingMetformin 500 mgMedication · twice daily
- excludedChest painNegated · not recorded as a finding
- excludedBreast cancerFamily history · not the patient
62 y/o male. Admitted with pneumonia. No fever today. Father has asthma. Started amoxicillin 500 mg three times daily.
- approvedPneumoniaCondition · J18.9
- pendingAmoxicillinMedication · three times daily
- excludedFeverNegated · not recorded as a finding
- excludedAsthmaFamily history · not the patient
71 y/o female. Known atrial fibrillation and chronic kidney disease. On warfarin 5 mg daily. Denies dizziness. Sister had a myocardial infarction.
- approvedAtrial fibrillationCondition · I48.91
- pendingChronic kidney diseaseCondition · N18.9
- pendingWarfarinMedication · 5 mg daily
- excludedDizzinessNegated · not recorded as a finding
- excludedMyocardial infarctionFamily history · not the patient
- 01
Import
Synthea notes and structured records, with provenance on every row.
- 02
Extract
Rule-based findings; negated and family-history mentions are excluded.
- 03
Review
Approve, edit or reject each finding, with its source sentence.
- 04
Code
ICD-10 suggestions by dictionary match; the rest stays unmapped.
- 05
Use
Search, Copilot and FHIR export read reviewed findings only.
Nothing counts as fact until a person says so
A cross-patient review queue with keyboard shortcuts, bulk approval per note and undo. Conflicting edits are refused, and the graph, Copilot, FHIR export and risk score use reviewed findings only.
“History of type 2 diabetes and hypertension.”
approved“History of type 2 diabetes and hypertension.”
edited“Heat stroke risk discussed before travel.”
rejected“Asthma since childhood, uses albuterol as needed.”
approved“Asthma since childhood, uses albuterol as needed.”
edited“Dialysis was discussed as a future option only.”
rejectedEvery decision writes the review history and an audit row. Keys: A approve, E edit, R reject, U undo.
Search every note, not just the analysed ones
Postgres full-text search across notes, conditions, medications, procedures, observations and allergies, with date filters and medication start and stop events. The local model may widen the terms; results are always real records.
- medicationMetformin 500 MG oral tablet · started2024-03-01
- note...continue metformin 500 mg twice daily...2024-03-01
- medicationInsulin glargine · stopped2023-11-20
- conditionChest pain (finding) · onset2023-08-14
- note...presents with chest pain on exertion, relieved by rest...2023-08-14
- note...follow-up: no further chest pain since last visit...2023-10-02
- conditionAsthma (disorder) · onset2016-05-02
- medicationAlbuterol 90 MCG inhaler · started2016-05-02
- note...expiratory wheeze heard on auscultation...2022-01-10
35,103 synthetic notes searchable · keyword full-text search, not a semantic model
What was the most recent HbA1c?
The most recent HbA1c was 6.8 % on 2024-03-01 E1
What allergies does the patient have?
Penicillin allergy, reaction: rash E1 She also reacts to sulfa drugs.
1 statement removed: no sourceWhat conditions does the patient have, and should insulin start?
Type 2 diabetes mellitus is on the condition list E1 Start insulin 10 units at night.
No generated answer could be verified. These matching records are in the patient's file:
• Diabetes mellitus type 2 (disorder), clinical status: active (2019-03-01) E1
What is the patient's blood type?
I couldn't find evidence for this in the available records.
No record mentions a blood type, so nothing is guessed.
Answers that cite the record, from a model that stays local
Questions are answered from one patient's record by a model running on the same machine. Every claim links to its source and unsupported numbers are flagged. If a draft gives treatment advice, the whole answer is withheld and only the matching records are shown.
A FHIR R4 bundle, validated before it leaves
Patient, encounters, conditions, medications, allergies, procedures and observations from the record, checked against R4 models and reference rules. A bundle that fails validation cannot be downloaded.
- Every resource parses as FHIR R4
- Every reference resolves inside the bundle
- Invariants hold (e.g. con-4)
- Every resource parses as FHIR R4
- Every reference resolves inside the bundle· a reference points outside the bundle
- Invariants hold (e.g. con-4)
One real export from the demo data: 573 entries, 436 KB, validation passed.
Built for everyone who touches the record
Each role sees exactly what it needs. Hover or tap a role to see what it can do.
- See patientsclinicians: assigned patients only
- Read note text
- Upload notes, add patients
- Decide on AI findings
- Search records
- Export FHIR
- Audit log and governance
| See patientsclinicians: assigned patients only | ||||||
|---|---|---|---|---|---|---|
| Read note textresearchers: regex-redacted text only | ||||||
| Upload notes, add patients | ||||||
| Decide on AI findings | ||||||
| Search recordsresearchers: structured record only | ||||||
| Export FHIR | ||||||
| Audit log and governance |
Sees only the patients assigned to them; uploads notes and decides on AI findings.
Enforced in the API and mirrored in Postgres row-level security. New accounts start as pending, with no access, until an admin grants a role. Reads of clinical data are audited.
Honest about what is built
Implemented means built and tested. Prototype means working but simplified. Not built yet means not built yet.
- Human review and audit trailReview queue, undo, conflict checks, governance page
- Record searchPostgres full-text search over every note and the structured record
- FHIR R4 exportTransaction bundle from the record, structurally validated
- Roles and row-level securitySix roles in the API, mirrored in Postgres RLS
- Synthea importDry run, per-record validation, rejected-record log, idempotent re-import
- Grounded CopilotLocal model only; cites sources, flags unsupported claims
- Entity extractionRule-based dictionary with negation and family-history checks
- ICD-10 suggestionsExact match against a small dictionary; the rest stays unmapped
- Knowledge graphFrom the record plus reviewed findings only
- PHI redactionRegex patterns; not a validated de-identification method
- Accuracy evaluationNo accuracy figure is shown until measured on a labelled set
- Semantic searchEmbeddings, kept only if they beat full-text search on a fixed question set
- De-identified research viewResearchers get no note text until one exists
See it on 409 synthetic patients
Synthea sample data and the Synthea Coherent Data Set (CC BY 4.0). No real patient data.