|  |  | @ -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'; |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |