WD: lab result changes of IRR.

merge-update-with-lab-changes
taha.alam 9 months ago
parent 9047ebf723
commit 636a67b720

@ -22,12 +22,12 @@ var PACKAGES_ORDER_HISTORY = '/api/orders/items';
var PACKAGES_TAMARA_OPT = '/api/orders/paymentoptions/tamara';
// var BASE_URL = 'http://10.50.100.198:2018/';
// var BASE_URL = 'https://uat.hmgwebservices.com/';
// var BASE_URL = 'https://hmgwebservices.com/';
var BASE_URL = 'https://hmgwebservices.com/';
// var BASE_URL = 'https://orash.cloudsolutions.com.sa/';
// var BASE_URL = 'https://vidauat.cloudsolutions.com.sa/';
// var BASE_URL = 'https://vidamergeuat.cloudsolutions.com.sa/';
var BASE_URL = 'https://webservices.hmg.com/';
// var BASE_URL = 'https://webservices.hmg.com/';
// var BASE_URL = 'http://10.50.100.198:4422/';

@ -2143,7 +2143,6 @@ const Map localizedValues = {
"readMore": {"en": "Read More", "ar": "اقرأ أكثر"},
"showLess": {"en": "Show Less", "ar": "عرض أقل"},
"change": {"en": "Change", "ar": "فرق"},
"download": {"en": "Download", "ar": "تحميل"},
"referenceRange": {"en": "Reference Range", "ar": "النطاق المرجعي"},
"criticalLow": {"en": "Critical Low", "ar": "النطاق المرجعي"},
"criticalHigh": {"en": "Critical High", "ar": "حرج مرتفع"},

@ -17,7 +17,8 @@ enum ResultFlag {
CL('criticalLow'),
CH('criticalHigh'),
HCH('highCriticalHigh'),
LCL('lowCriticalLow');
LCL('lowCriticalLow'),
IRR('interpretive');
final String value;
@ -39,6 +40,8 @@ enum ResultFlag {
return ResultFlag.HCH;
case 'LCL':
return ResultFlag.LCL;
case '':
return ResultFlag.IRR;
default:
return null;
}
@ -60,6 +63,8 @@ enum ResultFlag {
return 'HCH';
case ResultFlag.LCL:
return 'LCL';
case ResultFlag.IRR:
return '';
}
}
@ -79,6 +84,8 @@ enum ResultFlag {
return ResultTypes.highCriticalHigh;
case ResultFlag.LCL:
return ResultTypes.lowCriticalLow;
case ResultFlag.IRR:
return ResultTypes.IRR;
}
}
}

