Skip to content

Commit

Permalink
Create eCR case study page (#59)
Browse files Browse the repository at this point in the history
* add initial content

* link to new page

* change placeholder name

* modify urls, update dibbs pipeline content

* shared ui components

* use layout components for ecr viewer case study

* use arrow functions

* use arrow functions for pages
  • Loading branch information
jakewheeler authored Nov 27, 2024
1 parent 158c002 commit a52c207
Show file tree
Hide file tree
Showing 5 changed files with 298 additions and 59 deletions.
75 changes: 75 additions & 0 deletions src/app/case-studies/_ui/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import Link from 'next/link';
import { Link as ExternalLink } from '@trussworks/react-uswds';

interface ContainerProps {
children: React.ReactNode;
}

const PageContainer = ({ children }: ContainerProps) => {
return (
<div className="main ml-auto mr-auto flex items-center justify-center pb-20 lg:pl-[7.5rem] lg:pr-[7.5rem]">
{children}
</div>
);
};

const ContentContainer = ({ children }: ContainerProps) => {
return (
<div className="content grid max-w-[53rem] grid-cols-1 gap-[3.75rem] pl-[3.75rem] pr-[3.75rem] pt-10">
{children}
</div>
);
};

const SectionContentContainer = ({ children }: ContainerProps) => {
return <div className="flex flex-col gap-3">{children}</div>;
};

const ReturnToCaseStudiesLink = () => {
return (
<Link
className="font-['Public Sans'] text-base font-normal leading-relaxed text-[#3a7d95] underline"
href="/case-studies"
>
Return to all case studies
</Link>
);
};

const Text = ({ children }: ContainerProps) => {
return <p className="m-0 flex flex-col gap-6 p-0">{children}</p>;
};

const UnorderedList = ({ children }: ContainerProps) => {
return (
<ul className="list__full-width flex flex-col gap-2 font-semibold">
{children}
</ul>
);
};

const ReadMore = ({ href, linkText }: { href: string; linkText: string }) => {
return (
<>
<h2>Read more about our work</h2>
<ExternalLink
className="font-['Public Sans'] text-base font-bold leading-snug text-[#3a7d95] underline"
href={href}
target="_blank"
rel="noreferrer noopener"
>
{linkText}
</ExternalLink>
</>
);
};

export {
ContentContainer,
PageContainer,
SectionContentContainer,
ReturnToCaseStudiesLink,
Text,
UnorderedList,
ReadMore,
};
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,27 +1,29 @@
import Link from 'next/link';
import { Link as ExternalLink } from '@trussworks/react-uswds';
import './styles.scss';
import {
PageContainer,
ContentContainer,
ReturnToCaseStudiesLink,
SectionContentContainer,
UnorderedList,
Text,
ReadMore,
} from '../_ui';
import '../_ui/styles.scss';

export default function LaCountyCaseStudy() {
const DibbsPipeline = () => {
return (
<div className="main ml-auto mr-auto flex items-center justify-center pb-20 lg:pl-[7.5rem] lg:pr-[7.5rem]">
<div className="content grid max-w-[53rem] grid-cols-1 gap-[3.75rem] pl-[3.75rem] pr-[3.75rem] pt-10">
<PageContainer>
<ContentContainer>
<section id="heading">
<Link
className="font-['Public Sans'] text-base font-normal leading-relaxed text-[#3a7d95] underline"
href="/case-studies"
>
Return to all case studies
</Link>
<ReturnToCaseStudiesLink />
<h1>
Creating a modular, cloud-based data processing pipeline for LA
County
</h1>
</section>
<section id="challenge">
<div className="flex flex-col gap-3">
<SectionContentContainer>
<h2>The challenge</h2>
<p className="m-0 flex flex-col gap-6 p-0">
<Text>
<span>
Timely access to electronic case reporting (eCR) data is
critical for public health departments to respond swiftly to
Expand All @@ -47,14 +49,14 @@ export default function LaCountyCaseStudy() {
investigation less onerous for epidemiologists and other public
health staff.
</span>
</p>
</div>
</Text>
</SectionContentContainer>
</section>
<section id="solution">
<div className="flex flex-col gap-3">
<SectionContentContainer>
<h2>The solution</h2>
<div className="flex flex-col gap-6">
<p className="m-0 p-0">
<Text>
The DIBBs team worked with LAC to develop and deploy a
cutting-edge, modular data pipeline to automatically process and
enrich COVID-19 eCR files. This open-source, cloud-based
Expand All @@ -64,8 +66,8 @@ export default function LaCountyCaseStudy() {
receive and act upon public health data, while also improving
the quality of that data. Over the course of the year-long
pilot, the DIBBs team:
</p>
<ul className="list__full-width flex flex-col gap-2 font-semibold">
</Text>
<UnorderedList>
<li>
Conducted discovery research to understand eCR workflows,
identify product support needs, and assess the value of
Expand Down Expand Up @@ -95,49 +97,63 @@ export default function LaCountyCaseStudy() {
LAC staff to use post-pilot that enables them to independently
operate and customize the pipeline
</li>
</ul>
<p className="m-0 p-0">
We are currently commencing pilots with jurisdictions to test
the eCR Viewer in a production data environment and further
validate the tool's downstream public health impact. Our aim is
to scale the eCR Viewer with a wide range of jurisdictions to
turn eCR into the go-to data source for case ascertainment and
investigation.
</p>
</UnorderedList>
<Text>
Following the pilot, LAC now has access to an automated feed of
analysis-ready eCR data with fields relevant to downstream
disease teams. LAC plans to continue to leverage the DIBBs
pipeline infrastructure to give additional disease teams access
to processed eCR data, including the HIV and STD prevention team
and the Community Outbreak Team (focused on viral respiratory
pathogens). Through the LAC pilot, the DIBBs team gained
insights on how to use and adapt our modular, open-source
solutions to solve data challenges for multiple disease
surveillance systems across public health jurisdictions.
</Text>
</div>
</div>
</SectionContentContainer>
</section>
<section id="results">
<div className="flex flex-col gap-3">
<SectionContentContainer>
<h2>The results</h2>
<p className="m-0 p-0">
Following the pilot, LAC now has access to an automated feed of
analysis-ready eCR data with fields relevant to downstream disease
teams. LAC plans to continue to leverage the DIBBs pipeline
infrastructure to give additional disease teams access to
processed eCR data, including the HIV and STD prevention team and
the Community Outbreak Team (focused on viral respiratory
pathogens). Through the LAC pilot, the DIBBs team gained insights
on how to use and adapt our modular, open-source solutions to
solve data challenges for multiple disease surveillance systems
across public health jurisdictions.
</p>
</div>
<UnorderedList>
<li>
LAC staff can create program-specific data marts in a few hours
rather than months, giving disease teams access to processed eCR
data for case investigation and analysis
</li>
<li>
Case investigators on the Hepatitis team can receive eCR data
95% faster (from 20 hours to 1 hour)
</li>
<li>
Case investigators can quickly and easily identify positive
Hepatitis A cases in an aggregated tabular format (versus
sifting through individual HTML files) resulting in ~12 minutes
of time savings per Hepatitis A case
</li>
<li>
Pipeline can save LAC technical staff 6 hours a week by
eliminating the need to manually run data processing scripts
</li>
<li>
LAC staff can operate the pipeline independently and
continuously expand use of eCR data to new program areas
</li>
</UnorderedList>
</SectionContentContainer>
</section>
<section id="read-more">
<div className="flex flex-col gap-3">
<h2>Read more about our work</h2>
<ExternalLink
className="font-['Public Sans'] text-base font-bold leading-snug text-[#3a7d95] underline"
<SectionContentContainer>
<ReadMore
href="https://github.com/CDCgov/phdi/blob/main/publications/LAC%20Pilot%20Executive%20Brief_Final.pdf"
target="_blank"
rel="noreferrer noopener"
>
Findings from a Los Angeles County Pilot - Executive Brief
</ExternalLink>
</div>
linkText="Findings from a Los Angeles County Pilot - Executive Brief"
/>
</SectionContentContainer>
</section>
</div>
</div>
</ContentContainer>
</PageContainer>
);
}
};

export default DibbsPipeline;
148 changes: 148 additions & 0 deletions src/app/case-studies/ecr-viewer/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
import {
ContentContainer,
PageContainer,
ReturnToCaseStudiesLink,
SectionContentContainer,
Text,
UnorderedList,
} from '../_ui';

const EcrViewer = () => {
return (
<PageContainer>
<ContentContainer>
<section id="heading">
<ReturnToCaseStudiesLink />
<h1>
Surfacing actionable insights from electronic case reporting data
</h1>
</section>
<section id="challenge">
<SectionContentContainer>
<h2>The challenge</h2>
<Text>
<span>
Electronic case reporting (eCR) is intended to make disease
reporting faster and easier by automating the process of
exchanging case report information between electronic health
records (EHRs) and public health departments. However, public
health departments often face challenges making use of
electronic case reporting (eCR) data in case ascertainment and
case investigation.
</span>
<span>
When an eCR file arrives at a public health department, it
contains more than just information on the reportable condition
— it also includes data from a patient's entire health record,
such as demographics, diagnoses, comorbidities, occupation,
immunizations, medications, and more. The volume of information
contained within an eCR makes it difficult for public health
staff to figure out why the eCR was sent to them and where it
should go next. To add to this challenge, each eCR file contains
pages and pages of data that don't appear in a consistent order
or with consistent formatting.
</span>
<span>
As a result, it can take significant time and effort for public
health staff to review incoming eCRs. Many public health
departments still choose to manually contact healthcare
providers for clinical information, which remains a
time-consuming and onerous process for both healthcare providers
and public health departments. To fulfill the promise of eCR,
public health staff need to be able to quickly find key
information from incoming eCR data so they can take timely
public health action.
</span>
</Text>
</SectionContentContainer>
</section>
<section id="solution">
<SectionContentContainer>
<h2>The solution</h2>
<div className="flex flex-col gap-6">
<Text>
To make eCR data more usable for public health staff, the DIBBs
team has developed the eCR Viewer, an intuitive interface that
surfaces a summary of condition-specific information in a more
readable format at the top of the eCR file. Using the eCR
Viewer, public health staff can easily find data relevant to the
reportable condition. The eCR Viewer also orders and organizes
data consistently regardless of which electronic medical record
system generated the eCR. Because the eCR Viewer makes it easier
for public health staff to find clinical information for case
investigation, eCR becomes a more useful data source, thereby
reducing the need to manually contact healthcare providers.
</Text>
<Text>
To date, the DIBBs team has undertaken the following work
related to the eCR Viewer:
</Text>
<UnorderedList>
<li>
Conducted generative research with staff at public health
departments to understand how eCR fits into case ascertainment
and case investigation workflows
</li>
<li>
Developed concept designs of the eCR Viewer and gathered
feedback from users to develop a lightweight MVP
</li>
<li>
Built out the product vision and measurement plan to ensure
the eCR Viewer will meet the intended impact for time savings
</li>
<li>
Partnered with the General Dynamics Information Technology
(GDIT) team to integrate the eCR Viewer into the CDC's
National Electronic Disease Surveillance System (NEDSS) Base
System (NBS) with pilot jurisdictions
</li>
<li>
Identified pilot jurisdictions to test and validate the eCR
Viewer in their public health data workflows; NBS pilot
partners include the states of Maine and Tennessee
</li>
<li>
Established a pilot partnership with the city of Philadelphia
to evaluate using the eCR Viewer outside of a surveillance
system as a web-based tool hosted by CDC
</li>
</UnorderedList>
<Text>
We are currently commencing pilots with jurisdictions to test
the eCR Viewer in a production data environment and further
validate the tool's downstream public health impact. Our aim is
to scale the eCR Viewer with a wide range of jurisdictions to
turn eCR into the go-to data source for case ascertainment and
investigation.
</Text>
</div>
</SectionContentContainer>
</section>
<section id="results">
<SectionContentContainer>
<h2>The results</h2>
<UnorderedList>
<li>
Completed design and development of an eCR Viewer MVP and
validated its potential time savings with public health staff
</li>
<li>
Based on user testing with an MVP, the eCR Viewer allows staff
to process an eCR file for case ascertainment in five clicks
rather than twenty-five clicks
</li>
<li>
Based on user journey mapping in Maine, the eCR Viewer enables
staff to process all eCR files in a queue (over 5,000) in just
one week rather than 4.5 months
</li>
</UnorderedList>
</SectionContentContainer>
</section>
</ContentContainer>
</PageContainer>
);
};

export default EcrViewer;
Loading

0 comments on commit a52c207

Please sign in to comment.