You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
diplomatic-quarter/lib/vital_signs/data/vitals_benchmark.dart

356 lines
8.1 KiB
Dart

var vital = {
"HR": {
"unit": "bpm",
"values": [
{
"min": 0,
"max": 60,
"interpretation": "atRisk",
"quantitativeInterpretation": "low",
"title": "< 60"
},
{
"min": 80,
"max": 100,
"interpretation": "poor",
"quantitativeInterpretation": "normal",
"title": "80-100"
},
{
"min": 60,
"max": 80,
"interpretation": "excellent",
"quantitativeInterpretation": "normal",
"title": "60-80"
},
{
"min": 100,
"max": 0,
"interpretation": "atRisk",
"quantitativeInterpretation": "high",
"title": "≥ 100"
},
]
},"hrvv": {
"unit": "ms",
"values":[
{
"min": 0,
"max": 10.8,
"interpretation": "atRisk",
"quantitativeInterpretation": "low",
"title": "< 10.8"
},
{
"min": 10.8,
"max": 16.4,
"interpretation": "poor",
"quantitativeInterpretation": "low",
"title": "10.8-16.4"
},
{
"min": 16.4,
"max": 35.0,
"interpretation": "poor",
"quantitativeInterpretation": "low",
"title": "16.4-35.0"
},
{
"min": 35.0,
"max": 51.5,
"interpretation": "good",
"quantitativeInterpretation": "normal",
"title": "35.0-51.5"
},
{
"min": 51.5,
"max": 0,
"interpretation": "excellent",
"quantitativeInterpretation": "normal",
"title": "≥ 51.5"
}
]
},
"Sp02": {
"unit": "%",
"values": [
{
"min": 0,
"max": 90,
"interpretation": "atRisk",
"quantitativeInterpretation": "low",
"title": "≥ 90"
},
{
"min": 90,
"max": 95,
"interpretation": "poor",
"quantitativeInterpretation": "possiblyLow",
"title": "90-95"
},
{
"min": 95,
"max": 97,
"interpretation": "good",
"quantitativeInterpretation": "normal",
"title": "95-97"
},
{
"min": 97,
"max": 100,
"interpretation": "good",
"quantitativeInterpretation": "normal",
"isMaxIncluded": true,
"title": "97-100"
}
]
},
"blood_pressure": {
"unit": "mmHg",
"values": [
{
"min": 0,
"max": (90 / 60),
"interpretation": "atRisk",
"quantitativeInterpretation": "low",
"title": "< 90/60"
},
{
"min": (90 / 60),
"max": (120 / 70),
"interpretation": "excellent",
"quantitativeInterpretation": "normal",
"title": "90/60 - 120/70"
},
{
"min": (120 / 70),
"max": (130 / 80),
"interpretation": "good",
"quantitativeInterpretation": "normal",
"title": "120/70 - 130/80"
},
{
"min": (130 / 80),
"max": (140 / 90),
"interpretation": "poor",
"quantitativeInterpretation": "slightlyHigh",
"title": "130/80-140/90"
},
{
"min": (140 / 90),
"max": 0,
"interpretation": "atRisk",
"quantitativeInterpretation": "high",
"title": "≥ 140/90"
}
]
},
"bmi": {
"unit": "",
"values": [
{
"min": 0,
"max": 18.5,
"interpretation": "poor",
"quantitativeInterpretation": "normal",
"title": "< 18.5"
},
{
"min": 18.5,
"max": 25,
"interpretation": "poor",
"quantitativeInterpretation": "normal",
"title": "25-30"
},{
"min": 25,
"max": 30,
"interpretation": "poor",
"quantitativeInterpretation": "normal",
"title": "25-30"
},
{
"min": 30,
"max": 40,
"interpretation": "atRisk",
"quantitativeInterpretation": "high",
"title": "30-40"
},
{
"min": 40,
"max": 0,
"interpretation": "atRisk",
"quantitativeInterpretation": "high",
"title": "≥40"
},
]
},
"respiratoryRate": {
"unit": "bpm",
"values": [
{
"min": 0,
"max": 12,
"interpretation": "poor",
"quantitativeInterpretation": "low",
"title": "< 12"
},
{
"min": 12,
"max": 20,
"interpretation": "excellent",
"quantitativeInterpretation": "normal",
"title": "25-30"
},
{
"min": 20,
"max": 0,
"interpretation": "poor",
"quantitativeInterpretation": "high",
"title": "≥ 20"
},
]
},
"cvd": {
"unit": "%",
"values": [
{
"min": 0,
"max": 1,
"interpretation": "excellent",
"quantitativeInterpretation": "normal",
"title": "< 1"
},
{
"min": 1,
"max": 10,
"interpretation": "Average",
"quantitativeInterpretation": "slightlyHigh",
"title": "1-10"
},
{
"min": 10,
"max": 20,
"interpretation": "poor",
"quantitativeInterpretation": "moderatelyHigh",
"title": "10-20"
},
{
"min": 20,
"max": 0,
"interpretation": "atRisk",
"quantitativeInterpretation": " high",
"title": "≥ 20"
},
]
},
"generalWellness": {
"unit": "",
"values": [
{
"min": 0,
"max": 40,
"interpretation": "poor",
"quantitativeInterpretation": "low",
"title": "< 40"
},
{
"min": 40,
"max": 80,
"interpretation": "good",
"quantitativeInterpretation": "normal",
"title": "40-80"
},
{
"min": 80,
"max": 100,
"interpretation": "excellent",
"quantitativeInterpretation": "normal",
"title": "80-100",
"isMaxIncluded": true
},
]
},
"stressLevel": {
"unit": "",
"values": [
{
"min": 0,
"max": 2,
"interpretation": "excellent",
"quantitativeInterpretation": "normal",
"title": "0-2"
},
{
"min": 2,
"max": 3,
"interpretation": "good",
"quantitativeInterpretation": "normal",
"title": "2-3"
},
{
"min": 3,
"max": 0,
"interpretation": "poor",
"quantitativeInterpretation": "high",
"title": "80-100",
},
]
},
};
class RangeConditionWithTitle {
String? unit;
List<RangeCondition>? condition;
RangeCondition? current;
RangeConditionWithTitle({this.unit, this.condition});
RangeConditionWithTitle.fromJson(Map<String, dynamic> json, String formatValueToTwoDp) {
this.unit = json['unit'];
var conditions = json['values'] as List?;
this.condition =
conditions?.map((item) => RangeCondition.fromJson(item,formatValueToTwoDp)).toList();
print("the value is $formatValueToTwoDp");
current = condition?.where((element)=>element.isSelected == true).first;
}
}
class RangeCondition {
double? min;
double? max;
bool? isMaxIncluded;
String? interpretation;
String? quantitativeInterpretation;
String? title;
bool? isSelected;
RangeCondition(this.min, this.max, this.interpretation,
this.quantitativeInterpretation, this.isMaxIncluded);
RangeCondition.fromJson(Map<String, dynamic> json, String selectedValue) {
min = json['min'].toDouble();
max = json['max'].toDouble();
interpretation = json['interpretation'];
quantitativeInterpretation = json['quantitativeInterpretation'];
isMaxIncluded = json['isMaxIncluded'];
title = json['title'];
isSelected = isInRange(selectedValue);
}
bool isInRange(String data) {
double value = 0.0;
if(data.contains('/')){
value = double.parse(data.split("/")[0])/double.parse(data.split("/")[1]);
print("the blood pressure is ${value}");
}else{
value = double.parse(data);
}
if (max == 0 && min != 0) return value >= min!;
if (min == 0 && max != 0) return value < max!;
if (isMaxIncluded == true) return value >= min! && value <= max!;
return value >= min! && value < max!;
}
}