An EHR-launched SMART on FHIR app for clinicians. Launched from inside a patient's chart, it pulls that patient's urinalysis results, scores the most recent one with the validated UTIWizard point-of-care UA model, and shows the predicted probability of a positive urine culture — against the average-risk cutoff, with the top drivers and the culture outcome when one exists.
The synthetic clinician demo renders the full results view on made-up data, scored with the real model:
1. This app is being registered in Epic's sandbox as a clinician (EHR-launched) app — a separate registration from the patient-facing UTIWizard MyChart app. (Registration is a one-time setup step, currently in progress; until it completes, only the synthetic demo above is available — there is no clinician login, because the real app is launched by Epic from inside a patient's chart.)
2. In the Epic sandbox, the app's launch URL is https://e0fgkmhu28.execute-api.us-east-1.amazonaws.com/launch. Opening a test
patient's chart and launching the app sends the browser here with an iss (FHIR server) and a
one-time launch token.
3. The app redirects to Epic to authorize (scopes: launch openid fhirUser patient/Patient.read patient/Observation.read), exchanges the code,
and reads the launched patient's Patient + Observation data — in memory only, nothing stored.
4. Epic's sandbox test patients carry no urinalysis results, so after a real launch the clinician view is populated with a clearly-labeled synthetic episode — the same approach as the patient-facing demo — so the workflow stays visible end to end.
No client_id configured yet (set PHYSICIAN_CLIENT_ID after registering the app in the Epic sandbox). The /launch endpoint is built and will work as soon as the registration exists.
This is retrospective decision support: it estimates urine-culture positivity from a urinalysis the clinician is already reviewing. It is not a diagnosis of urinary tract infection, it makes no treatment recommendation, and it does not replace clinician judgment. Sandbox only — Epic test patients, no real patient data.