Method
Antimicrobial susceptibility testing data becomes a usable antibiogram in four steps
There is no model in the middle. The whole transform is counting, under three rules that every microbiologist already argues about, made visible instead of assumed.
- 01 Import
- 02 De-duplicate
- 03 Interpret
- 04 Publish
01
Import
Import the export you already produce
The file is the twelve-month susceptibility export your laboratory information system already generates for the annual report. Seven fields matter: a patient key, the collection date, the specimen source, the unit, the organism, the antibiotic and the S, I or R result. MIC values are used where they are present and are never required.
Column names differ between systems, so they are detected and shown back to you for confirmation. In the browser demo the file is parsed locally with the file API, and no row is transmitted anywhere.
| patient_id | collected_date | specimen_source | unit | organism | antibiotic | result |
|---|---|---|---|---|---|---|
| a41f9c | 2026-01-08 | Urine | Outpatient | E. coli | Ciprofloxacin | S |
| a41f9c | 2026-01-08 | Urine | Outpatient | E. coli | Nitrofurantoin | S |
| 77b204 | 2026-01-09 | Blood | ICU | K. pneumoniae | Meropenem | S |
| 77b204 | 2026-01-09 | Blood | ICU | K. pneumoniae | Ceftriaxone | R |
Nothing else in the file is read. Extra columns are ignored rather than stored.
02
De-duplicate
Reduce to the first isolate per patient
CLSI M39 guidance for cumulative antibiograms is to count each patient once per organism per analysis period, normally the first isolate. Patients who are cultured repeatedly are on average sicker and more heavily exposed to antibiotics, so counting every isolate lets a small group of patients pull the whole report toward their resistance pattern.
The count before and after de-duplication is shown on the output, not hidden in a method note, and the rule is a toggle so you can see exactly what it removed.
4,812
isolates in the export
3,190
first isolates per patient
Illustrative figures. The builder shows this pair for your own file.
Typical effect: around a fifth of rows in a hospital export belong to a patient already counted.
03
Interpret
Apply breakpoints and the reporting threshold
By default your laboratory's own reported interpretation is used, because your laboratory is the authority on its own results. Where MIC values are present, the Stewardship plan and above can reinterpret them against a chosen CLSI or EUCAST version, which is how you re-run last year under this year's table.
Intermediate results are excluded from the denominator by default and can be counted as resistant instead. Cells holding fewer than 30 isolates are marked rather than dropped, so a thin cell is visible as a decision rather than as an absence.
The threshold is a setting. The default is 30, which is the CLSI M39 figure.
04
Publish
Publish the matrix, the ranking and the receipt
The output is the organism by antibiotic matrix, the empiric ranking for the current selection, the quarterly trend for any pair you pick, and a plain-language line stating exactly which rules produced the numbers above it.
Export to CSV for the committee pack or print to a clean page. The rule receipt travels with both, because an undated report with unstated rules cannot explain its own trend six months later.
4,812 isolates in selection · 3,190 first isolates per patient · urine only · all units · full year · intermediate counted separately · 6 cells suppressed at n<30
Every export carries the generation date and the full rule receipt.
Read next
The three decisions in detail
Each step above rests on a decision worth understanding before you defend a number in a committee meeting.
Run it yourself
The fastest way to check this is to change a filter
The builder on the homepage runs the four steps above on a synthetic dataset, live, with the rule receipt under the matrix. Load your own CSV and it never leaves your browser.
Your file is parsed in your browser and never uploaded. No card required.