No-Show Dashboard, PII, and a Misleading Chart
A public hospital analytics team is building a dashboard from appointment records. The table contains patient_id, full_name, date_of_birth, ZIP code, appointment_date, department, no_show flag, and free-text notes. The team plans a ZIP-level heat map of no-show rates and a weekly line chart, published through a link visible to all hospital staff. A developer's ETL script wraps the whole load in try/except Exception: pass, writes raw rows including names and notes to a shared S3 bucket readable by the analytics group, and logs the full connection string. The Matplotlib line chart uses a y-axis from 4.5% to 7.0% and a title saying 'No-show crisis worsens'. A journalist requests ZIP-level counts for a story. The compliance officer asks you to review the dashboard, code, and data-sharing plan.
1. Identify the ethical, privacy, and programming problems in this plan. What would you change before publishing the dashboard?
Read the worked answer
The plan mixes privacy, security, and reliability failures. Names, dates of birth, free-text notes, and full ZIP codes are identifiable; ZIP-level rates can re-identify people in small areas, especially with department and date. Remove direct identifiers from the dashboard, minimize to the fields needed, aggregate, and suppress small cells (for example, n<11) plus complementary suppression so totals cannot be used to back out a cell.
Restrict access by role, encrypt the bucket, and do not put raw rows in a shared S3 location. The connection string in logs is a secret leak; move credentials to a secret manager and rotate them. try/except Exception: pass hides failed loads and can publish stale or partial data; catch specific exceptions, log structured errors without PHI, fail the job, and retry only transient errors.
For the journalist, share aggregate tables with denominators, suppress small cells, require a data-use agreement, and have compliance review. Publish a data dictionary and retention policy.
2. Critique the chart and propose a communication approach that is accurate and honest.
Read the worked answer
The chart is misleading because a y-axis from 4.5% to 7.0% exaggerates a small change and the title asserts a crisis before the analysis supports it. Start the y-axis at zero for a rate comparison, or if a truncated axis is necessary, label it explicitly and show the absolute change with a CI.
Show denominators and absolute counts, because weekly rates from small departments are unstable; consider a funnel plot or control limits instead of ranking noise. Use a neutral title such as 'Weekly no-show rate, January-March' and annotate data-quality gaps such as the outage or missing weeks. If comparing departments or ZIPs, show uncertainty and avoid color scales that imply precision. Provide a short caveat that association is not causation and that small-area rates are suppressed. The communication should let a reader see the size of the problem, the uncertainty, and what action is justified.