Surveillance, cohorts & outcomes analysis
Enter case data, select clinical cohorts from health-record tables against stated criteria, compute rates and survival or outcome statistics, and map clusters.
20 project-authored proposals · taxonomy v1.1 · 0 new benchmark runs. Verifiers and partial-credit rules below are designs, not executed results.
- Typical applications
- Epi Info · R · QGIS
- Class GUI-need label
HY· Hybrid
Task proposals · 20
Expand to inspect the complete original wording and proposed checks. Original proposal text remains English in both interfaces.
R09.04.01.01-T01 Build an outbreak form with check code and compute attack-rate RR in Epi Info
Original instruction
In Epi Info 7 Form Designer create project output/picnic.prj with form 'Case' (ID, age, sex, onset datetime, ate_potato_salad, ate_chicken, ill) and check code restricting age to 0-120 and requiring onset if ill=Yes. Enter the 20 synthetic questionnaires in input/questionnaires.pdf, then in Classic Analysis run TABLES for each food by ill and write the risk ratios to output/rr.json.
- Platforms
win· Windows- Applications
- Epi Info
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsdrag· Drag & drop- Work product
WP02· Records/table- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Checker opens the .prj/.mdb: 7 fields with types; check code rules present and enforced (inserting age 130 fails); 20 records exact; rr.json values within 0.01 of gold for both foods. The VM has no shell, R, Python or Access, so the project and results can only be produced in Epi Info; file writes by any other process are caught by file-access auditing.
Proposed partial credit
20% form fields; 20% check code; 35% records; 25% risk ratios
R09.04.01.01-T02 Map county case rates as a choropleth in Epi Info Maps
Original instruction
In Epi Info Maps, load the county boundary shapefile input/counties.shp and the case line list input/cases.csv (synthetic, 1,240 cases), compute cases per 100,000 using the population column, display a 5-class quantile choropleth with a legend titled 'Cases per 100k', and save the map file output/rate_map.map7 and output/rate_map.png.
- Platforms
win· Windows- Applications
- Epi Info
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G3· GUI-only- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP04· 3D/spatial model- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Saved map XML: data join key correct, rate expression, quantile classification with 5 breaks equal to gold; PNG legend title OCR exact; sampled county fill colors correspond to the right class for 10 counties. The VM has no shell, R, Python or Access, so the project and results can only be produced in Epi Info; file writes by any other process are caught by file-access auditing.
Proposed partial credit
25% join; 25% rate field; 30% class breaks; 20% legend and export
R09.04.01.01-T03 Compute age-adjusted incidence rates by county with confidence intervals
Original instruction
Using R, compute directly age-standardized incidence rates (2000 US standard population, 18 age groups) of the reportable disease in input/linelist.csv by county with gamma (Fay-Feuer) 95% CIs, using county-age populations from input/pop.csv. Write output/adj_rates.csv.
- Platforms
mac· macOSwin· Windowslin· Linux- Applications
- R
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP02· Records/table- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Rates within 0.01 per 100k and CI bounds within 0.05 of reference computed with epitools ageadjust.direct; all 24 counties present.
Proposed partial credit
20% case counts by county and age; 50% adjusted rates; 30% CIs
R09.04.01.01-T04 Join case counts to counties and lay out a printable rate map in QGIS
Original instruction
In QGIS join input/case_counts.csv to input/counties.gpkg, compute rate per 100k in a new field, style with 5 Jenks classes (YlOrRd), and build an A4 landscape print layout with map, legend, scale bar, north arrow, title 'Pertussis rate per 100k, 2025' and data source note. Save output/pertussis.qgz and export output/pertussis.pdf.
- Platforms
mac· macOSwin· Windows- Applications
- QGIS
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clickdrag· Drag & dropvis· Visual judgment- Work product
WP03· Visual layout- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Parsed .qgz: join and rate expression correct; renderer graduated Jenks 5 classes with breaks equal to gold; layout items (map, legend, scalebar, north arrow, title text, note) present on A4 landscape; PDF text contains title. QGIS Interface Customization hides the Python Console and Processing script tools, and the VM has no shell for qgis_process, so the work must be done through QGIS dialogs.
Proposed partial credit
25% join and rate field; 25% classification; 35% layout items; 15% PDF
R09.04.01.01-T05 Draw an epidemic curve and identify the likely exposure date in Epi Info
Original instruction
In Epi Info Visual Dashboard, load the synthetic norovirus line list input/noro.csv and create an epidemic curve histogram of onset date-time in 6-hour bins. Given a 12-48 h incubation period (median 33 h), write the most likely common exposure window to output/exposure.json and save the canvas output/epicurve.cvs7.
- Platforms
win· Windows- Applications
- Epi Info
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clickvis· Visual judgment- Work product
WP12· Answer/decision- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
Canvas file has a histogram gadget on onset with 6-hour interval; exposure window within 6 h of gold (point-source back-calculation from first case, median and last case). The VM has no shell, R, Python or Access, so the project and results can only be produced in Epi Info; file writes by any other process are caught by file-access auditing.
Proposed partial credit
40% epi curve configured; 60% exposure window
R09.04.01.01-T06 Create a kernel density hotspot map of cases in QGIS
Original instruction
In QGIS, load geocoded synthetic case points input/cases_geo.gpkg (EPSG:4326), reproject to EPSG:32615, run the Heatmap (kernel density) tool with 1,000 m radius and 50 m pixels, style it, and identify the centroid of the densest cluster. Save output/kde.tif, output/hotspot.qgz and write the centroid (lat, lon) to output/hotspot.json.
- Platforms
mac· macOSwin· Windows- Applications
- QGIS
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP04· 3D/spatial model- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
kde.tif CRS 32615, 50 m resolution, values correlate r>=0.99 with reference KDE; reported centroid within 200 m of the gold peak. QGIS Interface Customization hides the Python Console and Processing script tools, and the VM has no shell for qgis_process, so the work must be done through QGIS dialogs.
Proposed partial credit
25% reprojection; 35% KDE parameters/output; 40% hotspot centroid
R09.04.01.01-T07 Detect aberrations in syndromic surveillance counts with EARS methods
Original instruction
input/ed_visits_ili.csv has daily ILI-like ED visit counts for 3 regions over 2 years. In R, apply EARS C1, C2 and C3 (surveillance package or equivalent, 7-day baseline, 2-day guard band for C2/C3) and write output/alerts.csv listing region, date and method for each alarm.
- Platforms
mac· macOSwin· Windowslin· Linux- Applications
- R
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP02· Records/table- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
Alert set per method equals reference computed with surveillance::earsC under the same parameters (F1>=0.98); dates exact.
Proposed partial credit
30% C1; 35% C2; 35% C3
R09.04.01.01-T08 Enter thirty paper case report forms into an Epi Info form
Original instruction
Open Epi Info project input/salmonella.prj and enter the 30 scanned case report forms in input/crf_scans.pdf (handwritten, synthetic) via Enter Data, following the form's skip logic. Leave illegible fields blank and list them in output/queries.csv (record, field).
- Platforms
win· Windows- Applications
- Epi Info
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
type· Text & formsvis· Visual judgmentkey· Shortcuts- Work product
WP02· Records/table- Conditions
long· Long-horizon- Proposed difficulty
- 4 / 5
Proposed verifier
Field-level accuracy >=98% vs double-entered gold (normalized dates and codes); skip-logic fields empty where required; illegible-field query list exact (5 planted). The VM has no shell, R, Python or Access, so the project and results can only be produced in Epi Info; file writes by any other process are caught by file-access auditing.
Proposed partial credit
70% field accuracy (scaled, full credit at 0.98); 15% skip logic respected; 15% queries
R09.04.01.01-T09 Find local clusters of tract-level rates with Local Moran's I
Original instruction
Spatially join geocoded synthetic cases input/cases_geo.gpkg to census tracts input/tracts.gpkg in QGIS, compute rates per 10,000, smooth with empirical Bayes, then compute Local Moran's I (queen contiguity, 999 permutations, seed 1) in R or GeoDa and map High-High clusters in QGIS. Save output/lisa.gpkg (tract, rate, ebrate, I, p, cluster) and output/lisa.qgz.
- Platforms
mac· macOSwin· Windows- Applications
- QGIS · R
- Interfaces
desk· Desktop GUIterm· Terminal- GUI need · task setting
HY· Hybrid- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clickcode· Code & commandsmulti· Cross-app- Work product
WP04· 3D/spatial model- Conditions
multiapp· Multi-app- Proposed difficulty
- 5 / 5
Proposed verifier
Tract counts exact; EB rates within 1%; local I within 1e-3 of reference (spdep localmoran on EB rates); cluster labels at p<0.05 F1>=0.9; QGIS style categorizes clusters.
Proposed partial credit
20% spatial join counts; 20% EB rates; 35% Local Moran's I and clusters; 25% map
R09.04.01.01-T10 Run a case-control logistic regression in Epi Info Classic Analysis
Original instruction
In Epi Info Classic Analysis, read input/legionella_cc.csv (synthetic case-control study) and run LOGISTIC of case status on hot_tub_exposure, smoking, age_group and diabetes. Save the output HTML to output/logistic.html and write adjusted ORs with 95% CIs to output/or.json.
- Platforms
win· Windows- Applications
- Epi Info
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP02· Records/table- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Program log shows LOGISTIC command; adjusted ORs within 0.01 and CI bounds within 0.02 of reference (R glm with same coding); age_group reference level as specified in input/coding.txt. The VM has no shell, R, Python or Access, so the project and results can only be produced in Epi Info; file writes by any other process are caught by file-access auditing.
Proposed partial credit
20% model specified; 50% ORs; 30% CIs
R09.04.01.01-T11 Deduplicate and standardize a surveillance line list
Original instruction
input/linelist_raw.xlsx (2,100 rows) merges lab and provider reports with duplicates (name spelling variants, swapped DOB day/month), mixed date formats and county name variants. Produce output/linelist_clean.csv with one row per case (keep earliest report date), ISO dates and county FIPS codes, and output/dedup_log.csv.
- Platforms
mac· macOSwin· Windowslin· Linux- Applications
- R · Excel
- Interfaces
term· Terminaldesk· Desktop GUI- GUI need · task setting
HY· Hybrid- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commandsvis· Visual judgment- Work product
WP02· Records/table- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Unique case count equals gold (1,734); pairwise duplicate F1>=0.95; date and FIPS fields exact for 99% of rows; earliest report date kept.
Proposed partial credit
40% duplicate F1; 20% case count; 25% standardized fields; 15% log
R09.04.01.01-T12 Count cases within 500 m of a contaminated well in QGIS
Original instruction
In QGIS, buffer the well location in input/well.gpkg by 500 m (in EPSG:26916) and count the synthetic Legionella case addresses in input/cases.gpkg that fall inside; also report how many residents of the buffer area there are from block populations (area-weighted). Write output/buffer.json and save output/buffer.gpkg.
- Platforms
mac· macOSwin· Windows- Applications
- QGIS
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP12· Answer/decision- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
Buffer computed in a metric CRS (area within 0.5% of pi*500^2); case count exact; area-weighted population within 1% of gold. QGIS Interface Customization hides the Python Console and Processing script tools, and the VM has no shell for qgis_process, so the work must be done through QGIS dialogs.
Proposed partial credit
30% correct buffer; 40% case count; 30% population
R09.04.01.01-T13 Calculate a cohort study sample size in Epi Info StatCalc
Original instruction
Use Epi Info StatCalc (Sample Size and Power > Cohort or Cross-Sectional) to compute the sample size for a cohort study with 95% confidence, 80% power, ratio unexposed:exposed 2:1, outcome 5% in unexposed and risk ratio 2.0. Write Kelsey, Fleiss and Fleiss-with-CC totals to output/samplesize.json.
- Platforms
win· Windows- Applications
- Epi Info
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
type· Text & formsclick· Point & click- Work product
WP12· Answer/decision- Conditions
- None declared
- Proposed difficulty
- 1 / 5
Proposed verifier
Three totals exact vs StatCalc reference output for those inputs. The VM has no shell, R or Python to compute the formulas, so the totals must come from StatCalc in Epi Info; file writes by other processes are caught by file-access auditing.
Proposed partial credit
33% Kelsey total; 33% Fleiss total; 33% Fleiss-with-CC total; 1% valid JSON
R09.04.01.01-T14 Compute standardized mortality ratios by county with exact Poisson CIs
Original instruction
Using R, compute indirectly standardized mortality ratios for opioid overdose deaths by county from input/deaths.csv and input/pop_age.csv using state age-specific rates as the standard, with exact Poisson 95% CIs, and flag counties whose CI excludes 1. Write output/smr.csv.
- Platforms
mac· macOSwin· Windowslin· Linux- Applications
- R
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP02· Records/table- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Expected counts within 0.01, SMRs within 0.001, CI bounds within 0.002 of reference; flagged set exact.
Proposed partial credit
30% expected counts; 30% SMRs; 25% CIs; 15% flags
R09.04.01.01-T15 Make a privacy-preserving dot-density case map from Epi Info data
Original instruction
Export the cases form of Epi Info project input/measles.prj to CSV, aggregate by ZIP code, and in QGIS create a dot-density layer with one random dot per case placed within its ZIP polygon (no dots at real addresses), styled over a basemap-free ZIP layer. Save output/dots.gpkg and output/dotmap.qgz.
- Platforms
win· Windows- Applications
- Epi Info · QGIS
- Interfaces
desk· Desktop GUI- GUI need · task setting
HY· Hybrid- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
multi· Cross-appclick· Point & clickvis· Visual judgment- Work product
WP04· 3D/spatial model- Conditions
multiapp· Multi-app- Proposed difficulty
- 4 / 5
Proposed verifier
Per-ZIP dot counts equal case counts; every dot inside its ZIP polygon; no dot within 50 m of any real case address in the hidden address file; export CSV row count equals form records.
Proposed partial credit
20% export; 40% per-ZIP counts; 25% dots inside polygons; 15% privacy check
R09.04.01.01-T16 Design a parent-child contact tracing form with code tables in Epi Info
Original instruction
In Epi Info Form Designer, build project output/tb_contacts.prj: parent form 'IndexCase' (case ID, site, diagnosis date, smear status from a code table) and related child form 'Contact' (1-to-many) with relationship (code table), exposure hours, TST result and a check-code rule that skips TST date unless result is entered. Enter the 3 index cases and 11 contacts from input/contacts.xlsx.
- Platforms
win· Windows- Applications
- Epi Info
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G3· GUI-only- Interaction primitives
drag· Drag & dropclick· Point & clicktype· Text & forms- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
Project metadata: two forms with relate button and FK linkage; code tables with exact values; check-code skip present; 3 parent and 11 child records with correct parent keys and values. The VM has no shell, R, Python or Access, so the project and results can only be produced in Epi Info; file writes by any other process are caught by file-access auditing.
Proposed partial credit
25% forms and relation; 20% code tables; 15% check code; 40% records linked correctly
R09.04.01.01-T17 Smooth small-area rates with empirical Bayes and map them
Original instruction
For synthetic lung cancer incidence in input/tracts_counts.csv (400 tracts, many small populations), compute raw rates, global and spatial (queen neighbours) empirical Bayes smoothed rates in R, and produce side-by-side QGIS maps of raw vs spatial-EB rates with identical class breaks in one print layout. Save output/eb.gpkg, output/eb.qgz and output/eb.pdf.
- Platforms
mac· macOSwin· Windows- Applications
- R · QGIS
- Interfaces
desk· Desktop GUIterm· Terminal- GUI need · task setting
HY· Hybrid- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commandsclick· Point & clickmulti· Cross-app- Work product
WP04· 3D/spatial model- Conditions
multiapp· Multi-app- Proposed difficulty
- 5 / 5
Proposed verifier
EB rates within 1% of reference (spdep EBest and EBlocal); layout contains two maps with identical renderer breaks; PDF exported.
Proposed partial credit
15% raw rates; 25% global EB; 30% spatial EB; 30% layout with shared breaks
R09.04.01.01-T18 Animate weekly cases with the QGIS Temporal Controller
Original instruction
In QGIS load input/weekly_cases.gpkg (county polygons x 26 weeks, field week_start), configure the layer's temporal properties, style by weekly rate, and use the Temporal Controller to export 26 frames (1 week step) to output/frames/ at 1280x720, with the week shown in a title label.
- Platforms
mac· macOSwin· Windows- Applications
- QGIS
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP05· Time-based media- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
26 PNG frames 1280x720; .qgz temporal settings (field-based, 1-week step); OCR of title label in frames 1, 13, 26 gives correct weeks; sampled county colors match the week's rate class. QGIS Interface Customization hides the Python Console and Processing script tools, and the VM has no shell for qgis_process, so the work must be done through QGIS dialogs.
Proposed partial credit
25% temporal config; 30% 26 frames correct size; 25% week labels; 20% colors per week
R09.04.01.01-T19 Analyse a matched case-control study in Epi Info
Original instruction
In Epi Info Classic Analysis, read input/matched_cc.csv (1:1 matched pairs, synthetic hepatitis A outbreak) and run MATCH analysis for exposure to restaurant B, reporting the matched odds ratio, McNemar chi-square and exact 95% CI to output/matched.json; also save the program as output/matched.pgm7.
- Platforms
win· Windows- Applications
- Epi Info
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP02· Records/table- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Discordant pair counts exact; matched OR exact; McNemar statistic within 0.01; CI within 0.02; .pgm7 contains the MATCH command. The VM has no shell, R, Python or Access, so the project and results can only be produced in Epi Info; file writes by any other process are caught by file-access auditing.
Proposed partial credit
30% discordant pairs; 30% OR; 20% McNemar; 20% CI
R09.04.01.01-T20 Produce an MMWR-style weekly notifiable disease table
Original instruction
From the 5-year synthetic line list input/notifiable_2021_2026.csv, produce for MMWR week 40 of 2026 a table of 15 conditions with: current week count, cumulative YTD 2026, YTD 2025, 5-year weekly median for weeks 39-41, and max of the previous 52 weeks. Write output/table_wk40.csv and a formatted output/table_wk40.pdf.
- Platforms
mac· macOSwin· Windowslin· Linux- Applications
- R · Python
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP02· Records/table- Conditions
- None declared
- Proposed difficulty
- 5 / 5
Proposed verifier
MMWR week assignment per CDC rules (weeks start Sunday; week 1 is the first week with >=4 days in the year); all 75 cells exact vs reference; PDF table text equals CSV.
Proposed partial credit
20% MMWR week logic; 20% current week; 25% YTD columns; 35% 5-yr median/max and PDF (5:2)
Mapped research references
Existing benchmark-to-class links from the research catalog. They are not record-level annotations, executions or product endorsements.