WD: Lab result values adjusted for tablet and normal devices.

pull/2/head
taha.alam 5 months ago
parent 8e98976a65
commit e441d0d6ce

@ -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<LabResultList> 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;

@ -52,17 +52,34 @@ class _VitalSignDetailsWidgetState extends State<LabResultDetailsWidget> {
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<LabResultDetailsWidget> {
child: Text(
changeValue,
style: TextStyle(
color: (changeValue.contains("-"))
? Colors.white
: Colors.black,
color: Colors.white
,
fontSize: 11,
letterSpacing: -.64,
fontWeight: FontWeight.w400),

@ -38,12 +38,17 @@ class _LaboratoryResultWidgetState extends State<LaboratoryResultWidget> {
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<LabsViewModel>(
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(

@ -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,

Loading…
Cancel
Save