GithubHelp home page GithubHelp logo

tanjera / infirmary-integrated Goto Github PK

View Code? Open in Web Editor NEW
40.0 8.0 5.0 51.49 MB

Medical device simulator for training healthcare professionals.

Home Page: http://www.infirmary-integrated.com/

License: Other

C# 98.09% HTML 0.01% PHP 0.45% Shell 1.08% NSIS 0.37%
medical simulating-medical-devices healthcare-professionals healthcare-devices infirmary-integrated defibrillator cardiac-monitor nursing intra-aortic-balloon-pump 12-lead-ecg

infirmary-integrated's Introduction

Infirmary Integrated
(c) 2017-2024, Ibi Keller (tanjera)

Infirmary Integrated is free and open-source software suite consisting of the Infirmary Integrated Simulator, Scenario Editor, and Development Tools designed to advance healthcare education for medical and nursing professionals and students. Developed as in-depth, accurate, and accessible educational tools, Infirmary Integrated can meet the needs of clinical simulators in emergency, critical care, obstetric, and many other medical and nursing specialties.

Infirmary Integrated contains a free simulator for healthcare devices to aide in medical and nursing education. By simulating medical devices such as a defibrillator or external fetal monitor, students can practice reading tracings, interpreting waveforms, and starting interventions. Educators can use Infirmary Integrated to enhance simulations in a lifelike environment similar to patient care areas, allowing educators to simulate patient presentations and hemodynamic states ranging from simple simulations to extremely complex scenarios. Infirmary Integrated is developed to be clinically accurate and contain relevant content. Additionally, Infirmary Integrated is free and open source software in order to be accessible for healthcare professionals around the world.

Infirmary Integrated currently functions as a simulator for the following healthcare devices:

  • Cardiac monitor
  • Defibrillator
  • 12-lead electrocardiograph (ECG)
  • Intra-aortic balloon pump (IABP)
  • External fetal monitor, cardiotocograph (EFM/CTG)
  • Medication administration record (MAR)

Infirmary Integrated Demonstration

Main features in Infirmary Integrated include:

  • Realistic waveforms draw according to multiple factors, accounting for:
    • Atrial and/or ventricular contractions
    • Aberrant/ectopic beats and resulting decreased pulsatility
    • Intrathoracic pressure, depending on mechanical or spontaneous ventilation
  • Able to pause devices to better analyze waveforms or create screenshots
  • Visual and audio alarms realistically simulate devices for enhanced clinical realism
  • Advanced modeling algorithms allow for on-the-fly changes to hemodynamic parameters with a smooth and responsive simulation
  • Able to create and play scenarios where the patient's condition changes and progresses
    • Students can react to changing patient conditions with pre-made scenario options
    • Instructors can guide students through simple or complex pre-made patient presentations and disease progressions
  • Able to mirror patient data across multiple computers
    • A teacher can run a simulation and automatically broadcast it across the internet
    • Students can subscribe to a broadcasted simulation and their screens will automatically synchronize
    • Broadcasting is seamlessly and securely processed through Infirmary Integrated's server
  • Able to save simulations to files (.ii extension) that can distributed or saved
    • Device information and options are also saved in simulation files
  • Multiple color schemes can be selected for each device simulator
    • "Dark" mode for realistic green-on-black ECG and monitor tracings
    • "Light" mode for high-contrast uses such as on an overhead projector
    • Some devices allow for "Grid" mode, replicating an ECG traced on gridded ECG paper

And Infirmary Integrated can simulate hemodynamic and other readings including:

  • Heart rate (HR)
  • Temperature (T)
  • Blood pressure (NIBP non-invasive and invasive ABP via arterial line)
  • Respiratory rate (RR)
  • Pulse oximetry (SpO2, pulse oximeter plethysmograph)
  • End-tidal capnography (ETCO2)
  • Central venous pressure (CVP)
  • Pulmonary artery pressures and waveforms (Swan-Ganz catheter pressures)
    • Including all pressures and waveforms to simulate catheter placement and wedging
  • Cardiac Output (CO)
  • Intracranial pressure (ICP) factoring compliance in the waveform
  • Intra-abdominal pressure (IAP, bladder pressure)
  • Intra-aortic balloon pump augmentation pressures
  • Cardiac axis deviation, pulsus paradoxus, pulsus alternans, and electrical alternans on waveforms
  • QRS interval adjustment and QTc interval adjustment for simulating various waveform morphologies
  • ST-segment elevation/depression and T-wave elevation/depression on all 12 ECG leads
  • Defibrillation, cardioversion, and transcutaneous pacing
  • Fetal heart rate (FHR), fetal heart rate variability, and uterine contractions (frequency and duration)

Infirmary Integrated Cardiac Monitor

