|
|
|
@ -1,4 +1,5 @@
|
|
|
|
import 'dart:core';
|
|
|
|
import 'dart:core';
|
|
|
|
|
|
|
|
import 'dart:math';
|
|
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:hmg_patient_app_new/core/app_assets.dart';
|
|
|
|
import 'package:hmg_patient_app_new/core/app_assets.dart';
|
|
|
|
@ -52,7 +53,8 @@ class LabViewModel extends ChangeNotifier {
|
|
|
|
|
|
|
|
|
|
|
|
Set<TestDetails> uniqueTests = {};
|
|
|
|
Set<TestDetails> uniqueTests = {};
|
|
|
|
|
|
|
|
|
|
|
|
double maxYForThreeDots = 0.0;
|
|
|
|
double maxY = 0.0;
|
|
|
|
|
|
|
|
double maxX = double.infinity;
|
|
|
|
|
|
|
|
|
|
|
|
LabViewModel(
|
|
|
|
LabViewModel(
|
|
|
|
{required this.labRepo,
|
|
|
|
{required this.labRepo,
|
|
|
|
@ -136,6 +138,7 @@ class LabViewModel extends ChangeNotifier {
|
|
|
|
LoaderBottomSheet.showLoader();
|
|
|
|
LoaderBottomSheet.showLoader();
|
|
|
|
mainLabResults.clear();
|
|
|
|
mainLabResults.clear();
|
|
|
|
filteredGraphValues.clear();
|
|
|
|
filteredGraphValues.clear();
|
|
|
|
|
|
|
|
maxY = double.negativeInfinity;
|
|
|
|
|
|
|
|
|
|
|
|
final result = await labRepo.getPatientLabResults(
|
|
|
|
final result = await labRepo.getPatientLabResults(
|
|
|
|
laborder,
|
|
|
|
laborder,
|
|
|
|
@ -160,16 +163,20 @@ class LabViewModel extends ChangeNotifier {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
var dateTime =
|
|
|
|
var dateTime =
|
|
|
|
DateUtil.convertStringToDate(element.verifiedOnDateTime!);
|
|
|
|
DateUtil.convertStringToDate(element.verifiedOnDateTime!);
|
|
|
|
if (double.parse(element.resultValue!) > maxYForThreeDots) {
|
|
|
|
var resultValue = double.parse(element.resultValue!);
|
|
|
|
maxYForThreeDots = double.parse(element.resultValue!);
|
|
|
|
var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag??"");
|
|
|
|
|
|
|
|
if (resultValue>maxY) {
|
|
|
|
|
|
|
|
maxY = resultValue;
|
|
|
|
|
|
|
|
maxX = maxY;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
filteredGraphValues.add(DataPoint(
|
|
|
|
filteredGraphValues.add(DataPoint(
|
|
|
|
value: transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag??""),
|
|
|
|
value: transformedValue,
|
|
|
|
actualValue:element.resultValue!,
|
|
|
|
actualValue:element.resultValue!,
|
|
|
|
label: formatDateAsMMYY(dateTime),
|
|
|
|
label: formatDateAsMMYY(dateTime),
|
|
|
|
displayTime: resultDate(dateTime),
|
|
|
|
displayTime: resultDate(dateTime),
|
|
|
|
time: DateUtil.convertStringToDate(element.verifiedOnDateTime),
|
|
|
|
time: DateUtil.convertStringToDate(element.verifiedOnDateTime),
|
|
|
|
refernceValue: element.calculatedResultFlag ?? "",
|
|
|
|
referenceValue: element.calculatedResultFlag ?? "",
|
|
|
|
|
|
|
|
|
|
|
|
));
|
|
|
|
));
|
|
|
|
counter++;
|
|
|
|
counter++;
|
|
|
|
@ -177,6 +184,7 @@ class LabViewModel extends ChangeNotifier {
|
|
|
|
});
|
|
|
|
});
|
|
|
|
LabResult recentResult = recentThree.first;
|
|
|
|
LabResult recentResult = recentThree.first;
|
|
|
|
recentResult.verifiedOn = resultDate(DateUtil.convertStringToDate(recentResult.verifiedOnDateTime!));
|
|
|
|
recentResult.verifiedOn = resultDate(DateUtil.convertStringToDate(recentResult.verifiedOnDateTime!));
|
|
|
|
|
|
|
|
// filteredGraphValues = [filteredGraphValues.first];
|
|
|
|
navigationService.push(MaterialPageRoute(
|
|
|
|
navigationService.push(MaterialPageRoute(
|
|
|
|
builder: (_) =>
|
|
|
|
builder: (_) =>
|
|
|
|
LabResultDetails(recentLabResult: recentResult)));
|
|
|
|
LabResultDetails(recentLabResult: recentResult)));
|
|
|
|
@ -228,24 +236,32 @@ class LabViewModel extends ChangeNotifier {
|
|
|
|
final normalizedValue = clampedValue / 100.0; // Normalize input to 0-1
|
|
|
|
final normalizedValue = clampedValue / 100.0; // Normalize input to 0-1
|
|
|
|
|
|
|
|
|
|
|
|
// Map the normalized value to the target range bounds
|
|
|
|
// Map the normalized value to the target range bounds
|
|
|
|
final transformedValue = rangeStart + (normalizedValue * (rangeEnd - rangeStart));
|
|
|
|
final transformedValue = rangeStart + ((normalizedValue * (rangeEnd - rangeStart)));
|
|
|
|
|
|
|
|
debugPrint("the actual value is $inputValue");
|
|
|
|
|
|
|
|
debugPrint("the flag is $flag");
|
|
|
|
|
|
|
|
debugPrint("the transformed value is $transformedValue");
|
|
|
|
return transformedValue;
|
|
|
|
return transformedValue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void getSelectedDateRange(DateTime? start, DateTime? end) {
|
|
|
|
void getSelectedDateRange(DateTime? start, DateTime? end) {
|
|
|
|
|
|
|
|
maxY = double.negativeInfinity;
|
|
|
|
|
|
|
|
|
|
|
|
if(start == null && end == null) {
|
|
|
|
if(start == null && end == null) {
|
|
|
|
print("the dates are null");
|
|
|
|
|
|
|
|
mainLabResults.forEach((element) {
|
|
|
|
mainLabResults.forEach((element) {
|
|
|
|
final time = DateUtil.convertStringToDate(element.verifiedOnDateTime!);
|
|
|
|
final time = DateUtil.convertStringToDate(element.verifiedOnDateTime!);
|
|
|
|
try{
|
|
|
|
try{
|
|
|
|
|
|
|
|
var resultValue = double.parse(element.resultValue!);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag??"");
|
|
|
|
|
|
|
|
if (resultValue > maxY) {
|
|
|
|
|
|
|
|
maxY = resultValue;
|
|
|
|
|
|
|
|
}
|
|
|
|
filteredGraphValues.add(DataPoint(
|
|
|
|
filteredGraphValues.add(DataPoint(
|
|
|
|
value: transformValueInRange(double.parse(element.resultValue!),
|
|
|
|
value: transformedValue,
|
|
|
|
element.calculatedResultFlag ?? ""),
|
|
|
|
|
|
|
|
actualValue: element.resultValue!,
|
|
|
|
actualValue: element.resultValue!,
|
|
|
|
label: formatDateAsMMYY(time),
|
|
|
|
label: formatDateAsMMYY(time),
|
|
|
|
displayTime: resultDate(time),
|
|
|
|
displayTime: resultDate(time),
|
|
|
|
time: DateUtil.convertStringToDate(element.verifiedOnDateTime),
|
|
|
|
time: DateUtil.convertStringToDate(element.verifiedOnDateTime),
|
|
|
|
refernceValue: element.calculatedResultFlag ?? "",
|
|
|
|
referenceValue: element.calculatedResultFlag ?? "",
|
|
|
|
));
|
|
|
|
));
|
|
|
|
}catch(e){
|
|
|
|
}catch(e){
|
|
|
|
|
|
|
|
|
|
|
|
@ -259,33 +275,34 @@ class LabViewModel extends ChangeNotifier {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
var dateTime =
|
|
|
|
var dateTime =
|
|
|
|
DateUtil.convertStringToDate(element.verifiedOnDateTime!);
|
|
|
|
DateUtil.convertStringToDate(element.verifiedOnDateTime!);
|
|
|
|
|
|
|
|
var resultValue = double.parse(element.resultValue!);
|
|
|
|
|
|
|
|
var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag??"");
|
|
|
|
|
|
|
|
if (resultValue > maxY) {
|
|
|
|
|
|
|
|
maxY = resultValue;
|
|
|
|
|
|
|
|
}
|
|
|
|
if (start != null && end == null) {
|
|
|
|
if (start != null && end == null) {
|
|
|
|
if (dateTime.isAtSameMomentAs(start)) {
|
|
|
|
if (dateTime.isAtSameMomentAs(start)) {
|
|
|
|
|
|
|
|
|
|
|
|
filteredGraphValues.add(DataPoint(
|
|
|
|
filteredGraphValues.add(DataPoint(
|
|
|
|
value: transformValueInRange(
|
|
|
|
value: transformedValue,
|
|
|
|
double.parse(element.resultValue!),
|
|
|
|
|
|
|
|
element.calculatedResultFlag ?? ""),
|
|
|
|
|
|
|
|
actualValue: element.resultValue!,
|
|
|
|
actualValue: element.resultValue!,
|
|
|
|
label: formatDateAsMMYY(dateTime),
|
|
|
|
label: formatDateAsMMYY(dateTime),
|
|
|
|
displayTime: resultDate(dateTime),
|
|
|
|
displayTime: resultDate(dateTime),
|
|
|
|
time:
|
|
|
|
time:
|
|
|
|
DateUtil.convertStringToDate(element.verifiedOnDateTime),
|
|
|
|
DateUtil.convertStringToDate(element.verifiedOnDateTime),
|
|
|
|
refernceValue: element.calculatedResultFlag ?? ""));
|
|
|
|
referenceValue: element.calculatedResultFlag ?? ""));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (start != null && end != null) {
|
|
|
|
} else if (start != null && end != null) {
|
|
|
|
if ((dateTime.isAfter(start)) && (dateTime.isBefore(end))) {
|
|
|
|
if ((dateTime.isAfter(start)) && (dateTime.isBefore(end))) {
|
|
|
|
|
|
|
|
|
|
|
|
filteredGraphValues.add(DataPoint(
|
|
|
|
filteredGraphValues.add(DataPoint(
|
|
|
|
value: transformValueInRange(
|
|
|
|
value: transformedValue,
|
|
|
|
double.parse(element.resultValue!),
|
|
|
|
|
|
|
|
element.calculatedResultFlag ?? ""),
|
|
|
|
|
|
|
|
actualValue: element.resultValue!,
|
|
|
|
actualValue: element.resultValue!,
|
|
|
|
label: formatDateAsMMYY(dateTime),
|
|
|
|
label: formatDateAsMMYY(dateTime),
|
|
|
|
displayTime: resultDate(dateTime),
|
|
|
|
displayTime: resultDate(dateTime),
|
|
|
|
time:
|
|
|
|
time:
|
|
|
|
DateUtil.convertStringToDate(element.verifiedOnDateTime),
|
|
|
|
DateUtil.convertStringToDate(element.verifiedOnDateTime),
|
|
|
|
refernceValue: element.calculatedResultFlag ?? ""));
|
|
|
|
referenceValue: element.calculatedResultFlag ?? ""));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (e) {}
|
|
|
|
} catch (e) {}
|
|
|
|
@ -299,8 +316,7 @@ class LabViewModel extends ChangeNotifier {
|
|
|
|
|
|
|
|
|
|
|
|
String formatDateAsMMYY(DateTime date) {
|
|
|
|
String formatDateAsMMYY(DateTime date) {
|
|
|
|
|
|
|
|
|
|
|
|
String year = date.year.toString().substring(2);
|
|
|
|
return '${months[date.month-1]}, ${date.year}';
|
|
|
|
return '${months[date.month-1]},$year';
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|