Giter Site home page Giter Site 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 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

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.

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!)

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

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.

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

Save Screenshot

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

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.

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

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

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 :)

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.

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

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?

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

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.