Also, Infirmary Integrated simulates the following cardiac rhythms with waveforms and corresponding vital signs for scenario management:

  • Asystole
  • Atrial Fibrillation
  • Atrial Flutter
  • AV Block, 1st Degree
  • AV Block, 3rd Degree
  • AV Block, Mobitz II
  • AV Block, Wenckebach
  • Bundle Branch Block
  • CPR Artifact
  • Idioventricular
  • Junctional
  • Pulseless Electrical Activity
  • Sick Sinus Syndrome
  • Sinus Arrhythmia
  • Sinus Rhythm
  • Sinus Rhythm with Arrest (Sinoatrial Arrest)
  • Sinus Rhythm with Bigeminy
  • Sinus Rhythm with Trigeminy
  • Sinus Rhythm with PACs
  • Sinus Rhythm with PJCs
  • Sinus Rhythm with PVCs Multifocal
  • Sinus Rhythm with PVCs Unifocal
  • Supraventricular Tachycardia
  • Ventricular Fibrillation Coarse
  • Ventricular Fibrillation Fine
  • Ventricular Standstill
  • Ventricular Tachycardia Monomorphic Pulsed
  • Ventricular Tachycardia Monomorphic Pulseless
  • Ventricular Tachycardia Polymorphic

12 Lead ECG

Infirmary Integrated also simulates the following respiratory rhythms:

  • Agonal
  • Apnea
  • Apneustic
  • Ataxic
  • Biot
  • Cheyne-Stokes
  • Regular

Infirmary Integrated also simulates the following fetal heart rhythms:

  • Baseline (minimal variability)
  • Accelerations
  • Early Decelerations
  • Late Decelerations
  • Variable Decelerations

Fetal Heart Monitor

Infirmary Integrated also simulates features of an electronic health record (EHR) including:

  • Navigating drug orders and doses due on an electronic Medication Administration Record (MAR)

Medication Administration Record

Infirmary Integrated also supports full localization (translation) for the following languages:

  • አማርኛ (Amharic)
  • عربى (Arabic)
  • 中文 (Chinese)
  • Deutsche (German)
  • English
  • Español (Spanish)
  • فارسی (Farsi)
  • Français (French)
  • עברית (Hebrew)
  • हिंदी (Hindi)
  • Italiano (Italian)
  • 한국어 (Korean)
  • Português (Portuguese)
  • русский (Russian)
  • Swahili (Kiswahili)

For more information, feel free to visit http://www.infirmary-integrated.com/



Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

infirmary-integrated's People

Contributors

tanjera avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

infirmary-integrated's Issues

Leads: Add ICP monitoring, tie into DeviceMonitor

  • Add ICP to Leads
  • Add ICP to Waveforms
  • Add ICP setting to PatientEditor -> tie into Patient.cs
  • Add ICP to Numeric for DeviceMonitor
  • Add ICP to Tracing for DeviceMonitor
  • Ensure able to select ICP from "Select Input" for both numeric and tracing

DeviceIABP: End-diastolic arterial pressure waveform adjustment

Arterial line waveform should show lower blood pressures at end-diastole when assisted by balloon pump; after balloon deflation, arterial blood pressure lower at end-diastole than it would be if the balloon had not been pumping). Best to be compared with balloon pump in 1:2 or 1:3 ratio.

PatientEditor: Mirror simulation (Patient.cs) via tcpip/sql

Mirror Patient.cs fields in a SQL server on Infirmary domain name Login to SQL by key (ssh?). Keep key protected on Git repo to prevent public access.

Mirroring places patient values into a SQL table. Store following values:

  • IP address
  • Mac address?
  • User name
  • DateTime created
  • DateTime last updated
  • Patient.cs vital values

PatientEditor can have three modes: local, mirror-host and mirror-client. Local is current setup. Hosting mirror pings updates to SQL on Patient.cs PatientEvent.VitalsUpdated. Client pings SQL for updates every ? seconds for last updated time, propogates values.

DeviceIABP: UI Improvements

User interface functionality needs improvement- possibly have buttons open drop-down menus or activate otherwise inactive buttons (similar to Maquet IABP functionality), rather than rotate through options (e.g. how it currently rotates through assist ratios 1:1, 1:2, then 1:3).

Also UI colors slightly tacky.

DeviceDefib: Pacing & Defibrillation

  • Need to implement pacing

    • Including triggering timers in Patient.cs
    • Will need thresholds for capture in PatientEditor.cs
      • Will need to reflect back/forth in Patient.cs and trace through Save()/Load()
  • Modify defibrillation waveform for realism?

    • Waveform is too wide/long? Real waveforms are much narrower.
    • Shorten or remove the associated pause as well.

Usage Statistics: Make all data collected anonymous!

  • MD5 hash all identifying information uploaded (username, IP address, mac address)

    • Hashed values can still be used for statistics tracking! Since they are individual (but anonymous)
  • Keep program information raw (version #, OS)

  • Then update website and make it clear that data is anonymous (once completed and re-released!)

Save/Load Format .ii/t2

Can add stepwise simulation, with only certain parameters changing (soft load?) on each step. Interventions to trigger next step can have their own stack of buttons someplace in PatientEditor

Future feature: Student Mode and Instructor Mode?

Student mode may have:

  • A learning library with different simulations to pick from
  • A randomizer for picking random clinical simulations and patient presentations
  • Goals? Measures of performance?

Instructor Mode would be what II already is :)

