Skip to content

Instantly share code, notes, and snippets.

@themakshter
Last active May 8, 2020 23:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save themakshter/352d979c84a39b03167be544ae2e8265 to your computer and use it in GitHub Desktop.
Save themakshter/352d979c84a39b03167be544ae2e8265 to your computer and use it in GitHub Desktop.
const Alarms = [
'Battery in Use',
'Circuit Integrity Failed',
'High Respiratory Rate',
'High FiO2',
'High PEEP',
'High Plateau Pressure',
'High Peak Pressure',
'Low Inspiratory Pressure',
'Low FiO2',
'Low PEEP',
'Low Plateau Pressure',
'Oxygen Failure',
'Low Tidal Volume',
'High Tidal Volume',
'Ventilation Active at Startup',
'Low Minute Ventilation',
'High Minute Ventilation',
'Patient Vent Circuit Disconnected',
'Mechanical Integrity Failed',
'Homing not Done',
'96 Hours of Operation',
'Flow Sensor Disconnected',
'Pressure Sensor Disconnected',
'Oxygen Sensor Disconnected',
];
function getAlarmValues(serialData: Array<number>): Array<string> {
let alarms: Array<string> = [];
var bits = 8;
var alarmIndices = [27, 41, 42];
for (
let alarmIndex = 0;
alarmIndex < bits * alarmIndices.length;
alarmIndex++
) {
let alarmIndexToCheck = Math.floor(alarmIndex / bits);
let valueByteToCheckIndex = alarmIndices[alarmIndexToCheck];
let valueToCheck = serialData[valueByteToCheckIndex];
let bitIndexToCheck = alarmIndex % bits;
let isAlarmActive = getValueOfBit(valueToCheck, bitIndexToCheck);
if (isAlarmActive) {
alarms.push(Alarms[alarmIndex]);
}
}
return alarms;
}
function getValueOfBit(valueToParse: number, bitIndex: number) {
const bitIndexNumberForFindingValue = [1, 2, 4, 8, 16, 32, 64, 128];
return valueToParse & bitIndexNumberForFindingValue[bitIndex];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment