Software Requirements Specification

Purpose

This document describe what RespiraWorks Ventilator software must do.

This document is meant to be read and agreed-upon by the project owners and by software developers during design and construction.

Todo

Specify the functional requirements, performance requirements, interface requirements, safety requirements, hazard mitigations

Requirements

General

All software clocks must have high enough range to not overflow within 2 weeks

Numeric algorithms within the software must not lose stability over 2 weeks

Software algorithms must be runnable in faster than real time to allow stress testing of long-term continuous operation

Software (both controller and Pi) should be power-efficient enough to continuously work from battery for 1 hour

Controller must be able to detect patient inspiration

Alarms

GUI must have an alarm that triggers when the input air line is blocked (leading to low pressure), with severity HIGH

GUI must have an alarm that triggers when the input O2 line is blocked (leading to low pressure), with severity HIGH

Device and GUI must have an alarm for inspiratory pressure dropping below -4cm H2O

GUI must have an alarm that triggers when the input O2 line pressure is too high, with severity HIGH

Controller shall trigger an alarm in case GUI is unresponsive for 1/2 of the apnea time

GUI displays an overpressure alarm

GUI shall trigger an alarm in case controller is unresponsive for 1/2 of the apnea time

Controller must implement an overpressure alarm firing above 60 cmH2O

GUI can compute a “LOW VTI” alarm that becomes active if the VTI for the current breath is above threshold

The LOW VTI alarm is of medium priority

GUI has a control for setting the threshold for the LOW VTI alarm

The control for setting the threshold for LOW VTI alarm allows setting values between X and Y (TODO what values)

GUI can compute a “HIGH VTI” alarm that becomes active if the VTI for the current breath is above threshold

The HIGH VTI alarm is of medium priority

GUI can compute VTI for each breath

GUI can compute a “LOW VTE” alarm that becomes active if the VTE for the current breath is above threshold

GUI can compute a “HIGH VTE” alarm that becomes active if the VTE for the current breath is above threshold

The LOW VTE alarm is of medium priority

The HIGH VTE alarm is of medium priority

GUI can compute VTE for each breath

When cancelled, the “pressure high” alarm does not re-trigger for 2 minutes

GUI shall be able to compute a high-priority alarm that triggers when the O2 input line is disconnected

GUI must be able to display all currently active alarms if there are several of them

The event log must include all confirmed alarm settings

The event log must include all alarm occurrences

The event log must include all alarm inhibitions, cancellations, resets, acknowledgements

GUI must allow inhibiting alarms

GUI must allow acknowledging alarms

GUI must allow cancelling alarms

GUI must allow setting an alarm on inspiration tidal volume above threshold between the bounds of 80 to 3000 ml in increments of 10ml

GUI must have an alarm that fires if for 3 consecutive breaths PIP >user-specified threshold

GUI must have an alarm that fires if amount of leakage is >user-specified threshold between 5 to 150lpm

Controller must be able to detect and/or receive alarms from GUI

Controller must be able to command the hardware PCB buzzer.

GUI/Controller enumerates alarm codes and assigns them priorities

GUI displays highest priority alarm on main screen

GUI displays list of active alarms on button press

GUI displays alarm on main screen legible at distance of 1 meter.

High severity alarms shall be indicated with a red color and a flashing frequency of 2Hz with a 50% duty cycle

Low severity alarms shall be indicated with a yellow color which shall be constantly on.

Medium severity alarms shall be indicated with a yellow color, and a flashing frequency of 0.5Hz with a 50% duty cycle

High severity alarms shall have an auditory signal consisting of 10 pulses with each pulse lasting 200ms with a pulse frequency of 500Hz (A4 note).

High severity alarms shall have an auditory signal consisting of 4 pulses with each pulse lasting 200ms with a pulse frequency of 500Hz. (how is this different from 77?)

A press on the AUDIO PAUSE / ALARM PAUSE key shall initiate an auditory alarm signal pause of all active alarms during 60 seconds (Assuming that all the active alarms can be inhibited). The alarm activation symbol shall be displayed during the inactivation state with the symbol IEC 60417-5576

