Flagship Sample v1.16.0

Sinusitis Therapy

A clinical decision service for acute sinusitis: it selects an antibiotic, computes the dose with renal adjustment, flags drug interactions, and explains its reasoning in plain English — all from decision tables you can read.

SinusitisTherapy is a demonstration of the DTRules engine, built for the Decision Management Community's "Agentic Medical Services" challenge. It is not medical advice and is not a certified clinical tool.

Three loosely coupled services

Each service is an independent decision table an agent can call on its own. A thin orchestrator (Determine_Therapy) runs them in dependency order.

Medication & dosing

Determine_Medication_And_Dosing

Picks the drug of choice and the dose, frequency, and duration — accounting for penicillin allergy, age, and renal impairment.

Creatinine clearance

Determine_Creatinine_Clearance

Computes CCr with the Cockcroft–Gault formula from age, lean body weight, and serum creatinine.

Drug interactions

Check_Drug_Interactions

Flags conflicts between the recommended drug and the patient's active medications, appending a plain-English warning for each.

Determine_Therapy

Creatinine Clearance
Select Medication
Determine Dose
Check Interactions

CCr first, because dosing depends on it; medication before the interaction check, because interactions depend on the chosen drug.

A worked example

The challenge's reference request, run end to end.

The request

"I have a patient diagnosed with Acute Sinusitis. He is 58 years old, weighs 78 kg, and has a creatinine level of 1.85. Keep in mind that he is Penicillin-allergic and takes Coumadin."
Age58
Lean body weight78 kg
Serum creatinine1.85
Penicillin-allergicyes
Active medicationCoumadin

The determination

Drug: Levofloxacin

Penicillin allergy overrides the age-based choice (beta-lactam cross-reactivity).

CCr ≈ 48.02 mL/min

((140 − 58) × 78) / (1.85 × 72)

Dose: 200 mg every 24 h for 14 days

Renal adjustment — creatinine 1.85 > 1.4 and CCr < 50 overrides the age-based dose.

Interaction warning

Levofloxacin may potentiate the anticoagulant effect of warfarin/Coumadin — monitor coagulation.

Runs as a live web interview

The hosted demo is a single self-contained Go binary (cmd/sinusitis-web) that //go:embeds the compiled rules — no files on disk at runtime. It asks only for the patient details the rules actually reach, then computes the therapy. See the interactive interview for how that works.

Open the Live Demo

Why it's the showcase

Multi-file authoring

One file per service, each owning a non-overlapping table-number range — a worked example of how DTRules projects scale.

Real math

Cockcroft–Gault creatinine clearance, computed in EL and verified by an integration test.

Knowledge as data

The drug-interaction table is driven by a CSV knowledge base, kept separate from the rules that consult it.

Plain-English rationale

Every recommendation explains itself, so a clinician — or an LLM agent — can audit the reasoning.

Agent-friendly

Loosely coupled services can be called individually, exactly as an LLM orchestrator would.

Embeddable

The whole rule set ships inside one static binary via //go:embed — nothing to deploy alongside it.