This was a wonderful project built in collaboration with the Western Virginia Emergency Medical Services Council, Inc, who provides Emergency Medical Services (EMS) in the state of Virginia…specificially in the following 7 cities:
and 12 counties:
Having lived (and trained) in the region for several years, I am both personally and professionally satisfied to have played a small part in this region’s ability to provide Acute Unscheduled Care to their community. Opportunities like this are why I picked a career in informatics.
Our efforts aren’t over, however. This collaborative was intentionally built in an open-source format, meaning any who want to mirror our efforts are welcome (MIT License). The content within each PDF are also freely available from WVEMS Council, Inc, under the CC BY-SA 4.0 license. We are happy to work with any who may want to build interactive PDFs and display similar content in a searchable, cross-platform manner.
Interestingly, this was also the first time our company had a client directly contribute to our code while we were actively building and optimizing the interfaces they wanted. That was REALLY fun to do, and absolutely helped add to the collaborative vibe. I hope that gains traction as well.
Without further ado…here is the finished product:
Features (in Flutter)
For this project, we built an open-source cross-platform Flutter app with the following features:
- Open PDFs via the flutter_pdfview package
- Search within PDFs using JSON as a shortcut to load text data more quickly, and using material_floating_search_bar to display search results
- Firebase authentication (anonymous) and Firebase cloud storage, via FlutterFire, so that you could download prior iterations of these protocols (including the original 2019 protocol)
- Firebase cloud messaging, so the EMS agency can send the occasional push notification to its users
- Error and state handling via freezed
- Built using the Get MVC+S Architecture
Features (outside Flutter)
We also created custom WVEMS logos that allow us to display the app in light / dark modes, with background images removed.
Finally, we set our PDF content + metadata in a standard manner, with resources accessed both inside the assets folder and outside (e.g. in Firebase Storage). This allows you to dynamically load folders from the cloud, so that you can add new PDF content dynamically without having to make any changes to your code. Put differently, this allows for an offline-first app that can still be updated via the cloud…but does not require any internet connectivity for day-to-day operations and works ‘out of the box’ on first install of the app. That was an important feature.
I am happy to go into any of these features in depth, or to create some additional posts/videos with lessons learned. As with before, the objective is to always push the needle forward, reflect on lessons learned, and continue pushing.
I subscribe heavily to the “Yes and…” mentality, and particularly to Second City’s saying: “All of us is better than one of us.” This project was truly a collaborative. My only hope is that future projects share in this collaborative culture and sense of community.
To my friends in Western Virginia, take care out there. Hopefully, this app will help.