Arterial blood pressure waveform not correctly synced with ECG tracing

The ventricular ejection upstroke up the arterial blood pressure waveform should not start until after the QRS complex of the ECG tracing; it should start somewhere in the middle of the T-wave up-slope. The arterial blood pressure waveform should be phase shifted by ~200-300ms behind the ECG tracing.

Current Implementation
image

Correct Appearance
image

Waveform pauses on heavy CPU thread load.

Significant CPU thread load causes delays or pauses in waveform generation, presenting as brief periods of asystole when applying rhythm changes or dragging UI Window.

Attempted fix in #34. Failed.

Possible solution includes providing independent thread for Patient() object’s timers for waveform generation. Potential threading nightmare- on back-burner for now.

Splash Screen

Would like a splash screen upon opening the program. Not really necessary, but would be nice and pretty simple to implement.

Requirements:

  • Only shows for 2-5 seconds (set by internal variable) before automatically closing splash screen and continuing to open PatientEditor.xaml
  • Only shows on Release version, not for Debug version!
    • Would be really annoying if it popped up for every test run during debugging!
    • compiler #if / #else would work

Implement: usage statistics

Link to SQL database at web host, add data per program init.

Data to collect: DateTime. Infirmary version. OS. IP address? User name?

DeviceEFM: Implementation for Fetal Heart Monitor

The next device I'd like to implement is DeviceEFM - the external fetal heart monitor (abbreviated as EFM- "external fetal monitor", also known as cardiotocography...). It is a monitoring device used in hospitals to monitor pregnant women in labor to track the fetus's heart rate and ensure it is healthy (with a healthy heart rate). The machine tracks two waveforms: fetal heart rate and uterine contractions. The framework for the code, both WPF and C#, is mainly copy/pasted from DeviceECG and adapted.

The screen and the printout both look like this: cat-ii

The top waveform strip is the fetal heart rate, measured in beats per minute (y axis) plotted over time (x axis), with normal heart rates hovering around 130-160 beats per minute. The bottom waveform strip is uterine contractions, measured more subjectively as 0-100% (y axis) plotted over time (x axis).

Steps to do for implementation (non-medical!):

  • Implement EFMTracing.xaml and EFMTracing.xaml.cs as the control for visualizing the graphs (unassigned)

    • Note: EFMTracing.xaml & EFMTracing.xaml.cs are pretty much copy/pasted versions of other Controls that are adapted to specific uses for specific devices/look/feel.
    • Expected outcome: A control much like ECGTracing except with a white background, red grid lines similar to the picture above, with measurement units mimicking the picture above. Lines and labels can either be added programmatic (as WPF items), as Resources (as vector image .svg imported as background image, able to scale with different screen resolutions/window sizes).
    • It would be okay to create TWO controls, one for fetal heart rate and one for uterine contractions. Would prefer names EFMTracingFHR (fetal heart rate) and EFMTracingToco (tocometer- name of device that reads uterine contractions).
  • Implement DeviceEFM.xaml and DeviceEFM.xaml.cs as the actual device screen. (unassigned)

    • Expected outcome: Would be the window containing the EFMTracing controls, arranged like the waveform strip pictured above, able to display waveform strips in the control. Would function and act like other devices (e.g. ECG window), would be spawned by clicking on WPF button on PatientEditor.xml (currently disabled... needs enabling and possibly needs mouse-click trigger event implemented to spawn window).
  • Patient modeling for populating waveform strips in Strip.cs (not medical specific, but integrates with medical-specific functionality) (unassigned)

    • Add_Beat__Obstetric_Baseline - to be used for populating baseline strip waveform, timer event for triggering contractions and decelerations
    • Add_Beat__Obstetric_Contraction - used for populating tocometer and triggering start/end of contraction; triggers FHR decelerations based on contractions
    • Add_Beat__Obstetric_Deceleration - used for triggering unique FHR decelerations
  • Then, implementing medical-specific functionality (assigned: Tanjera)

    • Creating waveforms for EFMTracing in Waveforms.cs
      • EFM_FHR: fetal heart rate rhythm
      • EFM_Toco: tocometer rhythm
    • Display the rhythm strip in EFMTracing...
    • Tie in obstetric patient parameters from Patient.cs
      • FHR, uterine frequency/strength, decelerations

PA catheter thermodilution readings: add pop-up window?

Add an option to run thermodilution. Display readings in a pop-up window. Values should be pulled from PatientEditor's "advanced hemodynamics" section.

Will need patient height & weight (-> BSA) for indices.

Display:
CO (4-8 L/min) ... 4-8 L/min
CI? = CO / BSA ... 2.5 - 4.0 L/min/m2
SV = CO / HR * 1000 ... 50-100 ml/beat
SI? = CI / HR * 1000 ... 25-45 ml/beat/m2
SVR = MAP - CVP / CO * 80 ... 800-1200 dynes/s/cm-5
PVR = MPAP - PDP / CO * 80 ... 50-250 dynes/s/cm-5

Save Screenshot

Ability to save a screenshot of the rhythms/waveforms displayed on a device.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.