diff --git a/Translations/Bulgarian.bg.ts b/Translations/Bulgarian.bg.ts
index 0ebcb766..fec2cbbe 100644
--- a/Translations/Bulgarian.bg.ts
+++ b/Translations/Bulgarian.bg.ts
@@ -110,7 +110,7 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
Notes
@@ -195,42 +195,42 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
Add Bookmark
-
+
Starts
-
+
Remove Bookmark
-
+
Zoom fully out
-
+
100%
-
+
Reset the graph heights to uniform sizes
-
+
Reset
-
+
Drop down this list to show/hide available graphs.
@@ -343,42 +343,37 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
- Hypopnea
-
-
-
-
+
Event Breakdown
-
+
Sessions all off!
-
+
Sessions exist for this day but are switched off.
-
+
Impossibly short session
-
+
Zero hours??
-
+
BRICK :(
-
+
Complain to your Equipment Provider!
@@ -409,7 +404,7 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
No data available
@@ -459,89 +454,37 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
- Obstructive Apnea
-
-
-
-
- Unclassified Apnea
-
-
-
-
- Clear Airway Apnea
-
-
-
-
- Non Responding Event
-
-
-
-
- Flow Limitation
-
-
-
-
- Expiratory Puff
-
-
-
-
- Respiratory Effort Related Arousal
-
-
-
-
-
- Vibratory Snore
-
-
-
-
-
- Large Leak
-
-
-
-
- Periodic Breathing / CSR %
-
-
-
-
+
Sorry, your machine only provides compliance data.
-
+
Pick a Colour
-
+
This bookmarked is in a currently disabled area..
-
+
Bookmark at %1
-
+
Show all graphs
-
+
No Graphs On!
-
+
Hide all graphs
@@ -3262,7 +3205,7 @@ Signed: Nasty Programmer
QObject
-
+
No Data
@@ -3311,6 +3254,8 @@ Signed: Nasty Programmer
+
+
cmH2O
@@ -3321,6 +3266,7 @@ Signed: Nasty Programmer
+
bpm
@@ -3331,6 +3277,7 @@ Signed: Nasty Programmer
+
Error
@@ -3357,16 +3304,19 @@ Signed: Nasty Programmer
+
Pulse Rate
+
SpO2
+
Plethy
@@ -3457,11 +3407,13 @@ Signed: Nasty Programmer
+
H
+
OA
@@ -3472,11 +3424,13 @@ Signed: Nasty Programmer
+
CA
+
FL
@@ -3487,16 +3441,19 @@ Signed: Nasty Programmer
+
EP
+
VS
+
VS2
@@ -3507,6 +3464,7 @@ Signed: Nasty Programmer
+
PP
@@ -3517,11 +3475,13 @@ Signed: Nasty Programmer
+
RE
+
NR
@@ -3537,21 +3497,25 @@ Signed: Nasty Programmer
+
PC
+
UF1
+
UF2
+
UF3
@@ -3562,11 +3526,13 @@ Signed: Nasty Programmer
+
AHI
+
RDI
@@ -3612,6 +3578,7 @@ Signed: Nasty Programmer
+
PB
@@ -3622,21 +3589,26 @@ Signed: Nasty Programmer
+
Insp. Time
+
Exp. Time
+
Resp. Event
+
+
Flow Limitation
@@ -3657,26 +3629,31 @@ Signed: Nasty Programmer
+
Target Vent.
+
Minute Vent.
+
Tidal Volume
+
Resp. Rate
+
Snore
@@ -3692,6 +3669,7 @@ Signed: Nasty Programmer
+
Total Leaks
@@ -3707,6 +3685,7 @@ Signed: Nasty Programmer
+
Flow Rate
@@ -4247,6 +4226,612 @@ Please don't touch anything until it's done.
Dec
+
+
+ Events
+
+
+
+
+ Duration
+
+
+
+
+ (%%1 in events)
+
+
+
+
+ Couldn't parse Channels.xml, this build is seriously borked, no choice but to abort!!
+
+
+
+
+ Therapy Pressure
+
+
+
+
+ Inspiratory Pressure
+
+
+
+
+ Lower Inspiratory Pressure
+
+
+
+
+ Higher Inspiratory Pressure
+
+
+
+
+ Expiratory Pressure
+
+
+
+
+ Pressure Support
+
+
+
+
+ PS Min
+
+
+
+
+ Pressure Support Minimum
+
+
+
+
+ PS Max
+
+
+
+
+ Pressure Support Maximum
+
+
+
+
+ Min Pressure
+
+
+
+
+ Minimum Therapy Pressure
+
+
+
+
+ Pr. Min
+
+
+
+
+ Max Pressure
+
+
+
+
+ Maximum Therapy Pressure
+
+
+
+
+ Pr. Max
+
+
+
+
+ Ramp Time
+
+
+
+
+ Ramp Delay Period
+
+
+
+
+ minutes
+
+
+
+
+ Ramp Pressure
+
+
+
+
+ Starting Ramp Pressure
+
+
+
+
+ Ramp Pr.
+
+
+
+
+ Periodic Breathing
+
+
+
+
+ A period of periodic breathing
+
+
+
+
+
+
+ %
+
+
+
+
+ Clear Airway Apnea
+
+
+
+
+ An apnea where the airway is open
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ events/hr
+
+
+
+
+ Obstructive Apnea
+
+
+
+
+ An apnea caused by airway obstruction
+
+
+
+
+ Hypopnea
+
+
+
+
+ A partially obstructed airway
+
+
+
+
+ Unclassified Apnea
+
+
+
+
+ An apnea that could not fit into a category
+
+
+
+
+ UA
+
+
+
+
+ An restriction in breathing from normal, causing a flattening of the flow waveform.
+
+
+
+
+ Respiratory Effort Related Arousal
+
+
+
+
+ An restriction in breathing that causes an either an awakening or sleep disturbance.
+
+
+
+
+
+ Vibratory Snore
+
+
+
+
+ A vibratory snore
+
+
+
+
+ A vibratory snore as detcted by a System One machine
+
+
+
+
+ Pressure Pulse
+
+
+
+
+ A pulse of pressure 'pinged' to detect a closed airway.
+
+
+
+
+ Large Leak
+
+
+
+
+ A large mask leak affecting machine performance.
+
+
+
+
+ LL
+
+
+
+
+ Non Responding Event
+
+
+
+
+ A type of respiratory event that won't respond to a pressure increase.
+
+
+
+
+ Expiratory Puff
+
+
+
+
+ Intellipap event where you breathe out your mouth.
+
+
+
+
+ User Flag #1
+
+
+
+
+
+
+ A user definable event detected by SleepyHead's flow waveform processor.
+
+
+
+
+ User Flag #2
+
+
+
+
+ User Flag #3
+
+
+
+
+ Heart rate in beats per minute
+
+
+
+
+ Blood-oxygen saturation percentage
+
+
+
+
+ SpO2 %
+
+
+
+
+ Plethysomogram
+
+
+
+
+ hz
+
+
+
+
+ An optical Photo-plethysomogram showing heart rhythm
+
+
+
+
+ Pulse Change
+
+
+
+
+ A sudden (user definable) change in heart rate
+
+
+
+
+ SpO2 Drop
+
+
+
+
+ A sudden (user definable) drop in blood oxygen saturation
+
+
+
+
+ SD
+
+
+
+
+ Breathing flow rate waveform
+
+
+
+
+
+
+
+
+
+
+ L/min
+
+
+
+
+
+ Mask Pressure
+
+
+
+
+ Mask Pressure (High resolution)
+
+
+
+
+ Amount of air displaced per breath
+
+
+
+
+ Graph displaying snore volume
+
+
+
+
+
+ ??
+
+
+
+
+ Minute Ventilation
+
+
+
+
+ Amount of air displaced per minute
+
+
+
+
+ Respiratory Rate
+
+
+
+
+ Rate of breaths per minute
+
+
+
+
+ Bpm
+
+
+
+
+ Patient Triggered Breaths
+
+
+
+
+ Percentage of breaths triggered by patient
+
+
+
+
+ Pat. Trig. Breaths
+
+
+
+
+ Leak Rate
+
+
+
+
+ Rate of detected mask leakage
+
+
+
+
+ I:E Ratio
+
+
+
+
+ Ratio between Inspiratory and Expiratory time
+
+
+
+
+ ratio
+
+
+
+
+ Expiratory Time
+
+
+
+
+ Time taken to breathe out
+
+
+
+
+
+ seconds
+
+
+
+
+ Inspiratory Time
+
+
+
+
+ Time taken to breathe in
+
+
+
+
+ Respiratory Event
+
+
+
+
+ A ResMed data source showing Respiratory Events
+
+
+
+
+ events
+
+
+
+
+ Graph showing severity of flow limitations
+
+
+
+
+ Flow Limit.
+
+
+
+
+ 0-1
+
+
+
+
+ Target Minute Ventilation
+
+
+
+
+ Target Minute Ventilation?
+
+
+
+
+ Maximum Leak
+
+
+
+
+ The maximum rate of mask leakage
+
+
+
+
+ Max Leaks
+
+
+
+
+ Apnea Hypopnea Index
+
+
+
+
+ Graph showing running AHI for the past hour
+
+
+
+
+
+ events/hour
+
+
+
+
+ Total Leak Rate
+
+
+
+
+ Detected mask leakage including natural Mask leakages
+
+
+
+
+ Median Leak Rate
+
+
+
+
+ Median rate of detected mask leakage
+
+
+
+
+ Median Leaks
+
+
+
+
+ Respiratory Disturbance Index
+
+
+
+
+ Graph showing running RDI for the past hour
+
+
QextSerialPort
diff --git a/Translations/Deutsch.de_DE.ts b/Translations/Deutsch.de_DE.ts
index 125a8fbc..6c07df69 100644
--- a/Translations/Deutsch.de_DE.ts
+++ b/Translations/Deutsch.de_DE.ts
@@ -110,7 +110,7 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
Notes
@@ -195,42 +195,42 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
Add Bookmark
-
+
Starts
-
+
Remove Bookmark
-
+
Zoom fully out
-
+
100%
-
+
Reset the graph heights to uniform sizes
-
+
Reset
-
+
Drop down this list to show/hide available graphs.
@@ -343,42 +343,37 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
- Hypopnea
-
-
-
-
+
Event Breakdown
-
+
Sessions all off!
-
+
Sessions exist for this day but are switched off.
-
+
Impossibly short session
-
+
Zero hours??
-
+
BRICK :(
-
+
Complain to your Equipment Provider!
@@ -409,7 +404,7 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
No data available
@@ -459,89 +454,37 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
- Obstructive Apnea
-
-
-
-
- Unclassified Apnea
-
-
-
-
- Clear Airway Apnea
-
-
-
-
- Non Responding Event
-
-
-
-
- Flow Limitation
-
-
-
-
- Expiratory Puff
-
-
-
-
- Respiratory Effort Related Arousal
-
-
-
-
-
- Vibratory Snore
-
-
-
-
-
- Large Leak
-
-
-
-
- Periodic Breathing / CSR %
-
-
-
-
+
Sorry, your machine only provides compliance data.
-
+
Pick a Colour
-
+
This bookmarked is in a currently disabled area..
-
+
Bookmark at %1
-
+
Show all graphs
-
+
No Graphs On!
-
+
Hide all graphs
@@ -3262,7 +3205,7 @@ Signed: Nasty Programmer
QObject
-
+
No Data
@@ -3311,6 +3254,8 @@ Signed: Nasty Programmer
+
+
cmH2O
@@ -3321,6 +3266,7 @@ Signed: Nasty Programmer
+
bpm
@@ -3331,6 +3277,7 @@ Signed: Nasty Programmer
+
Error
@@ -3357,16 +3304,19 @@ Signed: Nasty Programmer
+
Pulse Rate
+
SpO2
+
Plethy
@@ -3457,11 +3407,13 @@ Signed: Nasty Programmer
+
H
+
OA
@@ -3472,11 +3424,13 @@ Signed: Nasty Programmer
+
CA
+
FL
@@ -3487,16 +3441,19 @@ Signed: Nasty Programmer
+
EP
+
VS
+
VS2
@@ -3507,6 +3464,7 @@ Signed: Nasty Programmer
+
PP
@@ -3517,11 +3475,13 @@ Signed: Nasty Programmer
+
RE
+
NR
@@ -3537,21 +3497,25 @@ Signed: Nasty Programmer
+
PC
+
UF1
+
UF2
+
UF3
@@ -3562,11 +3526,13 @@ Signed: Nasty Programmer
+
AHI
+
RDI
@@ -3612,6 +3578,7 @@ Signed: Nasty Programmer
+
PB
@@ -3622,21 +3589,26 @@ Signed: Nasty Programmer
+
Insp. Time
+
Exp. Time
+
Resp. Event
+
+
Flow Limitation
@@ -3657,26 +3629,31 @@ Signed: Nasty Programmer
+
Target Vent.
+
Minute Vent.
+
Tidal Volume
+
Resp. Rate
+
Snore
@@ -3692,6 +3669,7 @@ Signed: Nasty Programmer
+
Total Leaks
@@ -3707,6 +3685,7 @@ Signed: Nasty Programmer
+
Flow Rate
@@ -4247,6 +4226,612 @@ Please don't touch anything until it's done.
Dec
+
+
+ Events
+
+
+
+
+ Duration
+
+
+
+
+ (%%1 in events)
+
+
+
+
+ Couldn't parse Channels.xml, this build is seriously borked, no choice but to abort!!
+
+
+
+
+ Therapy Pressure
+
+
+
+
+ Inspiratory Pressure
+
+
+
+
+ Lower Inspiratory Pressure
+
+
+
+
+ Higher Inspiratory Pressure
+
+
+
+
+ Expiratory Pressure
+
+
+
+
+ Pressure Support
+
+
+
+
+ PS Min
+
+
+
+
+ Pressure Support Minimum
+
+
+
+
+ PS Max
+
+
+
+
+ Pressure Support Maximum
+
+
+
+
+ Min Pressure
+
+
+
+
+ Minimum Therapy Pressure
+
+
+
+
+ Pr. Min
+
+
+
+
+ Max Pressure
+
+
+
+
+ Maximum Therapy Pressure
+
+
+
+
+ Pr. Max
+
+
+
+
+ Ramp Time
+
+
+
+
+ Ramp Delay Period
+
+
+
+
+ minutes
+
+
+
+
+ Ramp Pressure
+
+
+
+
+ Starting Ramp Pressure
+
+
+
+
+ Ramp Pr.
+
+
+
+
+ Periodic Breathing
+
+
+
+
+ A period of periodic breathing
+
+
+
+
+
+
+ %
+
+
+
+
+ Clear Airway Apnea
+
+
+
+
+ An apnea where the airway is open
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ events/hr
+
+
+
+
+ Obstructive Apnea
+
+
+
+
+ An apnea caused by airway obstruction
+
+
+
+
+ Hypopnea
+
+
+
+
+ A partially obstructed airway
+
+
+
+
+ Unclassified Apnea
+
+
+
+
+ An apnea that could not fit into a category
+
+
+
+
+ UA
+
+
+
+
+ An restriction in breathing from normal, causing a flattening of the flow waveform.
+
+
+
+
+ Respiratory Effort Related Arousal
+
+
+
+
+ An restriction in breathing that causes an either an awakening or sleep disturbance.
+
+
+
+
+
+ Vibratory Snore
+
+
+
+
+ A vibratory snore
+
+
+
+
+ A vibratory snore as detcted by a System One machine
+
+
+
+
+ Pressure Pulse
+
+
+
+
+ A pulse of pressure 'pinged' to detect a closed airway.
+
+
+
+
+ Large Leak
+
+
+
+
+ A large mask leak affecting machine performance.
+
+
+
+
+ LL
+
+
+
+
+ Non Responding Event
+
+
+
+
+ A type of respiratory event that won't respond to a pressure increase.
+
+
+
+
+ Expiratory Puff
+
+
+
+
+ Intellipap event where you breathe out your mouth.
+
+
+
+
+ User Flag #1
+
+
+
+
+
+
+ A user definable event detected by SleepyHead's flow waveform processor.
+
+
+
+
+ User Flag #2
+
+
+
+
+ User Flag #3
+
+
+
+
+ Heart rate in beats per minute
+
+
+
+
+ Blood-oxygen saturation percentage
+
+
+
+
+ SpO2 %
+
+
+
+
+ Plethysomogram
+
+
+
+
+ hz
+
+
+
+
+ An optical Photo-plethysomogram showing heart rhythm
+
+
+
+
+ Pulse Change
+
+
+
+
+ A sudden (user definable) change in heart rate
+
+
+
+
+ SpO2 Drop
+
+
+
+
+ A sudden (user definable) drop in blood oxygen saturation
+
+
+
+
+ SD
+
+
+
+
+ Breathing flow rate waveform
+
+
+
+
+
+
+
+
+
+
+ L/min
+
+
+
+
+
+ Mask Pressure
+
+
+
+
+ Mask Pressure (High resolution)
+
+
+
+
+ Amount of air displaced per breath
+
+
+
+
+ Graph displaying snore volume
+
+
+
+
+
+ ??
+
+
+
+
+ Minute Ventilation
+
+
+
+
+ Amount of air displaced per minute
+
+
+
+
+ Respiratory Rate
+
+
+
+
+ Rate of breaths per minute
+
+
+
+
+ Bpm
+
+
+
+
+ Patient Triggered Breaths
+
+
+
+
+ Percentage of breaths triggered by patient
+
+
+
+
+ Pat. Trig. Breaths
+
+
+
+
+ Leak Rate
+
+
+
+
+ Rate of detected mask leakage
+
+
+
+
+ I:E Ratio
+
+
+
+
+ Ratio between Inspiratory and Expiratory time
+
+
+
+
+ ratio
+
+
+
+
+ Expiratory Time
+
+
+
+
+ Time taken to breathe out
+
+
+
+
+
+ seconds
+
+
+
+
+ Inspiratory Time
+
+
+
+
+ Time taken to breathe in
+
+
+
+
+ Respiratory Event
+
+
+
+
+ A ResMed data source showing Respiratory Events
+
+
+
+
+ events
+
+
+
+
+ Graph showing severity of flow limitations
+
+
+
+
+ Flow Limit.
+
+
+
+
+ 0-1
+
+
+
+
+ Target Minute Ventilation
+
+
+
+
+ Target Minute Ventilation?
+
+
+
+
+ Maximum Leak
+
+
+
+
+ The maximum rate of mask leakage
+
+
+
+
+ Max Leaks
+
+
+
+
+ Apnea Hypopnea Index
+
+
+
+
+ Graph showing running AHI for the past hour
+
+
+
+
+
+ events/hour
+
+
+
+
+ Total Leak Rate
+
+
+
+
+ Detected mask leakage including natural Mask leakages
+
+
+
+
+ Median Leak Rate
+
+
+
+
+ Median rate of detected mask leakage
+
+
+
+
+ Median Leaks
+
+
+
+
+ Respiratory Disturbance Index
+
+
+
+
+ Graph showing running RDI for the past hour
+
+
QextSerialPort
diff --git a/Translations/Espaniol.es.ts b/Translations/Espaniol.es.ts
index 7018826c..4b6e21eb 100644
--- a/Translations/Espaniol.es.ts
+++ b/Translations/Espaniol.es.ts
@@ -110,7 +110,7 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
Notes
@@ -195,42 +195,42 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
Add Bookmark
-
+
Starts
-
+
Remove Bookmark
-
+
Zoom fully out
-
+
100%
-
+
Reset the graph heights to uniform sizes
-
+
Reset
-
+
Drop down this list to show/hide available graphs.
@@ -343,42 +343,37 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
- Hypopnea
-
-
-
-
+
Event Breakdown
-
+
Sessions all off!
-
+
Sessions exist for this day but are switched off.
-
+
Impossibly short session
-
+
Zero hours??
-
+
BRICK :(
-
+
Complain to your Equipment Provider!
@@ -409,7 +404,7 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
No data available
@@ -459,89 +454,37 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
- Obstructive Apnea
-
-
-
-
- Unclassified Apnea
-
-
-
-
- Clear Airway Apnea
-
-
-
-
- Non Responding Event
-
-
-
-
- Flow Limitation
-
-
-
-
- Expiratory Puff
-
-
-
-
- Respiratory Effort Related Arousal
-
-
-
-
-
- Vibratory Snore
-
-
-
-
-
- Large Leak
-
-
-
-
- Periodic Breathing / CSR %
-
-
-
-
+
Sorry, your machine only provides compliance data.
-
+
Pick a Colour
-
+
This bookmarked is in a currently disabled area..
-
+
Bookmark at %1
-
+
Show all graphs
-
+
No Graphs On!
-
+
Hide all graphs
@@ -3262,7 +3205,7 @@ Signed: Nasty Programmer
QObject
-
+
No Data
@@ -3311,6 +3254,8 @@ Signed: Nasty Programmer
+
+
cmH2O
@@ -3321,6 +3266,7 @@ Signed: Nasty Programmer
+
bpm
@@ -3331,6 +3277,7 @@ Signed: Nasty Programmer
+
Error
@@ -3357,16 +3304,19 @@ Signed: Nasty Programmer
+
Pulse Rate
+
SpO2
+
Plethy
@@ -3457,11 +3407,13 @@ Signed: Nasty Programmer
+
H
+
OA
@@ -3472,11 +3424,13 @@ Signed: Nasty Programmer
+
CA
+
FL
@@ -3487,16 +3441,19 @@ Signed: Nasty Programmer
+
EP
+
VS
+
VS2
@@ -3507,6 +3464,7 @@ Signed: Nasty Programmer
+
PP
@@ -3517,11 +3475,13 @@ Signed: Nasty Programmer
+
RE
+
NR
@@ -3537,21 +3497,25 @@ Signed: Nasty Programmer
+
PC
+
UF1
+
UF2
+
UF3
@@ -3562,11 +3526,13 @@ Signed: Nasty Programmer
+
AHI
+
RDI
@@ -3612,6 +3578,7 @@ Signed: Nasty Programmer
+
PB
@@ -3622,21 +3589,26 @@ Signed: Nasty Programmer
+
Insp. Time
+
Exp. Time
+
Resp. Event
+
+
Flow Limitation
@@ -3657,26 +3629,31 @@ Signed: Nasty Programmer
+
Target Vent.
+
Minute Vent.
+
Tidal Volume
+
Resp. Rate
+
Snore
@@ -3692,6 +3669,7 @@ Signed: Nasty Programmer
+
Total Leaks
@@ -3707,6 +3685,7 @@ Signed: Nasty Programmer
+
Flow Rate
@@ -4247,6 +4226,612 @@ Please don't touch anything until it's done.
Dec
+
+
+ Events
+
+
+
+
+ Duration
+
+
+
+
+ (%%1 in events)
+
+
+
+
+ Couldn't parse Channels.xml, this build is seriously borked, no choice but to abort!!
+
+
+
+
+ Therapy Pressure
+
+
+
+
+ Inspiratory Pressure
+
+
+
+
+ Lower Inspiratory Pressure
+
+
+
+
+ Higher Inspiratory Pressure
+
+
+
+
+ Expiratory Pressure
+
+
+
+
+ Pressure Support
+
+
+
+
+ PS Min
+
+
+
+
+ Pressure Support Minimum
+
+
+
+
+ PS Max
+
+
+
+
+ Pressure Support Maximum
+
+
+
+
+ Min Pressure
+
+
+
+
+ Minimum Therapy Pressure
+
+
+
+
+ Pr. Min
+
+
+
+
+ Max Pressure
+
+
+
+
+ Maximum Therapy Pressure
+
+
+
+
+ Pr. Max
+
+
+
+
+ Ramp Time
+
+
+
+
+ Ramp Delay Period
+
+
+
+
+ minutes
+
+
+
+
+ Ramp Pressure
+
+
+
+
+ Starting Ramp Pressure
+
+
+
+
+ Ramp Pr.
+
+
+
+
+ Periodic Breathing
+
+
+
+
+ A period of periodic breathing
+
+
+
+
+
+
+ %
+
+
+
+
+ Clear Airway Apnea
+
+
+
+
+ An apnea where the airway is open
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ events/hr
+
+
+
+
+ Obstructive Apnea
+
+
+
+
+ An apnea caused by airway obstruction
+
+
+
+
+ Hypopnea
+
+
+
+
+ A partially obstructed airway
+
+
+
+
+ Unclassified Apnea
+
+
+
+
+ An apnea that could not fit into a category
+
+
+
+
+ UA
+
+
+
+
+ An restriction in breathing from normal, causing a flattening of the flow waveform.
+
+
+
+
+ Respiratory Effort Related Arousal
+
+
+
+
+ An restriction in breathing that causes an either an awakening or sleep disturbance.
+
+
+
+
+
+ Vibratory Snore
+
+
+
+
+ A vibratory snore
+
+
+
+
+ A vibratory snore as detcted by a System One machine
+
+
+
+
+ Pressure Pulse
+
+
+
+
+ A pulse of pressure 'pinged' to detect a closed airway.
+
+
+
+
+ Large Leak
+
+
+
+
+ A large mask leak affecting machine performance.
+
+
+
+
+ LL
+
+
+
+
+ Non Responding Event
+
+
+
+
+ A type of respiratory event that won't respond to a pressure increase.
+
+
+
+
+ Expiratory Puff
+
+
+
+
+ Intellipap event where you breathe out your mouth.
+
+
+
+
+ User Flag #1
+
+
+
+
+
+
+ A user definable event detected by SleepyHead's flow waveform processor.
+
+
+
+
+ User Flag #2
+
+
+
+
+ User Flag #3
+
+
+
+
+ Heart rate in beats per minute
+
+
+
+
+ Blood-oxygen saturation percentage
+
+
+
+
+ SpO2 %
+
+
+
+
+ Plethysomogram
+
+
+
+
+ hz
+
+
+
+
+ An optical Photo-plethysomogram showing heart rhythm
+
+
+
+
+ Pulse Change
+
+
+
+
+ A sudden (user definable) change in heart rate
+
+
+
+
+ SpO2 Drop
+
+
+
+
+ A sudden (user definable) drop in blood oxygen saturation
+
+
+
+
+ SD
+
+
+
+
+ Breathing flow rate waveform
+
+
+
+
+
+
+
+
+
+
+ L/min
+
+
+
+
+
+ Mask Pressure
+
+
+
+
+ Mask Pressure (High resolution)
+
+
+
+
+ Amount of air displaced per breath
+
+
+
+
+ Graph displaying snore volume
+
+
+
+
+
+ ??
+
+
+
+
+ Minute Ventilation
+
+
+
+
+ Amount of air displaced per minute
+
+
+
+
+ Respiratory Rate
+
+
+
+
+ Rate of breaths per minute
+
+
+
+
+ Bpm
+
+
+
+
+ Patient Triggered Breaths
+
+
+
+
+ Percentage of breaths triggered by patient
+
+
+
+
+ Pat. Trig. Breaths
+
+
+
+
+ Leak Rate
+
+
+
+
+ Rate of detected mask leakage
+
+
+
+
+ I:E Ratio
+
+
+
+
+ Ratio between Inspiratory and Expiratory time
+
+
+
+
+ ratio
+
+
+
+
+ Expiratory Time
+
+
+
+
+ Time taken to breathe out
+
+
+
+
+
+ seconds
+
+
+
+
+ Inspiratory Time
+
+
+
+
+ Time taken to breathe in
+
+
+
+
+ Respiratory Event
+
+
+
+
+ A ResMed data source showing Respiratory Events
+
+
+
+
+ events
+
+
+
+
+ Graph showing severity of flow limitations
+
+
+
+
+ Flow Limit.
+
+
+
+
+ 0-1
+
+
+
+
+ Target Minute Ventilation
+
+
+
+
+ Target Minute Ventilation?
+
+
+
+
+ Maximum Leak
+
+
+
+
+ The maximum rate of mask leakage
+
+
+
+
+ Max Leaks
+
+
+
+
+ Apnea Hypopnea Index
+
+
+
+
+ Graph showing running AHI for the past hour
+
+
+
+
+
+ events/hour
+
+
+
+
+ Total Leak Rate
+
+
+
+
+ Detected mask leakage including natural Mask leakages
+
+
+
+
+ Median Leak Rate
+
+
+
+
+ Median rate of detected mask leakage
+
+
+
+
+ Median Leaks
+
+
+
+
+ Respiratory Disturbance Index
+
+
+
+
+ Graph showing running RDI for the past hour
+
+
QextSerialPort
diff --git a/Translations/Francais.fr.ts b/Translations/Francais.fr.ts
index 7d16839d..220966d9 100644
--- a/Translations/Francais.fr.ts
+++ b/Translations/Francais.fr.ts
@@ -110,7 +110,7 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
Notes
@@ -195,42 +195,42 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
Add Bookmark
-
+
Starts
-
+
Remove Bookmark
-
+
Zoom fully out
-
+
100%
-
+
Reset the graph heights to uniform sizes
-
+
Reset
-
+
Drop down this list to show/hide available graphs.
@@ -343,42 +343,37 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
- Hypopnea
-
-
-
-
+
Event Breakdown
-
+
Sessions all off!
-
+
Sessions exist for this day but are switched off.
-
+
Impossibly short session
-
+
Zero hours??
-
+
BRICK :(
-
+
Complain to your Equipment Provider!
@@ -409,7 +404,7 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
No data available
@@ -459,89 +454,37 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
- Obstructive Apnea
-
-
-
-
- Unclassified Apnea
-
-
-
-
- Clear Airway Apnea
-
-
-
-
- Non Responding Event
-
-
-
-
- Flow Limitation
-
-
-
-
- Expiratory Puff
-
-
-
-
- Respiratory Effort Related Arousal
-
-
-
-
-
- Vibratory Snore
-
-
-
-
-
- Large Leak
-
-
-
-
- Periodic Breathing / CSR %
-
-
-
-
+
Sorry, your machine only provides compliance data.
-
+
Pick a Colour
-
+
This bookmarked is in a currently disabled area..
-
+
Bookmark at %1
-
+
Show all graphs
-
+
No Graphs On!
-
+
Hide all graphs
@@ -3262,7 +3205,7 @@ Signed: Nasty Programmer
QObject
-
+
No Data
@@ -3311,6 +3254,8 @@ Signed: Nasty Programmer
+
+
cmH2O
@@ -3321,6 +3266,7 @@ Signed: Nasty Programmer
+
bpm
@@ -3331,6 +3277,7 @@ Signed: Nasty Programmer
+
Error
@@ -3357,16 +3304,19 @@ Signed: Nasty Programmer
+
Pulse Rate
+
SpO2
+
Plethy
@@ -3457,11 +3407,13 @@ Signed: Nasty Programmer
+
H
+
OA
@@ -3472,11 +3424,13 @@ Signed: Nasty Programmer
+
CA
+
FL
@@ -3487,16 +3441,19 @@ Signed: Nasty Programmer
+
EP
+
VS
+
VS2
@@ -3507,6 +3464,7 @@ Signed: Nasty Programmer
+
PP
@@ -3517,11 +3475,13 @@ Signed: Nasty Programmer
+
RE
+
NR
@@ -3537,21 +3497,25 @@ Signed: Nasty Programmer
+
PC
+
UF1
+
UF2
+
UF3
@@ -3562,11 +3526,13 @@ Signed: Nasty Programmer
+
AHI
+
RDI
@@ -3612,6 +3578,7 @@ Signed: Nasty Programmer
+
PB
@@ -3622,21 +3589,26 @@ Signed: Nasty Programmer
+
Insp. Time
+
Exp. Time
+
Resp. Event
+
+
Flow Limitation
@@ -3657,26 +3629,31 @@ Signed: Nasty Programmer
+
Target Vent.
+
Minute Vent.
+
Tidal Volume
+
Resp. Rate
+
Snore
@@ -3692,6 +3669,7 @@ Signed: Nasty Programmer
+
Total Leaks
@@ -3707,6 +3685,7 @@ Signed: Nasty Programmer
+
Flow Rate
@@ -4247,6 +4226,612 @@ Please don't touch anything until it's done.
Dec
+
+
+ Events
+
+
+
+
+ Duration
+
+
+
+
+ (%%1 in events)
+
+
+
+
+ Couldn't parse Channels.xml, this build is seriously borked, no choice but to abort!!
+
+
+
+
+ Therapy Pressure
+
+
+
+
+ Inspiratory Pressure
+
+
+
+
+ Lower Inspiratory Pressure
+
+
+
+
+ Higher Inspiratory Pressure
+
+
+
+
+ Expiratory Pressure
+
+
+
+
+ Pressure Support
+
+
+
+
+ PS Min
+
+
+
+
+ Pressure Support Minimum
+
+
+
+
+ PS Max
+
+
+
+
+ Pressure Support Maximum
+
+
+
+
+ Min Pressure
+
+
+
+
+ Minimum Therapy Pressure
+
+
+
+
+ Pr. Min
+
+
+
+
+ Max Pressure
+
+
+
+
+ Maximum Therapy Pressure
+
+
+
+
+ Pr. Max
+
+
+
+
+ Ramp Time
+
+
+
+
+ Ramp Delay Period
+
+
+
+
+ minutes
+
+
+
+
+ Ramp Pressure
+
+
+
+
+ Starting Ramp Pressure
+
+
+
+
+ Ramp Pr.
+
+
+
+
+ Periodic Breathing
+
+
+
+
+ A period of periodic breathing
+
+
+
+
+
+
+ %
+
+
+
+
+ Clear Airway Apnea
+
+
+
+
+ An apnea where the airway is open
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ events/hr
+
+
+
+
+ Obstructive Apnea
+
+
+
+
+ An apnea caused by airway obstruction
+
+
+
+
+ Hypopnea
+
+
+
+
+ A partially obstructed airway
+
+
+
+
+ Unclassified Apnea
+
+
+
+
+ An apnea that could not fit into a category
+
+
+
+
+ UA
+
+
+
+
+ An restriction in breathing from normal, causing a flattening of the flow waveform.
+
+
+
+
+ Respiratory Effort Related Arousal
+
+
+
+
+ An restriction in breathing that causes an either an awakening or sleep disturbance.
+
+
+
+
+
+ Vibratory Snore
+
+
+
+
+ A vibratory snore
+
+
+
+
+ A vibratory snore as detcted by a System One machine
+
+
+
+
+ Pressure Pulse
+
+
+
+
+ A pulse of pressure 'pinged' to detect a closed airway.
+
+
+
+
+ Large Leak
+
+
+
+
+ A large mask leak affecting machine performance.
+
+
+
+
+ LL
+
+
+
+
+ Non Responding Event
+
+
+
+
+ A type of respiratory event that won't respond to a pressure increase.
+
+
+
+
+ Expiratory Puff
+
+
+
+
+ Intellipap event where you breathe out your mouth.
+
+
+
+
+ User Flag #1
+
+
+
+
+
+
+ A user definable event detected by SleepyHead's flow waveform processor.
+
+
+
+
+ User Flag #2
+
+
+
+
+ User Flag #3
+
+
+
+
+ Heart rate in beats per minute
+
+
+
+
+ Blood-oxygen saturation percentage
+
+
+
+
+ SpO2 %
+
+
+
+
+ Plethysomogram
+
+
+
+
+ hz
+
+
+
+
+ An optical Photo-plethysomogram showing heart rhythm
+
+
+
+
+ Pulse Change
+
+
+
+
+ A sudden (user definable) change in heart rate
+
+
+
+
+ SpO2 Drop
+
+
+
+
+ A sudden (user definable) drop in blood oxygen saturation
+
+
+
+
+ SD
+
+
+
+
+ Breathing flow rate waveform
+
+
+
+
+
+
+
+
+
+
+ L/min
+
+
+
+
+
+ Mask Pressure
+
+
+
+
+ Mask Pressure (High resolution)
+
+
+
+
+ Amount of air displaced per breath
+
+
+
+
+ Graph displaying snore volume
+
+
+
+
+
+ ??
+
+
+
+
+ Minute Ventilation
+
+
+
+
+ Amount of air displaced per minute
+
+
+
+
+ Respiratory Rate
+
+
+
+
+ Rate of breaths per minute
+
+
+
+
+ Bpm
+
+
+
+
+ Patient Triggered Breaths
+
+
+
+
+ Percentage of breaths triggered by patient
+
+
+
+
+ Pat. Trig. Breaths
+
+
+
+
+ Leak Rate
+
+
+
+
+ Rate of detected mask leakage
+
+
+
+
+ I:E Ratio
+
+
+
+
+ Ratio between Inspiratory and Expiratory time
+
+
+
+
+ ratio
+
+
+
+
+ Expiratory Time
+
+
+
+
+ Time taken to breathe out
+
+
+
+
+
+ seconds
+
+
+
+
+ Inspiratory Time
+
+
+
+
+ Time taken to breathe in
+
+
+
+
+ Respiratory Event
+
+
+
+
+ A ResMed data source showing Respiratory Events
+
+
+
+
+ events
+
+
+
+
+ Graph showing severity of flow limitations
+
+
+
+
+ Flow Limit.
+
+
+
+
+ 0-1
+
+
+
+
+ Target Minute Ventilation
+
+
+
+
+ Target Minute Ventilation?
+
+
+
+
+ Maximum Leak
+
+
+
+
+ The maximum rate of mask leakage
+
+
+
+
+ Max Leaks
+
+
+
+
+ Apnea Hypopnea Index
+
+
+
+
+ Graph showing running AHI for the past hour
+
+
+
+
+
+ events/hour
+
+
+
+
+ Total Leak Rate
+
+
+
+
+ Detected mask leakage including natural Mask leakages
+
+
+
+
+ Median Leak Rate
+
+
+
+
+ Median rate of detected mask leakage
+
+
+
+
+ Median Leaks
+
+
+
+
+ Respiratory Disturbance Index
+
+
+
+
+ Graph showing running RDI for the past hour
+
+
QextSerialPort
diff --git a/Translations/Nederlands.nl_NL.ts b/Translations/Nederlands.nl_NL.ts
index b5979b74..5cffe30d 100644
--- a/Translations/Nederlands.nl_NL.ts
+++ b/Translations/Nederlands.nl_NL.ts
@@ -127,7 +127,7 @@ Misschien is 'Zoomniveau' beter?
-
+
Notes
WJG: Is compacter, past beter op tabje
In verband met de koppeling met Bladwijzers, lijkt me 'Notities' beter.
@@ -218,43 +218,43 @@ In verband met de koppeling met Bladwijzers, lijkt me 'Notities' beter
Bladwijzers
-
+
Add Bookmark
Bladwijzer toevoegen
-
+
Starts
WJG: er wordt een punt in de tijd mee aangegeven vanaf wanneer je opmerkingen wilt plaatsen
Vanaf
-
+
Remove Bookmark
Bladwijzer verwijderen
-
+
Zoom fully out
Volledig uitzoomen
-
+
100%
100%
-
+
Reset the graph heights to uniform sizes
Maak de grafiekhoogtes weer gelijk
-
+
Reset
Reset hoogtes
-
+
Drop down this list to show/hide available graphs.
WJG: In het Engels ook nogal omslachtig
AK: Wellicht 'beschikbare' ook weglaten, is verwarrend, want de eerste is gelijk een (belangrijke) keuze
@@ -305,10 +305,9 @@ AK: Respiratory Disturbance Index, iets van Respironics
Minuutventilatie
-
Flow Limitation
Staat in: Instellingen-Grafieken
- Stroombeperk.
+ Stroombeperk.
Pat. Trig. Breath
@@ -549,9 +548,8 @@ Maar het is een vierde soort apparaat, tegen Centrale Apneus
Einde
-
Hypopnea
- Hypopneu (H)
+ Hypopneu (H)
Apnea
@@ -597,33 +595,33 @@ Toch ief, staat in de tabel
Exh Pufje
-
+
Event Breakdown
Verdeling incidenten
-
+
Sessions all off!
Niet gevonden
Alle sessies uit!
-
+
Sessions exist for this day but are switched off.
Er zijn wel sessies, maar die staan uit.
-
+
Impossibly short session
Onmogelijk korte sessie
-
+
Zero hours??
Nul uren???
-
+
BRICK :(
Arie: Als er niets uit komt is het echt fout
Volgens mij zit er een foutje in deze string: dat eerste ( hoort er niet in dacht ik...
@@ -636,7 +634,7 @@ Oh, dat is een smiley ;-)
Sorry, je apparaat bewaart geen gegevens.
-
+
Complain to your Equipment Provider!
Klaag bij je leverancier!
@@ -679,7 +677,7 @@ Oh, dat is een smiley ;-)
<b>Let op:</b> Deze dag heeft alleen overzichtsgegevens; alleen beperkte informatie dus.
-
+
No data available
Geen gegevens beschikbaar
@@ -796,84 +794,37 @@ Oh, dat is een smiley ;-)
-
- Obstructive Apnea
-
-
-
-
- Unclassified Apnea
-
-
-
-
- Clear Airway Apnea
-
-
-
-
- Non Responding Event
-
-
-
-
- Expiratory Puff
-
-
-
-
- Respiratory Effort Related Arousal
-
-
-
-
-
- Vibratory Snore
-
-
-
-
-
- Large Leak
-
-
-
-
- Periodic Breathing / CSR %
-
-
-
-
+
Sorry, your machine only provides compliance data.
-
+
Pick a Colour
Kies een kleur
-
+
This bookmarked is in a currently disabled area..
-
+
Bookmark at %1
-
+
Show all graphs
Toon alle grafieken
-
+
No Graphs On!
Alle grafieken staan uit!
-
+
Hide all graphs
Verberg alle grafieken
@@ -4452,7 +4403,7 @@ Het programma wordt nu afgesloten!
QObject
-
+
No Data
Geen gegevens
@@ -4489,6 +4440,8 @@ Het programma wordt nu afgesloten!
+
+
cmH2O
cmWK
@@ -4499,6 +4452,7 @@ Het programma wordt nu afgesloten!
+
bpm
@@ -4509,6 +4463,7 @@ Het programma wordt nu afgesloten!
+
Error
Fout
@@ -4547,6 +4502,7 @@ Het programma wordt nu afgesloten!
+
Pulse Rate
20/9 WJG: overal gebruiken we polsslag - moeten we daar eigenlijk niet hartslag van maken? Dat lijkt me eigenlijk beter...
Toch maar niet (nog)
@@ -4554,11 +4510,13 @@ Toch maar niet (nog)
+
SpO2
SpO2
+
Plethy
20/9 WJG: Wat is dat?
AK: Het kwam me bekend voor:
@@ -4631,11 +4589,13 @@ http://www.apneaboard.com/forums/Thread-CMS50D--3956
+
H
H
+
OA
OA
@@ -4646,11 +4606,13 @@ http://www.apneaboard.com/forums/Thread-CMS50D--3956
+
CA
CA
+
FL
FL
@@ -4661,16 +4623,19 @@ http://www.apneaboard.com/forums/Thread-CMS50D--3956
+
EP
+
VS
VS
+
VS2
VS2
@@ -4681,6 +4646,7 @@ http://www.apneaboard.com/forums/Thread-CMS50D--3956
+
PP
@@ -4691,11 +4657,13 @@ http://www.apneaboard.com/forums/Thread-CMS50D--3956
+
RE
RE
+
NR
NR
@@ -4711,21 +4679,25 @@ http://www.apneaboard.com/forums/Thread-CMS50D--3956
+
PC
+
UF1
UF1
+
UF2
UF2
+
UF3
UF3
@@ -4736,11 +4708,13 @@ http://www.apneaboard.com/forums/Thread-CMS50D--3956
+
AHI
AHI
+
RDI
RDI
@@ -4786,6 +4760,7 @@ http://www.apneaboard.com/forums/Thread-CMS50D--3956
+
PB
PB
@@ -4796,21 +4771,26 @@ http://www.apneaboard.com/forums/Thread-CMS50D--3956
+
Insp. Time
Inademtijd
+
Exp. Time
Uitademtijd
+
Resp. Event
Incident
+
+
Flow Limitation
Stroombeperk.
@@ -4831,26 +4811,31 @@ http://www.apneaboard.com/forums/Thread-CMS50D--3956
+
Target Vent.
Doelventilatie
+
Minute Vent.
Minuutventilatie
+
Tidal Volume
Teugvolume
+
Resp. Rate
Ademtempo
+
Snore
Snurken
@@ -4866,6 +4851,7 @@ http://www.apneaboard.com/forums/Thread-CMS50D--3956
+
Total Leaks
Totale lek
@@ -4881,6 +4867,7 @@ http://www.apneaboard.com/forums/Thread-CMS50D--3956
+
Flow Rate
Stroomsnelheid
@@ -5460,6 +5447,612 @@ Alsjeblieft niets aanraken tot ik klaar ben!
Dec
+
+
+ Events
+ Incidenten
+
+
+
+ Duration
+
+
+
+
+ (%%1 in events)
+
+
+
+
+ Couldn't parse Channels.xml, this build is seriously borked, no choice but to abort!!
+
+
+
+
+ Therapy Pressure
+
+
+
+
+ Inspiratory Pressure
+
+
+
+
+ Lower Inspiratory Pressure
+
+
+
+
+ Higher Inspiratory Pressure
+
+
+
+
+ Expiratory Pressure
+
+
+
+
+ Pressure Support
+
+
+
+
+ PS Min
+ PS min.
+
+
+
+ Pressure Support Minimum
+
+
+
+
+ PS Max
+ PS max.
+
+
+
+ Pressure Support Maximum
+
+
+
+
+ Min Pressure
+
+
+
+
+ Minimum Therapy Pressure
+
+
+
+
+ Pr. Min
+
+
+
+
+ Max Pressure
+
+
+
+
+ Maximum Therapy Pressure
+
+
+
+
+ Pr. Max
+
+
+
+
+ Ramp Time
+
+
+
+
+ Ramp Delay Period
+
+
+
+
+ minutes
+
+
+
+
+ Ramp Pressure
+
+
+
+
+ Starting Ramp Pressure
+
+
+
+
+ Ramp Pr.
+
+
+
+
+ Periodic Breathing
+
+
+
+
+ A period of periodic breathing
+
+
+
+
+
+
+ %
+ %
+
+
+
+ Clear Airway Apnea
+
+
+
+
+ An apnea where the airway is open
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ events/hr
+
+
+
+
+ Obstructive Apnea
+
+
+
+
+ An apnea caused by airway obstruction
+
+
+
+
+ Hypopnea
+ Hypopneu (H)
+
+
+
+ A partially obstructed airway
+
+
+
+
+ Unclassified Apnea
+
+
+
+
+ An apnea that could not fit into a category
+
+
+
+
+ UA
+
+
+
+
+ An restriction in breathing from normal, causing a flattening of the flow waveform.
+
+
+
+
+ Respiratory Effort Related Arousal
+
+
+
+
+ An restriction in breathing that causes an either an awakening or sleep disturbance.
+
+
+
+
+
+ Vibratory Snore
+
+
+
+
+ A vibratory snore
+
+
+
+
+ A vibratory snore as detcted by a System One machine
+
+
+
+
+ Pressure Pulse
+
+
+
+
+ A pulse of pressure 'pinged' to detect a closed airway.
+
+
+
+
+ Large Leak
+
+
+
+
+ A large mask leak affecting machine performance.
+
+
+
+
+ LL
+
+
+
+
+ Non Responding Event
+
+
+
+
+ A type of respiratory event that won't respond to a pressure increase.
+
+
+
+
+ Expiratory Puff
+
+
+
+
+ Intellipap event where you breathe out your mouth.
+
+
+
+
+ User Flag #1
+
+
+
+
+
+
+ A user definable event detected by SleepyHead's flow waveform processor.
+
+
+
+
+ User Flag #2
+
+
+
+
+ User Flag #3
+
+
+
+
+ Heart rate in beats per minute
+
+
+
+
+ Blood-oxygen saturation percentage
+
+
+
+
+ SpO2 %
+
+
+
+
+ Plethysomogram
+
+
+
+
+ hz
+
+
+
+
+ An optical Photo-plethysomogram showing heart rhythm
+
+
+
+
+ Pulse Change
+
+
+
+
+ A sudden (user definable) change in heart rate
+
+
+
+
+ SpO2 Drop
+
+
+
+
+ A sudden (user definable) drop in blood oxygen saturation
+
+
+
+
+ SD
+
+
+
+
+ Breathing flow rate waveform
+
+
+
+
+
+
+
+
+
+
+ L/min
+
+
+
+
+
+ Mask Pressure
+ Maskerdruk
+
+
+
+ Mask Pressure (High resolution)
+
+
+
+
+ Amount of air displaced per breath
+
+
+
+
+ Graph displaying snore volume
+
+
+
+
+
+ ??
+
+
+
+
+ Minute Ventilation
+
+
+
+
+ Amount of air displaced per minute
+
+
+
+
+ Respiratory Rate
+
+
+
+
+ Rate of breaths per minute
+
+
+
+
+ Bpm
+
+
+
+
+ Patient Triggered Breaths
+
+
+
+
+ Percentage of breaths triggered by patient
+
+
+
+
+ Pat. Trig. Breaths
+
+
+
+
+ Leak Rate
+
+
+
+
+ Rate of detected mask leakage
+
+
+
+
+ I:E Ratio
+
+
+
+
+ Ratio between Inspiratory and Expiratory time
+
+
+
+
+ ratio
+
+
+
+
+ Expiratory Time
+
+
+
+
+ Time taken to breathe out
+
+
+
+
+
+ seconds
+
+
+
+
+ Inspiratory Time
+
+
+
+
+ Time taken to breathe in
+
+
+
+
+ Respiratory Event
+
+
+
+
+ A ResMed data source showing Respiratory Events
+
+
+
+
+ events
+ incidenten
+
+
+
+ Graph showing severity of flow limitations
+
+
+
+
+ Flow Limit.
+
+
+
+
+ 0-1
+ 100% {0-1?}
+
+
+
+ Target Minute Ventilation
+
+
+
+
+ Target Minute Ventilation?
+
+
+
+
+ Maximum Leak
+
+
+
+
+ The maximum rate of mask leakage
+
+
+
+
+ Max Leaks
+
+
+
+
+ Apnea Hypopnea Index
+
+
+
+
+ Graph showing running AHI for the past hour
+
+
+
+
+
+ events/hour
+
+
+
+
+ Total Leak Rate
+
+
+
+
+ Detected mask leakage including natural Mask leakages
+
+
+
+
+ Median Leak Rate
+
+
+
+
+ Median rate of detected mask leakage
+
+
+
+
+ Median Leaks
+
+
+
+
+ Respiratory Disturbance Index
+
+
+
+
+ Graph showing running RDI for the past hour
+
+
QextSerialPort
diff --git a/Translations/Svenska.se.ts b/Translations/Svenska.se.ts
index fadaf5e6..534709e4 100644
--- a/Translations/Svenska.se.ts
+++ b/Translations/Svenska.se.ts
@@ -110,7 +110,7 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
Notes
@@ -195,42 +195,42 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
Add Bookmark
-
+
Starts
-
+
Remove Bookmark
-
+
Zoom fully out
-
+
100%
-
+
Reset the graph heights to uniform sizes
-
+
Reset
-
+
Drop down this list to show/hide available graphs.
@@ -343,42 +343,37 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
- Hypopnea
-
-
-
-
+
Event Breakdown
-
+
Sessions all off!
-
+
Sessions exist for this day but are switched off.
-
+
Impossibly short session
-
+
Zero hours??
-
+
BRICK :(
-
+
Complain to your Equipment Provider!
@@ -409,7 +404,7 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
+
No data available
@@ -459,89 +454,37 @@ If you forgot to import todays CPAP data first, go and do that now, then import
-
- Obstructive Apnea
-
-
-
-
- Unclassified Apnea
-
-
-
-
- Clear Airway Apnea
-
-
-
-
- Non Responding Event
-
-
-
-
- Flow Limitation
-
-
-
-
- Expiratory Puff
-
-
-
-
- Respiratory Effort Related Arousal
-
-
-
-
-
- Vibratory Snore
-
-
-
-
-
- Large Leak
-
-
-
-
- Periodic Breathing / CSR %
-
-
-
-
+
Sorry, your machine only provides compliance data.
-
+
Pick a Colour
-
+
This bookmarked is in a currently disabled area..
-
+
Bookmark at %1
-
+
Show all graphs
-
+
No Graphs On!
-
+
Hide all graphs
@@ -3262,7 +3205,7 @@ Signed: Nasty Programmer
QObject
-
+
No Data
@@ -3311,6 +3254,8 @@ Signed: Nasty Programmer
+
+
cmH2O
@@ -3321,6 +3266,7 @@ Signed: Nasty Programmer
+
bpm
@@ -3331,6 +3277,7 @@ Signed: Nasty Programmer
+
Error
@@ -3357,16 +3304,19 @@ Signed: Nasty Programmer
+
Pulse Rate
+
SpO2
+
Plethy
@@ -3457,11 +3407,13 @@ Signed: Nasty Programmer
+
H
+
OA
@@ -3472,11 +3424,13 @@ Signed: Nasty Programmer
+
CA
+
FL
@@ -3487,16 +3441,19 @@ Signed: Nasty Programmer
+
EP
+
VS
+
VS2
@@ -3507,6 +3464,7 @@ Signed: Nasty Programmer
+
PP
@@ -3517,11 +3475,13 @@ Signed: Nasty Programmer
+
RE
+
NR
@@ -3537,21 +3497,25 @@ Signed: Nasty Programmer
+
PC
+
UF1
+
UF2
+
UF3
@@ -3562,11 +3526,13 @@ Signed: Nasty Programmer
+
AHI
+
RDI
@@ -3612,6 +3578,7 @@ Signed: Nasty Programmer
+
PB
@@ -3622,21 +3589,26 @@ Signed: Nasty Programmer
+
Insp. Time
+
Exp. Time
+
Resp. Event
+
+
Flow Limitation
@@ -3657,26 +3629,31 @@ Signed: Nasty Programmer
+
Target Vent.
+
Minute Vent.
+
Tidal Volume
+
Resp. Rate
+
Snore
@@ -3692,6 +3669,7 @@ Signed: Nasty Programmer
+
Total Leaks
@@ -3707,6 +3685,7 @@ Signed: Nasty Programmer
+
Flow Rate
@@ -4247,6 +4226,612 @@ Please don't touch anything until it's done.
Dec
+
+
+ Events
+
+
+
+
+ Duration
+
+
+
+
+ (%%1 in events)
+
+
+
+
+ Couldn't parse Channels.xml, this build is seriously borked, no choice but to abort!!
+
+
+
+
+ Therapy Pressure
+
+
+
+
+ Inspiratory Pressure
+
+
+
+
+ Lower Inspiratory Pressure
+
+
+
+
+ Higher Inspiratory Pressure
+
+
+
+
+ Expiratory Pressure
+
+
+
+
+ Pressure Support
+
+
+
+
+ PS Min
+
+
+
+
+ Pressure Support Minimum
+
+
+
+
+ PS Max
+
+
+
+
+ Pressure Support Maximum
+
+
+
+
+ Min Pressure
+
+
+
+
+ Minimum Therapy Pressure
+
+
+
+
+ Pr. Min
+
+
+
+
+ Max Pressure
+
+
+
+
+ Maximum Therapy Pressure
+
+
+
+
+ Pr. Max
+
+
+
+
+ Ramp Time
+
+
+
+
+ Ramp Delay Period
+
+
+
+
+ minutes
+
+
+
+
+ Ramp Pressure
+
+
+
+
+ Starting Ramp Pressure
+
+
+
+
+ Ramp Pr.
+
+
+
+
+ Periodic Breathing
+
+
+
+
+ A period of periodic breathing
+
+
+
+
+
+
+ %
+
+
+
+
+ Clear Airway Apnea
+
+
+
+
+ An apnea where the airway is open
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ events/hr
+
+
+
+
+ Obstructive Apnea
+
+
+
+
+ An apnea caused by airway obstruction
+
+
+
+
+ Hypopnea
+
+
+
+
+ A partially obstructed airway
+
+
+
+
+ Unclassified Apnea
+
+
+
+
+ An apnea that could not fit into a category
+
+
+
+
+ UA
+
+
+
+
+ An restriction in breathing from normal, causing a flattening of the flow waveform.
+
+
+
+
+ Respiratory Effort Related Arousal
+
+
+
+
+ An restriction in breathing that causes an either an awakening or sleep disturbance.
+
+
+
+
+
+ Vibratory Snore
+
+
+
+
+ A vibratory snore
+
+
+
+
+ A vibratory snore as detcted by a System One machine
+
+
+
+
+ Pressure Pulse
+
+
+
+
+ A pulse of pressure 'pinged' to detect a closed airway.
+
+
+
+
+ Large Leak
+
+
+
+
+ A large mask leak affecting machine performance.
+
+
+
+
+ LL
+
+
+
+
+ Non Responding Event
+
+
+
+
+ A type of respiratory event that won't respond to a pressure increase.
+
+
+
+
+ Expiratory Puff
+
+
+
+
+ Intellipap event where you breathe out your mouth.
+
+
+
+
+ User Flag #1
+
+
+
+
+
+
+ A user definable event detected by SleepyHead's flow waveform processor.
+
+
+
+
+ User Flag #2
+
+
+
+
+ User Flag #3
+
+
+
+
+ Heart rate in beats per minute
+
+
+
+
+ Blood-oxygen saturation percentage
+
+
+
+
+ SpO2 %
+
+
+
+
+ Plethysomogram
+
+
+
+
+ hz
+
+
+
+
+ An optical Photo-plethysomogram showing heart rhythm
+
+
+
+
+ Pulse Change
+
+
+
+
+ A sudden (user definable) change in heart rate
+
+
+
+
+ SpO2 Drop
+
+
+
+
+ A sudden (user definable) drop in blood oxygen saturation
+
+
+
+
+ SD
+
+
+
+
+ Breathing flow rate waveform
+
+
+
+
+
+
+
+
+
+
+ L/min
+
+
+
+
+
+ Mask Pressure
+
+
+
+
+ Mask Pressure (High resolution)
+
+
+
+
+ Amount of air displaced per breath
+
+
+
+
+ Graph displaying snore volume
+
+
+
+
+
+ ??
+
+
+
+
+ Minute Ventilation
+
+
+
+
+ Amount of air displaced per minute
+
+
+
+
+ Respiratory Rate
+
+
+
+
+ Rate of breaths per minute
+
+
+
+
+ Bpm
+
+
+
+
+ Patient Triggered Breaths
+
+
+
+
+ Percentage of breaths triggered by patient
+
+
+
+
+ Pat. Trig. Breaths
+
+
+
+
+ Leak Rate
+
+
+
+
+ Rate of detected mask leakage
+
+
+
+
+ I:E Ratio
+
+
+
+
+ Ratio between Inspiratory and Expiratory time
+
+
+
+
+ ratio
+
+
+
+
+ Expiratory Time
+
+
+
+
+ Time taken to breathe out
+
+
+
+
+
+ seconds
+
+
+
+
+ Inspiratory Time
+
+
+
+
+ Time taken to breathe in
+
+
+
+
+ Respiratory Event
+
+
+
+
+ A ResMed data source showing Respiratory Events
+
+
+
+
+ events
+
+
+
+
+ Graph showing severity of flow limitations
+
+
+
+
+ Flow Limit.
+
+
+
+
+ 0-1
+
+
+
+
+ Target Minute Ventilation
+
+
+
+
+ Target Minute Ventilation?
+
+
+
+
+ Maximum Leak
+
+
+
+
+ The maximum rate of mask leakage
+
+
+
+
+ Max Leaks
+
+
+
+
+ Apnea Hypopnea Index
+
+
+
+
+ Graph showing running AHI for the past hour
+
+
+
+
+
+ events/hour
+
+
+
+
+ Total Leak Rate
+
+
+
+
+ Detected mask leakage including natural Mask leakages
+
+
+
+
+ Median Leak Rate
+
+
+
+
+ Median rate of detected mask leakage
+
+
+
+
+ Median Leaks
+
+
+
+
+ Respiratory Disturbance Index
+
+
+
+
+ Graph showing running RDI for the past hour
+
+
QextSerialPort
diff --git a/sleepyhead/Graphs/gLineOverlay.cpp b/sleepyhead/Graphs/gLineOverlay.cpp
index ee31d91d..cc2be478 100644
--- a/sleepyhead/Graphs/gLineOverlay.cpp
+++ b/sleepyhead/Graphs/gLineOverlay.cpp
@@ -267,7 +267,7 @@ void gLineOverlaySummary::paint(gGraph & w,int left, int top, int width, int hei
- QString a="Events="+QString::number(cnt)+" Duration="+QString().sprintf("%02i:%02i:%02i",h,m,s)+", "+m_text+"="+QString::number(val,'f',2);
+ QString a=QObject::tr("Events")+"="+QString::number(cnt)+" "+QObject::tr("Duration")+" "+QString().sprintf("%02i:%02i:%02i",h,m,s)+", "+m_text+"="+QString::number(val,'f',2);
if (isSpan) {
float sph;
@@ -275,7 +275,7 @@ void gLineOverlaySummary::paint(gGraph & w,int left, int top, int width, int hei
sph=(100.0/float(time))*(sum/3600.0);
if (sph>100) sph=100;
}
- a+=QString(" (\%%1 in events)").arg(sph,0,'f',2);
+ a+=" "+QObject::tr("(\%%1 in events)").arg(sph,0,'f',2); // eg: %num of time in a span, like Periodic Breathing
}
w.renderText(a,left+m_x,top+m_y);
}
diff --git a/sleepyhead/SleepLib/schema.cpp b/sleepyhead/SleepLib/schema.cpp
index 4a9e96b4..697aadac 100644
--- a/sleepyhead/SleepLib/schema.cpp
+++ b/sleepyhead/SleepLib/schema.cpp
@@ -11,10 +11,13 @@
#include
#include
#include
+
+#include "common.h"
#include "schema.h"
+
namespace schema {
ChannelList channel;
@@ -32,8 +35,8 @@ void init()
if (schema_initialized) return;
schema_initialized=true;
- EmptyChannel=Channel(0,DATA,DAY,"Empty","Empty Channel","","");
- SessionEnabledChannel=new Channel(1,DATA,DAY,"Enabled","Session Enabled","","");
+ EmptyChannel=Channel(0,DATA,DAY,"Empty","Empty", "Empty Channel","","");
+ SessionEnabledChannel=new Channel(1,DATA,DAY,"Enabled","Enabled","Session Enabled","","");
channel.channels[1]=SessionEnabledChannel;
channel.names["Enabled"]=SessionEnabledChannel;
@@ -58,57 +61,178 @@ void init()
DataTypes["time"]=TIME;
if (!schema::channel.Load(":/docs/channels.xml")) {
- QMessageBox::critical(0,"Ugh!","Couldn't parse Channels.xml, this build is seriously borked, no choice but to abort!!",QMessageBox::Ok);
+ QMessageBox::critical(0,QObject::tr("Error"),QObject::tr("Couldn't parse Channels.xml, this build is seriously borked, no choice but to abort!!"),QMessageBox::Ok);
QApplication::exit(-1);
}
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+
+ QString GRP_CPAP="CPAP";
+ QString GRP_OXI="OXI";
+ // Pressure Related Settings
+
+ // Lookup Code strings are used internally and not meant to be tranlsated
+
+ // Group ChannelID Code Type Scope Lookup Code Translable Name Description Shortened Name Units String FieldType Default Color
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_Pressure = 0x110C, DATA, SESSION, "Pressure", STR_TR_Pressure, QObject::tr("Therapy Pressure"), STR_TR_Pressure, STR_UNIT_CMH2O, DEFAULT, QColor("dark green")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_IPAP = 0x110D, DATA, SESSION, "IPAP", STR_TR_IPAP, QObject::tr("Inspiratory Pressure"), STR_TR_IPAP, STR_UNIT_CMH2O, DEFAULT, QColor("orange")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_IPAPLo = 0x1110, DATA, SESSION, "IPAPLo", STR_TR_IPAPLo, QObject::tr("Lower Inspiratory Pressure"), STR_TR_IPAPLo, STR_UNIT_CMH2O, DEFAULT, QColor("orange")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_IPAPHi = 0x1111, DATA, SESSION, "IPAPHi", STR_TR_IPAPHi, QObject::tr("Higher Inspiratory Pressure"), STR_TR_IPAPHi, STR_UNIT_CMH2O, DEFAULT, QColor("orange")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_EPAP = 0x110E, DATA, SESSION, "EPAP", STR_TR_EPAP, QObject::tr("Expiratory Pressure"), STR_TR_EPAP, STR_UNIT_CMH2O, DEFAULT, QColor("light blue")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_PS = 0x110F, DATA, SESSION, "PS", STR_TR_PS, QObject::tr("Pressure Support"), STR_TR_PS, STR_UNIT_CMH2O, DEFAULT, QColor("grey")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_PSMin = 0x111A, SETTING, SESSION, "PSMin", QObject::tr("PS Min") , QObject::tr("Pressure Support Minimum"), QObject::tr("PS Min"), STR_UNIT_CMH2O, DEFAULT, QColor("dark cyan")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_PSMax = 0x111B, SETTING, SESSION, "PSMax", QObject::tr("PS Max"), QObject::tr("Pressure Support Maximum"), QObject::tr("PS Max"), STR_UNIT_CMH2O, DEFAULT, QColor("dark magenta")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_PressureMin = 0x1020, SETTING, SESSION, "PressureMin", QObject::tr("Min Pressure") , QObject::tr("Minimum Therapy Pressure"), QObject::tr("Pr. Min"), STR_UNIT_CMH2O, DEFAULT, QColor("black")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_PressureMax = 0x1021, SETTING, SESSION, "PressureMax", QObject::tr("Max Pressure"), QObject::tr("Maximum Therapy Pressure"), QObject::tr("Pr. Max"), STR_UNIT_CMH2O, DEFAULT, QColor("black")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_RampTime = 0x1022, SETTING, SESSION, "RampTime", QObject::tr("Ramp Time") , QObject::tr("Ramp Delay Period"), QObject::tr("Ramp Time"), QObject::tr("minutes"), DEFAULT, QColor("black")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_RampPressure = 0x1023, SETTING, SESSION, "RampPressure", QObject::tr("Ramp Pressure"), QObject::tr("Starting Ramp Pressure"), QObject::tr("Ramp Pr."), STR_UNIT_CMH2O, DEFAULT, QColor("black")));
+
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_CSR = 0x1000, DATA, SESSION, "CSR", QObject::tr("Periodic Breathing"), QObject::tr("A period of periodic breathing"), QObject::tr("PB"), QObject::tr("%"), DEFAULT, QColor("light green")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_ClearAirway = 0x1001, DATA, SESSION, "ClearAirway", QObject::tr("Clear Airway Apnea"), QObject::tr("An apnea where the airway is open"), QObject::tr("CA"), QObject::tr("events/hr"), DEFAULT, QColor("purple")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_Obstructive = 0x1002, DATA, SESSION, "Obstructive", QObject::tr("Obstructive Apnea"), QObject::tr("An apnea caused by airway obstruction"), QObject::tr("OA"), QObject::tr("events/hr"), DEFAULT, QColor("#40c0ff")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_Hypopnea = 0x1003, DATA, SESSION, "Hypopnea", QObject::tr("Hypopnea"), QObject::tr("A partially obstructed airway"), QObject::tr("H"), QObject::tr("events/hr"), DEFAULT, QColor("blue")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_Apnea = 0x1004, DATA, SESSION, "Apnea", QObject::tr("Unclassified Apnea"), QObject::tr("An apnea that could not fit into a category"), QObject::tr("UA"), QObject::tr("events/hr"), DEFAULT, QColor("dark green")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_FlowLimit = 0x1005, DATA, SESSION, "FlowLimit", QObject::tr("Flow Limitation"), QObject::tr("An restriction in breathing from normal, causing a flattening of the flow waveform."), QObject::tr("FL"), QObject::tr("events/hr"), DEFAULT, QColor("#404040")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_RERA = 0x1006, DATA, SESSION, "RERA", QObject::tr("Respiratory Effort Related Arousal"), QObject::tr("An restriction in breathing that causes an either an awakening or sleep disturbance."), QObject::tr("RE"), QObject::tr("events/hr"), DEFAULT, QColor("gold")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_VSnore = 0x1007, DATA, SESSION, "VSnore", QObject::tr("Vibratory Snore"), QObject::tr("A vibratory snore"), QObject::tr("VS"), QObject::tr("events/hr"), DEFAULT, QColor("red")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_VSnore2 = 0x1008, DATA, SESSION, "VSnore2", QObject::tr("Vibratory Snore"), QObject::tr("A vibratory snore as detcted by a System One machine"), QObject::tr("VS2"), QObject::tr("events/hr"), DEFAULT, QColor("red")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_PressurePulse = 0x1009, DATA, SESSION, "PressurePulse", QObject::tr("Pressure Pulse"), QObject::tr("A pulse of pressure 'pinged' to detect a closed airway."), QObject::tr("PP"), QObject::tr("events/hr"), DEFAULT, QColor("dark red")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_LeakFlag = 0x100a, DATA, SESSION, "LeakFlag", QObject::tr("Large Leak"), QObject::tr("A large mask leak affecting machine performance."), QObject::tr("LL"), QObject::tr("events/hr"), DEFAULT, QColor("dark blue")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_NRI = 0x100b, DATA, SESSION, "NRI", QObject::tr("Non Responding Event"), QObject::tr("A type of respiratory event that won't respond to a pressure increase."), QObject::tr("NR"), QObject::tr("events/hr"), DEFAULT, QColor("orange")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_ExP = 0x100c, DATA, SESSION, "ExP", QObject::tr("Expiratory Puff"), QObject::tr("Intellipap event where you breathe out your mouth."), QObject::tr("EP"), QObject::tr("events/hr"), DEFAULT, QColor("dark magenta")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_UserFlag1 = 0x101e, DATA, SESSION, "UserFlag1", QObject::tr("User Flag #1"), QObject::tr("A user definable event detected by SleepyHead's flow waveform processor."), QObject::tr("UF1"), QObject::tr("events/hr"), DEFAULT, QColor("dark cyan")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_UserFlag2 = 0x101f, DATA, SESSION, "UserFlag2", QObject::tr("User Flag #2"), QObject::tr("A user definable event detected by SleepyHead's flow waveform processor."), QObject::tr("UF2"), QObject::tr("events/hr"), DEFAULT, QColor("dark blue")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_UserFlag3 = 0x1024, DATA, SESSION, "UserFlag3", QObject::tr("User Flag #3"), QObject::tr("A user definable event detected by SleepyHead's flow waveform processor."), QObject::tr("UF3"), QObject::tr("events/hr"), DEFAULT, QColor("dark grey")));
+
+//
+//
+//
+//
+//
+ schema::channel.add(GRP_OXI,new Channel(OXI_Pulse = 0x1800, DATA, SESSION, "Pulse", QObject::tr("Pulse Rate"), QObject::tr("Heart rate in beats per minute"), QObject::tr("Pulse Rate"), QObject::tr("%"), DEFAULT, QColor("red")));
+ schema::channel.add(GRP_OXI,new Channel(OXI_SPO2 = 0x1801, DATA, SESSION, "SPO2", QObject::tr("SpO2 %"), QObject::tr("Blood-oxygen saturation percentage"), QObject::tr("SpO2"), QObject::tr("bpm"), DEFAULT, QColor("blue")));
+ schema::channel.add(GRP_OXI,new Channel(OXI_Plethy = 0x1802, DATA, SESSION, "Plethy", QObject::tr("Plethysomogram"), QObject::tr("An optical Photo-plethysomogram showing heart rhythm"), QObject::tr("Plethy"), QObject::tr("hz"), DEFAULT, QColor("#404040")));
+ schema::channel.add(GRP_OXI,new Channel(OXI_PulseChange = 0x1803, DATA, SESSION, "PulseChange", QObject::tr("Pulse Change"), QObject::tr("A sudden (user definable) change in heart rate"), QObject::tr("PC"), QObject::tr("events/hr"), DEFAULT, QColor("light grey")));
+ schema::channel.add(GRP_OXI,new Channel(OXI_SPO2Drop = 0x1804, DATA, SESSION, "SPO2Drop", QObject::tr("SpO2 Drop"), QObject::tr("A sudden (user definable) drop in blood oxygen saturation"), QObject::tr("SD"), QObject::tr("events/hr"), DEFAULT, QColor("light blue")));
+
+//
+//
+//
+//
+//
+//
+//
+//
+//
+
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_FlowRate = 0x1100, DATA, SESSION, "FlowRate", QObject::tr("Flow Rate"), QObject::tr("Breathing flow rate waveform"), QObject::tr("Flow Rate"), QObject::tr("L/min"), DEFAULT, QColor("black")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_MaskPressure = 0x1101, DATA, SESSION, "MaskPressure", QObject::tr("Mask Pressure"), QObject::tr("Mask Pressure"), QObject::tr("Mask Pressure"), QObject::tr("cmH2O"), DEFAULT, QColor("black")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_MaskPressureHi = 0x1102, DATA, SESSION, "MaskPressureHi", QObject::tr("Mask Pressure"), QObject::tr("Mask Pressure (High resolution)"), QObject::tr("Mask Pressure"), QObject::tr("cmH2O"), DEFAULT, QColor("black"),0x1101)); // linked to CPAP_MaskPressure
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_TidalVolume = 0x1103, DATA, SESSION, "TidalVolume", QObject::tr("Tidal Volume"), QObject::tr("Amount of air displaced per breath"), QObject::tr("Tidal Volume"), QObject::tr("L/min"), DEFAULT, QColor("magenta")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_Snore = 0x1104, DATA, SESSION, "Snore", QObject::tr("Snore"), QObject::tr("Graph displaying snore volume"), QObject::tr("Snore"), QObject::tr("??"), DEFAULT, QColor("grey")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_MinuteVent = 0x1105, DATA, SESSION, "MinuteVent", QObject::tr("Minute Ventilation"), QObject::tr("Amount of air displaced per minute"), QObject::tr("Minute Vent."), QObject::tr("L/min"), DEFAULT, QColor("dark cyan")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_RespRate = 0x1106, DATA, SESSION, "RespRate", QObject::tr("Respiratory Rate"), QObject::tr("Rate of breaths per minute"), QObject::tr("Resp. Rate"), QObject::tr("Bpm"), DEFAULT, QColor("dark magenta")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_PTB = 0x1107, DATA, SESSION, "PTB", QObject::tr("Patient Triggered Breaths"), QObject::tr("Percentage of breaths triggered by patient"), QObject::tr("Pat. Trig. Breaths"), QObject::tr("%"), DEFAULT, QColor("dark grey")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_Leak = 0x1108, DATA, SESSION, "Leak", QObject::tr("Leak Rate"), QObject::tr("Rate of detected mask leakage"), QObject::tr("Leak Rate"), QObject::tr("L/min"), DEFAULT, QColor("dark green")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_IE = 0x1109, DATA, SESSION, "IE", QObject::tr("I:E Ratio"), QObject::tr("Ratio between Inspiratory and Expiratory time"),QObject::tr("I:E Ratio"), QObject::tr("ratio"), DEFAULT, QColor("dark red")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_Te = 0x110A, DATA, SESSION, "Te", QObject::tr("Expiratory Time"), QObject::tr("Time taken to breathe out"), QObject::tr("Exp. Time"), QObject::tr("seconds"), DEFAULT, QColor("dark green")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_Ti = 0x110B, DATA, SESSION, "Ti", QObject::tr("Inspiratory Time"), QObject::tr("Time taken to breathe in"), QObject::tr("Insp. Time"), QObject::tr("seconds"), DEFAULT, QColor("dark blue")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_RespEvent = 0x1112, DATA, SESSION, "RespEvent", QObject::tr("Respiratory Event"), QObject::tr("A ResMed data source showing Respiratory Events"), QObject::tr("Resp. Event"), QObject::tr("events"), DEFAULT, QColor("black")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_FLG = 0x1113, DATA, SESSION, "FLG", QObject::tr("Flow Limitation"), QObject::tr("Graph showing severity of flow limitations"), QObject::tr("Flow Limit."), QObject::tr("0-1"), DEFAULT, QColor("dark gray")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_TgMV = 0x1114, DATA, SESSION, "TgMV", QObject::tr("Target Minute Ventilation"), QObject::tr("Target Minute Ventilation?"), QObject::tr("Target Vent."), QObject::tr("??"), DEFAULT, QColor("dark cyan")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_MaxLeak = 0x1115, DATA, SESSION, "MaxLeak", QObject::tr("Maximum Leak"), QObject::tr("The maximum rate of mask leakage"), QObject::tr("Max Leaks"), QObject::tr("L/min"), DEFAULT, QColor("dark red")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_AHI = 0x1116, DATA, SESSION, "AHI", QObject::tr("Apnea Hypopnea Index"), QObject::tr("Graph showing running AHI for the past hour"), QObject::tr("AHI"), QObject::tr("events/hour"), DEFAULT, QColor("dark red")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_LeakTotal = 0x1117, DATA, SESSION, "LeakTotal", QObject::tr("Total Leak Rate"), QObject::tr("Detected mask leakage including natural Mask leakages"), QObject::tr("Total Leaks"), QObject::tr("L/min"), DEFAULT, QColor("dark green")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_LeakMedian = 0x1118, DATA, SESSION, "LeakMedian", QObject::tr("Median Leak Rate"), QObject::tr("Median rate of detected mask leakage"), QObject::tr("Median Leaks"), QObject::tr("L/min"), DEFAULT, QColor("dark green")));
+ schema::channel.add(GRP_CPAP,new Channel(CPAP_RDI = 0x1119, DATA, SESSION, "RDI", QObject::tr("Respiratory Disturbance Index"), QObject::tr("Graph showing running RDI for the past hour"), QObject::tr("RDI"), QObject::tr("events/hour"), DEFAULT, QColor("dark red")));
+
+
NoChannel=0;
- CPAP_IPAP=schema::channel["IPAP"].id();
- CPAP_IPAPLo=schema::channel["IPAPLo"].id();
- CPAP_IPAPHi=schema::channel["IPAPHi"].id();
- CPAP_EPAP=schema::channel["EPAP"].id();
- CPAP_Pressure=schema::channel["Pressure"].id();
- CPAP_PS=schema::channel["PS"].id();
- CPAP_PSMin=schema::channel["PSMin"].id();
- CPAP_PSMax=schema::channel["PSMax"].id();
+// CPAP_IPAP=schema::channel["IPAP"].id();
+// CPAP_IPAPLo=schema::channel["IPAPLo"].id();
+// CPAP_IPAPHi=schema::channel["IPAPHi"].id();
+// CPAP_EPAP=schema::channel["EPAP"].id();
+// CPAP_Pressure=schema::channel["Pressure"].id();
+// CPAP_PS=schema::channel["PS"].id();
+// CPAP_PSMin=schema::channel["PSMin"].id();
+// CPAP_PSMax=schema::channel["PSMax"].id();
CPAP_Mode=schema::channel["PAPMode"].id();
CPAP_BrokenSummary=schema::channel["BrokenSummary"].id();
CPAP_BrokenWaveform=schema::channel["BrokenWaveform"].id();
- CPAP_PressureMin=schema::channel["PressureMin"].id();
- CPAP_PressureMax=schema::channel["PressureMax"].id();
- CPAP_RampTime=schema::channel["RampTime"].id();
- CPAP_RampPressure=schema::channel["RampPressure"].id();
- CPAP_Obstructive=schema::channel["Obstructive"].id();
- CPAP_Hypopnea=schema::channel["Hypopnea"].id();
- CPAP_ClearAirway=schema::channel["ClearAirway"].id();
- CPAP_Apnea=schema::channel["Apnea"].id();
- CPAP_CSR=schema::channel["CSR"].id();
- CPAP_LeakFlag=schema::channel["LeakFlag"].id();
- CPAP_ExP=schema::channel["ExP"].id();
- CPAP_NRI=schema::channel["NRI"].id();
- CPAP_VSnore=schema::channel["VSnore"].id();
- CPAP_VSnore2=schema::channel["VSnore2"].id();
- CPAP_RERA=schema::channel["RERA"].id();
- CPAP_PressurePulse=schema::channel["PressurePulse"].id();
- CPAP_FlowLimit=schema::channel["FlowLimit"].id();
- CPAP_FlowRate=schema::channel["FlowRate"].id();
- CPAP_MaskPressure=schema::channel["MaskPressure"].id();
- CPAP_MaskPressureHi=schema::channel["MaskPressureHi"].id();
- CPAP_RespEvent=schema::channel["RespEvent"].id();
- CPAP_Snore=schema::channel["Snore"].id();
- CPAP_MinuteVent=schema::channel["MinuteVent"].id();
- CPAP_RespRate=schema::channel["RespRate"].id();
- CPAP_TidalVolume=schema::channel["TidalVolume"].id();
- CPAP_PTB=schema::channel["PTB"].id();
- CPAP_Leak=schema::channel["Leak"].id();
- CPAP_LeakMedian=schema::channel["LeakMedian"].id();
- CPAP_LeakTotal=schema::channel["LeakTotal"].id();
- CPAP_MaxLeak=schema::channel["MaxLeak"].id();
- CPAP_FLG=schema::channel["FLG"].id();
- CPAP_IE=schema::channel["IE"].id();
- CPAP_Te=schema::channel["Te"].id();
- CPAP_Ti=schema::channel["Ti"].id();
- CPAP_TgMV=schema::channel["TgMV"].id();
+// CPAP_PressureMin=schema::channel["PressureMin"].id();
+// CPAP_PressureMax=schema::channel["PressureMax"].id();
+// CPAP_RampTime=schema::channel["RampTime"].id();
+// CPAP_RampPressure=schema::channel["RampPressure"].id();
+// CPAP_Obstructive=schema::channel["Obstructive"].id();
+// CPAP_Hypopnea=schema::channel["Hypopnea"].id();
+// CPAP_ClearAirway=schema::channel["ClearAirway"].id();
+// CPAP_Apnea=schema::channel["Apnea"].id();
+// CPAP_CSR=schema::channel["CSR"].id();
+// CPAP_LeakFlag=schema::channel["LeakFlag"].id();
+// CPAP_ExP=schema::channel["ExP"].id();
+// CPAP_NRI=schema::channel["NRI"].id();
+// CPAP_VSnore=schema::channel["VSnore"].id();
+// CPAP_VSnore2=schema::channel["VSnore2"].id();
+// CPAP_RERA=schema::channel["RERA"].id();
+// CPAP_PressurePulse=schema::channel["PressurePulse"].id();
+// CPAP_FlowLimit=schema::channel["FlowLimit"].id();
+// CPAP_FlowRate=schema::channel["FlowRate"].id();
+// CPAP_MaskPressure=schema::channel["MaskPressure"].id();
+// CPAP_MaskPressureHi=schema::channel["MaskPressureHi"].id();
+// CPAP_RespEvent=schema::channel["RespEvent"].id();
+// CPAP_Snore=schema::channel["Snore"].id();
+// CPAP_MinuteVent=schema::channel["MinuteVent"].id();
+// CPAP_RespRate=schema::channel["RespRate"].id();
+// CPAP_TidalVolume=schema::channel["TidalVolume"].id();
+// CPAP_PTB=schema::channel["PTB"].id();
+// CPAP_Leak=schema::channel["Leak"].id();
+// CPAP_LeakMedian=schema::channel["LeakMedian"].id();
+// CPAP_LeakTotal=schema::channel["LeakTotal"].id();
+// CPAP_MaxLeak=schema::channel["MaxLeak"].id();
+// CPAP_FLG=schema::channel["FLG"].id();
+// CPAP_IE=schema::channel["IE"].id();
+// CPAP_Te=schema::channel["Te"].id();
+// CPAP_Ti=schema::channel["Ti"].id();
+// CPAP_TgMV=schema::channel["TgMV"].id();
CPAP_Test1=schema::channel["TestChan1"].id();
CPAP_Test2=schema::channel["TestChan2"].id();
@@ -116,9 +240,9 @@ void init()
CPAP_PresReliefMode=schema::channel["PresRelMode"].id();
CPAP_PresReliefType=schema::channel["PresRelType"].id();
- CPAP_UserFlag1=schema::channel["UserFlag1"].id();
- CPAP_UserFlag2=schema::channel["UserFlag2"].id();
- CPAP_UserFlag3=schema::channel["UserFlag3"].id();
+// CPAP_UserFlag1=schema::channel["UserFlag1"].id();
+// CPAP_UserFlag2=schema::channel["UserFlag2"].id();
+// CPAP_UserFlag3=schema::channel["UserFlag3"].id();
RMS9_E01=schema::channel["RMS9_E01"].id();
RMS9_E02=schema::channel["RMS9_E02"].id();
RMS9_EPR=schema::channel["EPR"].id();
@@ -148,13 +272,13 @@ void init()
PRS1_ShowAHI=schema::channel["ShowAHI"].id();
INTELLIPAP_Unknown1=schema::channel["IntUnk1"].id();
INTELLIPAP_Unknown2=schema::channel["IntUnk2"].id();
- OXI_Pulse=schema::channel["Pulse"].id();
- OXI_SPO2=schema::channel["SPO2"].id();
- OXI_PulseChange=schema::channel["PulseChange"].id();
- OXI_SPO2Drop=schema::channel["SPO2Drop"].id();
- OXI_Plethy=schema::channel["Plethy"].id();
- CPAP_AHI=schema::channel["AHI"].id();
- CPAP_RDI=schema::channel["RDI"].id();
+// OXI_Pulse=schema::channel["Pulse"].id();
+// OXI_SPO2=schema::channel["SPO2"].id();
+// OXI_PulseChange=schema::channel["PulseChange"].id();
+// OXI_SPO2Drop=schema::channel["SPO2Drop"].id();
+// OXI_Plethy=schema::channel["Plethy"].id();
+// CPAP_AHI=schema::channel["AHI"].id();
+// CPAP_RDI=schema::channel["RDI"].id();
Journal_Notes=schema::channel["Journal"].id();
Journal_Weight=schema::channel["Weight"].id();
Journal_BMI=schema::channel["BMI"].id();
@@ -174,13 +298,14 @@ void init()
ZEO_TimeToZ=schema::channel["TimeToZ"].id();
}
-Channel::Channel(int id, ChanType type, ScopeType scope, QString name, QString description, QString label, QString unit, DataType datatype, QColor color, int link):
+Channel::Channel(int id, ChanType type, ScopeType scope, QString code, QString fullname, QString description, QString label, QString unit, DataType datatype, QColor color, int link):
m_id(id),
m_type(type),
m_scope(scope),
- m_name(name),
- m_description(description),
+ m_code(code),
+ m_fullname(fullname),
m_label(label),
+ m_description(description),
m_unit(unit),
m_datatype(datatype),
m_defaultcolor(color),
@@ -333,7 +458,7 @@ bool ChannelList::Load(QString filename)
qWarning() << "Schema already contains name" << name << "in" << filename <<"line" << line;
continue;
}
- chan=new Channel(id,type,scope,name,details,label,unit,datatype,color,linkid);
+ chan=new Channel(id,type,scope,name,name,details,label,unit,datatype,color,linkid);
channels[id]=chan;
names[name]=chan;
//qDebug() << "Channel" << id << name << label;
@@ -369,6 +494,32 @@ bool ChannelList::Load(QString filename)
return true;
}
+
+void ChannelList::add(QString group,Channel * chan)
+{
+ Q_ASSERT(chan!=NULL);
+ if (channels.contains(chan->id())) {
+ qWarning() << "Channels already contains id" << chan->id() << chan->code();
+ Q_ASSERT(false);
+ return;
+ }
+ if (names.contains(chan->code())) {
+ qWarning() << "Channels already contains name" << chan->id() << chan->code();
+ Q_ASSERT(false);
+ return;
+ }
+ channels[chan->id()]=chan;
+ names[chan->code()]=chan;
+ groups[group][chan->code()]=chan;
+ if (channels.contains(chan->linkid())) {
+ Channel *it=channels[chan->linkid()];
+ it->m_links.push_back(chan);
+ //int i=0;
+ } else {
+ qWarning() << "Linked channel must be defined first for" << chan->code();
+ }
+}
+
bool ChannelList::Save(QString filename)
{
Q_UNUSED(filename)
diff --git a/sleepyhead/SleepLib/schema.h b/sleepyhead/SleepLib/schema.h
index 62dbfea3..ac56fc0d 100644
--- a/sleepyhead/SleepLib/schema.h
+++ b/sleepyhead/SleepLib/schema.h
@@ -48,16 +48,18 @@ class Channel
{
public:
Channel() { m_id=0; }
- Channel(int id, ChanType type, ScopeType scope, QString name, QString description, QString label, QString unit,DataType datatype=DEFAULT, QColor=Qt::black, int link=0);
+ Channel(int id, ChanType type, ScopeType scope, QString code, QString fullname, QString description, QString label, QString unit,DataType datatype=DEFAULT, QColor=Qt::black, int link=0);
void addColor(Function f, QColor color) { m_colors[f]=color; }
void addOption(int i, QString option) { m_options[i]=option; }
const int & id() { return m_id; }
const ChanType & type() { return m_type; }
- const QString & name() { return m_name; }
+ const QString & code() { return m_code; }
+ const QString & fullname() { return m_fullname; }
const QString & description() { return m_description; }
const QString & label() { return m_label; }
const QString & units() { return m_unit; }
+ const int linkid() { return m_link; }
void setLabel(QString label) { m_label=label; }
void setUnit(QString unit) { m_unit=unit; }
@@ -77,7 +79,9 @@ protected:
int m_id;
ChanType m_type;
ScopeType m_scope;
- QString m_name;
+ QString m_code; // Untranslatable
+
+ QString m_fullname; // Translatable Name
QString m_description;
QString m_label;
QString m_unit;
@@ -102,6 +106,8 @@ public:
//! \brief Stores Channel list to XML file specified by filename
bool Save(QString filename);
+ void add(QString group,Channel * chan);
+
//! \brief Looks up Channel in this List with the index idx, returns EmptyChannel if not found
Channel & operator[](ChannelID idx) {
if (channels.contains(idx))
diff --git a/sleepyhead/daily.cpp b/sleepyhead/daily.cpp
index 0930663e..7fa9236c 100644
--- a/sleepyhead/daily.cpp
+++ b/sleepyhead/daily.cpp
@@ -119,35 +119,35 @@ Daily::Daily(QWidget *parent,gGraphView * shared)
int default_height=PROFILE.appearance->graphHeight();
SF=new gGraph(GraphView,STR_TR_EventFlags,STR_TR_EventFlags,default_height);
- FRW=new gGraph(GraphView,STR_TR_FlowRate,schema::channel[CPAP_FlowRate].description()+"\n("+schema::channel[CPAP_FlowRate].units()+")",default_height);
+ FRW=new gGraph(GraphView,STR_TR_FlowRate, schema::channel[CPAP_FlowRate].fullname()+"\n"+schema::channel[CPAP_FlowRate].description()+"\n("+schema::channel[CPAP_FlowRate].units()+")",default_height);
if (PROFILE.general->calculateRDI()) {
- AHI=new gGraph(GraphView,STR_TR_RDI,schema::channel[CPAP_RDI].description()+"\n("+schema::channel[CPAP_RDI].units()+")",default_height);
- } else AHI=new gGraph(GraphView,STR_TR_AHI,schema::channel[CPAP_AHI].description()+"\n("+schema::channel[CPAP_AHI].units()+")",default_height);
+ AHI=new gGraph(GraphView,STR_TR_RDI, schema::channel[CPAP_RDI].fullname()+"\n"+schema::channel[CPAP_RDI].description()+"\n("+schema::channel[CPAP_RDI].units()+")",default_height);
+ } else AHI=new gGraph(GraphView,STR_TR_AHI,schema::channel[CPAP_AHI].fullname()+"\n"+schema::channel[CPAP_AHI].description()+"\n("+schema::channel[CPAP_AHI].units()+")",default_height);
- MP=new gGraph(GraphView,STR_TR_MaskPressure,schema::channel[CPAP_MaskPressure].description()+"\n("+schema::channel[CPAP_MaskPressure].units()+")",default_height);
- PRD=new gGraph(GraphView,STR_TR_Pressure,schema::channel[CPAP_Pressure].description()+"\n("+schema::channel[CPAP_Pressure].units()+")",default_height);
- LEAK=new gGraph(GraphView,STR_TR_Leak,schema::channel[CPAP_Leak].description()+"\n("+schema::channel[CPAP_Leak].units()+")",default_height);
- SNORE=new gGraph(GraphView,STR_TR_Snore,schema::channel[CPAP_Snore].description()+"\n("+schema::channel[CPAP_Snore].units()+")",default_height);
- RR=new gGraph(GraphView,STR_TR_RespRate,schema::channel[CPAP_RespRate].description()+"\n("+schema::channel[CPAP_RespRate].units()+")",default_height);
- TV=new gGraph(GraphView,STR_TR_TidalVolume,schema::channel[CPAP_TidalVolume].description()+"\n("+schema::channel[CPAP_TidalVolume].units()+")",default_height);
- MV=new gGraph(GraphView,STR_TR_MinuteVent,schema::channel[CPAP_MinuteVent].description()+"\n("+schema::channel[CPAP_MinuteVent].units()+")",default_height);
- //TgMV=new gGraph(GraphView,STR_TR_TgtMinVent,schema::channel[CPAP_TgMV].description()+"\n("+schema::channel[CPAP_TgMV].units()+")",default_height);
- FLG=new gGraph(GraphView,STR_TR_FlowLimit,schema::channel[CPAP_FLG].description()+"\n("+schema::channel[CPAP_FLG].units()+")",default_height);
- PTB=new gGraph(GraphView,STR_TR_PatTrigBreath,schema::channel[CPAP_PTB].description()+"\n("+schema::channel[CPAP_PTB].units()+")",default_height);
- RE=new gGraph(GraphView,STR_TR_RespEvent,schema::channel[CPAP_RespEvent].description()+"\n("+schema::channel[CPAP_RespEvent].units()+")",default_height);
- TI=new gGraph(GraphView,STR_TR_InspTime,schema::channel[CPAP_Ti].description()+"\n("+schema::channel[CPAP_Ti].units()+")",default_height);
- TE=new gGraph(GraphView,STR_TR_ExpTime,schema::channel[CPAP_Te].description()+"\n("+schema::channel[CPAP_Te].units()+")",default_height);
- IE=new gGraph(GraphView,STR_TR_IE,schema::channel[CPAP_IE].description()+"\n("+schema::channel[CPAP_IE].units()+")",default_height);
+ MP=new gGraph(GraphView,schema::channel[CPAP_MaskPressure].label(), schema::channel[CPAP_MaskPressure].fullname()+"\n"+schema::channel[CPAP_MaskPressure].description()+"\n("+schema::channel[CPAP_MaskPressure].units()+")",default_height);
+ PRD=new gGraph(GraphView,schema::channel[CPAP_Pressure].label(), schema::channel[CPAP_Pressure].fullname()+"\n"+schema::channel[CPAP_Pressure].description()+"\n("+schema::channel[CPAP_Pressure].units()+")",default_height);
+ LEAK=new gGraph(GraphView,STR_TR_Leak, schema::channel[CPAP_Leak].fullname()+"\n"+schema::channel[CPAP_Leak].description()+"\n("+schema::channel[CPAP_Leak].units()+")",default_height);
+ SNORE=new gGraph(GraphView,STR_TR_Snore, schema::channel[CPAP_Snore].fullname()+"\n"+schema::channel[CPAP_Snore].description()+"\n("+schema::channel[CPAP_Snore].units()+")",default_height);
+ RR=new gGraph(GraphView,STR_TR_RespRate, schema::channel[CPAP_RespRate].fullname()+"\n"+schema::channel[CPAP_RespRate].description()+"\n("+schema::channel[CPAP_RespRate].units()+")",default_height);
+ TV=new gGraph(GraphView,STR_TR_TidalVolume, schema::channel[CPAP_TidalVolume].fullname()+"\n"+schema::channel[CPAP_TidalVolume].description()+"\n("+schema::channel[CPAP_TidalVolume].units()+")",default_height);
+ MV=new gGraph(GraphView,STR_TR_MinuteVent, schema::channel[CPAP_MinuteVent].fullname()+"\n"+schema::channel[CPAP_MinuteVent].description()+"\n("+schema::channel[CPAP_MinuteVent].units()+")",default_height);
+ //TgMV=new gGraph(GraphView,STR_TR_TgtMinVent, schema::channel[CPAP_TgMV].fullname()+"\n"+schema::channel[CPAP_TgMV].description()+"\n("+schema::channel[CPAP_TgMV].units()+")",default_height);
+ FLG=new gGraph(GraphView,STR_TR_FlowLimit, schema::channel[CPAP_FLG].fullname()+"\n"+schema::channel[CPAP_FLG].description()+"\n("+schema::channel[CPAP_FLG].units()+")",default_height);
+ PTB=new gGraph(GraphView,STR_TR_PatTrigBreath, schema::channel[CPAP_PTB].fullname()+"\n"+schema::channel[CPAP_PTB].description()+"\n("+schema::channel[CPAP_PTB].units()+")",default_height);
+ RE=new gGraph(GraphView,STR_TR_RespEvent, schema::channel[CPAP_RespEvent].fullname()+"\n"+schema::channel[CPAP_RespEvent].description()+"\n("+schema::channel[CPAP_RespEvent].units()+")",default_height);
+ TI=new gGraph(GraphView,STR_TR_InspTime, schema::channel[CPAP_Ti].fullname()+"\n"+schema::channel[CPAP_Ti].description()+"\n("+schema::channel[CPAP_Ti].units()+")",default_height);
+ TE=new gGraph(GraphView,STR_TR_ExpTime, schema::channel[CPAP_Te].fullname()+"\n"+schema::channel[CPAP_Te].description()+"\n("+schema::channel[CPAP_Te].units()+")",default_height);
+ IE=new gGraph(GraphView,schema::channel[CPAP_IE].label(), schema::channel[CPAP_IE].fullname()+"\n"+schema::channel[CPAP_IE].description()+"\n("+schema::channel[CPAP_IE].units()+")",default_height);
- STAGE=new gGraph(GraphView,STR_TR_SleepStage,schema::channel[ZEO_SleepStage].description()+"\n("+schema::channel[ZEO_SleepStage].units()+")",default_height);
+ STAGE=new gGraph(GraphView,STR_TR_SleepStage, schema::channel[ZEO_SleepStage].fullname()+"\n"+schema::channel[ZEO_SleepStage].description()+"\n("+schema::channel[ZEO_SleepStage].units()+")",default_height);
int oxigrp=PROFILE.ExistsAndTrue("SyncOximetry") ? 0 : 1;
- PULSE=new gGraph(GraphView,STR_TR_PulseRate,schema::channel[OXI_Pulse].description()+"\n("+schema::channel[OXI_Pulse].units()+")",default_height,oxigrp);
- SPO2=new gGraph(GraphView,STR_TR_SpO2,schema::channel[OXI_SPO2].description()+"\n("+schema::channel[OXI_SPO2].units()+")",default_height,oxigrp);
- INTPULSE=new gGraph(GraphView,tr("Int. Pulse"),schema::channel[OXI_Pulse].description()+"\n("+schema::channel[OXI_Pulse].units()+")",default_height,oxigrp);
- INTSPO2=new gGraph(GraphView,tr("Int. SpO2"),schema::channel[OXI_SPO2].description()+"\n("+schema::channel[OXI_SPO2].units()+")",default_height,oxigrp);
- PLETHY=new gGraph(GraphView,STR_TR_Plethy,schema::channel[OXI_Plethy].description()+"\n("+schema::channel[OXI_Plethy].units()+")",default_height,oxigrp);
+ PULSE=new gGraph(GraphView,STR_TR_PulseRate, schema::channel[OXI_Pulse].fullname()+"\n"+schema::channel[OXI_Pulse].description()+"\n("+schema::channel[OXI_Pulse].units()+")",default_height,oxigrp);
+ SPO2=new gGraph(GraphView,STR_TR_SpO2, schema::channel[OXI_SPO2].fullname()+"\n"+schema::channel[OXI_SPO2].description()+"\n("+schema::channel[OXI_SPO2].units()+")",default_height,oxigrp);
+ INTPULSE=new gGraph(GraphView,tr("Int. Pulse"), schema::channel[OXI_Pulse].fullname()+"\n"+schema::channel[OXI_Pulse].description()+"\n("+schema::channel[OXI_Pulse].units()+")",default_height,oxigrp);
+ INTSPO2=new gGraph(GraphView,tr("Int. SpO2"), schema::channel[OXI_SPO2].fullname()+"\n"+schema::channel[OXI_SPO2].description()+"\n("+schema::channel[OXI_SPO2].units()+")",default_height,oxigrp);
+ PLETHY=new gGraph(GraphView,STR_TR_Plethy, schema::channel[OXI_Plethy].fullname()+"\n"+schema::channel[OXI_Plethy].description()+"\n("+schema::channel[OXI_Plethy].units()+")",default_height,oxigrp);
// Event Pie Chart (for snapshot purposes)
// TODO: Convert snapGV to generic for snapshotting multiple graphs (like reports does)
@@ -452,7 +452,7 @@ void Daily::Link_clicked(const QUrl &url)
}
return;
} else if (code=="event") {
- QList list=ui->treeWidget->findItems(schema::channel[sid].description(),Qt::MatchContains);
+ QList list=ui->treeWidget->findItems(schema::channel[sid].fullname(),Qt::MatchContains);
if (list.size()>0) {
ui->treeWidget->collapseAll();
ui->treeWidget->expandItem(list.at(0));
@@ -460,7 +460,7 @@ void Daily::Link_clicked(const QUrl &url)
ui->treeWidget->setCurrentItem(wi);
ui->tabWidget->setCurrentIndex(1);
} else {
- mainwin->Notify(tr("No %1 events are recorded this day").arg(schema::channel[sid].description()),"",1500);
+ mainwin->Notify(tr("No %1 events are recorded this day").arg(schema::channel[sid].fullname()),"",1500);
}
} else if (code=="graph") {
qDebug() << "Select graph " << data;
@@ -551,7 +551,7 @@ void Daily::UpdateEventsTree(QTreeWidget *tree,Day *day)
int cnt=day->count(code);
if (!cnt) continue; // If no events than don't bother showing..
total_events+=cnt;
- QString st=schema::channel[code].description();
+ QString st=schema::channel[code].fullname();
if (st.isEmpty()) {
st=QString("Fixme %1").arg(code);
}
@@ -1199,25 +1199,24 @@ void Daily::Load(QDate date)
struct ChannelInfo {
ChannelID id;
- QString name;
QColor color;
QColor color2;
EventDataType value;
};
ChannelInfo chans[]={
- { CPAP_Hypopnea, tr("Hypopnea"), COLOR_Hypopnea, Qt::white, hi=(cpap->count(CPAP_ExP)+cpap->count(CPAP_Hypopnea))/hours },
- { CPAP_Obstructive, tr("Obstructive Apnea"), COLOR_Obstructive, Qt::black, oai=cpap->count(CPAP_Obstructive)/hours },
- { CPAP_Apnea, tr("Unclassified Apnea"), COLOR_Apnea, Qt::black, uai=cpap->count(CPAP_Apnea)/hours },
- { CPAP_ClearAirway, tr("Clear Airway Apnea"), COLOR_ClearAirway, Qt::black, cai=cpap->count(CPAP_ClearAirway)/hours },
- { CPAP_NRI, tr("Non Responding Event"), COLOR_NRI, Qt::black, nri=cpap->count(CPAP_NRI)/hours },
- { CPAP_FlowLimit, tr("Flow Limitation"), COLOR_FlowLimit, Qt::white, fli=cpap->count(CPAP_FlowLimit)/hours },
- { CPAP_ExP, tr("Expiratory Puff"), COLOR_ExP, Qt::black, exp=cpap->count(CPAP_ExP)/hours },
- { CPAP_RERA, tr("Respiratory Effort Related Arousal"), COLOR_RERA, Qt::black, rei=cpap->count(CPAP_RERA)/hours },
- { CPAP_VSnore, tr("Vibratory Snore"), COLOR_VibratorySnore, Qt::black, vs=cpap->count(CPAP_VSnore)/cpap->hours() },
- { CPAP_VSnore2, tr("Vibratory Snore"), COLOR_VibratorySnore, Qt::black, vs2=cpap->count(CPAP_VSnore2)/cpap->hours() },
- { CPAP_LeakFlag, tr("Large Leak"), COLOR_LeakFlag, Qt::black, lki=cpap->count(CPAP_LeakFlag)/hours },
- { PRS1_10, tr("Large Leak"), COLOR_LeakFlag, Qt::black, lk2=cpap->count(PRS1_10)/hours },
- { CPAP_CSR, tr("Periodic Breathing / CSR %"), COLOR_CSR, Qt::black, csr=(100.0/cpap->hours())*(cpap->sum(CPAP_CSR)/3600.0) }
+ { CPAP_Hypopnea, COLOR_Hypopnea, Qt::white, hi=(cpap->count(CPAP_ExP)+cpap->count(CPAP_Hypopnea))/hours },
+ { CPAP_Obstructive, COLOR_Obstructive, Qt::black, oai=cpap->count(CPAP_Obstructive)/hours },
+ { CPAP_Apnea, COLOR_Apnea, Qt::black, uai=cpap->count(CPAP_Apnea)/hours },
+ { CPAP_ClearAirway, COLOR_ClearAirway, Qt::black, cai=cpap->count(CPAP_ClearAirway)/hours },
+ { CPAP_NRI, COLOR_NRI, Qt::black, nri=cpap->count(CPAP_NRI)/hours },
+ { CPAP_FlowLimit, COLOR_FlowLimit, Qt::white, fli=cpap->count(CPAP_FlowLimit)/hours },
+ { CPAP_ExP, COLOR_ExP, Qt::black, exp=cpap->count(CPAP_ExP)/hours },
+ { CPAP_RERA, COLOR_RERA, Qt::black, rei=cpap->count(CPAP_RERA)/hours },
+ { CPAP_VSnore, COLOR_VibratorySnore, Qt::black, vs=cpap->count(CPAP_VSnore)/cpap->hours() },
+ { CPAP_VSnore2, COLOR_VibratorySnore, Qt::black, vs2=cpap->count(CPAP_VSnore2)/cpap->hours() },
+ { CPAP_LeakFlag, COLOR_LeakFlag, Qt::black, lki=cpap->count(CPAP_LeakFlag)/hours },
+ { PRS1_10, COLOR_LeakFlag, Qt::black, lk2=cpap->count(PRS1_10)/hours },
+ { CPAP_CSR, COLOR_CSR, Qt::black, csr=(100.0/cpap->hours())*(cpap->sum(CPAP_CSR)/3600.0) }
};
int numchans=sizeof(chans)/sizeof(ChannelInfo);
@@ -1228,7 +1227,7 @@ void Daily::Load(QDate date)
if ((cpap->machine->GetClass()==STR_MACH_PRS1) && (chans[i].id==CPAP_VSnore))
continue;
html+=QString("%3 %4 \n")
- .arg(chans[i].color.name()).arg(chans[i].color2.name()).arg(chans[i].name).arg(chans[i].value,0,'f',2).arg(chans[i].id);
+ .arg(chans[i].color.name()).arg(chans[i].color2.name()).arg(schema::channel[chans[i].id].fullname()).arg(chans[i].value,0,'f',2).arg(chans[i].id);
// keep in case tooltips are needed
//html+=QString("%3%4 %5 \n")
diff --git a/sleepyhead/docs/channels.xml b/sleepyhead/docs/channels.xml
index 8c6a433c..9c9a9d01 100644
--- a/sleepyhead/docs/channels.xml
+++ b/sleepyhead/docs/channels.xml
@@ -8,59 +8,9 @@ Important: One id code per item, DO NOT CHANGE ID NUMBERS!!!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -111,12 +61,7 @@ Important: One id code per item, DO NOT CHANGE ID NUMBERS!!!
-
-
-
-
-
-
+
diff --git a/sleepyhead/docs/release_notes.html b/sleepyhead/docs/release_notes.html
index e1a52cfa..d0c88b8b 100644
--- a/sleepyhead/docs/release_notes.html
+++ b/sleepyhead/docs/release_notes.html
@@ -16,6 +16,11 @@ Please remember, for achieving the best sync, always start your oximeter at the
New features & bugs fixes in this Update:
+Introduced yAxis Scaling modes
+Cleaned up mouse handling underneath
+Better ResMed SD card backups
+New Profile selection screen
+Fixed inconsistency with graph legend markers
Improved CMS50 Oximetry serial importing, including support for CMS50E & F models
The foundations of loadable translations for non-English speakers
Better Fisher & Paykel ICON support
diff --git a/sleepyhead/docs/update_notes.html b/sleepyhead/docs/update_notes.html
index ffd4bfc7..e21f005f 100644
--- a/sleepyhead/docs/update_notes.html
+++ b/sleepyhead/docs/update_notes.html
@@ -6,10 +6,11 @@
Changes in this version
-Fisher & Paykel ICON improvements
-ResMed S9 Importer fixes
-Lots of crashes resolved
-Heaps more bug fixes
+Introduced yAxis Scaling modes
+Cleaned up mouse handling underneath
+Better ResMed SD card backups
+New Profile selection screen
+Fixed inconsistency with graph legend markers
Have fun!
diff --git a/sleepyhead/exportcsv.cpp b/sleepyhead/exportcsv.cpp
index cacc2c36..d0b0ee47 100644
--- a/sleepyhead/exportcsv.cpp
+++ b/sleepyhead/exportcsv.cpp
@@ -277,7 +277,7 @@ void ExportCSV::on_exportButton_clicked()
for (quint32 q=0;qcount();q++) {
data=QDateTime::fromTime_t(ev->time(q)/1000L).toString(Qt::ISODate);
data+=sep+QString::number(sess->session());
- data+=sep+schema::channel[key].name();
+ data+=sep+schema::channel[key].code();
data+=sep+QString::number(ev->data(q),'f',2);
data+=newline;
file.write(data.toLatin1());
diff --git a/sleepyhead/overview.cpp b/sleepyhead/overview.cpp
index da82b93a..2f968c96 100644
--- a/sleepyhead/overview.cpp
+++ b/sleepyhead/overview.cpp
@@ -133,7 +133,7 @@ Overview::Overview(QWidget *parent,gGraphView * shared) :
WEIGHT=createGraph(STR_TR_Weight,STR_TR_Weight,YT_Weight);
BMI=createGraph(STR_TR_BMI,tr("Body\nMass\nIndex"));
- ZOMBIE=createGraph(STR_TR_Zombie,tr("How you felt\n(0-10)"));
+ ZOMBIE=createGraph(STR_TR_Zombie,tr("How you felt\n(0-10)")); // Rename this Energy?
ahihr=new SummaryChart(tr("Events/Hr"),GT_LINE);
ahihr->addSlice(ahicode,COLOR_Blue,ST_MAX);
diff --git a/sleepyhead/preferencesdialog.cpp b/sleepyhead/preferencesdialog.cpp
index af118c29..0b9051eb 100644
--- a/sleepyhead/preferencesdialog.cpp
+++ b/sleepyhead/preferencesdialog.cpp
@@ -467,7 +467,7 @@ bool PreferencesDialog::Save()
for (QHash::iterator i=m_new_colors.begin();i!=m_new_colors.end();i++) {
schema::Channel &chan=schema::channel[i.key()];
if (!chan.isNull()) {
- qDebug() << "TODO: Change" << chan.name() << "color to" << i.value();
+ qDebug() << "TODO: Change" << chan.code() << "color to" << i.value();
chan.setDefaultColor(i.value());
}
}
diff --git a/sleepyhead/sleepyhead.pro b/sleepyhead/sleepyhead.pro
index 2f96596c..2a75c79e 100644
--- a/sleepyhead/sleepyhead.pro
+++ b/sleepyhead/sleepyhead.pro
@@ -251,8 +251,8 @@ use_bundled_libs: {
greaterThan(QT_MAJOR_VERSION,4) {
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../3rdparty/qextserialport/release/ -lQt5ExtSerialPort1
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../3rdparty/qextserialport/debug/ -lQt5ExtSerialPortd1
- else:unix:CONFIG(release, debug|release): LIBS += -lQt5ExtSerialPort1
- else:unix:CONFIG(debug, debug|release): LIBS += -lQt5ExtSerialPortd1
+ else:unix:CONFIG(release, debug|release): LIBS += -lQtExtSerialPort
+ else:unix:CONFIG(debug, debug|release): LIBS += -lQtExtSerialPortd
} else {
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../3rdparty/qextserialport/release/ -lqextserialport
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../3rdparty/qextserialport/debug/ -lqextserialport
diff --git a/sleepyhead/version.h b/sleepyhead/version.h
index 52477469..93f451f4 100644
--- a/sleepyhead/version.h
+++ b/sleepyhead/version.h
@@ -6,7 +6,7 @@
const int major_version=0;
const int minor_version=9;
const int revision_number=4;
-const int release_number=0;
+const int release_number=1;
#ifdef UNSTABLE_BUILD