Symptom Checker Web App Management System

by Erik Altman on 2019-08-01


Developing a symptom checker product to be embedded on every healthcare service provider's website is hard. Our app needs to support

  • integration with any SMART on FHIR EHR environments
  • iframe integrations with a seamless ux
  • customizable themes and logos
  • localization for multiple languages and regions
  • anonymous and authorized patient and proxy users
  • customizable options for every triage recommendation and most acute symptom
  • interactive anatomical index

The first time I built this application I made my first real app with Angular Material. The app looked and felt awesome but I ran into a road block with dynamic theming. With angular material's prebuilt dynamic themes, I would need to compile the theme for every app and cache its css separately. I also worried that the look was too stylized to look at home on my clients websites. We ended up migrating the app to bootstrap 4 and linking to instructing our users who didn't already have bootstrap themes to creat one for their brand. 99% of the time, we mock a theme up for our demo with the client and they never change it. The app looks great. It is a mobile-first web application but it still looks at home embedded on any website. It can also hide away its title bar for implemenation in mobile webviews where there is already a fixed top header.

The most enjoyable part of this project was doing it with my team. We didn't just build an amazing app, we built cms that allows you to configure instances of it and match them to your business. My colleagues Taylor Cameron and Trent Rand were instrumental, migrating our symptom checker javascript library to typescript and helping build out both front end aspects of the project. My partner Joseph built the spring boot API that serves the application, stores its configuration and integrates with our authentication service.

Another highlight of this project was going to Epic's App Orchard Developer conference and Developer Training. I had a great time learning about the progress made and the broader concerns of the Healthcare Technology community. It was great to have the support of my team to tackle the challenges of integrating our product and representing the integration for our company.

When you have a history as long as our content and services it can be really hard to scope down a project. The amount of requirements and the flexibility desired creates serious challenges in designing a working solution. This product came out great because it was developed incremently. This product is really the evolution of our reference angular application and core javascript library. We showed the reference application to customers for a year and really validated what it would take to provide it as a scalable service.

If I could do this project again I would probably design a server to prebuild the application for every instance instead of dynamically serving them. Our team needed a product to sell badly and this complexity was out of scope. I hope that we can accomplish this in the next version.