A "how we built this" series for 🔥 FHIR products
In this series of posts, we will be exploring a software product that we built for a client. We will be discussing the product, the technology, and the process that we used to build it. We will also be discussing the challenges that we faced and the lessons that we learned along the way.
The 🌀eSpiral Product
We were approached by a client who wanted to build a mobile/web tool for his residents. Let's keep the client anonymous and call him Dr. X. Dr. X is a physician who works in a hospital setting. He also runs a residency program for new doctors. Dr. X wanted to build a tool that would allow his residents to visualize the patient journey in a multi dimensional at a glance view with the most important information front and center.
Let's take a look at how we approached this problem.
Product Engineering Process
As with all of our projects, documenting and narrating the journey is a key part of the engagement. We will leverage those documents to build this series of posts. For us, we simplify the project into phases, using our foodtruck analogy to help communicate the progress and technical pieces along the way.
Let's quickly review the foodtruck analogy. In the foodtruck analogy depicted below, we have a foodtruck with labels to the analogous parts of the software product. Let's quickly review the key parts of the foodtruck.
For us, we think of most of the foodtruck as reusable components that we separate from business logic.
Tools & Frameworks
Foodtruck Component | Software Translation | Tools |
---|---|---|
Engine | CICD, Infrastructure, and DevOps | Github Actions, AWS SAM, CloudFormation |
Chassis | Core tools and frameworks | Remix, TypeScript, DynamoDB, Lambda, API Gateway |
Body | UX/UI and Design | React, TailwindCSS |
Menu | Product Features | Product Roadmap, User Stories, User Feedback |
Grill | Core Functionality | Mafs.js, FHIR R4 |
Keys | Security & Compliance | FHIR: SMART Launch, AWS Secrets, DDB Encryption |
Chef Spoon | QA & Testing | Jest, React Testing Library, Cypress, staging environment |
Tires | Minor External Libraries | React Dropzone, React Query |
Operator's Manual | Documentation & Build Notes | Docusaurus |
Dashboard | Metrics & Analytics | AWS CloudWatch, Fathom, Sentry, Bugherd |
Steel Thread
The main feature of the tool is a visualization layer that leverages the Problem List from the EHR, matching ICD10 codes with icons to start representing the journey of the patient. If you notice in the image above the engineering work was broken into two phases, POC (alpha) and beta.
The POC phase was a proof of concept to build out the visualization layer. The beta phase was to build out the rest of the product and integrate it with initial beta customer EHRs.
Phase 1
- Application skeleton
- Visualizations steel thread
- User management base
- ICD10 Icon data model
Phase 2
- Smart on FHIR integration with SMART Launch
- Sync Problem Lists & Encounters
- Patient journey algorithm