Skip to contents

Try it out

The fastest way to see what EpiSODIC does, with no data or configuration of your own required.

episodic_demo()
Try EpiSODIC With Synthetic Outbreak Data

Run EpiSODIC

The two calls that run a real instance: detect on a schedule, and open the dashboard for your board to review the results.

episodic_run_cron()
Run One Surveillance Detection Cycle
episodic_run_app()
Open the EpiSODIC Dashboard

Connect your own data

How to plug in your laboratory results and, optionally, testing volume and hospital activity data - and how to check your extract against the requirements before you run anything.

episodic_case_data
Connect your own laboratory data
episodic_check_cases()
Check Your Case Data Before You Hand It to EpiSODIC
episodic_check_denominators()
Check Your Positivity Data Before You Hand It to EpiSODIC
episodic_check_institution_activity()
Check Your Hospital Activity Data Before You Hand It to EpiSODIC
episodic_synthetic_cases()
Generate Synthetic Outbreak Data
episodic_synthetic_cases_calibration()
Generate Synthetic Data at Tunable Cluster Volume
episodic_synthetic_denominators()
Add a Testing-Volume (Positivity) Feed
episodic_synthetic_institution_activity()
Add a Hospital Activity Feed (Patient-Days)
episodic_synthetic_ground_truth()
Read Back What Was Injected Into Synthetic Data

Measure how well detection works

Replay generated history through the detectors week by week and compare what they found against the outbreaks that were put there - sensitivity, timeliness and alarm burden against known truth, rather than against your board’s own verdicts.

episodic_validate_detection() print(<episodic_validation>)
Measure Detection Against Known Truth
episodic_validate_comparator()
Measure a Trivial Rule Against the Same Known Truth
episodic_validate_rethreshold()
Re-Match a Validation Result at Different Thresholds

Add clusters from another system

Add clusters detected by another algorithm or system - never connected to your own case data.

episodic_add_manual_cluster()
Add One or More Manual (External) Clusters

Set up a database

Create and connect to the database EpiSODIC stores its data in.

episodic_db_create()
Set Up a New EpiSODIC Database
episodic_db_connect()
Connect to an Existing EpiSODIC Database
episodic_db_open()
Connect Using the EPISODIC_DB Environment Variable
episodic_db_migrate()
Bring an Existing Database up to the Current Schema
episodic_db_truncate()
Empty Every EpiSODIC Table, Keeping the Schema Itself
episodic_db_dsn_mariadb() episodic_db_dsn_mysql()
Connect EpiSODIC to a MariaDB or MySQL Server

Accounts and sign-in

episodic_auth
How sign-in works
episodic_add_user()
Create an Account for a New Epidemiologist or Viewer

Report results

How to send an outbreak report to clinical colleagues.

episodic_report_render()
Render an Outbreak Report for Clinical Colleagues
episodic_scheduled_reports
How scheduled reports work

Notifications

Send alerts to your team when new clusters are detected or a detection run fails. Supports ntfy, SMTP, sendmail, Microsoft 365, Teams, and Slack.

episodic_notifications
How notifications work
episodic_notify_test()
Send a Test Notification Through All Configured Channels
episodic_mail_template_preview()
Preview an Email Template
episodic_setup_microsoft365()
Set Up Microsoft 365 Authentication for Notifications

Customise the look and feel

House colours, maps, translations, and dashboard chart building blocks - useful if you are adapting EpiSODIC or writing your own report template.

episodic_palette()
The Dashboard's Colour Palette and Typography
episodic_geo_overlay_resolve() episodic_geo_source_resolve()
Show Clusters on a Map
episodic_ui_epi_curve_chart() episodic_ui_trend_chart() episodic_ui_rt_chart()
Draw the Dashboard Charts (Epidemic Curve, Trend, and Rt)
episodic_ui_italicise_taxon() episodic_ui_code_join()
Format Text for Outbreak Reports and the Dashboard

Configure export

Make sure to export the settings.

episodic_config_export()
Export the Resolved Configuration as a Zip File