From 8e98976a654b1cef786d4235eff6b76826f22093 Mon Sep 17 00:00:00 2001 From: "taha.alam" Date: Tue, 19 Aug 2025 12:12:49 +0300 Subject: [PATCH 1/3] lab result value updated --- .../viewModels/medical/labs_view_model.dart | 28 ++++++++++--------- .../medical/LabResult/newUI/LabItem.dart | 2 +- .../medical/LabResult/newUI/labWidgets.dart | 2 +- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/lib/core/viewModels/medical/labs_view_model.dart b/lib/core/viewModels/medical/labs_view_model.dart index 2fee0a41..993bca9d 100644 --- a/lib/core/viewModels/medical/labs_view_model.dart +++ b/lib/core/viewModels/medical/labs_view_model.dart @@ -123,27 +123,29 @@ class LabsViewModel extends BaseViewModel { double getPercentage(ResultFlag flag) { double percentage = 0.0; - final division = 0.2; + var division = (1/15); + switch (flag) { - case ResultFlag.N: //4 - percentage = division * 1.75; + case ResultFlag.N: + percentage = division * (7.5); break; - case ResultFlag.H: //5 - percentage = division * 2.8; + case ResultFlag.H: + percentage = division * (11); break; - case ResultFlag.L: //3 - percentage = division * .7; + case ResultFlag.L: + + percentage = division * (4); break; - case ResultFlag.CL: //2 - case ResultFlag.LCL: // - percentage = division * .07; + case ResultFlag.CL: + case ResultFlag.LCL: + percentage = division * 1.5; break; - case ResultFlag.HCH: //7 - case ResultFlag.CH: //6 - percentage = division * 3.4; + case ResultFlag.HCH: + case ResultFlag.CH: + percentage = division * 13.5; break; case ResultFlag.IRR: percentage = 0; diff --git a/lib/widgets/data_display/medical/LabResult/newUI/LabItem.dart b/lib/widgets/data_display/medical/LabResult/newUI/LabItem.dart index 3146b10e..55cd84e8 100644 --- a/lib/widgets/data_display/medical/LabResult/newUI/LabItem.dart +++ b/lib/widgets/data_display/medical/LabResult/newUI/LabItem.dart @@ -19,7 +19,7 @@ class LabItem extends StatefulWidget { } class _LabItemState extends State { - bool _isShowMoreGeneral = false; + bool _isShowMoreGeneral = true; bool showBottomSheet = false; @override diff --git a/lib/widgets/data_display/medical/LabResult/newUI/labWidgets.dart b/lib/widgets/data_display/medical/LabResult/newUI/labWidgets.dart index 2d3f67ed..911134c1 100644 --- a/lib/widgets/data_display/medical/LabResult/newUI/labWidgets.dart +++ b/lib/widgets/data_display/medical/LabResult/newUI/labWidgets.dart @@ -59,7 +59,7 @@ class CustomResultProgressBar extends StatelessWidget { return LayoutBuilder(builder: (context, constraints) { final double totalWidth = constraints.maxWidth; final double spacing = 2; - final double tooltipPosition = (totalWidth * (percentage / 100)).clamp(0, totalWidth - 50); + final double tooltipPosition = (totalWidth * (percentage )).clamp(0, totalWidth - 50); return Stack( children: [ Row( -- 2.30.2 From e441d0d6ce35822fd0fde4b35709d537b27d8f76 Mon Sep 17 00:00:00 2001 From: "taha.alam" Date: Tue, 19 Aug 2025 16:08:04 +0300 Subject: [PATCH 2/3] WD: Lab result values adjusted for tablet and normal devices. --- .../viewModels/medical/labs_view_model.dart | 19 ++++++------- .../LabResult/Lab_Result_details_wideget.dart | 28 +++++++++++++++---- .../LabResult/laboratory_result_widget.dart | 7 ++++- .../medical/LabResult/newUI/labWidgets.dart | 10 +++++-- 4 files changed, 45 insertions(+), 19 deletions(-) diff --git a/lib/core/viewModels/medical/labs_view_model.dart b/lib/core/viewModels/medical/labs_view_model.dart index 993bca9d..4c239e65 100644 --- a/lib/core/viewModels/medical/labs_view_model.dart +++ b/lib/core/viewModels/medical/labs_view_model.dart @@ -97,7 +97,7 @@ class LabsViewModel extends BaseViewModel { } } - getPatientLabResult({required PatientLabOrders patientLabOrder, required bool isVidaPlus}) async { + getPatientLabResult({required PatientLabOrders patientLabOrder, required bool isVidaPlus, bool isTablet = false}) async { setState(ViewState.Busy); await _labsService.getPatientLabResult(patientLabOrder: patientLabOrder, isVidaPlus: isVidaPlus); if (_labsService.hasError) { @@ -107,7 +107,7 @@ class LabsViewModel extends BaseViewModel { _labsService.labResultList.forEach((element) { List patientLabOrdersClinic = labResultLists.where((elementClinic) => elementClinic.filterName == element.testCode).toList(); element.percentage = - getPercentage(element.calculatedResultFlag ?? ResultFlag.N); + getPercentage(element.calculatedResultFlag?? ResultFlag.N, isTablet); if (patientLabOrdersClinic.length != 0) { labResultLists[labResultLists.indexOf(patientLabOrdersClinic[0])].patientLabResultList!.add(element); } else { @@ -121,31 +121,30 @@ class LabsViewModel extends BaseViewModel { } } - double getPercentage(ResultFlag flag) { + double getPercentage(ResultFlag flag, bool isTablet) { double percentage = 0.0; var division = (1/15); - + print("its a tablet $isTablet"); switch (flag) { case ResultFlag.N: - percentage = division * (7.5); + percentage = division * (isTablet?7:6.7); break; case ResultFlag.H: - percentage = division * (11); + percentage = division * (isTablet?11:10.7); break; case ResultFlag.L: - - percentage = division * (4); + percentage = division * (isTablet?3.5:2.5); break; case ResultFlag.CL: case ResultFlag.LCL: - percentage = division * 1.5; + percentage = division * (isTablet?0.7:.01); break; case ResultFlag.HCH: case ResultFlag.CH: - percentage = division * 13.5; + percentage = division * (isTablet?13.5:13.3); break; case ResultFlag.IRR: percentage = 0; diff --git a/lib/widgets/data_display/medical/LabResult/Lab_Result_details_wideget.dart b/lib/widgets/data_display/medical/LabResult/Lab_Result_details_wideget.dart index dd5217b8..088cf153 100644 --- a/lib/widgets/data_display/medical/LabResult/Lab_Result_details_wideget.dart +++ b/lib/widgets/data_display/medical/LabResult/Lab_Result_details_wideget.dart @@ -52,17 +52,34 @@ class _VitalSignDetailsWidgetState extends State { children: [ Utils.tableColumnValue(DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(labOrderResultList![i].verifiedOnDateTime!)), isLast: i == (labOrderResultList.length - 1), mProjectViewModel: projectViewModel), Utils.tableColumnValue(labOrderResultList[i].resultValue!, isLast: i == (labOrderResultList.length - 1), mProjectViewModel: projectViewModel), - changeResult(labOrderResultList[i].changeResult ?? '8%') + changeResult(labOrderResultList[i].changeResult ?? '', labOrderResultList[i].calculatedResultFlag??'IRR') ], ), ); return tableRow; } - Widget changeResult(String changeValue) => Padding( + + Color getColorForResultType(String type) { + switch (type) { + case "LCL": + case "HCH": + case "CH": + case "CL": + return Color(0xFFDE7676); + case "L": + case "H": + return Color(0xFFEAB157); + case "N": + return Color(0xFF09AA28); + default: + return Color(0xFF09AA28); + } + } + Widget changeResult(String changeValue, String type) => Padding( padding: const EdgeInsets.all(4.0), child: Material( - color: (changeValue.contains("-")) ? Colors.black : Color(0xffcecbcb), + color: getColorForResultType(type), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), child: Padding( @@ -71,9 +88,8 @@ class _VitalSignDetailsWidgetState extends State { child: Text( changeValue, style: TextStyle( - color: (changeValue.contains("-")) - ? Colors.white - : Colors.black, + color: Colors.white + , fontSize: 11, letterSpacing: -.64, fontWeight: FontWeight.w400), diff --git a/lib/widgets/data_display/medical/LabResult/laboratory_result_widget.dart b/lib/widgets/data_display/medical/LabResult/laboratory_result_widget.dart index bc661fab..e6b8b7ea 100644 --- a/lib/widgets/data_display/medical/LabResult/laboratory_result_widget.dart +++ b/lib/widgets/data_display/medical/LabResult/laboratory_result_widget.dart @@ -38,12 +38,17 @@ class _LaboratoryResultWidgetState extends State { labSpecialResult = widget.details ?? TranslationBase.of(context).noDataAvailable; } + bool isTablet(BuildContext context) { + final size = MediaQuery.of(context).size; + final shortestSide = size.shortestSide; + return shortestSide >= 550; + } @override Widget build(BuildContext context) { projectViewModel = Provider.of(context); return BaseView( onModelReady: (model) => - model.getPatientLabResult(isVidaPlus: Utils.isVidaPlusProject(projectViewModel, int.parse(widget.patientLabOrder!.projectID!)), patientLabOrder: widget.patientLabOrder!), + model.getPatientLabResult(isVidaPlus: Utils.isVidaPlusProject(projectViewModel, int.parse(widget.patientLabOrder!.projectID!)), patientLabOrder: widget.patientLabOrder!, isTablet: isTablet(context)), builder: (_, model, w) => NetworkBaseView( baseViewModel: model, child: Column( diff --git a/lib/widgets/data_display/medical/LabResult/newUI/labWidgets.dart b/lib/widgets/data_display/medical/LabResult/newUI/labWidgets.dart index 911134c1..4fbce744 100644 --- a/lib/widgets/data_display/medical/LabResult/newUI/labWidgets.dart +++ b/lib/widgets/data_display/medical/LabResult/newUI/labWidgets.dart @@ -59,7 +59,13 @@ class CustomResultProgressBar extends StatelessWidget { return LayoutBuilder(builder: (context, constraints) { final double totalWidth = constraints.maxWidth; final double spacing = 2; - final double tooltipPosition = (totalWidth * (percentage )).clamp(0, totalWidth - 50); + final int spacingCount = 4; // between 5 bars + final double flexWidth = totalWidth - 50; + + + final double tooltipPosition = + (flexWidth * (percentage / 100)).clamp(0, flexWidth); + return Stack( children: [ Row( @@ -117,7 +123,7 @@ class CustomResultProgressBar extends StatelessWidget { TextCloud( text: "${value}", color: getColorForResultType(type), - width: 100, + width: 75, height: 20, padding: EdgeInsets.zero, axisDirection: AxisDirection.up, -- 2.30.2 From a68da808dac776ccdd1e1f059994b79046c9721b Mon Sep 17 00:00:00 2001 From: "taha.alam" Date: Wed, 20 Aug 2025 11:09:48 +0300 Subject: [PATCH 3/3] updating the percentage if the screen dimens are changed. --- .../viewModels/medical/labs_view_model.dart | 17 +++++++++--- .../LabResult/laboratory_result_widget.dart | 26 +++++++++++++++++-- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/lib/core/viewModels/medical/labs_view_model.dart b/lib/core/viewModels/medical/labs_view_model.dart index 4c239e65..7f9faccb 100644 --- a/lib/core/viewModels/medical/labs_view_model.dart +++ b/lib/core/viewModels/medical/labs_view_model.dart @@ -121,25 +121,34 @@ class LabsViewModel extends BaseViewModel { } } + recalculatePercentage(isTablet){ + for(int i = 0;i { bool _isShowMore = true; late ProjectViewModel projectViewModel; late String? labSpecialResult; + bool isTabletScreen = false; + LabsViewModel? model; @override void initState() { super.initState(); + labSpecialResult = widget.details ?? TranslationBase.of(context).noDataAvailable; } + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + print("did change dependency is called"); + + var oldStateTablateScreenState = isTabletScreen; + isTabletScreen = isTablet(context); + if(isTabletScreen != oldStateTablateScreenState); + { + print("the screen width is changed"); + model?.recalculatePercentage(isTabletScreen); + } + + } + bool isTablet(BuildContext context) { final size = MediaQuery.of(context).size; final shortestSide = size.shortestSide; @@ -45,10 +64,13 @@ class _LaboratoryResultWidgetState extends State { } @override Widget build(BuildContext context) { + isTabletScreen = isTablet(context); projectViewModel = Provider.of(context); return BaseView( - onModelReady: (model) => - model.getPatientLabResult(isVidaPlus: Utils.isVidaPlusProject(projectViewModel, int.parse(widget.patientLabOrder!.projectID!)), patientLabOrder: widget.patientLabOrder!, isTablet: isTablet(context)), + onModelReady: (model) { + this.model = model; + model.getPatientLabResult(isVidaPlus: Utils.isVidaPlusProject(projectViewModel, int.parse(widget.patientLabOrder!.projectID!)), patientLabOrder: widget.patientLabOrder!, isTablet: isTabletScreen); + }, builder: (_, model, w) => NetworkBaseView( baseViewModel: model, child: Column( -- 2.30.2