Alarm: apnea. If no breath is triggered within the specified apnea time interval, the ventilator shall respond with a medium priority alarm with the display text “APNEA ALARM”

Alarm: breath rate. When the breath rate has exceeded the breath rate setting, the device shall trigger a medium level alarm with the display text “HIGH BREATH RATE”

There must be a maximum breath rate setting which acts as alarm threshold.

Alarm: pressure low. Upon a low pressure alarm, the gui will sound and display a high severity alarm and a text shall be displayed as “LOW INSP P”.

GUI will log onset and reset of low pressure alarm.

Alarm: pressure low. The system shall trigger a low pressure alarm with a high priority in the event of a low inspiratory pressure.This alarm shall be automatically reset upon the first breath with inspiration pressure above the threshold.

GUI can compute a “pressure high” alarm that becomes active when pressure goes above a specified threshold for 3+ consecutive breaths AND becomes inactive on the first breath where it doesn’t go above the threshold

While the “pressure high” alarm is active, GUI emits a sound

The “pressure high” alarm is displayed until cancelled even if inactive

Alarm management subsystem should support an alarm state where the alarm is visible but not audible

The PIP too high alarm shall have high priority

The default value for the “PIP too high” alarm shall be the commanded PIP value + 5cm H2O

Controller should report whether the proximal tube is connected

GUI should compute a “proximal tube disconnect” alarm that becomes active when the proximal tube is disconnected

The “proximal tube disconnected” alarm is of medium priority

GUI can detect obstruction, based on the condition that VTI < 100ml

When obstruction is detected, GUI activates an “obstruction” alarm

The obstruction alarm is inactivated when obstruction is not detected

The obstruction alarm has high priority

GUI can compute amount of leakage (L/min) based on sensor readings

GUI can compute a “high leakage” alarm that becomes active when average leakage over X seconds is > 3 L/min

The “high leakage” alarm is high priority

The “involuntary shutdown” alarm is a continuous-tone alarm

The “involuntary shutdown” alarm emits a sound tone for at least 2 min

The alarm subsystem supports continuous-tone alarms

GUI can detect loss of AC mains

GUI is connected to the “AC mains power loss” sensor (and we have such a sensor)

The AC mains power loss alarm is medium priority

GUI can compute battery ETA from a history of remaining battery amounts

GUI is connected to a battery amount sensor

GUI can compute a “low battery” alarm when battery ETA is <30min

The “low battery” alarm is low priority

GUI can compute a “critically low battery” alarm when battery ETA is <10min

The “critically low battery” alarm is high priority

GUI needs to be able to read hardware battery presense and chargeability sensors

GUI needs to have a “battery failure” alarm that is activated when the battery is absent, unavailable, or unchargeable

The “battery failure” alarm has high priority

(System requirement 125) “System shall be capable of sensing the temperature of heating elements (blower motor, battery cell during operation)”

GUI needs to be able to read temperature sensors for: blower motor, blower power mgmt system, battery cell

GUI needs to have a “blower motor temperature too high” alarm triggered by a user-specified threshold

GUI needs to have a “blower power system temperature too high” alarm triggered by a user-specified threshold

GUI needs to have a “battery temperature too high” alarm triggered by a user-specified threshold

GUI needs to automatically invoke a safety action when blower power system temperature is above threshold

GUI needs to automatically invoke a safety action when battery temperature is above threshold

GUI has a control for setting the threshold for HIGH RR alarm

The control for setting the threshold for HIGH RR alarm allows setting values between 5-30 in increments of 1

GUI has a control for setting the threshold for LOW RR alarm

The control for setting the threshold for LOW RR alarm allows setting values between 5-30 in increments of 1

GUI has a control for setting the threshold for the apnea alarm

The control for setting the threshold for the apnea alarm allows setting values between 1-30 seconds in increments of 1s

Alarm when relief valve opens. Need to detect this based on an unexpected increase in flow (not pressure). Might be folded into a leak alarm - but need to ensure we account for this case and test it.

Self-Test

Self-test shall include a test for accuracy of the O2 sensor

