Version 4.2.0

Our versioning follows the Semantic Versioning 2.0.0 format.

Our version number sematic is Major.Minor.Patch-ReleaseStage, where :

  • MAJOR changes when we make incompatible API changes,
  • MINOR changes when we add functionality in a backwards-compatible manner, and
  • PATCH changes when we make backwards-compatible bug fixes.
  • Release Stage - We have extended this versioning with a release stage

Pulse v4.2.0 (April 2023)

  • Software Architecture Improvements
    • iOS build support
    • New utility to translate a log file into a scenario
      • Logs now contain json for patient, actions and conditions
    • More serialization testing
    • Reusable data request files
      • Scenarios can now reference external files for data requests
    • Added support for expanding an engine's systems and/or circuits
      • Provides the ability to define and run a more complex circuit within a common system model
    • Improved BlackBox support for external model coupling
    • Added Python plotting tools for improved verification, validation, and documentation
  • Physiology Model Improvements
    • Patient variability
      • Added system validation for standard female patients
      • Added optional pulse pressure, mean arterial pressure, and body mass index settings
    • Mechanical ventilator
      • Improved triggering
      • Improved error handling
      • Additional waveform types
      • Expose more control parameters
      • More validation
    • Respiratory
      • Corrected respiratory inhale/exhale transition timing
      • Added shunting and labored breathing effects to collapsing lung functionality
      • Improved lung collapse (e.g., tension pneumothorax and hemothorax) responses
    • Intubation
      • Added a severity to control flow
      • Esophageal intubation can provide air to lungs via a severity
    • Bag-Valve-Mask
      • Automation Support - Set a frequency and pressure to repeat
      • Single Squeeze - Set a pressure for a single squeeze
      • Instantaneous - Set a pressure to apply (Intended for hardware integration)
    • Cardiovascular
      • Improved heart driver and cardiac cycle
      • More control to adjust vascular tone
      • Pulmonary capillary coverage adjusts based on Mean Arterial Pressure
    • Cardiac Arrest
      • Improved End Tidal Carbon Dioxide Pressure response
      • Improved SpO2 response
      • Improved recovery transition model
    • Hemorrhage
      • Improved Baroreceptor response
      • Severity now calculates resitance using compartment inflow average
    • CPR
      • Automation Support - Set a frequency and severity or depth to repeat
      • Single Squeeze - Set a severity or depth for a single squeeze
      • Instantaneous - Set a severity or depth to apply (Intended for hardware integration)
    • ECMO support
      • End user can adjust substance values and flow rates back into Pulse
      • NOT A MODEL Intended for external users to perscribe flow rates and substance concentrations
    • Removed Pulmonary Function Test Assessment

Pulse v4.1.0 (March 2022)

  • Software Architecture Improvements
    • Including build information
      • Added to all client facing API's (C++, Java, Python, C#) for external applications to get Pulse version
      • Added to state files to help identify compatibility with engine builds
    • New Hemodynamics Engine
      • Provides the ability to execute and optimize our cardiovascular circuit
      • Compares optimization iterations to validation data to converve on an optimal and valid circuit configuration
    • Updated to Eigen 3.4.0 and Protobuf 3.18.0
  • Physiology Model Improvements
    • Added Lorazepam
    • Added an oversedation drug as a test case
    • New Advanced Cardiac Life Support (ACLS) Arrhythimias with ECG waveforms
      • NormalSinus : Normal electrical signal and mechanical function
      • Sinus Bradycardia : Normal electrical signal with reduced heart rate
      • Sinus Tachycardia : Normal electrical signal and increased heart rate
      • Sinus Pulseless Electrical Activity : Organized electrical signal, but no mechanical function
      • Asystole : No electrical signal or mechanical function
      • Coarse Ventricular Fibrillation : Unorganized electrical signal, no mechanical function
      • Fine Ventricular Fibrillation : Unorganized electrical signal, reduced amplitude compared to coarse VF, no mechanical function
      • Pulseless Ventricular Tachycardia : Ventricular tachycardia electrical signal with reduced amplitude, but no mechanical function
      • Stable Ventricular Tachycardia : Ventricular tachycardia electrical signal with increased heart rate
      • Unstable Ventricular Tachycardia : Ventricular tachycardia electrical signal with increased heart rate, reduced heart elastance
    • ECG Waveforms use an interpolation algorithm to fit the waveform to the cardiac cycle
    • Ventilation equipment provides breath information to differentiate patient or equipment initiated breaths
    • Added configurable relief valve to mechanical ventilator
    • Added a suite of black box unit tests to verify data exchange combinations
    • Bug Fixes
      • Corrected flow calculations for compartments
      • Increased the frequency data is updated in the cardiovascular system during cardiac arrest
      • Replaced Irreversible states with more relavent clinical events: Pulse continues running, unlike during Irreversible states
      • Improved calculations of patient lung volumes due to disease

