This is a rolling pre-release for the upcoming version 2.7, but given the slow progress of development and limited number of features needing implementation, this important update was tested and released as its own major release. This update includes a number of improvements to clinical realism and program stability.
From a developer’s and a user’s perspective, the biggest improvement is program stability. A bug in the drawing algorithm caused bradycardias to consume large amounts of system memory, crashing the program. A re-write on some of the drawing processes fixed that, making the program much more useful for displaying profound bradycardias and more performant at drawing all rhythms in general. This change alone warranted accelerating the release timeline without waiting for version 2.7 or additional features.
Other improvements include streamlined cryptographic security verification of Infirmary Integrated’s software. Source code for Infirmary Integrated is self-audited for consistency and stored in a cryptographically signed code repository. Releases for Microsoft Windows continue to be signed using trusted certificates. Linux packages are now listed with package hash sums signed by the developer. Plans to sign Mac OS packages with trusted certificates are under way for implementation. While Infirmary Integrated is a niche software suite developed by one person, this still gives users peace of mind that the software is secure and reliable.
The remaining release notes are as follows:
Applicable waveforms drawn accounting for systolic versus diastole
Creates realistic waveforms in both bradycardic and tachycardic situations
Reduces improper drawing (pulsatility during diastole or diastolic function during extreme tachycardia)
Performance improvements in drawing algorithm, especially effects bradycardias
Removed inefficiencies that caused memory overflows on some machines
Equal performance at reduced memory use
Drastically reduced build and installation file size
As a nurse educator, I’ve identified different tools that would streamline and enhance the education of new and existing healthcare professionals… but as a software developer, it can be tricky to determine how to best implement those tools. With that said, Infirmary Integrated has come to a massive fork in the road and this post is to help explain the feature roadmap that I am following in developing Infirmary Integrated.
Infirmary Integrated has always been a toolkit: a collection of tools built into one package. Initially, it was a device simulator, then it was multiple device simulators built into one program… then the device simulator could run step-by-step simulations and a scenario editor was added to the package…
Now, to simulate an often ubiquitous device utilized in healthcare- the Electronic Health Record (EHR)– Infirmary Integrated is expanding again! However, the best way to implement an EHR simulator is actually using a web-based platform, substantially different than the desktop application that Infirmary Integrated is currently!
To accomodate the implementation of the EHR, Infirmary Integrated will be the overarching suite of software that will remain open-source and freely available, and will consist of:
Infirmary Integrated: Simulator (commonly called “Infirmary Integrated” or II:SIM)
Runs as a desktop application on Windows, Mac OS, and Linux
Bundled along with the Scenario Editor (II:SE)
Infirmary Integrated: Electronic Health Record (II:EHR)
A web-hosted application that requires the use of a web server
Can be accessed by many users simultaneously through a web browser
Features Implemented
While the entire EHR is now under development, features currently implemented and in beta testing are:
Access to add, edit, and delete chart items based on role and license
Administrator access required to add, edit, or remove users
Users can self-register but receive no role at default
Facility management
Able to simulate unit census on multiple units (facilities)
Different units (facilities) can have different amounts of rooms
Patient management
Add, edit, and delete simulated patients
Assign or unassign patients to rooms
Navigate unit census, list all patients admitted to unit
Health record (patient chart) functionality including:
Chart banner: essential information (e.g. name, date of birth, allergies, code status)
Demographics: view patient’s demographic information (which is added by a manager in the patient management tool)
Allergies: list, add, view, and remove patient’s allergies
User access (license & role) required to chart
Notes (e.g. progress notes, history and physical) and Diagnostic Reports (e.g. x-ray, CT scan)
List, add, view, and remove notes/reports
User access (license & role) required to chart
Only managers/administrators can remove notes/reports
Add addendums to notes (e.g. to redact or add information)
Attach files to notes/reports; when viewing notes/reports with attached files, images are displayed directly with the note (e.g. can simulate an x-ray reading alongside the x-ray itself).
Documents (e.g. .docx or .pdf) can be downloaded for viewing
Clicking on an attached image opens it enlarged in a new tab
Orders: write, pend, complete, or discontinue orders
User access (license & role) required for actions
Prescriber licenses (NP, PA, MD, DO) can order
Registered Nurses can order with cosign
Administrator or manager can delete orders
View all written orders- orders are color coded by priority and sorted by order type (medication or general order)
Under Development
The following features are currently in the alpha stage of development:
Medication Administration Record
View all medications and doses due
Medications and doses are populated from the patient’s orders
Sign doses as being given, not given, and make notations on doses
Coming Soon…
The following features are planned for development prior to the first production release:
Flowsheet
Chart on the patient and view previously charted information, including:
Vital signs
Assessments
Results: enter and show lab results
Linking the Electronic Health Record and Simulator
While this project is a large undertaking, it is rapidly being developed with a production release estimated to be ready by mid-summer! Following the release of the Electronic Health Record, there are plans to merge functionality between the EHR and Simulator with the ability to:
Generate an access token from a patient’s chart in the EHR
Paste the access token into the Scenario Editor for a simulation
Access the patient’s EHR directly from a scenario in the Simulator
Allowing educators to craft a scenario, create the simulation in the Scenario Editor to simulate healthcare devices such as the cardiac monitor and 12 lead ECG, and also have students be able to open the EHR directly into the scenario’s patient chart, view their health record, lab results, vital sign documentation, notes, and integrated medication administration into scenarios using the medication administration record!
As part of developing and maintaining Infirmary Integrated, I often come across bugs in the software that need patching. I am announcing a unique bugfix that repaired Infirmary’s “cloud” functionality today.
Infirmary Integrated’s server has been migrated to a new host. As part of the migration, access to the website and the server may be spotty for a day while DNS records update. Regardless, aggressive testing during the migration exposed a problem that Infirmary’s “mirroring” functionality had broken in the past several months when PHP upgraded recently. Since PHP is the language the server’s functions are written in, the issue cropped up and impacted Infirmary.
I tracked down and fixed the problem, restoring the “mirroring” functionality. Specifically, Infirmary Integrated can be used to mirror simulations. When you launch Infirmary Integrated’s simulator and set up a patient simulation, you can choose to “broadcast”, which sends the simulation to Infirmary’s server in the cloud. The bug that was fixed specifically broke this functionality!
Once a simulation is broadcast via the server, somebody running Infirmary Integrated’s simulator can “mirror” or receive the simulation, retrieving it from the cloud. Additionally, mirroring updates every few seconds so that any changes made by the broadcaster propagate to all mirrors almost immediately!
I am glad to announce this insidious problem was discovered through testing and resolved. Any bugs that are found by the community can also be reported via the Github repository in an issue or discussion for resolving.
10 years ago, as a new nurse, I had dreams of improving healthcare around the world. While my positive impact in nursing was generally limited to the patients I cared for in the hospitals I worked at, I searched for a way to improve healthcare beyond my physical presence. When I stumbled onto the idea that eventually became Infirmary Integrated, I always aimed to make it accessible for healthcare educators around the world, regardless of borders, language barriers, or technology barriers.
When I first started developing Infirmary Integrated, I ensured that I published it with accessibility in mind. To that end, I licensed it as free and open source software, free to be used for healthcare education with no restrictions in the classroom: free to download, and free to use. While healthcare has accessibility barriers around the world, educational software can easily be democratized and can be used to improve healthcare delivery around the world. That was my underlying goal.
To track progress on that goal and Infirmary’s use around the world, the program does collect anonymized usage data that I also use to guide feature implementation such as language localization. Every time I see Infirmary used in a new area of the world, I am excited to know that a healthcare educator may have found the software that will satisfy a niche in their classroom to further their students’ education, just how I use Infirmary regularly in a variety of courses that I teach.
To celebrate 4 years since the full release of version 1.0 (and 5 years since its first published pre-release version), I am ecstatic to announce that Infirmary has been used in 54 countries around the world! While I can’t identify how Infirmary is being used, for what, or by who, I am satisfied knowing that healthcare educators around the world have free access to tools that can enrich their classrooms and further their students’ knowledge, ultimately improving patient care and patient outcomes!
With that in mind, I look forward to expanding Infirmary’s usage, functionality, and strength as an educational tool. Together, we can advance healthcare education!
To accommodate recently released hardware based on the ARM64 architecture, Infirmary Integrated is now packaged and published with installers and binaries to run on this architecture. Packages for newly supported hardware include support for:
Apple desktops and laptops with M1 or newer “Apple silicon” processors, including MacBook and Mac desktops built in 2020 or later
Microsoft Surface tablets or laptops with Qualcomm processors, including tablets with the SQ1 or newer chips built in 2020 or later
Linux devices running on ARM64 architecture (e.g. Raspberry Pi 4, although it may not meet the minimum necessary specifications to run Infirmary Integrated otherwise)
This update is the culmination of many small enhancements and bugfixes implemented since version 2.4. While there is nothing newly groundbreaking, lots of fixes, implementations, and enhancements make version 2.5 a more realistic, stable, and effective simulator. Changes include:
Defibrillator Enhancements
Options to select maximum defibrillation energy and energy increments
Simulates Zoll (200 J) or LifePak (360 J)
Can increment at 10 J or 20 J such as to simulate institution preference/settings
Audio tones for “charging” and “charged” electricity states
Audio playback controlled by main window’s audio settings (on/off)
Audio options for defibrillator now include:
“Off”: device is muted
“Defibrillator”: only charging/charged tones will play
“Heart Rate/QRS” and “SpO2”: both charging/charged tones and QRS/SpO2 tones play
Color coded indicators for defibrillator state in Dark (colorful) color scheme
The “Defibrillator Settings” numeric entirely changes color based on defibrillator state
Charging: yellow; Charged: red
Analyzing rhythm: yellow-green
Pacing enabled: orange
All other discharged states return to light blue
General Enhancements
Numerous Avalonia UI (window manager) package updates merged into this build version
Includes numerous bugfixes for compatibility and functionality across supported operating systems
Should help with program speed and stability on all platforms
Minor releases since version 2.4.0 include:
Minor update 2.4.1: bugfixes
This update fixes several minor bugs
The biggest fix in this update is the ability to open an .ii simulation file by double-clicking on it from the desktop, launching the program directly into the simulation file.
Minor update 2.4.4: Signing Doses w/ MAR & Bugfixes
This update includes the ability to sign off doses of medications on the MAR and add comments
This update also includes the ability to edit comments and sign off via the Scenario Editor
This update fixes several additional bugs, including a functionality-breaking bug
On opening Infirmary with an update available, the program sometimes hangs or crashes- this fixes that problem
Minor update 2.4.5: QOL Improvements
This update fixes several quality-of-life issues improving Tracing responsiveness during vital sign changes
Including more responsive Tracings when loading files
ECG lead labels are now properly aligned to top-left for realism
This minor update fixes several “quality of life” issues that improve the performance and responsiveness of Infirmary Integrated in certain edge cases, especially when making on-the-fly simulations and presentations. Specifically, waveform tracings now respond more robustly to rate changes made to vital signs, including:
Vital sign rate changes now properly trigger responses in patient physiology and waveforms according to the “apply buffer” timer. This is most notable when simulating a heart rate < 20 bpm or a respiratory rate < 10. For example:
Before this fix: when simulating a profoundly bradycardic or bradypneic patient, changes to vital signs would take 1 cardiac or respiratory cycle (up to 60 seconds!) before reflected in waveform tracings.
After this fix: changes to vital signs will be reflected in waveform tracings in 5 seconds or less.
This does not include waveforms on the External Fetal Monitor (EFM) or Tocograph.
Loading a simulation file (.ii file) now starts waveform tracings immediately.
Before this fix: when loading a simulation file, it would take 1 cardiac or respiratory cycle to begin waveform tracings- this could be up to 60 seconds in a profoundly bradycardic or bradypneic patient!
12-lead ECG tracings are now labeled in the top-left corner of their leads, simulating real-life 12-leads.
This past week, a functionality-breaking bug was found and fixed in Infirmary Integrated. This bug does not pose any security risk. The bug occurred when a new update was made available for Infirmary and the program attempted to notify the user of the update- instead, the program experienced a “soft” crash and just stopped working. The bug only occurred if Infirmary detected a new update was available. Since the “update available” startup routine is rarely tested by the developers, this bug went unnoticed for some time and likely has been an annoyance.
The bug was partially fixed in v 2.4.3 by allowing Infirmary to finish loading and skipping the update notification.
The bug has been completely fixed in v 2.4.4 and the update notification has been fixed as well.
This is the first release bringing Infirmary Integrated into simulating the electronic health record (EMR). This release includes a moderately-featured electronic Medication Administration Record (MAR) that can display drugs ordered and doses to be given in a layout familiar to anybody that has used an electronic MAR. Doses are plotted on a time-grid and you can navigate forward and backwards in time to see future or past doses. This release also includes the ability to add patient demographic information, so patient identifiers are displayed on the MAR to allow students to complete all the rights of drug administration.
Major features with this release:
Add simulated patient demographics and drug orders in the Infirmary Integrated Scenario Editor
View and navigate the MAR in the Infirmary Integrated Simulator by loading a simulation file with the relevant data
In the Scenario Editor, each Step can have a different date/time set, so simulations can progress over time
Drug and dose data includes: drug, dose, units, route, frequency (prn, once, repeat), priority (routine, now, stat)
Administration and Indication fields can receive free-text: can enter hold parameters (“hold for SBP < 100”) or infusion instructions (“infuse over 60 minutes”)
Color coding: past-due doses (> 1 hour in the past per simulated time) are marked in red, scheduled doses marked in blue, prn doses marked in green
Automatic sorting of drug orders: scheduled doses present first, prn orders underneath, and all drugs are sorted alphabetically by name
Features that are not implemented, but are planned for future releases include:
Signing off drug doses after administering them
Marking past doses as being given or not given in the Scenario Editor
Minor update 2.4.1
This update fixes several minor bugs
The biggest fix in this update is the ability to open an .ii simulation file by double-clicking on it from the desktop, launching the program directly into the simulation file.
Minor update 2.4.4
This update includes the ability to sign off doses of medications on the MAR and add comments
This update also includes the ability to edit comments and sign off via the Scenario Editor
This update fixes several additional bugs, including a functionality-breaking bug
On opening Infirmary with an update available, the program sometimes hangs or crashes- this fixes that problem
A simulated MAR with sample (fake) patient identifiers for students to complete the rights of drug administration: