From 59c279998cc43ba409e71af53e9d18c5772600eb Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 18 Aug 2020 18:09:01 +0300 Subject: [PATCH] working on vital signs integration --- .../service/medical/vital_sign_service.dart | 8 +- .../medical/vital_sign_view_model.dart | 14 +- .../MyAppointments/models/ArrivedButtons.dart | 2 +- .../models/ArrivedButtonsAllowCheckIn.dart | 2 +- .../widgets/AppointmentActions.dart | 10 + .../vital_sign/vital_sign_details_screen.dart | 327 ++++++++++-------- 6 files changed, 207 insertions(+), 156 deletions(-) diff --git a/lib/core/service/medical/vital_sign_service.dart b/lib/core/service/medical/vital_sign_service.dart index 1add63cf..b353d3b9 100644 --- a/lib/core/service/medical/vital_sign_service.dart +++ b/lib/core/service/medical/vital_sign_service.dart @@ -7,8 +7,14 @@ class VitalSignService extends BaseService { List vitalSignResModelList = List(); Map body = Map(); - Future getPatientRadOrders() async { + Future getPatientRadOrders({int appointmentNo, int projectID}) async { hasError = false; + + if (appointmentNo != null && projectID != null) { + body['TransNo'] = appointmentNo; + body['ProjectID'] = projectID; + } + await baseAppClient.post(GET_PATIENT_VITAL_SIGN, onSuccess: (dynamic response, int statusCode) { vitalSignResModelList.clear(); diff --git a/lib/core/viewModels/medical/vital_sign_view_model.dart b/lib/core/viewModels/medical/vital_sign_view_model.dart index 5a2d8514..f534140f 100644 --- a/lib/core/viewModels/medical/vital_sign_view_model.dart +++ b/lib/core/viewModels/medical/vital_sign_view_model.dart @@ -8,12 +8,18 @@ import '../../../locator.dart'; class VitalSignViewModel extends BaseViewModel { VitalSignService _vitalSignService = locator(); - List get vitalSignResModelList => _vitalSignService.vitalSignResModelList; + List get vitalSignResModelList => + _vitalSignService.vitalSignResModelList; - - getPatientRadOrders() async { + getPatientRadOrders({int appointmentNo, int projectID}) async { setState(ViewState.Busy); - await _vitalSignService.getPatientRadOrders(); + + if (appointmentNo != null && projectID != null) { + await _vitalSignService.getPatientRadOrders( + appointmentNo: appointmentNo, projectID: projectID); + } else { + await _vitalSignService.getPatientRadOrders(); + } if (_vitalSignService.hasError) { error = _vitalSignService.error; setState(ViewState.Error); diff --git a/lib/pages/MyAppointments/models/ArrivedButtons.dart b/lib/pages/MyAppointments/models/ArrivedButtons.dart index df7ee3c8..89fb4c1d 100644 --- a/lib/pages/MyAppointments/models/ArrivedButtons.dart +++ b/lib/pages/MyAppointments/models/ArrivedButtons.dart @@ -31,7 +31,7 @@ class ArrivedButtons { "title": "Vital Signs", "subtitle": "Values", "icon": "assets/images/new-design/location_icon.png", - "caller": "navigateToProject" + "caller": "VitalSigns" }, { "title": TranslationBase.of(AppGlobal.context).raise, diff --git a/lib/pages/MyAppointments/models/ArrivedButtonsAllowCheckIn.dart b/lib/pages/MyAppointments/models/ArrivedButtonsAllowCheckIn.dart index 2e1034b7..4af79e74 100644 --- a/lib/pages/MyAppointments/models/ArrivedButtonsAllowCheckIn.dart +++ b/lib/pages/MyAppointments/models/ArrivedButtonsAllowCheckIn.dart @@ -31,7 +31,7 @@ class ArrivedButtons { "title": "Vital Signs", "subtitle": "Values", "icon": "assets/images/new-design/location_icon.png", - "caller": "navigateToProject" + "caller": "VitalSigns" }, { "title": TranslationBase.of(AppGlobal.context).raise, diff --git a/lib/pages/MyAppointments/widgets/AppointmentActions.dart b/lib/pages/MyAppointments/widgets/AppointmentActions.dart index 1176140b..a46cb42b 100644 --- a/lib/pages/MyAppointments/widgets/AppointmentActions.dart +++ b/lib/pages/MyAppointments/widgets/AppointmentActions.dart @@ -14,6 +14,7 @@ import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/askDocDialog.d import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/reminder_dialog.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.dart'; import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_details_page.dart'; +import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; @@ -184,6 +185,10 @@ class _AppointmentActionsState extends State { case "Insurance": navigateToInsuranceApprovals(widget.appo.appointmentNo); break; + + case "VitalSigns": + navigateToVitalSigns(widget.appo.appointmentNo, widget.appo.projectID); + break; } } @@ -544,6 +549,11 @@ class _AppointmentActionsState extends State { context, FadePage(page: InsuranceApproval(appointmentNo: appoNo))); } + navigateToVitalSigns(int appoNo, int projectID) { + Navigator.push( + context, FadePage(page: VitalSignDetailsScreen(appointmentNo: appoNo, projectID: projectID))); + } + rateAppointment() { widget.browser = new MyInAppBrowser(); widget.browser.openBrowser('http://hmg.com/SitePages/pso.aspx?p=' + diff --git a/lib/pages/medical/vital_sign/vital_sign_details_screen.dart b/lib/pages/medical/vital_sign/vital_sign_details_screen.dart index 61da0967..aa9e752a 100644 --- a/lib/pages/medical/vital_sign/vital_sign_details_screen.dart +++ b/lib/pages/medical/vital_sign/vital_sign_details_screen.dart @@ -14,174 +14,203 @@ import '../../../d_q_icons_icons.dart'; class VitalSignDetailsScreen extends StatelessWidget { static const String url = "assets/images/"; + int appointmentNo; + int projectID; + + VitalSignDetailsScreen({this.appointmentNo, this.projectID}); + @override Widget build(BuildContext context) { return BaseView( - onModelReady: (model) => model.getPatientRadOrders(), + onModelReady: appointmentNo != null && projectID != null + ? (model) => model.getPatientRadOrders( + appointmentNo: appointmentNo, projectID: projectID) + : (model) => model.getPatientRadOrders(), builder: (_, mode, widget) => AppScaffold( isShowAppBar: true, appBarTitle: 'Vital Sign', baseViewModel: mode, - body: mode.vitalSignResModelList.length> 0? Container( - child: ListView( - children: [ - Row( - children: [ - InkWell( - onTap: () => Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: VitalSignDetails.Height, - pageTitle: 'Height', - vitalList: mode.vitalSignResModelList, + body: mode.vitalSignResModelList.length > 0 + ? Container( + child: ListView( + children: [ + Row( + children: [ + InkWell( + onTap: () => Navigator.push( + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: VitalSignDetails.Height, + pageTitle: 'Height', + vitalList: mode.vitalSignResModelList, + ), + ), + ), + child: Container( + child: VitalSignItem( + des: TranslationBase.of(context).height, + icon: DQIcons.height, + lastVal: mode + .vitalSignResModelList[ + mode.vitalSignResModelList.length - 1] + .heightCm + .toString(), + unit: ' Cm', + ), + ), ), - ), - ), - child: Container( - child: VitalSignItem( - des: TranslationBase.of(context).height, - icon: DQIcons.height, - lastVal: mode.vitalSignResModelList[mode.vitalSignResModelList.length-1].heightCm.toString(), - unit: ' Cm', - ), - ), - ), - InkWell( - onTap: () => Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: VitalSignDetails.Weight, - pageTitle: 'Weight', - vitalList: mode.vitalSignResModelList, + InkWell( + onTap: () => Navigator.push( + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: VitalSignDetails.Weight, + pageTitle: 'Weight', + vitalList: mode.vitalSignResModelList, + ), + ), + ), + child: VitalSignItem( + des: TranslationBase.of(context).weight, + icon: DQIcons.weight_scale, + unit: ' Kg', + lastVal: mode + .vitalSignResModelList[ + mode.vitalSignResModelList.length - 1] + .weightKg + .toString(), + ), ), - ), - ), - child: VitalSignItem( - des: TranslationBase.of(context).weight, - icon: DQIcons.weight_scale, - unit: ' Kg', - lastVal: mode.vitalSignResModelList[mode.vitalSignResModelList.length-1].weightKg.toString(), + ], ), - ), - - ], - ), - Row( - children: [ - InkWell( - onTap: () => Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: VitalSignDetails.BodyMeasurements, - pageTitle: 'BMI', - vitalList: mode.vitalSignResModelList, + Row( + children: [ + InkWell( + onTap: () => Navigator.push( + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: VitalSignDetails.BodyMeasurements, + pageTitle: 'BMI', + vitalList: mode.vitalSignResModelList, + ), + ), + ), + child: VitalSignItem( + des: TranslationBase.of(context).bodyMeasurements, + icon: DQIcons.bmi, + lastVal: mode + .vitalSignResModelList[1].pulseBeatPerMinute + .toString(), + unit: 'BMI', + ), ), - ), - ), - child: VitalSignItem( - des: TranslationBase.of(context).bodyMeasurements, - icon: DQIcons.bmi, - lastVal: mode.vitalSignResModelList[1].pulseBeatPerMinute - .toString(), - unit: 'BMI', - ), - ), - InkWell( - onTap: () => Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: VitalSignDetails.Temperature, - pageTitle: 'Temperature', - vitalList: mode.vitalSignResModelList, + InkWell( + onTap: () => Navigator.push( + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: VitalSignDetails.Temperature, + pageTitle: 'Temperature', + vitalList: mode.vitalSignResModelList, + ), + ), + ), + child: Container( + child: VitalSignItem( + des: TranslationBase.of(context).temperature, + icon: DQIcons.thermometer, + lastVal: mode + .vitalSignResModelList[1].temperatureCelcius + .toString(), + unit: 'C', + ), + ), ), - ), + ], ), - child: Container( - child: VitalSignItem( - des: TranslationBase.of(context).temperature, - icon: DQIcons.thermometer, - lastVal: mode - .vitalSignResModelList[1].temperatureCelcius - .toString(), - unit: 'C', - ), - ), - ), - - ], - ), - Row( - children: [ - InkWell( - onTap: () => Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: VitalSignDetails.heart, - pageTitle: 'Hart ', - vitalList: mode.vitalSignResModelList, + Row( + children: [ + InkWell( + onTap: () => Navigator.push( + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: VitalSignDetails.heart, + pageTitle: 'Hart ', + vitalList: mode.vitalSignResModelList, + ), + ), + ), + child: VitalSignItem( + des: TranslationBase.of(context).heart, + icon: DQIcons.heart, + lastVal: mode + .vitalSignResModelList[ + mode.vitalSignResModelList.length - 1] + .pulseBeatPerMinute + .toString(), + unit: ' bpm', + ), ), - ), - ), - child: VitalSignItem( - des: TranslationBase.of(context).heart, - icon: DQIcons.heart, - lastVal: mode.vitalSignResModelList[mode.vitalSignResModelList.length-1].pulseBeatPerMinute - .toString(), - unit: ' bpm', - ), - ), - InkWell( - onTap: () => Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: VitalSignDetails.Respiration, - pageTitle: 'Respiration Rate', - vitalList: mode.vitalSignResModelList, + InkWell( + onTap: () => Navigator.push( + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: VitalSignDetails.Respiration, + pageTitle: 'Respiration Rate', + vitalList: mode.vitalSignResModelList, + ), + ), + ), + child: VitalSignItem( + des: TranslationBase.of(context).respirationRate, + icon: DQIcons.outline, + lastVal: mode + .vitalSignResModelList[ + mode.vitalSignResModelList.length - 1] + .respirationBeatPerMinute + .toString(), + unit: ' bmp', + ), ), - ), - ), - child: VitalSignItem( - des: TranslationBase.of(context).respirationRate, - icon: DQIcons.outline, - lastVal: mode.vitalSignResModelList[mode.vitalSignResModelList.length-1].respirationBeatPerMinute.toString(), - unit: ' bmp', + ], ), - ), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - InkWell( - onTap: () => Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: VitalSignDetails.BloodPressure, - pageTitle: 'BloodPressure', - vitalList: mode.vitalSignResModelList, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + InkWell( + onTap: () => Navigator.push( + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: VitalSignDetails.BloodPressure, + pageTitle: 'BloodPressure', + vitalList: mode.vitalSignResModelList, + ), + ), + ), + child: VitalSignItem( + des: TranslationBase.of(context).pulse, + icon: DQIcons.blood_pressure, + lastVal: mode + .vitalSignResModelList[ + mode.vitalSignResModelList.length - 1] + .bloodPressure + .toString(), + unit: ' SBP/DBP', + ), ), - ), - ), - child: VitalSignItem( - des: TranslationBase.of(context).pulse, - icon: DQIcons.blood_pressure, - lastVal: mode.vitalSignResModelList[mode.vitalSignResModelList.length -1].bloodPressure - .toString(), - unit: ' SBP/DBP', + ], ), - ), - ], + ], + ), + ) + : Center( + child: Texts('No Data'), ), - ], - ), - ) : Center(child: Texts('No Data'),), ), ); }