Pulse v4.0.0 (September 2021)

  • Software Architecture Improvements
    • Multiple Engine Support
      • Provides the ability to break up, extend, and group various model implementations into a specific physiology engine
      • A foundation for future whole body physiology engines, such as a pediatric engine
      • All of our supported languages support the ability to specify the back end engine model at construction time
      • All engines are driven using the same API
    • New Ventilation Mechanics Engine
      • Encapsulates only our respiratory and mechanical ventilation models
      • NOT a whole body physiology engine, only the math models for respiration and ventilation
    • Upgrade code base to C++17
    • Added namespaces
    • Improved header organization
    • Normalized API's between all supported languages
    • Moved autogenerated protobuf files to build directory
  • Physiology Model Improvements
    • New Arterial Blood Gasses Assessment
    • Added Etomidate and Phenylephrine
    • Validated Norepinephrine and added support for a basal rate and clearance
    • New Respiratory Mechanics Action
      • Provides the ability to fully customize the respiratory compliances, resistances, and spontaneous breath timings
    • New Bag Valve Mask Equipment with support for various levels of interaction
      • Squeeze: A single squeeze profile to perform once
      • Automatic: A squeeze profile and rate to continuously occur
      • Instantaneous: Provide flow/pressure values of a squeeze (For sensor integration)
    • New Mechanical Ventilator Actions
      • Hold: Keep the current delivered pressure/volume static until released
      • Leak: Prescribe a leak of air between the ventilator and patient
      • CPAP Mode: Intuitive settings associated with CPAP ventilation
      • Pressure Control Mode: Intuitive settings associated with PC-CMV and PC-AC
      • Volume Control Mode: Intuitive settings associated with VC-CMV and VC-AC
    • Expanded data available in Respiratory and Mechanical Ventilator Systems

Pulse v3.2.0 (May 2021)

  • Software Architecture Improvements
    • Added support for Python to create and manage a pool for engines to optimize integration of Pulse with ML frameworks
    • Added support and examples for defining complex, scenario specific death state logic
    • Added support for using a dynamic time step provided by the users
    • Improved interface for scenario execution
      • Now available to run scenarios from C# and Java
      • Provide batch utilities to organize and execute scenarios that generate application specific states
    • Added serialization testing support to verification and validation suite
      • Now testing serialization of all actions and fixed many bugs related to missing action state between loading
      • Improvements for reusing engine to stabilize new patients
    • Added support C#,Java to query active actions and conditions after loading a state
    • Added support to create data requests for action data and enum properties
    • Improved patient loading logic
    • Improved error handling and logging, including adding more than one log listener
    • Cleaned compiler warnings and unused variables
    • Added Java module support
  • Physiology Model Improvements
    • Improved Respiratory system validation
      • Added sinusoid curve for muscle driver
      • Improved I:E ratio validation (including obstructive I:E ratio changes)
      • Improved interface to easily switch between various airway management equipment
      • Improved pulmonary shunting model
      • Improved dead space model
    • Improved Mechanical Ventilator equipment validation
    • Improved various actions
      • Added ability to create extremely cold environments
      • Added more data associated with hemorrhages
        • Exposed flows per hemorrhage and total flow
        • Exposed blood lost volume per hemorrhage and total blood lost