@ -234,7 +234,7 @@ class LabsService extends BaseService {
// await baseAppClient.post(SEND_LAB_RESULT_EMAIL, onSuccess: (dynamic response, int statusCode) {
await baseAppClient.post(SEND_LAB_RESULT_EMAIL_NEW, onSuccess: (dynamic response, int statusCode) {
if (isDownload) {
labReportPDF = response['LabReportsPDFContent'];
labReportPDF = response['PdfContent'];
}
}, onFailure: (String error, int statusCode) {
hasError = true;

@ -1,3 +1,7 @@
import 'dart:convert';
import 'dart:io';
import 'dart:typed_data';
import 'package:diplomaticquarterapp/core/enum/filter_type.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/labs/LabOrderResult.dart';
@ -9,6 +13,8 @@ import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.da
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:open_filex/open_filex.dart';
import 'package:path_provider/path_provider.dart';
import '../../../locator.dart';
import '../base_view_model.dart';
@ -139,6 +145,9 @@ class LabsViewModel extends BaseViewModel {
case ResultFlag.CH: //6
percentage = division * 3.8;
break;
case ResultFlag.IRR:
percentage = 0;
break;
}
return percentage * 100;
@ -177,14 +186,35 @@ class LabsViewModel extends BaseViewModel {
}
sendLabReportEmail({PatientLabOrders? patientLabOrder, String? mes, AuthenticatedUser? userObj, required bool isVidaPlus, bool isDownload = false}) async {
setState(ViewState.Busy);
await _labsService.sendLabReportEmail(patientLabOrder: patientLabOrder, userObj: userObj, isVidaPlus: isVidaPlus, isDownload: isDownload);
setState(ViewState.Idle);
if (_labsService.hasError) {
error = _labsService.error!;
} else {
if (isDownload) {
if (labReportPDF.isNotEmpty) {
String path = await _createFileFromString(labReportPDF, "pdf");
try {
OpenFilex.open(path);
} catch (ex) {
AppToast.showErrorToast(message: "Cannot open file.");
}
}
} else {
AppToast.showSuccessToast(message: mes!);
}
}
}
Future<String> _createFileFromString(String encodedStr, String ext) async {
Uint8List bytes = base64.decode(encodedStr);
String dir = (await getApplicationDocumentsDirectory()).path;
File file = File(
"$dir/" + DateTime.now().millisecondsSinceEpoch.toString() + "." + ext);
await file.writeAsBytes(bytes);
return file.path;
}
}

@ -6,7 +6,6 @@ import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/labs_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/LabResult/laboratory_result_widget.dart';
@ -51,18 +50,17 @@ class _LaboratoryResultPageState extends State<LaboratoryResultPage> {
children: [
LaboratoryResultWidget(
onTap: () async {
GifLoaderDialogUtils.showMyDialog(context);
await model.sendLabReportEmail(
patientLabOrder: widget.patientLabOrders,
mes: TranslationBase.of(context).sendSuc,
userObj: projectViewModel.user,
isVidaPlus: Utils.isVidaPlusProject(
projectViewModel,
int.parse(widget.patientLabOrders!.projectID!),
),
);
GifLoaderDialogUtils.hideDialog(context);
patientLabOrder: widget.patientLabOrders,
mes: TranslationBase.of(context).sendSuc,
userObj: projectViewModel.user,
isVidaPlus: Utils.isVidaPlusProject(
projectViewModel,
int.parse(widget.patientLabOrders!.projectID!),
),
isDownload: true);
},
showConfirmMessageDialog: false,
billNo: widget.patientLabOrders!.invoiceNo,
// details: model.patientLabSpecialResult[index].resultDataHTML,
details: model.patientLabSpecialResult.isEmpty

@ -3059,7 +3059,6 @@ class TranslationBase {
String get EROnlineCheckInWaitTurn => localizedValues["EROnlineCheckInWaitTurn"][locale.languageCode];
String get EROnlineCheckInWaitTurnInstruction => localizedValues["EROnlineCheckInWaitTurnInstruction"][locale.languageCode];
String get download => localizedValues["download"][locale.languageCode];
String get share => localizedValues["share"][locale.languageCode];
String get normal => localizedValues["normal"][locale.languageCode];

@ -11,7 +11,6 @@ import 'package:diplomaticquarterapp/widgets/new_design/doctor_header.dart';
import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
import 'package:flutter/material.dart';
import 'package:flutter_html/flutter_html.dart';
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
import 'package:provider/provider.dart';
@ -22,8 +21,18 @@ class LaboratoryResultWidget extends StatefulWidget {
final String? orderNo;
final String? projectName;
final PatientLabOrders? patientLabOrder;
final bool showConfirmMessageDialog;
const LaboratoryResultWidget({Key? key, this.onTap, this.billNo, this.details, this.orderNo, this.projectName, this.patientLabOrder}) : super(key: key);
const LaboratoryResultWidget(
{Key? key,
this.onTap,
this.billNo,
this.details,
this.orderNo,
this.projectName,
this.patientLabOrder,
this.showConfirmMessageDialog = true})
: super(key: key);
@override
_LaboratoryResultWidgetState createState() => _LaboratoryResultWidgetState();
@ -91,6 +100,7 @@ class _LaboratoryResultWidgetState extends State<LaboratoryResultWidget> {
buttonColor: Color(0xFF09AA28),
buttonTitle: TranslationBase.of(context).download,
buttonIcon: "assets/images/svg/download_1.svg",
showConfirmMessageDialog: widget.showConfirmMessageDialog,
);
}

@ -4,6 +4,8 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:flutter/material.dart';
///@author
///
enum ResultTypes {
lowCriticalLow,
criticalLow,
@ -12,6 +14,7 @@ enum ResultTypes {
high,
criticalHigh,
highCriticalHigh,
IRR,
unknown
}
@ -413,15 +416,22 @@ class ItemResultCardWidgetWithParams extends StatelessWidget {
),
const SizedBox(height: 10),
// Progress Bar
SizedBox(
height: 55,
child: CustomResultProgressBar(
percentage: percentage,
value: subTitle,
type: type,
),
Visibility(
visible: type != ResultTypes.IRR,
child: Column(
children: [
SizedBox(
height: 55,
child: CustomResultProgressBar(
percentage: percentage,
value: subTitle,
type: type,
),
),
const SizedBox(height: 12),
],
),
const SizedBox(height: 12),
),
// Note Section
if (note.isNotEmpty)
Column(
@ -468,6 +478,7 @@ class ItemResultCardWidgetWithParams extends StatelessWidget {
return Color(0xFFEAB157);
case ResultTypes.normal:
return Color(0xFF09AA28);
//todo handle irr here
default:
return Color(0xFF09AA28);
}
@ -511,8 +522,9 @@ class ResultStatusWidget extends StatelessWidget {
icon = Icons.check_circle;
break;
case ResultTypes.unknown:
color = const Color(0xFFEAB157);
icon = Icons.arrow_circle_up;
case ResultTypes.IRR:
color = Color(0xFF09AA28);
icon = Icons.check_circle;
break;
}

Loading…
Cancel
Save