Self-test shall include validation of blower response: commanded speed vs. pressure achieved at that speed

Self-test shall include validation of the pinch valves pressure response at a fixed blower speed

Self-test shall include validation that all the audible alarm devices work. Eg could test that, given voltage there’s current, or could ask the user to confirm that it’s audible

Self-test shall include validation that all visual alarms work (asking user to confirm that the alarm works)

Self-test shall include validation of flow sensor accuracy (set blower to certain speed, air lines open, nothing connected to the output etc. -> gives expected flow)

Self-test shall include validation of pressure sensor accuracy

Controller must support a pre-test mode

GUI must support the controller’s pre-test mode

Controller’s pre-test mode must include the following checks: …

GUI

GUI allows user to adjust PEEP from 0-20 cmH2O with increments of 1

GUI shall render parameters and alarms readable at a distance of 1m

GUI must allow adjusting RR from 5-30 bpm with increments of 1

GUI must allow adjusting IER from 1:1 to 1:4 (Inhale to exhale)

GUI must require all ventilation and alarm setting changes to be confirmed

GUI must allow adjusting O2 infusion (FiO2) in supplied air from 0.21 to as close to 1 as possible with a minimum of 0.96, adjustable in increments of 0.1.

GUI must allow adjusting HFNC flow rate from 0 to 60 L/min in increments of 5(TBD) L/min

GUI must be able to compute amount of leakage based on controller actuation and sensor readings

GUI must display patient pressure measured at the gas outlet port, based on data from controller

GUI graph refresh rate must be >= 20 Hz

GUI graph duration must be 30 seconds

GUI must display a reading of inspiratory tidal volume in the range 0..1000mL with resolution of 1mL

GUI must display the ratio of inspiration time to expiration time of the most recent breath in the range  10:1 to 1:200 with display resolution of 0.1 for values under 10 and 1 for values over 10. Transition from inspire to expire is defined as being after the plateau

GUI must display a reading of PEEP for the most recent breath in increments of 1 cmH2O

GUI must display a graph of volume provided to the patient

The GUI shall display the flow rate provided to the patient as a graph with duration of 30 seconds updated at a rate >=20Hz and units of liters / minute.

GUI shall display FiO2 as measured prior to the patient inhale limb

GUI shall allow the user to set PIP from 5-55 cmH2O with increments of 1 cm H2O.

GUI can detect controller shutdown

In [what modes?] , GUI should have a “rise time” parameter controlling how long it takes from PEEP to PIP

In GUI should allow setting the “rise parameter” in the range of 0..20% of breath cycle time

GUI must allow specifying the assist/control with pressure controlled ventilation mode

Embedded

Controller should respond fast enough to prevent pressure dropping below -4cm under ? (under what conditions)

Controller should never command pressure to go above 60

SW must measure PEEP over each breath (pressure at the end of the breath)

For parameters that do not have a different performance target specified, controller shall be able to hit commanded values within 10%

Controller should trigger an inspiration cycle when (NEED TO CLARIFY)

Controller should trigger an expiration cycle when

Controller should be able to meet PIP targets in the range 5-55cmH2O +/- 5cm

Controller should be able to meet commanded breath rate within +- 1 breath

Controller should be able to meet commanded pressure during the pressure fall phase within an overshoot of 0.8*PEEP-1 cmH2O

Controller should be able to meet commanded PEEP within +-1 H2O + 10% (of what?)

Controller shall be able to achieve target FiO2 value within 0.05

Controller shall report FiO2 as measured prior to patient inhale limb

Controller shall be able to achieve commanded values under different air conditions affecting air density, such as temperature, altitude and humidity

Controller must implement assist/control with pressure controlled ventilation mode, where inspiration is triggered by detecting patient inspiration

Controller must have safety measures to avoid acting on absurd commands even in case of data corruption between GUI and controller communication

Logging

GUI must store an event log in non-volatile memory

The event log must include all confirmed ventilation settings

The event log must include a date and timestamp

The event log must include changes to the system’s real time clock by logging the Current Date/Time followed by the new Date/Time

Traceability Matrix

System Requirements to SRS

Software Requirements

System Requirements