Pulse v3.1.0 (December 2020)

  • Added Severity/Resistance Hemorrhage model
  • Black Box support for integration of external engines with Pulse circuits
  • Configuration Actions Update
  • Added (optional) Administration Time to Bolus Injection Action
  • Update/Fix Supplemental Oxygen
  • Update exception handling in Java
  • Improved C++ memory management
  • Improvements to C++ architecture to allow fully customized engines
  • Optimizations and Improvements to Data Requests, Plotting, and Reporting
  • Improvements to support more platforms:
    • Android ARMv7a
    • Android ARMv8a
    • WinAMR64 (HoloLens 2)
    • Magic Leap's Lumin OS
    • Many Linux

Pulse v3.0.0 (July 2020)

  • Software Architecture Improvements
    • Major refactor of our repository structure
      • Enables implementation of specific engines (adult, pediatric, animal) to both share and extend common models with target specific models
      • Provides a framework for performing and sharing code between various sensitivity and correlation analysis studies with a Pulse engine
      • Improved CMake structure to simplify integration of Pulse into custom applications
    • Streamlining of engine creation and management
      • Pulse states are self contained and no longer depend on any files on disk
      • Pulse states now support binary serialization
      • Location of required files for patient creation can be specified by users
    • Improvements to cross language support
      • Java interface has been refactored to conform with C# and Python usage
      • C# supports most actions, conditions and equipment types
      • Python is now a fully supported language
    • Pulse now supports the ability to override and hold specific system and circuit parameters to a certain values, such as Lung Compliance
  • Physiology Model Improvements
    • Added generic mechanical ventilator equipment model with PC-CMV and VC-AC mode implementation
    • Added pulmonary shunting as a standalone model and in conjunction with other respiratory diseases
    • Improved and validated ARDS
    • Added more respiratory clinical measurements with validation
    • Added hyperoxemia and hypocapnia events
    • Improved cardiovascular validation for resting physiology
    • Improved the tissue to cardiovascular interface to improve fluid movement between these regions of the body
    • Hemorrhagic shock and improved hemorrhage methodology to meet validation through different stages of hemorrhagic shock to death
    • A second order baroreceptor model to moderate the effectiveness of the baroreceptors over time

Congratulations

Congratulations and thank you to everyone who contributed to this release. This release, we would like to specially recognize our 2 new contributors:

  • Bob Marinier of SoarTech for helping improve the Java interface
  • Wenye He of Innovision for helping to start our Python API, and extend our C# API

Planned Improvements

  • Sepsis
  • Cerebrospinal fluid model for improved intracranial pressure
  • Work of breathing and respiratory fatigue models
  • Circuit/Compartment black boxing to support modularity for system/model/circuit swapping
  • Pediatric physiology prototype
  • An official contribution guide for merge requests for methodology/model changes
  • Pypi support to pip install Pulse into a python environment
  • Maven build for easy inclusion into Java projects
  • Integration with Hololens 2

Pulse v2.3.0 (January 2020)

  • Software Architecture
    • C# API Updates
      • Added Data Request support for requesting any data from the engine
      • Added support for patient creation, with or without chronic conditions
      • Added support for more actions
    • C++ API Updates
      • Created separate Initial and Current patient definitions
      • Updated general math exponential functions to be more intuitive
      • Added a Multiply value setting, similar to Increment
  • Physiology Models
    • Patient lung volumes are now determined using ideal body weight rather than actual body weight
    • Significant respiratory model updates
      • Changed standard respiration rate from 16 bpm to 12 bpm to better match standards in literature and validation
      • Tweaked respiratory circuit for improved modeling
      • Refactored the respiratory muscle driver with a new waveform
      • Added a sigmoidal chest wall compliance model
      • Refactored respiratory conditions and actions for improved restrictive and obstructive disease results and combined effects
      • Added an ARDS condition
      • Added a pulmonary fibrosis condition
      • Added exacerbation action to degrade/improve respiratory conditions during simulations
      • Renamed apnea action to dyspnea
      • Refactored conscious respiration, leading to improved spirometry curves
      • More/better validation
    • Updated anesthesia machine circuit to use pressure sources for supplying gas, rather than flow sources to avoid issues with flow source pressure calculations

Congratulations

Congratulations and thank you to everyone who contributed to this release. This release, we would like to specially recognize our 3 new contributors:

  • Hongpeng Liu
  • Mattias Lantz Cronqvist
  • Anusha Muralidharan

Planned Improvements

  • Python bindings
  • Black box circuit/compartment components
  • Sepsis
  • Hemorrhagic Shock
  • Hemorrhage methodology update for better performance and usability
  • Work of breathing and respiratory fatigue models
  • A second order baroreceptor model
  • Modularity improvements for system/model/circuit swapping
  • Pediatric physiology prototype
  • Official contribution plan for merge requests for methodology/model changes

Known Physiology Model Issues and Limitations

The following are known issues with the current version of the software:

  • Lack of a full sympathetic/parasympathetic nervous system
  • Extravascular fluid exchange model is incomplete
  • Peripheral resistance currently does not scale with core temperature
  • Only tested a simulation up to 12 hours in length (No sleep model)
  • Limited Consumption model
    • Limited number of macronutrients available
    • Limited conversion and use within the engine
  • Oxygen saturation drops too sharply

Pulse v2.2.0 (August 2019)

  • Software Architecture
    • CMake integration improvements
    • Improved Data Request API
    • Scenario Execution Improvements
    • Unified API for Engine Events
    • MSVC Build Sped up
  • Physiology Models
    • Added the ability to provide supplemental oxygen through a nasal cannula, simple mask, and nonrebreather mask.
    • Updated vascular effects caused by respiratory pleural cavity imbalances, mainly to increased venous return resistance when the patient has a pneumothorax / collapsed lungs.

Pulse v2.1.0 (February 2019)

  • Software updates necessary for integration with Unity

Pulse v2.0.0 (January 2019)

  • Software Architecture
    • Converted ASCII file I/O to JSON (Compliant to Protobuf IDLs)
    • Updated Engine Interface to support Both ASCII and Binary serialization
    • Started a formal C# CDM Library for use in .NET applications
    • Created a C interface to Pulse for external application integration
    • Updated to the latest versions of Eigen/Protobufs/log4cplus
    • Unity integration support and examples
  • Physiology Models
    • Internal Hemorrhage Support
    • External hemorrhage from specific compartments (only Vena Cava before)
    • Added support for Packed Red Blood Cells infusion
    • Added dissolved oxygen and carbon dioxide to IV fluids to resolve issues with fluid resuscitation

Pulse v1.1.0 (June 2018)

  • Updated Wiki for using Pulse in your application
  • Added C# example interface
  • Refactored respiratory system for improvements determining the transition between inhale and exhale
    • Important for determining correct vital signs (e.g., respiration rate, tidal volume, end tidal CO2)
    • Most noticeable improvement is with external sources, such as a ventilator
  • Added aerosols (e.g., albuterol) to the mechanical ventilator
  • Added the ability to remove the cardiac arrest action and transition from asystole to normal sinus
  • Added norepinephrine to the drug library
  • Switched the included logger from log4cpp to log4cplus
  • Updated to the latest versions of Eigen and Protobufs
  • Transitioned results file extension from .txt to .csv
  • Exposed action and condition information via the API
  • Improved exception handling
  • Discretized verification data sets for easier management
  • Cleaned up headers
  • CMake build improvements
    • Pulse builds and runs on single board pc's and all major operating systems

Pulse v1.0.0 (September 2017)

  • Fixed multi-platform compiling bugs
  • Moved from an in-source to out-of-source build
    • src tree is treated as read only
    • See a description here
  • Full CMake Builds
    • Replaced all ant and scripts (.sh and .bat) with CMake
      • Improves build support across all target platforms
        • Currently supporting Windows, Mac, UNIX (including AArch64) devices
      • More multi-platform/compiler compliance
        • Currently supporting MSVC (2015+), GCC (4.8.1+), and Clang (3.3+)
        • Supports the Ninja build system
    • Created a superbuild
      • Build scripts will download and build all dependent 3rd party libraries - removes the libs from source pool
      • Turnkey build process
  • Converted reporting from emailing to write html reports to the test directory
    • Removes SMTP server requirement
  • Moved the verification data sets (very large) from source repository to a data server integrated with CMake
  • Updates to ensure no 3rd party software license compliance issues for certain commercial applications
  • Conversion of the data model from XML to Google Protocol Buffers

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.