From 5e85af35c2341449dcd2613056691eae72d5834e Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Mon, 5 Apr 2021 12:22:00 +0300 Subject: [PATCH 01/23] fix radiology image --- lib/core/service/radiology_service.dart | 2 +- lib/util/translations_delegate_base.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/core/service/radiology_service.dart b/lib/core/service/radiology_service.dart index 9c1f5a60..9d60c4ac 100644 --- a/lib/core/service/radiology_service.dart +++ b/lib/core/service/radiology_service.dart @@ -14,7 +14,7 @@ class RadiologyService extends BaseService { hasError = false; final Map body = new Map(); body['InvoiceNo'] = invoiceNo; - body['LineIt emNo'] = lineItem; + body['LineItemNo'] = lineItem; body['ProjectID'] = projectId; await baseAppClient.postPatient(GET_RAD_IMAGE_URL, diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart index 389c35f3..4961d2f8 100644 --- a/lib/util/translations_delegate_base.dart +++ b/lib/util/translations_delegate_base.dart @@ -1200,7 +1200,7 @@ class TranslationBase { String get updateReschedule => localizedValues['update-reschedule'][locale.languageCode]; String get sickLeave => localizedValues['sick_leave'][locale.languageCode]; - String get accepted => localizedValues['accepetd'][locale.languageCode]; + String get accepted => localizedValues['accepted'][locale.languageCode]; String get cancelled => localizedValues['cancelled'][locale.languageCode]; String get unReplied => localizedValues['unReplied'][locale.languageCode]; String get replied => localizedValues['replied'][locale.languageCode]; From 494f716f0524059b1dff0bc994273a0831e52ca7 Mon Sep 17 00:00:00 2001 From: mosazaid Date: Mon, 5 Apr 2021 12:53:26 +0300 Subject: [PATCH 02/23] working on new design on vital sign and referral screens --- .../patient-doctor-referral-service.dart | 2 +- .../referral/my-referral-detail-screen.dart | 40 ++- .../referral/patient_referral_screen.dart | 4 +- .../profile/vital_sign/LineChartCurved.dart | 60 ++-- .../LineChartCurvedBloodPressure.dart | 119 ++++--- ...al_sign_details_blood_pressurewideget.dart | 163 ++++++--- .../vital_sign/vital_sign_details_screen.dart | 325 +++++++++--------- .../vital_sign_details_wideget.dart | 129 ++++--- .../vital_sign_item_details_screen.dart | 120 +++++-- .../vital_sing_chart_and_detials.dart | 81 ++++- .../vital_sing_chart_blood_pressure.dart | 84 ++++- ...ent-profile-header-new-design-app-bar.dart | 6 +- 12 files changed, 706 insertions(+), 427 deletions(-) diff --git a/lib/core/service/patient-doctor-referral-service.dart b/lib/core/service/patient-doctor-referral-service.dart index 3136b549..787aecae 100644 --- a/lib/core/service/patient-doctor-referral-service.dart +++ b/lib/core/service/patient-doctor-referral-service.dart @@ -156,7 +156,7 @@ class PatientReferralService extends LookupService { hasError = false; DoctorProfileModel doctorProfile = await getDoctorProfile(); Map body = Map(); - body['ClinicID'] = 0; + // body['ClinicID'] = 0; body['DoctorID'] = doctorProfile.doctorID; await baseAppClient.post( diff --git a/lib/screens/patients/profile/referral/my-referral-detail-screen.dart b/lib/screens/patients/profile/referral/my-referral-detail-screen.dart index d828ec23..a4510907 100644 --- a/lib/screens/patients/profile/referral/my-referral-detail-screen.dart +++ b/lib/screens/patients/profile/referral/my-referral-detail-screen.dart @@ -209,16 +209,38 @@ class MyReferralDetailScreen extends StatelessWidget { ), ], ) - : Container( - child: Center( - child: AppText( - TranslationBase.of(context).patientNoDetailErrMsg, - color: HexColor("#B8382B"), - fontWeight: FontWeight.bold, - fontSize: 16, - ), + : Column( + children: [ + Container( + padding: EdgeInsets.only(left: 12.0), + child: Row(children: [ + IconButton( + icon: Icon(Icons.arrow_back_ios), + color: Colors.black, //Colors.black, + onPressed: () => Navigator.pop(context), + ), + Expanded( + child: AppText("" , + fontSize: SizeConfig.textMultiplier * 2.5, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.white, + fontFamily: 'Poppins', + ), + ), + ]), ), - ), + Container( + child: Center( + child: AppText( + TranslationBase.of(context).patientNoDetailErrMsg, + color: HexColor("#B8382B"), + fontWeight: FontWeight.bold, + fontSize: 16, + ), + ), + ), + ], + ), ), ); } diff --git a/lib/screens/patients/profile/referral/patient_referral_screen.dart b/lib/screens/patients/profile/referral/patient_referral_screen.dart index adea0247..16084342 100644 --- a/lib/screens/patients/profile/referral/patient_referral_screen.dart +++ b/lib/screens/patients/profile/referral/patient_referral_screen.dart @@ -39,11 +39,11 @@ class _PatientReferralScreen extends State extendBodyBehindAppBar: true, // backgroundColor: Colors.white, appBar: PreferredSize( - preferredSize: Size.fromHeight(65.0), + preferredSize: Size.fromHeight(60.0), child: Center( child: Container( height: 60.0, - margin: EdgeInsets.only(top: 10.0), + // margin: EdgeInsets.only(top: 10.0), width: MediaQuery.of(context).size.width * 0.92, // 0.9, decoration: BoxDecoration( border: Border( diff --git a/lib/screens/patients/profile/vital_sign/LineChartCurved.dart b/lib/screens/patients/profile/vital_sign/LineChartCurved.dart index 2f0eafcb..6e9c425e 100644 --- a/lib/screens/patients/profile/vital_sign/LineChartCurved.dart +++ b/lib/screens/patients/profile/vital_sign/LineChartCurved.dart @@ -1,4 +1,6 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/widgets/charts/app_time_series_chart.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; @@ -23,36 +25,40 @@ class LineChartCurved extends StatelessWidget { borderRadius: BorderRadius.all(Radius.circular(18)), // color: Colors.white, ), - child: Stack( + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - const SizedBox( - height: 4, - ), - Text( - title, - style: TextStyle( - color: Colors.black, - fontSize: 15, - letterSpacing: 2), - textAlign: TextAlign.center, - ), - SizedBox(height: 10,), - Expanded( - child: Padding( - padding: const EdgeInsets.only(right: 18.0, left: 16.0), - child: LineChart( - sampleData1(context), - swapAnimationDuration: const Duration(milliseconds: 250), - ), + const SizedBox( + height: 4, + ), + Container( + padding: const EdgeInsets.only(right: 18.0, left: 16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + title, + fontSize: SizeConfig.textMultiplier * 2.5, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', + textAlign: TextAlign.center, ), + ], + ), + ), + SizedBox(height: 16,), + Expanded( + child: Padding( + padding: const EdgeInsets.only(right: 18.0, left: 16.0), + child: LineChart( + sampleData1(context), + swapAnimationDuration: const Duration(milliseconds: 250), ), - const SizedBox( - height: 10, - ), - ], + ), + ), + const SizedBox( + height: 10, ), ], ), diff --git a/lib/screens/patients/profile/vital_sign/LineChartCurvedBloodPressure.dart b/lib/screens/patients/profile/vital_sign/LineChartCurvedBloodPressure.dart index e816c145..ecc0f134 100644 --- a/lib/screens/patients/profile/vital_sign/LineChartCurvedBloodPressure.dart +++ b/lib/screens/patients/profile/vital_sign/LineChartCurvedBloodPressure.dart @@ -1,3 +1,4 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/charts/app_time_series_chart.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; @@ -26,71 +27,77 @@ class LineChartCurvedBloodPressure extends StatelessWidget { borderRadius: BorderRadius.all(Radius.circular(18)), // color: Colors.white, ), - child: Stack( + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - const SizedBox( - height: 15, - ), - Text( - title, - style: TextStyle( - color: Colors.black, fontSize: 15, letterSpacing: 2), - textAlign: TextAlign.center, - ), - SizedBox( - height: 10, - ), - Expanded( - child: Padding( - padding: - const EdgeInsets.only(right: 18.0, left: 16.0, top: 15), - child: LineChart( - sampleData1(context), - swapAnimationDuration: const Duration(milliseconds: 250), - ), + const SizedBox( + height: 4, + ), + Container( + padding: const EdgeInsets.only(right: 18.0, left: 16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + title, + fontSize: SizeConfig.textMultiplier * 2.5, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', + textAlign: TextAlign.center, ), + ], + ), + ), + SizedBox( + height: 10, + ), + Expanded( + child: Padding( + padding: + const EdgeInsets.only(right: 18.0, left: 16.0, top: 15), + child: LineChart( + sampleData1(context), + swapAnimationDuration: const Duration(milliseconds: 250), ), - SizedBox( - height: 10, - ), + ), + ), + SizedBox( + height: 10, + ), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, children: [ - Row( - children: [ - Container( - width: 20, - height: 20, - decoration: BoxDecoration( - shape: BoxShape.rectangle, - color: Theme.of(context).primaryColor), - ), - SizedBox(width: 5,), - AppText(TranslationBase.of(context).systolicLng) - ], + Container( + width: 20, + height: 20, + decoration: BoxDecoration( + shape: BoxShape.rectangle, + color: Theme.of(context).primaryColor), ), - SizedBox(width: 15,), - Row( - children: [ - Container( - width: 20, - height: 20, - decoration: BoxDecoration( - shape: BoxShape.rectangle, - color: Colors.grey), - ), - SizedBox(width: 5,), - AppText(TranslationBase.of(context).diastolicLng) - ], + SizedBox(width: 5,), + AppText(TranslationBase.of(context).systolicLng) + ], + ), + SizedBox(width: 15,), + Row( + children: [ + Container( + width: 20, + height: 20, + decoration: BoxDecoration( + shape: BoxShape.rectangle, + color: Colors.grey), ), + SizedBox(width: 5,), + AppText(TranslationBase.of(context).diastolicLng) ], - ) + ), ], - ), + ) ], ), ), diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_blood_pressurewideget.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_blood_pressurewideget.dart index 693507bb..78293f31 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_details_blood_pressurewideget.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_blood_pressurewideget.dart @@ -1,3 +1,4 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart'; @@ -17,7 +18,13 @@ class VitalSignBloodPressureWidget extends StatefulWidget { final String viewKey2; VitalSignBloodPressureWidget( - {Key key, this.vitalList, this.title1, this.title2, this.viewKey1, this.title3, this.viewKey2}); + {Key key, + this.vitalList, + this.title1, + this.title2, + this.viewKey1, + this.title3, + this.viewKey2}); @override _VitalSignDetailsWidgetState createState() => _VitalSignDetailsWidgetState(); @@ -28,21 +35,96 @@ class _VitalSignDetailsWidgetState extends State { Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); return Container( - decoration: BoxDecoration( + /*decoration: BoxDecoration( color: Colors.transparent, borderRadius: BorderRadius.only( topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0)), border: Border.all(color: Colors.grey, width: 1), - ), - margin: EdgeInsets.all(20), + ),*/ + margin: EdgeInsets.all(0), child: Container( color: Colors.transparent, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + Row( + children: [ + Expanded( + child: Container( + child: Container( + padding: EdgeInsets.all(8), + /*decoration: BoxDecoration( + color: Theme.of(context).primaryColor, + borderRadius: BorderRadius.only( + topLeft:projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0), + topRight: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0) + ), + ),*/ + child: AppText( + TranslationBase.of(context).date, + fontSize: SizeConfig.textMultiplier * 2.0, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', + ), + // height: 60, + ), + ), + ), + Expanded( + child: Container( + padding: EdgeInsets.all(8), + child: Container( + /*decoration: BoxDecoration( + color: Theme.of(context).primaryColor, + borderRadius: BorderRadius.only( + topRight: projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0), + topLeft: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0) + ), + ),*/ + child: AppText( + widget.title2, + fontSize: SizeConfig.textMultiplier * 2.0, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', + ), + // height: 60 + ), + ), + ), + Expanded( + child: Container( + padding: EdgeInsets.all(8), + child: Container( + /*decoration: BoxDecoration( + color: Theme.of(context).primaryColor, + borderRadius: BorderRadius.only( + topRight: projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0), + topLeft: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0) + ), + ),*/ + child: AppText( + widget.title3, + fontSize: SizeConfig.textMultiplier * 2.0, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', + ), + // height: 60 + ), + ), + ), + ], + ), + const Divider( + height: 1, + thickness: 1, + color: Colors.black, + ), Table( border: TableBorder.symmetric( - inside: BorderSide(width: 2.0, color: Colors.grey[300]), + inside: BorderSide(width: 1.0, color: Colors.grey[300]), ), children: fullData(projectViewModel), ), @@ -54,36 +136,7 @@ class _VitalSignDetailsWidgetState extends State { List fullData(ProjectViewModel projectViewModel) { List tableRow = []; - tableRow.add(TableRow(children: [ - Container( - child: Container( - decoration: BoxDecoration( - color: Theme.of(context).primaryColor, - borderRadius: BorderRadius.only( - topLeft:projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0), - topRight: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0) - ), - ), - child: Center( - child: AppText( - TranslationBase.of(context).date, - color: Colors.white, - ), - ), - height: 60, - ), - ), - Container( - child: Container( - decoration: BoxDecoration( - color: Theme.of(context).primaryColor, - - ), - child: Center( - child: AppText(widget.title2, color: Colors.white), - ), - height: 60), - ), + /* tableRow.add(TableRow(children: [ Container( child: Container( decoration: BoxDecoration( @@ -98,22 +151,24 @@ class _VitalSignDetailsWidgetState extends State { ), height: 60), ), - ])); + ]));*/ widget.vitalList.forEach((vital) { var data = vital.toJson()[widget.viewKey1]; DateTime elementDate = - DateUtils.getDateTimeFromServerFormat(vital.createdOn); + DateUtils.getDateTimeFromServerFormat(vital.createdOn); if (data != 0) tableRow.add(TableRow(children: [ Container( child: Container( padding: EdgeInsets.all(10), color: Colors.white, - child: Center( - child: AppText( - '${projectViewModel.isArabic ? DateUtils.getWeekDayArabic(elementDate.weekday) : DateUtils.getWeekDay(elementDate.weekday)}, ${elementDate.day} ${projectViewModel.isArabic ? DateUtils.getMonthArabic(elementDate.month) : DateUtils.getMonth(elementDate.month)}, ${elementDate.year} ', - textAlign: TextAlign.center, - ), + child: AppText( + '${projectViewModel.isArabic ? DateUtils.getWeekDayArabic(elementDate.weekday) : DateUtils.getWeekDay(elementDate.weekday)}, ${elementDate.day} ${projectViewModel.isArabic ? DateUtils.getMonthArabic(elementDate.month) : DateUtils.getMonth(elementDate.month)}, ${elementDate.year} ', + // textAlign: TextAlign.center, + fontSize: SizeConfig.textMultiplier * 1.8, + fontWeight: FontWeight.w600, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', ), ), ), @@ -121,11 +176,13 @@ class _VitalSignDetailsWidgetState extends State { child: Container( padding: EdgeInsets.all(10), color: Colors.white, - child: Center( - child: AppText( - '${vital.toJson()[widget.viewKey1]}', - textAlign: TextAlign.center, - ), + child: AppText( + '${vital.toJson()[widget.viewKey1]}', + // textAlign: TextAlign.center, + fontSize: SizeConfig.textMultiplier * 1.8, + fontWeight: FontWeight.w600, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', ), ), ), @@ -133,11 +190,13 @@ class _VitalSignDetailsWidgetState extends State { child: Container( padding: EdgeInsets.all(10), color: Colors.white, - child: Center( - child: AppText( - '${vital.toJson()[widget.viewKey2]}', - textAlign: TextAlign.center, - ), + child: AppText( + '${vital.toJson()[widget.viewKey2]}', + // textAlign: TextAlign.center, + fontSize: SizeConfig.textMultiplier * 1.8, + fontWeight: FontWeight.w600, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', ), ), ), diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart index f43975ec..23eff3a9 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart @@ -39,7 +39,7 @@ class VitalSignDetailsScreen extends StatelessWidget { builder: (_, mode, widget) => AppScaffold( isShowAppBar: false, baseViewModel: mode, - /* appBar: PatientProfileHeaderWhitAppointmentAppBar( + /* appBar: PatientProfileHeaderWhitAppointmentAppBar( patient: patient, patientType: patientType, arrivalType: arrivalType, @@ -140,7 +140,7 @@ class VitalSignDetailsScreen extends StatelessWidget { ? '${assetBasePath}health_BMI.png' : '${assetBasePath}health_BMI-r.png', height: - MediaQuery.of(context).size.height * 0.10, + MediaQuery.of(context).size.height * 0.10, ), const SizedBox( height: 4, @@ -176,7 +176,7 @@ class VitalSignDetailsScreen extends StatelessWidget { ? '${assetBasePath}ovrweight_BMI.png' : '${assetBasePath}ovrweight_BMI-r.png', height: - MediaQuery.of(context).size.height * 0.10, + MediaQuery.of(context).size.height * 0.10, ), const SizedBox( height: 4, @@ -203,75 +203,75 @@ class VitalSignDetailsScreen extends StatelessWidget { )), Expanded( child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Image.asset( - mode.getBMIStatus() != 4 - ? '${assetBasePath}Obese_BMI.png' - : '${assetBasePath}Obese_BMI-r.png', - height: + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Image.asset( + mode.getBMIStatus() != 4 + ? '${assetBasePath}Obese_BMI.png' + : '${assetBasePath}Obese_BMI-r.png', + height: MediaQuery.of(context).size.height * 0.10, - ), - const SizedBox( - height: 4, - ), - AppText( - "${TranslationBase.of(context).bmiObese}", - fontFamily: 'Poppins', - fontSize: SizeConfig.textMultiplier * 1.15, - fontWeight: FontWeight.w700, - color: mode.getBMIStatus() == 4 - ? Color(0XFFD02127) - : null, - ), - AppText( - "(30-34.9)", - fontFamily: 'Poppins', - fontSize: SizeConfig.textMultiplier * 1.15, - fontWeight: FontWeight.w700, - color: mode.getBMIStatus() == 4 - ? Color(0XFFD02127) - : null, - ), - ], - )), + ), + const SizedBox( + height: 4, + ), + AppText( + "${TranslationBase.of(context).bmiObese}", + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 1.15, + fontWeight: FontWeight.w700, + color: mode.getBMIStatus() == 4 + ? Color(0XFFD02127) + : null, + ), + AppText( + "(30-34.9)", + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 1.15, + fontWeight: FontWeight.w700, + color: mode.getBMIStatus() == 4 + ? Color(0XFFD02127) + : null, + ), + ], + )), Expanded( child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Image.asset( - mode.getBMIStatus() != 5 - ? '${assetBasePath}Obese_BMI.png' - : '${assetBasePath}Obese_BMI-r.png', - height: + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Image.asset( + mode.getBMIStatus() != 5 + ? '${assetBasePath}Obese_BMI.png' + : '${assetBasePath}Obese_BMI-r.png', + height: MediaQuery.of(context).size.height * 0.10, - ), - const SizedBox( - height: 4, - ), - FittedBox( - fit: BoxFit.fitWidth, - child: AppText( - "${TranslationBase.of(context).bmiObeseExtreme} fdsd", - fontFamily: 'Poppins', - fontSize: SizeConfig.textMultiplier * 1.15, - fontWeight: FontWeight.w700, - color: mode.getBMIStatus() == 4 - ? Color(0XFFD02127) - : null, - ), - ), - AppText( - "(35<)", - fontFamily: 'Poppins', - fontSize: SizeConfig.textMultiplier * 1.15, - fontWeight: FontWeight.w700, - color: mode.getBMIStatus() == 4 - ? Color(0XFFD02127) - : null, - ), - ], - )), + ), + const SizedBox( + height: 4, + ), + FittedBox( + fit: BoxFit.fitWidth, + child: AppText( + "${TranslationBase.of(context).bmiObeseExtreme}", + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 1.15, + fontWeight: FontWeight.w700, + color: mode.getBMIStatus() == 5 + ? Color(0XFFD02127) + : null, + ), + ), + AppText( + "(35<)", + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 1.15, + fontWeight: FontWeight.w700, + color: mode.getBMIStatus() == 5 + ? Color(0XFFD02127) + : null, + ), + ], + )), ], ) ], @@ -280,7 +280,7 @@ class VitalSignDetailsScreen extends StatelessWidget { Expanded( child: Container( margin: EdgeInsets.symmetric(horizontal: 8.0), - child : GridView.count( + child: GridView.count( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), crossAxisSpacing: 4, @@ -291,24 +291,25 @@ class VitalSignDetailsScreen extends StatelessWidget { InkWell( onTap: () => isNotOneAppointment ? Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: vitalSignDetails.Height, - pageTitle: - TranslationBase.of(context) - .height, - vitalList: - mode.patientVitalSignsHistory, - ), - ), - ) + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: vitalSignDetails.Height, + pageTitle: + TranslationBase.of(context).height, + vitalList: + mode.patientVitalSignsHistory, + patient: patient, + patientType: patientType, + arrivalType: arrivalType, + ), + ), + ) : null, child: Container( child: VitalSignItem( des: TranslationBase.of(context).height, - imagePath: - "${assetBasePath}height.png", + imagePath: "${assetBasePath}height.png", lastVal: mode.heightCm, unit: TranslationBase.of(context).cm, ), @@ -317,18 +318,20 @@ class VitalSignDetailsScreen extends StatelessWidget { InkWell( onTap: () => isNotOneAppointment ? Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: vitalSignDetails.Weight, - pageTitle: - TranslationBase.of(context) - .weight, - vitalList: - mode.patientVitalSignsHistory, - ), - ), - ) + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: vitalSignDetails.Weight, + pageTitle: + TranslationBase.of(context).weight, + vitalList: + mode.patientVitalSignsHistory, + patient: patient, + patientType: patientType, + arrivalType: arrivalType, + ), + ), + ) : null, child: VitalSignItem( des: TranslationBase.of(context).weight, @@ -340,26 +343,25 @@ class VitalSignDetailsScreen extends StatelessWidget { InkWell( onTap: () => isNotOneAppointment ? Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: - vitalSignDetails.Temperature, - pageTitle: - TranslationBase.of(context) - .temperature, - vitalList: - mode.patientVitalSignsHistory, - ), - ), - ) + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: vitalSignDetails.Temperature, + pageTitle: TranslationBase.of(context) + .temperature, + vitalList: + mode.patientVitalSignsHistory, + patient: patient, + patientType: patientType, + arrivalType: arrivalType, + ), + ), + ) : null, child: Container( child: VitalSignItem( - des: - TranslationBase.of(context).temperature, - imagePath: - "${assetBasePath}temperature.png", + des: TranslationBase.of(context).temperature, + imagePath: "${assetBasePath}temperature.png", lastVal: mode.temperatureCelcius, unit: TranslationBase.of(context).tempC, ), @@ -368,23 +370,24 @@ class VitalSignDetailsScreen extends StatelessWidget { InkWell( onTap: () => isNotOneAppointment ? Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: vitalSignDetails.heart, - pageTitle: - TranslationBase.of(context) - .heart, - vitalList: - mode.patientVitalSignsHistory, - ), - ), - ) + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: vitalSignDetails.heart, + pageTitle: + TranslationBase.of(context).heart, + vitalList: + mode.patientVitalSignsHistory, + patient: patient, + patientType: patientType, + arrivalType: arrivalType, + ), + ), + ) : null, child: VitalSignItem( des: TranslationBase.of(context).heart, - imagePath: - "${assetBasePath}heart_rate.png", + imagePath: "${assetBasePath}heart_rate.png", lastVal: mode.hartRat, unit: TranslationBase.of(context).bpm, ), @@ -392,52 +395,50 @@ class VitalSignDetailsScreen extends StatelessWidget { InkWell( onTap: () => isNotOneAppointment ? Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: - vitalSignDetails.Respiration, - pageTitle: - TranslationBase.of(context) - .respirationRate, - vitalList: - mode.patientVitalSignsHistory, - ), - ), - ) + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: vitalSignDetails.Respiration, + pageTitle: TranslationBase.of(context) + .respirationRate, + vitalList: + mode.patientVitalSignsHistory, + patient: patient, + patientType: patientType, + arrivalType: arrivalType, + ), + ), + ) : null, child: VitalSignItem( - des: TranslationBase.of(context) - .respirationRate, - imagePath: - "${assetBasePath}respiration_rate.png", + des: TranslationBase.of(context).respirationRate, + imagePath: "${assetBasePath}respiration_rate.png", lastVal: mode.respirationBeatPerMinute, - unit: TranslationBase.of(context) - .respirationSigns, + unit: + TranslationBase.of(context).respirationSigns, ), ), InkWell( onTap: () => isNotOneAppointment ? Navigator.push( - context, - FadePage( - page: VitalSignItemDetailsScreen( - pageKey: - vitalSignDetails.BloodPressure, - pageTitle: - TranslationBase.of(context) - .bloodPressure, - vitalList: - mode.patientVitalSignsHistory, - ), - ), - ) + context, + FadePage( + page: VitalSignItemDetailsScreen( + pageKey: vitalSignDetails.BloodPressure, + pageTitle: TranslationBase.of(context) + .bloodPressure, + vitalList: + mode.patientVitalSignsHistory, + patient: patient, + patientType: patientType, + arrivalType: arrivalType, + ), + ), + ) : null, child: VitalSignItem( - des: - TranslationBase.of(context).bloodPressure, - imagePath: - "${assetBasePath}blood_pressure.png", + des: TranslationBase.of(context).bloodPressure, + imagePath: "${assetBasePath}blood_pressure.png", lastVal: mode.bloodPressure, unit: TranslationBase.of(context).sysDias, ), diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_wideget.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_wideget.dart index 11a24e42..65122b31 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_details_wideget.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_wideget.dart @@ -1,3 +1,4 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart'; @@ -27,21 +28,74 @@ class _VitalSignDetailsWidgetState extends State { Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); return Container( - decoration: BoxDecoration( + /*decoration: BoxDecoration( color: Colors.transparent, borderRadius: BorderRadius.only( topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0)), border: Border.all(color: Colors.grey, width: 1), - ), - margin: EdgeInsets.all(20), + ),*/ + margin: EdgeInsets.all(0), child: Container( color: Colors.transparent, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + Row( + children: [ + Expanded( + child: Container( + child: Container( + padding: EdgeInsets.all(8), + /*decoration: BoxDecoration( + color: Theme.of(context).primaryColor, + borderRadius: BorderRadius.only( + topLeft:projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0), + topRight: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0) + ), + ),*/ + child: AppText( + TranslationBase.of(context).date, + fontSize: SizeConfig.textMultiplier * 2.0, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', + ), + // height: 60, + ), + ), + ), + Expanded( + child: Container( + padding: EdgeInsets.all(8), + child: Container( + /*decoration: BoxDecoration( + color: Theme.of(context).primaryColor, + borderRadius: BorderRadius.only( + topRight: projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0), + topLeft: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0) + ), + ),*/ + child: AppText( + widget.title2, + fontSize: SizeConfig.textMultiplier * 2.0, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', + ), + // height: 60 + ), + ), + ) + ], + ), + const Divider( + height: 1, + thickness: 1, + color: Colors.black, + ), Table( border: TableBorder.symmetric( - inside: BorderSide(width: 2.0, color: Colors.grey[300]), + inside: BorderSide(width: 1.0, color: Colors.grey[300]), ), children: fullData(projectViewModel), ), @@ -53,67 +107,40 @@ class _VitalSignDetailsWidgetState extends State { List fullData(ProjectViewModel projectViewModel) { List tableRow = []; - tableRow.add(TableRow(children: [ - Container( - child: Container( - decoration: BoxDecoration( - color: Theme.of(context).primaryColor, - borderRadius: BorderRadius.only( - topLeft:projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0), - topRight: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0) - ), - ), - child: Center( - child: AppText( - TranslationBase.of(context).date, - color: Colors.white, - ), - ), - height: 60, - ), - ), - Container( - child: Container( - decoration: BoxDecoration( - color: Theme.of(context).primaryColor, - borderRadius: BorderRadius.only( - topRight: projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0), - topLeft: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0) - ), - ), - child: Center( - child: AppText(widget.title2, color: Colors.white), - ), - height: 60), - ) - ])); + /* tableRow.add(TableRow(children: [ + + ]));*/ widget.vitalList.forEach((vital) { var data = vital.toJson()[widget.viewKey]; DateTime elementDate = - DateUtils.getDateTimeFromServerFormat(vital.createdOn); + DateUtils.getDateTimeFromServerFormat(vital.createdOn); if (data != 0) tableRow.add(TableRow(children: [ Container( child: Container( - padding: EdgeInsets.all(10), + padding: EdgeInsets.all(8), color: Colors.white, - child: Center( - child: AppText( - '${projectViewModel.isArabic ? DateUtils.getWeekDayArabic(elementDate.weekday) : DateUtils.getWeekDay(elementDate.weekday)}, ${elementDate.day} ${projectViewModel.isArabic ? DateUtils.getMonthArabic(elementDate.month) : DateUtils.getMonth(elementDate.month)}, ${elementDate.year} ', - textAlign: TextAlign.center, - ), + child: AppText( + '${projectViewModel.isArabic ? DateUtils.getWeekDayArabic(elementDate.weekday) : DateUtils.getWeekDay(elementDate.weekday)}, ${elementDate.day} ${projectViewModel.isArabic ? DateUtils.getMonthArabic(elementDate.month) : DateUtils.getMonth(elementDate.month)}, ${elementDate.year} ', + // textAlign: TextAlign.center, + fontSize: SizeConfig.textMultiplier * 1.8, + fontWeight: FontWeight.w600, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', ), ), ), Container( child: Container( - padding: EdgeInsets.all(10), + padding: EdgeInsets.all(8), color: Colors.white, - child: Center( - child: AppText( - '${vital.toJson()[widget.viewKey]}', - textAlign: TextAlign.center, - ), + child: AppText( + '${vital.toJson()[widget.viewKey]}', + // textAlign: TextAlign.center, + fontSize: SizeConfig.textMultiplier * 1.8, + fontWeight: FontWeight.w600, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', ), ), ), diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_item_details_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_item_details_screen.dart index bd828138..349120f4 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_item_details_screen.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_item_details_screen.dart @@ -1,10 +1,15 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/lookups/patient_lookup.dart'; +import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart'; import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart'; import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -12,8 +17,17 @@ class VitalSignItemDetailsScreen extends StatelessWidget { final vitalSignDetails pageKey; final String pageTitle; List VSchart; - - VitalSignItemDetailsScreen({this.vitalList, this.pageKey, this.pageTitle}); + PatiantInformtion patient; + String patientType; + String arrivalType; + + VitalSignItemDetailsScreen( + {this.vitalList, + this.pageKey, + this.pageTitle, + this.patient, + this.patientType, + this.arrivalType}); final List vitalList; @@ -31,7 +45,6 @@ class VitalSignItemDetailsScreen extends StatelessWidget { 'title2Ar': 'الكتلة', 'viewKey': 'BodyMassIndex', }, - ]; break; @@ -87,7 +100,6 @@ class VitalSignItemDetailsScreen extends StatelessWidget { 'title3Ar': 'الإنبساط', 'viewKey': 'BloodPressure', }, - ]; break; @@ -161,35 +173,79 @@ class VitalSignItemDetailsScreen extends StatelessWidget { } return AppScaffold( appBarTitle: pageTitle, + backgroundColor: Color.fromRGBO(248, 248, 248, 1), isShowAppBar: true, - body: ListView( - children: VSchart.map((chartInfo) { - var vitalListTemp = vitalList.where( - (element) => element.toJson()[chartInfo['viewKey']] != null, - ); - - if(vitalListTemp.length != 0 && chartInfo['viewKey']=='BloodPressure'){ - return VitalSingChartBloodPressure( - vitalList: vitalList, - name:projectViewModel.isArabic? chartInfo['nameAr']:chartInfo['name'], - title1: chartInfo['title1'], - title2:projectViewModel.isArabic?chartInfo['title2Ar']: chartInfo['title2'], - title3:projectViewModel.isArabic?chartInfo['title3Ar']: chartInfo['title3'], - viewKey1: 'BloodPressureHigher', - viewKey2: 'BloodPressureLower', - - ); - } - - return vitalListTemp.length != 0 - ? VitalSingChartAndDetials( - vitalList: vitalList, - name:projectViewModel.isArabic? chartInfo['nameAr']:chartInfo['name'], - title1: chartInfo['title1'], - title2:projectViewModel.isArabic?chartInfo['title2Ar']: chartInfo['title2'], - viewKey: chartInfo['viewKey']) - : Container(); - }).toList(), + appBar: PatientProfileHeaderNewDesignAppBar( + patient, patientType, arrivalType), + body: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + "${patient.firstName ?? patient.patientDetails.firstName}'s", + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 1.6, + fontWeight: FontWeight.w600, + ), + AppText( + TranslationBase.of(context).vitalSign, + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 3, + fontWeight: FontWeight.bold, + ) + ], + ), + ), + Container( + child: ListView( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + children: VSchart.map((chartInfo) { + var vitalListTemp = vitalList.where( + (element) => element.toJson()[chartInfo['viewKey']] != null, + ); + + if (vitalListTemp.length != 0 && + chartInfo['viewKey'] == 'BloodPressure') { + return VitalSingChartBloodPressure( + vitalList: vitalList, + name: projectViewModel.isArabic + ? chartInfo['nameAr'] + : chartInfo['name'], + title1: chartInfo['title1'], + title2: projectViewModel.isArabic + ? chartInfo['title2Ar'] + : chartInfo['title2'], + title3: projectViewModel.isArabic + ? chartInfo['title3Ar'] + : chartInfo['title3'], + viewKey1: 'BloodPressureHigher', + viewKey2: 'BloodPressureLower', + ); + } + + return vitalListTemp.length != 0 + ? VitalSingChartAndDetials( + vitalList: vitalList, + name: projectViewModel.isArabic + ? chartInfo['nameAr'] + : chartInfo['name'], + title1: chartInfo['title1'], + title2: projectViewModel.isArabic + ? chartInfo['title2Ar'] + : chartInfo['title2'], + viewKey: chartInfo['viewKey']) + : Container(); + }).toList(), + ), + ), + ], + ), ), ); } diff --git a/lib/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart b/lib/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart index fbc0f3e1..0fe640ff 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart @@ -1,3 +1,4 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart'; import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sign_details_wideget.dart'; @@ -32,9 +33,52 @@ class VitalSingChartAndDetials extends StatelessWidget { @override Widget build(BuildContext context) { generateData(); - return timeSeriesData.length != 0 ? Column( - children: [ - AppExpandableNotifier( + return timeSeriesData.length != 0 + ? Padding( + padding: const EdgeInsets.all(10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.symmetric(horizontal: 8), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12) + ), + child: LineChartCurved( + title: name, + timeSeries: timeSeriesData, + indexes: timeSeriesData.length ~/ 5.5, + ), + ), + Container( + margin: EdgeInsets.symmetric(horizontal: 8, vertical: 16), + padding: EdgeInsets.only(top: 16, right: 18.0, left: 16.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12) + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + "Graph Details", + fontSize: SizeConfig.textMultiplier * 2.8, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', + ), + SizedBox(height: 8,), + VitalSignDetailsWidget( + vitalList: vitalList, + title1: title1, + title2: title2, + viewKey: viewKey, + ), + ], + ), + ), + /*AppExpandableNotifier( // isExpand: true, headerWid: LineChartCurved(title: name,timeSeries:timeSeriesData,indexes: timeSeriesData.length~/5.5,), bodyWid: VitalSignDetailsWidget( @@ -43,26 +87,31 @@ class VitalSingChartAndDetials extends StatelessWidget { title2: title2, viewKey: viewKey, ), - ), - ], - ) : Container( - width: double.infinity, - height: MediaQuery.of(context).size.height, - child: Center( - child: AppText(TranslationBase.of(context).vitalSignDetailEmpty), - ), - ); + ),*/ + ], + ), + ) + : Container( + width: double.infinity, + height: MediaQuery.of(context).size.height, + child: Center( + child: AppText(TranslationBase.of(context).vitalSignDetailEmpty), + ), + ); } generateData() { if (vitalList.length > 0) { vitalList.reversed.toList().forEach( - (element) { - DateTime elementDate = DateUtils.getDateTimeFromServerFormat(element.createdOn); - if(element.toJson()[viewKey]!=null && element.toJson()[viewKey]?.toInt()!=0) + (element) { + DateTime elementDate = + DateUtils.getDateTimeFromServerFormat(element.createdOn); + if (element.toJson()[viewKey] != null && + element.toJson()[viewKey]?.toInt() != 0) timeSeriesData.add( TimeSeriesSales2( - new DateTime(elementDate.year, elementDate.month, elementDate.day), + new DateTime( + elementDate.year, elementDate.month, elementDate.day), element.toJson()[viewKey].toDouble(), ), ); diff --git a/lib/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart b/lib/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart index dd9f940f..e424bc72 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart @@ -1,9 +1,11 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart'; import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sign_details_blood_pressurewideget.dart'; import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/widgets/charts/app_time_series_chart.dart'; import 'package:doctor_app_flutter/widgets/shared/app_expandable_notifier.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:flutter/material.dart'; import 'package:charts_flutter/flutter.dart' as charts; @@ -36,26 +38,72 @@ class VitalSingChartBloodPressure extends StatelessWidget { @override Widget build(BuildContext context) { generateData(); - return Column( - children: [ - AppExpandableNotifier( - // isExpand: true, - headerWid: LineChartCurvedBloodPressure( - title: name, - timeSeries1: timeSeriesData1, - timeSeries2: timeSeriesData2, - indexes: timeSeriesData1.length ~/ 5.5, + return Padding( + padding: const EdgeInsets.all(10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.symmetric(horizontal: 8), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12) + ), + child: LineChartCurvedBloodPressure( + title: name, + timeSeries1: timeSeriesData1, + timeSeries2: timeSeriesData2, + indexes: timeSeriesData1.length ~/ 5.5, + ), ), - bodyWid: VitalSignBloodPressureWidget( - vitalList: vitalList, - title1: title1, - title2: title2, - title3: title3, - viewKey1: viewKey1, - viewKey2: viewKey2, + Container( + margin: EdgeInsets.symmetric(horizontal: 8, vertical: 16), + padding: EdgeInsets.only(top: 16, right: 18.0, left: 16.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12) + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + "Graph Details", + fontSize: SizeConfig.textMultiplier * 2.8, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.black, + fontFamily: 'Poppins', + ), + SizedBox(height: 8,), + VitalSignBloodPressureWidget( + vitalList: vitalList, + title1: title1, + title2: title2, + title3: title3, + viewKey1: viewKey1, + viewKey2: viewKey2, + ), + ], + ), ), - ), - ], + /*AppExpandableNotifier( + // isExpand: true, + headerWid: LineChartCurvedBloodPressure( + title: name, + timeSeries1: timeSeriesData1, + timeSeries2: timeSeriesData2, + indexes: timeSeriesData1.length ~/ 5.5, + ), + bodyWid: VitalSignBloodPressureWidget( + vitalList: vitalList, + title1: title1, + title2: title2, + title3: title3, + viewKey1: viewKey1, + viewKey2: viewKey2, + ), + ),*/ + ], + ), ); } diff --git a/lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart b/lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart index 195f6447..6e0192a8 100644 --- a/lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart +++ b/lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart @@ -44,7 +44,11 @@ class PatientProfileHeaderNewDesignAppBar extends StatelessWidget with Preferred onPressed: () => Navigator.pop(context), ), AppText( - patient.firstName!=null? (Helpers.capitalize(patient.firstName) + " " + Helpers.capitalize(patient.lastName)):'', + patient.firstName != null ? + (Helpers.capitalize(patient.firstName) + + " " + + Helpers.capitalize( + patient.lastName)) : Helpers.capitalize(patient.patientDetails.fullName), fontSize: SizeConfig.textMultiplier * 2.5, fontWeight: FontWeight.bold, backGroundcolor: Colors.white, From 5dcc875a0a37134481223143ad346dcaac413138 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Mon, 5 Apr 2021 13:01:08 +0300 Subject: [PATCH 03/23] first step from design of subject page and ExpandableSOAPWidget --- .../soap_update/expandable_SOAP_widget.dart | 61 +++++ .../subjective/update_subjective_page.dart | 241 ++++++++---------- .../soap_update/update_soap_index.dart | 66 +++-- 3 files changed, 204 insertions(+), 164 deletions(-) create mode 100644 lib/widgets/patients/profile/soap_update/expandable_SOAP_widget.dart diff --git a/lib/widgets/patients/profile/soap_update/expandable_SOAP_widget.dart b/lib/widgets/patients/profile/soap_update/expandable_SOAP_widget.dart new file mode 100644 index 00000000..24a69a0b --- /dev/null +++ b/lib/widgets/patients/profile/soap_update/expandable_SOAP_widget.dart @@ -0,0 +1,61 @@ +import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/widgets/shared/Text.dart'; +import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart'; +import 'package:eva_icons_flutter/eva_icons_flutter.dart'; +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:hexcolor/hexcolor.dart'; + +class ExpandableSOAPWidget extends StatelessWidget { + final bool isExpanded; + final Widget child; + final Function onTap; + final headerTitle; + + const ExpandableSOAPWidget( + {Key key, this.isExpanded, this.child, this.onTap, this.headerTitle}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + padding: EdgeInsets.symmetric(vertical: 20, horizontal: 10), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.all( + Radius.circular(10.0), + ), + border: Border.all( + color: HexColor('#707070'), + width: 0.30), + ), + child: HeaderBodyExpandableNotifier( + headerWidget: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Texts(headerTitle, + variant: isExpanded ? "bodyText" : '', + bold: isExpanded ? true : false, + fontSize: 20, + color: Colors.black), + Icon( + FontAwesomeIcons.asterisk, + color: AppGlobal.appPrimaryColor, + size: 12, + ) + ], + ), + InkWell( + onTap: onTap, + child: Icon( + isExpanded ? EvaIcons.arrowIosUpwardOutline: EvaIcons.arrowIosDownwardOutline)) + ], + ), + bodyWidget: child, + isExpand: isExpanded, + ), + ); + } +} \ No newline at end of file diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart index 3bc89a7f..c8ac819d 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart @@ -1,5 +1,4 @@ import 'package:doctor_app_flutter/client/base_app_client.dart'; -import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; @@ -20,14 +19,13 @@ import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_history_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_medication_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart'; -import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:hexcolor/hexcolor.dart'; + +import '../expandable_SOAP_widget.dart'; class UpdateSubjectivePage extends StatefulWidget { final Function changePageViewIndex; @@ -220,6 +218,9 @@ class _UpdateSubjectivePageState extends State { }, builder: (_, model, w) => AppScaffold( isShowAppBar: false, + backgroundColor: Theme + .of(context) + .scaffoldBackgroundColor, // baseViewModel: model, body: SingleChildScrollView( physics: ScrollPhysics(), @@ -232,46 +233,31 @@ class _UpdateSubjectivePageState extends State { SizedBox( height: 30, ), - HeaderBodyExpandableNotifier( - headerWidget: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Texts(TranslationBase.of(context).chiefComplaints.toUpperCase(), - variant: isChiefExpand ? "bodyText" : '', - bold: isChiefExpand ? true : false, - color: Colors.black), - Icon( - FontAwesomeIcons.asterisk, - color: AppGlobal.appPrimaryColor, - size: 12, - ) - ], - ), - InkWell( - onTap: () { - setState(() { - isChiefExpand = !isChiefExpand; - }); - }, - child: Icon( - isChiefExpand ? EvaIcons.minus : EvaIcons.plus)) - ], - ), - bodyWidget: Form( + ExpandableSOAPWidget( + headerTitle: TranslationBase + .of(context) + .chiefComplaints + .toUpperCase(), + onTap: () { + setState(() { + isChiefExpand = !isChiefExpand; + }); + }, + child: Form( key: formKey, child: Column(children: [ SizedBox( height: 20, ), Container( - margin: EdgeInsets.only(left: 10, right: 10, top: 15), + margin: + EdgeInsets.only(left: 10, right: 10, top: 15), child: TextFields( hasLabelText: complaintsController.text != '' ? true : false, - hintText: TranslationBase.of(context) + hintText: TranslationBase + .of(context) .addChiefComplaints, fontSize: 13.5, // hintColor: Colors.black, @@ -297,11 +283,11 @@ class _UpdateSubjectivePageState extends State { height: 20, ), Container( - margin: EdgeInsets.only(left: 10, right: 10, top: 15), + margin: + EdgeInsets.only(left: 10, right: 10, top: 15), child: TextFields( - hasLabelText: illnessController.text != '' - ? true - : false, + hasLabelText: + illnessController.text != '' ? true : false, showLabelText: true, hintText: TranslationBase .of(context) @@ -326,12 +312,15 @@ class _UpdateSubjectivePageState extends State { SizedBox( height: 10, ), - UpdateMedicationWidget(medicationController: medicationController,), + UpdateMedicationWidget( + medicationController: medicationController, + ), SizedBox( height: 10, ), Container( - margin: EdgeInsets.only(left: 10, right: 10, top: 15), + margin: + EdgeInsets.only(left: 10, right: 10, top: 15), child: TextFields( hasLabelText: medicationController.text != '' ? true @@ -358,117 +347,94 @@ class _UpdateSubjectivePageState extends State { SizedBox( height: 10, ), - ]), ), - isExpand: isChiefExpand, - ), - - SizedBox( - height: 30, - ), - Container( - width: double.infinity, - height: 1, - color: Color(0xffCCCCCC), + isExpanded: isChiefExpand, ), SizedBox( height: 30, ), - HeaderBodyExpandableNotifier( - headerWidget: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Texts(TranslationBase - .of(context) - .histories - .toUpperCase(), - variant: isHistoryExpand ? "bodyText" : '', - bold: isHistoryExpand ? true : false, - color: Colors.black), - ], - ), - InkWell( - onTap: () { - setState(() { - isHistoryExpand = !isHistoryExpand; - }); - }, - child: Icon(isHistoryExpand - ? EvaIcons.minus - : EvaIcons.plus)) - ], - ), - bodyWidget: Column( + + + ExpandableSOAPWidget( + headerTitle: TranslationBase + .of(context) + .histories + .toUpperCase(), + onTap: () { + setState(() { + isHistoryExpand = !isHistoryExpand; + }); + }, + child: Column( children: [ UpdateHistoryWidget(myHistoryList: widget.myHistoryList) ], ), - isExpand: isHistoryExpand, - ), - SizedBox( - height: 30, - ), - Container( - width: double.infinity, - height: 1, - color: Color(0xffCCCCCC), + isExpanded: isHistoryExpand, ), SizedBox( height: 30, ), - HeaderBodyExpandableNotifier( - headerWidget: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Texts(TranslationBase - .of(context) - .allergiesSoap - .toUpperCase(), - variant: isAllergiesExpand ? "bodyText" : '', - bold: isAllergiesExpand ? true : false, - color: Colors.black), - ], - ), - InkWell( - onTap: () { - setState(() { - isAllergiesExpand = !isAllergiesExpand; - }); - }, - child: Icon(isAllergiesExpand - ? EvaIcons.minus - : EvaIcons.plus)) - ], - ), - bodyWidget:Column( + + + ExpandableSOAPWidget( + headerTitle: TranslationBase + .of(context) + .allergiesSoap + .toUpperCase(), + onTap: () { + setState(() { + isAllergiesExpand = !isAllergiesExpand; + }); + }, + child: Column( children: [ - UpdateAllergiesWidget(myAllergiesList: widget.myAllergiesList,), + UpdateAllergiesWidget(myAllergiesList: widget + .myAllergiesList,), SizedBox( height: 30, ), ], - ) - , - isExpand: isAllergiesExpand, - ), - SizedBox( - height: 30, - ), - Container( - width: double.infinity, - height: 1, - color: Color(0xffCCCCCC), + ), + isExpanded: isAllergiesExpand, ), SizedBox( - height: 30, + height:MediaQuery.of(context).size.height * 0.2, ), - AppButton( - title: TranslationBase.of(context).next, + ], + ), + ), + ), + ), + bottomSheet: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.all( + Radius.circular(10.0), + ), + border: Border.all( + color: HexColor('#707070'), + width: 0.30), + ), + height: MediaQuery + .of(context) + .size + .height * 0.15, + width: double.infinity, + + child: Column( + children: [ + SizedBox( + height: 15, + ), + Container(child: FractionallySizedBox( + widthFactor: .80, + child: Center( + child: AppButton( + title: TranslationBase + .of(context) + .next, loading: model.state == ViewState.BusyLocal, onPressed: () async { addSubjectiveInfo( @@ -477,11 +443,13 @@ class _UpdateSubjectivePageState extends State { myHistoryList: widget.myHistoryList); }, ), - ], + ), + ),), + SizedBox( + height: 15, ), - ), - ), - ), + ], + ),), ), ); } @@ -624,12 +592,13 @@ class _UpdateSubjectivePageState extends State { numberOfWeeks: 0); if (model.patientChiefComplaintList.isEmpty) { // TODO: make it postChiefComplaint after it start to work - postChiefComplaintRequestModel.editedBy=''; + postChiefComplaintRequestModel.editedBy = ''; await model.postChiefComplaint(postChiefComplaintRequestModel); } else { await model.patchChiefComplaint(postChiefComplaintRequestModel); } } - } } + + diff --git a/lib/widgets/patients/profile/soap_update/update_soap_index.dart b/lib/widgets/patients/profile/soap_update/update_soap_index.dart index 5c646121..95d03cec 100644 --- a/lib/widgets/patients/profile/soap_update/update_soap_index.dart +++ b/lib/widgets/patients/profile/soap_update/update_soap_index.dart @@ -6,8 +6,6 @@ import 'package:doctor_app_flutter/models/SOAP/my_selected_examination.dart'; import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; -import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; -import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/steps_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/update_assessment_page.dart'; @@ -17,11 +15,13 @@ import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import '../patient-profile-header-new-design.dart'; class UpdateSoapIndex extends StatefulWidget { final bool isUpdate; const UpdateSoapIndex({Key key, this.isUpdate}) : super(key: key); + @override _UpdateSoapIndexState createState() => _UpdateSoapIndexState(); } @@ -65,30 +65,39 @@ class _UpdateSoapIndexState extends State builder: (_, model, w) => AppScaffold( // baseViewModel: model, isLoading: _isLoading, - appBarTitle: TranslationBase.of(context).healthRecordInformation, + isShowAppBar: false, + // appBarTitle: TranslationBase.of(context).healthRecordInformation, body: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - decoration: - BoxDecoration(boxShadow: [], color: Colors.white), + decoration: BoxDecoration( + boxShadow: [], + color: Theme.of(context).scaffoldBackgroundColor), child: Column( mainAxisAlignment: MainAxisAlignment.start, children: [ - PatientPageHeaderWidget(patient), + // PatientPageHeaderWidget(patient), + PatientProfileHeaderNewDesign(patient, '7', '7'), + Container( + width: double.infinity, + height: 1, + color: Color(0xffCCCCCC), + ), FractionallySizedBox( child: SingleChildScrollView( child: Container( + color: Theme.of(context).scaffoldBackgroundColor, height: MediaQuery.of(context).size.height * 0.75, child: Column( children: [ Container( margin: EdgeInsets.only( - left: - MediaQuery.of(context).size.width * 0.05, - right: - MediaQuery.of(context).size.width * 0.05), + left: MediaQuery.of(context).size.width * + 0.05, + right: MediaQuery.of(context).size.width * + 0.05), child: StepsWidget( index: _currentIndex, changeCurrentTab: changePageViewIndex, @@ -96,6 +105,7 @@ class _UpdateSoapIndexState extends State ), Expanded( child: PageView( + physics: NeverScrollableScrollPhysics(), controller: _controller, onPageChanged: (index) { @@ -106,32 +116,32 @@ class _UpdateSoapIndexState extends State scrollDirection: Axis.horizontal, children: [ UpdateSubjectivePage( - changePageViewIndex: changePageViewIndex, - myAllergiesList: myAllergiesList, - myHistoryList: myHistoryList, - patientInfo: patient, - changeLoadingState:changeLoadingState + changePageViewIndex: changePageViewIndex, + myAllergiesList: myAllergiesList, + myHistoryList: myHistoryList, + patientInfo: patient, + changeLoadingState: changeLoadingState ), UpdateObjectivePage( - changePageViewIndex: changePageViewIndex, - mySelectedExamination: - mySelectedExamination, - patientInfo: patient, - changeLoadingState:changeLoadingState + changePageViewIndex: changePageViewIndex, + mySelectedExamination: + mySelectedExamination, + patientInfo: patient, + changeLoadingState: changeLoadingState ), UpdateAssessmentPage( - changePageViewIndex: changePageViewIndex, - mySelectedAssessmentList: - mySelectedAssessment, - patientInfo: patient, - changeLoadingState:changeLoadingState + changePageViewIndex: changePageViewIndex, + mySelectedAssessmentList: + mySelectedAssessment, + patientInfo: patient, + changeLoadingState: changeLoadingState ), UpdatePlanPage( - changePageViewIndex: changePageViewIndex, - patientInfo: patient, + changePageViewIndex: changePageViewIndex, + patientInfo: patient, patientProgressNote: patientProgressNote, - changeLoadingState:changeLoadingState + changeLoadingState: changeLoadingState ) ], From 6300d3f0fc0176e351864ef15c5639305d5f2cd8 Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Mon, 5 Apr 2021 14:22:49 +0300 Subject: [PATCH 04/23] insurance approvals design fix --- .../patients/insurance_approvals_details.dart | 161 +++++++++++------- lib/widgets/shared/doctor_card_insurance.dart | 27 +-- 2 files changed, 115 insertions(+), 73 deletions(-) diff --git a/lib/screens/patients/insurance_approvals_details.dart b/lib/screens/patients/insurance_approvals_details.dart index ba93b780..98daef73 100644 --- a/lib/screens/patients/insurance_approvals_details.dart +++ b/lib/screens/patients/insurance_approvals_details.dart @@ -216,28 +216,26 @@ class _InsuranceApprovalsDetailsState extends State { Row( children: [ Texts( - 'Receipt on :', + 'Receipt on: ', color: Colors.grey[500], ), Texts( '${DateUtils.getDayMonthYearDateFormatted(DateUtils.getDateTimeFromServerFormat(model.insuranceApproval[indexInsurance].rceiptOn), isArabic: projectViewModel.isArabic)}', color: Colors.black, fontWeight: FontWeight.w600, - fontSize: 14, ), ], ), Row( children: [ Texts( - 'Exp on:', + 'Exp on: ', color: Colors.grey[500], ), Texts( '${DateUtils.getDayMonthYearDateFormatted(DateUtils.getDateTimeFromServerFormat(model.insuranceApproval[indexInsurance].expiryDate), isArabic: projectViewModel.isArabic)}', color: Colors.black, fontWeight: FontWeight.w600, - fontSize: 14, ), ], ), @@ -253,66 +251,109 @@ class _InsuranceApprovalsDetailsState extends State { Container( child: Column( children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceAround, - children: [ - Texts('Procedure'), - Texts('Status'), - Texts('Usage Status') - ], + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8.0), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceAround, + children: [ + Container( + width: MediaQuery.of(context) + .size + .width * + 0.33, + child: Texts( + 'Procedure', + fontWeight: FontWeight.w700, + ), + ), + Container( + width: MediaQuery.of(context) + .size + .width * + 0.33, + child: Texts( + 'Status', + fontWeight: FontWeight.w700, + ), + ), + Container( + width: MediaQuery.of(context) + .size + .width * + 0.21, + child: Texts( + 'Usage Status', + fontWeight: FontWeight.w700, + ), + ) + ], + ), + ), + Divider( + color: Colors.black, + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8.0), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceAround, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Container( + height: MediaQuery.of(context) + .size + .height * + 0.15, //130.0, + width: MediaQuery.of(context) + .size + .width * + 0.33, + child: Texts(model + .insuranceApproval[ + indexInsurance] + .approvalDetails + .procedureName), + ), + Container( + height: MediaQuery.of(context) + .size + .height * + 0.15, + width: MediaQuery.of(context) + .size + .width * + 0.33, + child: Texts(model + .insuranceApproval[ + indexInsurance] + .approvalDetails + .status), + ), + Container( + height: MediaQuery.of(context) + .size + .height * + 0.15, + width: MediaQuery.of(context) + .size + .width * + 0.21, + child: Texts(model + .insuranceApproval[ + indexInsurance] + .approvalDetails + .isInvoicedDesc), + ), + ], + ), ), Divider( color: Colors.black45, ), - Row( - mainAxisAlignment: - MainAxisAlignment.spaceAround, - children: [ - Container( - height: MediaQuery.of(context) - .size - .height * - 0.2, //130.0, - width: MediaQuery.of(context) - .size - .width * - 0.33, - child: Texts(model - .insuranceApproval[indexInsurance] - .approvalDetails - .procedureName), - ), - Container( - height: MediaQuery.of(context) - .size - .height * - 0.2, - width: MediaQuery.of(context) - .size - .width * - 0.33, - child: Texts(model - .insuranceApproval[indexInsurance] - .approvalDetails - .status), - ), - Container( - height: MediaQuery.of(context) - .size - .height * - 0.2, - width: MediaQuery.of(context) - .size - .width * - 0.25, - child: Texts(model - .insuranceApproval[indexInsurance] - .approvalDetails - .isInvoicedDesc), - ), - ], - ) ], ), ), diff --git a/lib/widgets/shared/doctor_card_insurance.dart b/lib/widgets/shared/doctor_card_insurance.dart index 4c2bc6d1..e87f4663 100644 --- a/lib/widgets/shared/doctor_card_insurance.dart +++ b/lib/widgets/shared/doctor_card_insurance.dart @@ -43,17 +43,18 @@ class DoctorCardInsurance extends StatelessWidget { return Container( margin: EdgeInsets.all(10), decoration: BoxDecoration( - border: Border( - left: BorderSide( - color: approvalStatus == "Approved" - ? Color(0xff359846) - : Color(0xffD02127), - width: 3.5), - top: BorderSide(color: Colors.white, width: 0.5), - bottom: BorderSide(color: Colors.white, width: 0.5), - right: BorderSide(color: Colors.white, width: 0.5), - ), - color: Colors.white), + border: Border( + left: BorderSide( + color: approvalStatus == "Approved" + ? Color(0xff359846) + : Color(0xffD02127), + width: 3.5), + top: BorderSide(color: Colors.white, width: 0.5), + bottom: BorderSide(color: Colors.white, width: 0.5), + right: BorderSide(color: Colors.white, width: 0.5), + ), + color: Colors.white, + ), child: Padding( padding: const EdgeInsets.all(15.0), child: InkWell( @@ -79,9 +80,9 @@ class DoctorCardInsurance extends StatelessWidget { child: Padding( padding: const EdgeInsets.all(5.0), child: Texts( - '$patientOut', + '$patientOut'.replaceAll(" ", ""), color: Colors.white, - fontSize: 15.0, + fontSize: 13.0, ), ), ) From e84dd573fed60e453a8e4b9cd1075d8c755b8074 Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Mon, 5 Apr 2021 14:53:19 +0300 Subject: [PATCH 05/23] fix the Procedure Card --- lib/screens/procedures/ProcedureCard.dart | 189 ++++++------ lib/screens/procedures/procedure_screen.dart | 7 +- lib/widgets/shared/doctor_card_insurance.dart | 282 +++++++++--------- 3 files changed, 245 insertions(+), 233 deletions(-) diff --git a/lib/screens/procedures/ProcedureCard.dart b/lib/screens/procedures/ProcedureCard.dart index d023dbc2..4fd632cf 100644 --- a/lib/screens/procedures/ProcedureCard.dart +++ b/lib/screens/procedures/ProcedureCard.dart @@ -25,116 +25,113 @@ class ProcedureCard extends StatelessWidget { borderRadius: BorderRadius.circular(15), color: Colors.white, ), - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Container( - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Container( - height: MediaQuery.of(context).size.height * .20, - width: 5, - decoration: BoxDecoration( - borderRadius: BorderRadius.only( - topLeft: Radius.circular(10), - bottomLeft: Radius.circular(10), - ), - color: entityList.orderType == 1 - ? Colors.red[500] - : Colors.black, + child: Container( + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + height: MediaQuery.of(context).size.height * .20, + width: 5, + decoration: BoxDecoration( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(10), + bottomLeft: Radius.circular(10), ), + color: entityList.orderType == 1 + ? Colors.red[500] + : Colors.black, ), - Expanded( - child: Container( - padding: EdgeInsets.only( - left: projectViewModel.isArabic ? 0 : 15, - right: projectViewModel.isArabic ? 15 : 0), - child: InkWell( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Texts( - entityList.orderType == 0 - ? 'Routine' - : 'Urgent', - color: entityList.orderType == 0 - ? Colors.black - : Colors.red[800], - fontWeight: FontWeight.w600, - ), - SizedBox( - height: 5, - ), - Texts( - entityList.procedureName, - bold: true, - fontSize: 14, - ), - ], - ), - ), - SizedBox( - width: 5, - ), - Column( - crossAxisAlignment: CrossAxisAlignment.end, - mainAxisAlignment: MainAxisAlignment.end, + ), + Expanded( + child: Container( + padding: EdgeInsets.only( + left: projectViewModel.isArabic ? 0 : 15, + right: projectViewModel.isArabic ? 15 : 0), + child: InkWell( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts( - '${DateUtils.getDayMonthYearDateFormatted(DateUtils.convertISOStringToDateTime(entityList.orderDate), isArabic: projectViewModel.isArabic)}', - color: Colors.black, + entityList.orderType == 0 + ? 'Routine' + : 'Urgent', + color: entityList.orderType == 0 + ? Colors.black + : Colors.red[800], fontWeight: FontWeight.w600, - fontSize: 14, + ), + SizedBox( + height: 5, ), Texts( - '${DateUtils.getHour(DateUtils.convertISOStringToDateTime(entityList.orderDate))}', - fontWeight: FontWeight.w600, - color: Colors.grey[700], + entityList.procedureName, + bold: true, fontSize: 14, ), ], ), - ], - ), - Row( - children: [ - Texts( - TranslationBase.of(context).orderNo, - color: Colors.grey, - fontSize: 12, - ), - Texts( - entityList.orderNo.toString(), - color: Colors.grey, - fontSize: 12, - ), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Texts( - entityList.remarks ?? '', - fontSize: 12, - ), - Icon(Icons.edit) - ], - ) - ], - ), - onTap: onTap, + ), + SizedBox( + width: 5, + ), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Texts( + '${DateUtils.getDayMonthYearDateFormatted(DateUtils.convertISOStringToDateTime(entityList.orderDate), isArabic: projectViewModel.isArabic)}', + color: Colors.black, + fontWeight: FontWeight.w600, + fontSize: 14, + ), + Texts( + '${DateUtils.getHour(DateUtils.convertISOStringToDateTime(entityList.orderDate))}', + fontWeight: FontWeight.w600, + color: Colors.grey[700], + fontSize: 14, + ), + ], + ), + ], + ), + Row( + children: [ + Texts( + TranslationBase.of(context).orderNo, + color: Colors.grey, + fontSize: 12, + ), + Texts( + entityList.orderNo.toString(), + color: Colors.grey, + fontSize: 12, + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Texts( + entityList.remarks ?? '', + fontSize: 12, + ), + Icon(Icons.edit) + ], + ) + ], ), + onTap: onTap, ), ), - ], - ), + ), + ], ), ), ); diff --git a/lib/screens/procedures/procedure_screen.dart b/lib/screens/procedures/procedure_screen.dart index ca658661..3c46cd3f 100644 --- a/lib/screens/procedures/procedure_screen.dart +++ b/lib/screens/procedures/procedure_screen.dart @@ -7,6 +7,7 @@ import 'package:doctor_app_flutter/screens/procedures/update-procedure.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart'; +import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; @@ -27,8 +28,8 @@ class ProcedureScreen extends StatelessWidget { onModelReady: (model) => model.getProcedure(mrn: patient.patientId), builder: (BuildContext context, ProcedureViewModel model, Widget child) => AppScaffold( - isShowAppBar: false, - appBarTitle: TranslationBase.of(context).orderProcedure, + isShowAppBar: true, + appBar: PatientProfileHeaderNewDesignAppBar(patient, arrivalType ?? '0', patientType), body: NetworkBaseView( baseViewModel: model, child: SingleChildScrollView( @@ -37,8 +38,6 @@ class ProcedureScreen extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - PatientProfileHeaderNewDesign( - patient, arrivalType ?? '0', patientType), SizedBox( height: 12, ), diff --git a/lib/widgets/shared/doctor_card_insurance.dart b/lib/widgets/shared/doctor_card_insurance.dart index 4c2bc6d1..498763af 100644 --- a/lib/widgets/shared/doctor_card_insurance.dart +++ b/lib/widgets/shared/doctor_card_insurance.dart @@ -1,14 +1,9 @@ import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; -import 'package:doctor_app_flutter/util/date-utils.dart'; -import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; - -import 'StarRating.dart'; import 'Text.dart'; class DoctorCardInsurance extends StatelessWidget { @@ -41,142 +36,163 @@ class DoctorCardInsurance extends StatelessWidget { Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); return Container( + width: double.maxFinite, + height: 160, margin: EdgeInsets.all(10), + padding: EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5), decoration: BoxDecoration( - border: Border( - left: BorderSide( - color: approvalStatus == "Approved" - ? Color(0xff359846) - : Color(0xffD02127), - width: 3.5), - top: BorderSide(color: Colors.white, width: 0.5), - bottom: BorderSide(color: Colors.white, width: 0.5), - right: BorderSide(color: Colors.white, width: 0.5), - ), - color: Colors.white), - child: Padding( - padding: const EdgeInsets.all(15.0), - child: InkWell( - onTap: onTap, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Texts( - "$approvalStatus", - color: approvalStatus == "Approved" - ? Color(0xff359846) - : Color(0xffD02127), - ), - Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.all( - Radius.circular(25.0), - ), - color: Color(0xff2E303A)), - child: Padding( - padding: const EdgeInsets.all(5.0), - child: Texts( - '$patientOut', - color: Colors.white, - fontSize: 15.0, - ), - ), - ) - ], - ), - Row( - children: [ - Expanded( - child: Texts( - doctorName, - bold: true, - )), - ], + borderRadius: BorderRadius.circular(15), + color: Colors.white, + ), + child: Container( + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + height: 160, + width: 5, + decoration: BoxDecoration( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(10), + bottomLeft: Radius.circular(10), + ), + color: approvalStatus == "Approved" ? Color(0xff359846) : Color(0xffD02127), ), - Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Container( - child: LargeAvatar( - name: doctorName, - url: profileUrl, - ), - width: 55, - height: 55, - ), - Expanded( - flex: 4, - child: Container( - margin: EdgeInsets.all(10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (orderNo != null && !isPrescriptions) - Row( - children: [ - Texts( - 'order No:', - color: Colors.grey[500], - ), - Texts( - orderNo ?? '', - ) - ], - ), - if (invoiceNO != null && !isPrescriptions) - Row( - children: [ - Texts( - 'Invoice:', - color: Colors.grey[500], - ), - Texts( - invoiceNO, - ) - ], - ), - if (isPrescriptions) - Row( - children: [ - Texts( - 'Clinic: ', - color: Colors.grey[500], - ), - Expanded( - child: Texts( - clinic, - ), - ) - ], + ), + Expanded( + child: Container( + padding: EdgeInsets.only( + left: projectViewModel.isArabic ? 0 : 15, + right: projectViewModel.isArabic ? 15 : 0), + child: InkWell( + onTap: onTap, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Texts( + "$approvalStatus", + color: approvalStatus == "Approved" + ? Color(0xff359846) + : Color(0xffD02127), + ), + Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.all( + Radius.circular(25.0), + ), + color: Color(0xff2E303A)), + child: Padding( + padding: const EdgeInsets.all(5.0), + child: Texts( + '$patientOut', + color: Colors.white, + fontSize: 13.0, ), - if (branch != null) - Row( - children: [ - Texts( - 'Approval No: ', - color: Colors.grey[500], - ), - Texts( - branch, - ) - ], - ) - ]), - ), + ), + ) + ], + ), + Row( + children: [ + Expanded( + child: Texts( + doctorName, + bold: true, + )), + ], + ), + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Container( + child: LargeAvatar( + name: doctorName, + url: profileUrl, + ), + width: 55, + height: 55, + ), + Expanded( + flex: 4, + child: Container( + margin: EdgeInsets.all(10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (orderNo != null && !isPrescriptions) + Row( + children: [ + Texts( + 'order No:', + color: Colors.grey[500], + ), + Texts( + orderNo ?? '', + ) + ], + ), + if (invoiceNO != null && !isPrescriptions) + Row( + children: [ + Texts( + 'Invoice:', + color: Colors.grey[500], + ), + Texts( + invoiceNO, + ) + ], + ), + if (isPrescriptions) + Row( + children: [ + Texts( + 'Clinic: ', + color: Colors.grey[500], + ), + Expanded( + child: Texts( + clinic, + ), + ) + ], + ), + if (branch != null) + Row( + children: [ + Texts( + 'Approval No: ', + color: Colors.grey[500], + ), + Texts( + branch, + ) + ], + ) + ]), + ), + ), + Icon( + EvaIcons.eye, + size: 38.0, + ) + ], + ), + ], ), - Icon( - EvaIcons.eye, - size: 38.0, - ) - ], + ), ), - ], - ), + ), + ], ), ), ); } } + + + + From c9009694960315db39f134bad3d096a68fe11195 Mon Sep 17 00:00:00 2001 From: mosazaid Date: Mon, 5 Apr 2021 17:10:37 +0300 Subject: [PATCH 06/23] design bugs --- .../profile/vital_sign/LineChartCurved.dart | 45 +++++++++++++++---- .../LineChartCurvedBloodPressure.dart | 2 +- ...al_sign_details_blood_pressurewideget.dart | 16 +++---- .../vital_sign_details_wideget.dart | 10 ++--- .../vital_sing_chart_and_detials.dart | 2 +- .../vital_sing_chart_blood_pressure.dart | 2 +- 6 files changed, 52 insertions(+), 25 deletions(-) diff --git a/lib/screens/patients/profile/vital_sign/LineChartCurved.dart b/lib/screens/patients/profile/vital_sign/LineChartCurved.dart index 6e9c425e..c6962eda 100644 --- a/lib/screens/patients/profile/vital_sign/LineChartCurved.dart +++ b/lib/screens/patients/profile/vital_sign/LineChartCurved.dart @@ -1,3 +1,4 @@ +import 'package:date_time_picker/date_time_picker.dart'; import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/widgets/charts/app_time_series_chart.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; @@ -14,6 +15,11 @@ class LineChartCurved extends StatelessWidget { List xAxixs = List(); List yAxixs = List(); + // DateFormat format = DateFormat("yyyy-MM-dd"); + DateFormat yearFormat = DateFormat("yyyy/MMM"); + DateFormat monthFormat = DateFormat("MMM"); + bool isDatesSameYear = true; + @override Widget build(BuildContext context) { getXaxix(); @@ -38,7 +44,7 @@ class LineChartCurved extends StatelessWidget { children: [ AppText( title, - fontSize: SizeConfig.textMultiplier * 2.5, + fontSize: SizeConfig.textMultiplier * 2.1, fontWeight: FontWeight.bold, backGroundcolor: Colors.black, fontFamily: 'Poppins', @@ -47,7 +53,9 @@ class LineChartCurved extends StatelessWidget { ], ), ), - SizedBox(height: 16,), + SizedBox( + height: 16, + ), Expanded( child: Padding( padding: const EdgeInsets.only(right: 18.0, left: 16.0), @@ -74,8 +82,9 @@ class LineChartCurved extends StatelessWidget { } } } + getYaxix() { - int indexess= (timeSeries.length*0.30).toInt(); + int indexess = (timeSeries.length * 0.30).toInt(); for (int index = 0; index < timeSeries.length; index++) { int mIndex = indexess * index; if (mIndex < timeSeries.length) { @@ -89,7 +98,6 @@ class LineChartCurved extends StatelessWidget { lineTouchData: LineTouchData( touchTooltipData: LineTouchTooltipData( tooltipBgColor: Colors.white, - ), touchCallback: (LineTouchResponse touchResponse) {}, handleBuiltInTouches: true, @@ -103,12 +111,23 @@ class LineChartCurved extends StatelessWidget { color: Colors.black, fontSize: 10, ), - rotateAngle:-65, + rotateAngle: -65, //rotateAngle:-65, margin: 22, getTitles: (value) { - if (timeSeries.length < 15) { + if (timeSeries.length > value.toInt()) { + DateTime dateTime = timeSeries[value.toInt()].time; + if (isDatesSameYear) { + return monthFormat.format(dateTime); + } else { + return yearFormat.format(dateTime); + } + } else { + return ''; + } + /*if (timeSeries.length < 15) { if (timeSeries.length > value.toInt()) { + DateTime dateTime = timeSeries[value.toInt()].time; return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}'; } else return ''; @@ -120,7 +139,7 @@ class LineChartCurved extends StatelessWidget { if (xAxixs.contains(value.toInt())) { return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}'; } - } + }*/ return ''; }, ), @@ -169,7 +188,7 @@ class LineChartCurved extends StatelessWidget { ), minX: 0, maxX: (timeSeries.length - 1).toDouble(), - maxY: getMaxY()+0.3, + maxY: getMaxY() + 0.3, minY: getMinY(), lineBarsData: getData(context), ); @@ -182,7 +201,7 @@ class LineChartCurved extends StatelessWidget { if (resultValueDouble > max) max = resultValueDouble; }); - return max.roundToDouble() ; + return max.roundToDouble(); } double getMinY() { @@ -198,8 +217,16 @@ class LineChartCurved extends StatelessWidget { List getData(context) { List spots = List(); + isDatesSameYear = true; + int previousDateYear = 0; for (int index = 0; index < timeSeries.length; index++) { spots.add(FlSpot(index.toDouble(), timeSeries[index].sales)); + if (isDatesSameYear == false || + (previousDateYear != 0 && + previousDateYear != timeSeries[index].time.year)) { + isDatesSameYear = false; + } + previousDateYear = timeSeries[index].time.year; } final LineChartBarData lineChartBarData1 = LineChartBarData( diff --git a/lib/screens/patients/profile/vital_sign/LineChartCurvedBloodPressure.dart b/lib/screens/patients/profile/vital_sign/LineChartCurvedBloodPressure.dart index ecc0f134..5eea8f3d 100644 --- a/lib/screens/patients/profile/vital_sign/LineChartCurvedBloodPressure.dart +++ b/lib/screens/patients/profile/vital_sign/LineChartCurvedBloodPressure.dart @@ -40,7 +40,7 @@ class LineChartCurvedBloodPressure extends StatelessWidget { children: [ AppText( title, - fontSize: SizeConfig.textMultiplier * 2.5, + fontSize: SizeConfig.textMultiplier * 2.1, fontWeight: FontWeight.bold, backGroundcolor: Colors.black, fontFamily: 'Poppins', diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_blood_pressurewideget.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_blood_pressurewideget.dart index 78293f31..98238c58 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_details_blood_pressurewideget.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_blood_pressurewideget.dart @@ -62,7 +62,7 @@ class _VitalSignDetailsWidgetState extends State { ),*/ child: AppText( TranslationBase.of(context).date, - fontSize: SizeConfig.textMultiplier * 2.0, + fontSize: SizeConfig.textMultiplier * 1.5, fontWeight: FontWeight.bold, backGroundcolor: Colors.black, fontFamily: 'Poppins', @@ -84,7 +84,7 @@ class _VitalSignDetailsWidgetState extends State { ),*/ child: AppText( widget.title2, - fontSize: SizeConfig.textMultiplier * 2.0, + fontSize: SizeConfig.textMultiplier * 1.5, fontWeight: FontWeight.bold, backGroundcolor: Colors.black, fontFamily: 'Poppins', @@ -106,7 +106,7 @@ class _VitalSignDetailsWidgetState extends State { ),*/ child: AppText( widget.title3, - fontSize: SizeConfig.textMultiplier * 2.0, + fontSize: SizeConfig.textMultiplier * 1.5, fontWeight: FontWeight.bold, backGroundcolor: Colors.black, fontFamily: 'Poppins', @@ -123,8 +123,8 @@ class _VitalSignDetailsWidgetState extends State { color: Colors.black, ), Table( - border: TableBorder.symmetric( - inside: BorderSide(width: 1.0, color: Colors.grey[300]), + border: TableBorder( + horizontalInside: BorderSide(width: 1.0, color: Colors.grey[300]), ), children: fullData(projectViewModel), ), @@ -165,7 +165,7 @@ class _VitalSignDetailsWidgetState extends State { child: AppText( '${projectViewModel.isArabic ? DateUtils.getWeekDayArabic(elementDate.weekday) : DateUtils.getWeekDay(elementDate.weekday)}, ${elementDate.day} ${projectViewModel.isArabic ? DateUtils.getMonthArabic(elementDate.month) : DateUtils.getMonth(elementDate.month)}, ${elementDate.year} ', // textAlign: TextAlign.center, - fontSize: SizeConfig.textMultiplier * 1.8, + fontSize: SizeConfig.textMultiplier * 1.6, fontWeight: FontWeight.w600, backGroundcolor: Colors.black, fontFamily: 'Poppins', @@ -179,7 +179,7 @@ class _VitalSignDetailsWidgetState extends State { child: AppText( '${vital.toJson()[widget.viewKey1]}', // textAlign: TextAlign.center, - fontSize: SizeConfig.textMultiplier * 1.8, + fontSize: SizeConfig.textMultiplier * 1.6, fontWeight: FontWeight.w600, backGroundcolor: Colors.black, fontFamily: 'Poppins', @@ -193,7 +193,7 @@ class _VitalSignDetailsWidgetState extends State { child: AppText( '${vital.toJson()[widget.viewKey2]}', // textAlign: TextAlign.center, - fontSize: SizeConfig.textMultiplier * 1.8, + fontSize: SizeConfig.textMultiplier * 1.6, fontWeight: FontWeight.w600, backGroundcolor: Colors.black, fontFamily: 'Poppins', diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_wideget.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_wideget.dart index 65122b31..4941ed87 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_details_wideget.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_wideget.dart @@ -55,7 +55,7 @@ class _VitalSignDetailsWidgetState extends State { ),*/ child: AppText( TranslationBase.of(context).date, - fontSize: SizeConfig.textMultiplier * 2.0, + fontSize: SizeConfig.textMultiplier * 1.6, fontWeight: FontWeight.bold, backGroundcolor: Colors.black, fontFamily: 'Poppins', @@ -77,7 +77,7 @@ class _VitalSignDetailsWidgetState extends State { ),*/ child: AppText( widget.title2, - fontSize: SizeConfig.textMultiplier * 2.0, + fontSize: SizeConfig.textMultiplier * 1.6, fontWeight: FontWeight.bold, backGroundcolor: Colors.black, fontFamily: 'Poppins', @@ -94,8 +94,8 @@ class _VitalSignDetailsWidgetState extends State { color: Colors.black, ), Table( - border: TableBorder.symmetric( - inside: BorderSide(width: 1.0, color: Colors.grey[300]), + border: TableBorder( + horizontalInside: BorderSide(width: 1.0, color: Colors.grey[300]), ), children: fullData(projectViewModel), ), @@ -107,7 +107,7 @@ class _VitalSignDetailsWidgetState extends State { List fullData(ProjectViewModel projectViewModel) { List tableRow = []; - /* tableRow.add(TableRow(children: [ + /* tableRow.add(TableRow(children: [ ]));*/ widget.vitalList.forEach((vital) { diff --git a/lib/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart b/lib/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart index 0fe640ff..a48afcf3 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart @@ -63,7 +63,7 @@ class VitalSingChartAndDetials extends StatelessWidget { children: [ AppText( "Graph Details", - fontSize: SizeConfig.textMultiplier * 2.8, + fontSize: SizeConfig.textMultiplier * 2.1, fontWeight: FontWeight.bold, backGroundcolor: Colors.black, fontFamily: 'Poppins', diff --git a/lib/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart b/lib/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart index e424bc72..934a88b8 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart @@ -68,7 +68,7 @@ class VitalSingChartBloodPressure extends StatelessWidget { children: [ AppText( "Graph Details", - fontSize: SizeConfig.textMultiplier * 2.8, + fontSize: SizeConfig.textMultiplier * 2.3, fontWeight: FontWeight.bold, backGroundcolor: Colors.black, fontFamily: 'Poppins', From f7235504fca5c847624d13d6e4317e21812a9969 Mon Sep 17 00:00:00 2001 From: mosazaid Date: Mon, 5 Apr 2021 17:14:07 +0300 Subject: [PATCH 07/23] fixes --- lib/screens/patients/profile/vital_sign/LineChartCurved.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/screens/patients/profile/vital_sign/LineChartCurved.dart b/lib/screens/patients/profile/vital_sign/LineChartCurved.dart index c6962eda..e87a7a39 100644 --- a/lib/screens/patients/profile/vital_sign/LineChartCurved.dart +++ b/lib/screens/patients/profile/vital_sign/LineChartCurved.dart @@ -232,7 +232,7 @@ class LineChartCurved extends StatelessWidget { final LineChartBarData lineChartBarData1 = LineChartBarData( spots: spots, isCurved: true, - colors: [Theme.of(context).primaryColor], + colors: [Colors.red]/*[Theme.of(context).primaryColor]*/, barWidth: 5, isStrokeCapRound: true, dotData: FlDotData( From 92d33abac0140f6251d4625d8c705d25dbd38241 Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Mon, 5 Apr 2021 17:24:29 +0300 Subject: [PATCH 08/23] adding Doctor image in medical file & adding DoctorApp new Icons --- assets/fonts/DoctorApp.ttf | Bin 18876 -> 40296 bytes lib/config/config.dart | 2 +- lib/core/model/medical_file_model.dart | 4 +- lib/icons_app/config.json | 2911 +++++++++++++---- lib/icons_app/doctor_app_icons.dart | 255 ++ .../medical-file/medical_file_page.dart | 4 +- pubspec.lock | 6 +- 7 files changed, 2559 insertions(+), 623 deletions(-) diff --git a/assets/fonts/DoctorApp.ttf b/assets/fonts/DoctorApp.ttf index 0cf366461d3c2dc51d32a17f393b98f4e88cb659..6eb666bec7bac8f9323dfb14b503b7295ae8eec6 100644 GIT binary patch delta 21817 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 I(zWsb1F=9g$N&HU delta 883 zcmY+BUr19?9LK+BcN^y4*>t)sH@(g*m{1XWl8RWCm^}nZ4~E>fYg=q{ZOb$t=0k*# zkaQ8uhv-QNeY^P*z7$kGg#95w!G|7v_~DZULJ!65cRdDm4xjV8zwbHc_vapZ+58lb$2HfX>GgB#DONKJ(Q+)Ot6HBphXwkL9 z-z!Wcl`V}udTgz8ylwWUG9w91yxaW%xPG$VlhwxZ;=1_F`_1gP=CrK7vROtG5MSkl z)%lTPiISx&z{Rh8h#*+KYS{&7)}Hmtt=YB; zqRuP$?rFr)!}F4y#zUpEtsaNr<-JDu_~$jlj{t%=f)<1jMl0IPHD|S`6fZfuJ=%?J z*T=G#voTx^s6m2ywv7^w3GzueI*6aehVy{jCpn$}FLJCT_9#BZam4U*N z0WK1xO1NB5M8buGIwafzC??@%K)n)f3)Cm!20{H2v>8)1YNY09?Q_pU{cgiria}mx?{6sPi^)mF zd^;OeglhbliyP0Lt{QjebC)X$`mkOo=t*aBJeR0S7PNbMVJMv#$+ { .timelines[index].clinicName, branch: model.medicalFileList[0].entityList[0] .timelines[index].projectName, - profileUrl: - 'https://previews.123rf.com/images/yupiramos/yupiramos1705/yupiramos170524444/78443570-a-female-doctor-avatar-character-vector-illustration-design.jpg', + profileUrl: model.medicalFileList[0] + .entityList[0].timelines[index].doctorImage, appointmentDate: DateUtils.getDateTimeFromServerFormat( model.medicalFileList[0].entityList[0] diff --git a/pubspec.lock b/pubspec.lock index 46eca7cf..e15e02c9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -608,7 +608,7 @@ packages: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.3" + version: "1.3.0-nullsafety.4" mime: dependency: transitive description: @@ -900,7 +900,7 @@ packages: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.10.0-nullsafety.1" + version: "1.10.0-nullsafety.2" stream_channel: dependency: transitive description: @@ -1084,5 +1084,5 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=2.10.0 <2.11.0" + dart: ">=2.10.0 <=2.11.0-213.1.beta" flutter: ">=1.22.0 <2.0.0" From 6ba0576ee805294a167aa892fba007c89241af0c Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Mon, 5 Apr 2021 18:22:33 +0300 Subject: [PATCH 09/23] fix steps widget --- .../profile/soap_update/steps_widget.dart | 413 +++++++++--------- .../subjective/update_Chief_complaints.dart | 149 +++++++ .../subjective/update_subjective_page.dart | 110 +---- lib/widgets/shared/new_text_Field.dart | 229 ++++++++++ 4 files changed, 595 insertions(+), 306 deletions(-) create mode 100644 lib/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart create mode 100644 lib/widgets/shared/new_text_Field.dart diff --git a/lib/widgets/patients/profile/soap_update/steps_widget.dart b/lib/widgets/patients/profile/soap_update/steps_widget.dart index a5bcf434..dab907b2 100644 --- a/lib/widgets/patients/profile/soap_update/steps_widget.dart +++ b/lib/widgets/patients/profile/soap_update/steps_widget.dart @@ -1,9 +1,9 @@ -import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; -import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; class StepsWidget extends StatelessWidget { @@ -20,7 +20,7 @@ class StepsWidget extends StatelessWidget { ? Stack( children: [ Container( - height: 120, + height: 150, width: MediaQuery.of(context).size.width, color: Colors.transparent, child: Center( @@ -32,7 +32,7 @@ class StepsWidget extends StatelessWidget { ), ), Positioned( - top: index == 0 ? 15 : 30, + top: 45, left: 0, child: InkWell( onTap: () => changeCurrentTab(0), @@ -40,152 +40,155 @@ class StepsWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - width: index == 0 ? 70 : 50, - height: index == 0 ? 70 : 50, + width: 50, + height:50, decoration: BoxDecoration( border: index == 0 - ? Border.all(color: Color(0xFFB9382C), width: 2) + ? Border.all(color: Color(0xFFCC9B14), width: 2) : index > 0 - ? null - : Border.all( - color: Colors.black, width: 0.75), + ? null + : Border.all( + color: Colors.black, width: 0.75), shape: BoxShape.circle, color: index == 0 - ? Colors.white + ? Color(0xFFCC9B14) : index > 0 - ? Color(0xFFB9382C) - : Color(0xFFCCCCCC), + ? Color(0xFF359846) + : Color(0xFFCCCCCC), ), child: Center( - child: Texts( - '1', - variant: index == 0 ? "heading2" : "", - bold: true, - color: index == 0 - ? Colors.black - : index > 0 - ? Colors.white - : Colors.grey, - ), + child: Icon(FontAwesomeIcons.check, size: 25, + color: Colors.white,) ), ), SizedBox( - height: index == 0 ? 5 : 10, + height:5 ), - AppText( - "SUBJECTIVE", - fontWeight: FontWeight.bold, - fontSize: 14, + Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + AppText( + "Subjective", + fontWeight: FontWeight.bold, + fontSize: 14, + ), + StatusLabel(selectedStepId: index, stepId: 0,), + + ], ), ], ), ), ), Positioned( - top: index == 1 ? 15 : 30, - left: MediaQuery.of(context).size.width * 0.28, + top: 45, + left: MediaQuery + .of(context) + .size + .width * 0.28, child: InkWell( onTap: () => index >= 1 ? changeCurrentTab(1) : null, child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - width: index == 1 ? 70 : 50, - height: index == 1 ? 70 : 50, + width: 50, + height: 50, decoration: BoxDecoration( border: index == 1 - ? Border.all(color: Color(0xFFB9382C), width: 2) + ? Border.all(color: Color(0xFFCC9B14), width: 2) : index > 2 - ? null - : Border.all( - color: Color(0xFFCCCCCC), width: 0.75), + ? null + : Border.all( + color: Color(0xFFCCCCCC), width: 0.75), shape: BoxShape.circle, color: index == 1 - ? Colors.white + ? Color(0xFFCC9B14) : index > 1 - ? Color(0xFFB9382C) - : Color(0xFFCCCCCC), + ? Color(0xFF359846) + : Color(0xFFCCCCCC), ), child: Center( - child: Texts( - '2', - variant: index == 1 ? "heading2" : '', - bold: true, - color: index == 1 - ? Colors.black - : index > 1 - ? Colors.white - : Colors.grey, - ), + child: Icon(FontAwesomeIcons.check, size: 25, + color: Colors.white,) ), ), SizedBox( - height: index == 1 ? 5 : 10, + height:5, ), - AppText( - "OBJECTIVE", - fontWeight: FontWeight.bold, - fontSize:14, + Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + AppText( + "Objective", + fontWeight: FontWeight.bold, + fontSize: 14, + ), + + StatusLabel(selectedStepId: index, stepId: 1,), + + ], ), ], ), ), ), Positioned( - top: index == 2 ? 15 : 30, - left: MediaQuery.of(context).size.width * 0.52, + top: 45, + left: MediaQuery + .of(context) + .size + .width * 0.52, child: InkWell( onTap: () { - if(index >= 3) - changeCurrentTab(2); + if (index >= 3) + changeCurrentTab(2); }, child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - width: index == 2 ? 70 : 50, - height: index == 2 ? 70 : 50, + width:50, + height:50, decoration: BoxDecoration( border: index == 2 - ? Border.all(color: Color(0xFFB9382C), width: 2) + ? Border.all(color: Color(0xFFCC9B14), width: 2) : index > 2 - ? null - : Border.all( - color: Color(0xFFCCCCCC), width: 0.75), + ? null + : Border.all( + color: Color(0xFFCCCCCC), width: 0.75), shape: BoxShape.circle, color: index == 2 - ? Colors.white + ? Color(0xFFCC9B14) : index > 2 - ? Color(0xFFB9382C) - : Color(0xFFCCCCCC), + ? Color(0xFFCC9B14) + : Color(0xFFCCCCCC), ), child: Center( - child: Texts( - '3', - variant: index == 2 ? "heading2" : '', - bold: true, - color: index == 2 - ? Colors.black - : index > 2 - ? Colors.white - : Colors.grey, - ), + child: Icon(FontAwesomeIcons.check, size: 25, + color: Colors.white,) ), ), SizedBox( - height: index == 2 ? 5 : 10, + height:5, ), - AppText( - "ASSESSMENT", - fontWeight: FontWeight.bold, - fontSize:14, + Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + AppText( + "Assessment", + fontWeight: FontWeight.bold, + fontSize: 14, + ), + StatusLabel(selectedStepId: index, stepId: 2,), + ], ), ], ), ), ), Positioned( - top: index == 3 ? 15 : 30, + top: 45, right: 0, child: InkWell( onTap: () => index >= 3 ? changeCurrentTab(4) : null, @@ -193,45 +196,42 @@ class StepsWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - width: index == 3 ? 70 : 50, - height: index == 3 ? 70 : 50, + width:50, + height:50, decoration: BoxDecoration( border: index == 3 - ? Border.all(color: Color(0xFFB9382C), width: 2) + ? Border.all(color: Color(0xFFCC9B14), width: 2) : index > 3 - ? null - : Border.all( - color: Color(0xFFCCCCCC), width: 0.75), + ? null + : Border.all( + color: Color(0xFFCCCCCC), width: 0.75), shape: BoxShape.circle, color: index == 3 - ? Colors.white + ? Color(0xFFCC9B14) : index > 3 - ? Color(0xFFB9382C) - : Color(0xFFCCCCCC), + ? Color(0xFF359846) + : Color(0xFFCCCCCC), ), child: Center( - child: Texts( - '4', - variant: index == 3 ? "heading2" : '', - bold: true, - color: index == 3 - ? Colors.black - : index > 3 - ? Colors.white - : Colors.grey, - ), - ) + child: Icon(FontAwesomeIcons.check, size: 25, + color: Colors.white,) + ), ), SizedBox( - height: index == 3 ? 5 : 10, + height:5, ), Center( - child: AppText( - "PLAN", - fontWeight: FontWeight.bold, - textAlign: TextAlign.center, - fontSize:14, - ), + child: Column( + children: [ + AppText( + "Plan", + fontWeight: FontWeight.bold, + textAlign: TextAlign.center, + fontSize: 14, + ), + StatusLabel(selectedStepId: index, stepId: 3,), + ], + ), ), ], ), @@ -242,8 +242,11 @@ class StepsWidget extends StatelessWidget { : Stack( children: [ Container( - height: 120, - width: MediaQuery.of(context).size.width, + height: 150, + width: MediaQuery + .of(context) + .size + .width, color: Colors.transparent, child: Center( child: Divider( @@ -254,7 +257,7 @@ class StepsWidget extends StatelessWidget { ), ), Positioned( - top: index == 0 ? 15 : 30, + top: 45, right: 0, child: InkWell( onTap: () => changeCurrentTab(0), @@ -262,37 +265,29 @@ class StepsWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - width: index == 0 ? 70 : 50, - height: index == 0 ? 70 : 50, + width: 50, + height:50, decoration: BoxDecoration( border: index == 0 - ? Border.all(color: Color(0xFFB9382C), width: 2) + ? Border.all(color: Color(0xFFCC9B14), width: 2) : index > 0 - ? null - : Border.all( - color: Colors.black, width: 0.75), + ? null + : Border.all( + color: Colors.black, width: 0.75), shape: BoxShape.circle, color: index == 0 - ? Colors.white + ? Color(0xFFCC9B14) : index > 0 - ? Color(0xFFB9382C) - : Color(0xFFCCCCCC), + ? Color(0xFF359846) + : Color(0xFFCCCCCC), ), child: Center( - child: Texts( - '1', - variant: index == 0 ? "heading2" : "", - bold: true, - color: index == 0 - ? Colors.black - : index > 0 - ? Colors.white - : Colors.grey, - ), + child: Icon(FontAwesomeIcons.check, size: 25, + color: Colors.white,) ), ), SizedBox( - height: index == 0 ? 5 : 10, + height:5 ), AppText( "شخصي", @@ -304,45 +299,40 @@ class StepsWidget extends StatelessWidget { ), ), Positioned( - top: index == 1 ? 15 : 30, - right: MediaQuery.of(context).size.width * 0.28, + top: 45, + right: MediaQuery + .of(context) + .size + .width * 0.28, child: InkWell( onTap: () => index >= 2 ? changeCurrentTab(1) : null, child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - width: index == 1 ? 70 : 50, - height: index == 1 ? 70 : 50, + width: 50, + height: 50, decoration: BoxDecoration( border: index == 1 - ? Border.all(color: Color(0xFFB9382C), width: 2) + ? Border.all(color: Color(0xFFCC9B14), width: 2) : index > 2 - ? null - : Border.all( - color: Color(0xFFCCCCCC), width: 0.75), + ? null + : Border.all( + color: Color(0xFFCCCCCC), width: 0.75), shape: BoxShape.circle, color: index == 1 - ? Colors.white + ? Color(0xFFCC9B14) : index > 1 - ? Color(0xFFB9382C) - : Color(0xFFCCCCCC), + ? Color(0xFF359846) + : Color(0xFFCCCCCC), ), child: Center( - child: Texts( - '2', - variant: index == 1 ? "heading2" : '', - bold: true, - color: index == 1 - ? Colors.black - : index > 1 - ? Colors.white - : Colors.grey, - ), + child: Icon(FontAwesomeIcons.check, size: 25, + color: Colors.white,) ), ), SizedBox( - height: index == 1 ? 5 : 10, + height:5 ), AppText( "هدف", @@ -354,45 +344,40 @@ class StepsWidget extends StatelessWidget { ), ), Positioned( - top: index == 2 ? 15 : 30, - right: MediaQuery.of(context).size.width * 0.52, + top: 50, + right: MediaQuery + .of(context) + .size + .width * 0.52, child: InkWell( onTap: () => index >= 3 ? changeCurrentTab(2) : null, child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - width: index == 2 ? 70 : 50, - height: index == 2 ? 70 : 50, + width:50, + height:50, decoration: BoxDecoration( border: index == 2 - ? Border.all(color: Color(0xFFB9382C), width: 2) + ? Border.all(color: Color(0xFFCC9B14), width: 2) : index > 2 - ? null - : Border.all( - color: Color(0xFFCCCCCC), width: 0.75), + ? null + : Border.all( + color: Color(0xFFCCCCCC), width: 0.75), shape: BoxShape.circle, color: index == 2 - ? Colors.white + ? Color(0xFFCC9B14) : index > 2 - ? Color(0xFFB9382C) - : Color(0xFFCCCCCC), + ? Color(0xFFCC9B14) + : Color(0xFFCCCCCC), ), child: Center( - child: Texts( - '3', - variant: index == 2 ? "heading2" : '', - bold: true, - color: index == 2 - ? Colors.black - : index > 2 - ? Colors.white - : Colors.grey, - ), + child: Icon(FontAwesomeIcons.check, size: 25, + color: Colors.white,) ), ), SizedBox( - height: index == 2 ? 5 : 10, + height:5, ), Padding( @@ -408,7 +393,7 @@ class StepsWidget extends StatelessWidget { ), ), Positioned( - top: index == 3 ? 15 : 30, + top: 45, left: 0, child: InkWell( onTap: () => index >= 3 ? changeCurrentTab(4) : null, @@ -416,37 +401,29 @@ class StepsWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - width: index == 3 ? 70 : 50, - height: index == 3 ? 70 : 50, + width:50, + height:50, decoration: BoxDecoration( border: index == 3 - ? Border.all(color: Color(0xFFB9382C), width: 2) + ? Border.all(color: Color(0xFFCC9B14), width: 2) : index > 3 - ? null - : Border.all( - color: Color(0xFFCCCCCC), width: 0.75), + ? null + : Border.all( + color: Color(0xFFCCCCCC), width: 0.75), shape: BoxShape.circle, color: index == 3 - ? Colors.white + ? Color(0xFFCC9B14) : index > 3 - ? Color(0xFFB9382C) - : Color(0xFFCCCCCC), + ? Color(0xFFCC9B14) + : Color(0xFFCCCCCC), ), child: Center( - child: Texts( - '4', - variant: index == 3 ? "heading2" : '', - bold: true, - color: index == 3 - ? Colors.black - : index > 3 - ? Colors.white - : Colors.grey, - ), + child: Icon(FontAwesomeIcons.check, size: 25, + color: Colors.white,) ), ), SizedBox( - height: index == 3 ? 5 : 10, + height:5, ), Container( margin: EdgeInsets.only(right:index == 3? 15:0), @@ -454,13 +431,49 @@ class StepsWidget extends StatelessWidget { "خطة", fontWeight: FontWeight.bold, fontSize:14, - ), + ), ), ], ), ), ), ], - ); + ); + } +} + +class StatusLabel extends StatelessWidget { + const StatusLabel({ + Key key, this.stepId, this.selectedStepId, + }) : super(key: key); + + final int stepId; + final int selectedStepId; + + @override + Widget build(BuildContext context) { + return Container( + padding: EdgeInsets.symmetric(horizontal: 5, vertical: 3), + decoration: BoxDecoration( + color: stepId == selectedStepId ? Color(0xFFF1E9D3) : stepId < + selectedStepId ? Color(0xFFD8E8DB) : Color(0xFFCCCCCC), + borderRadius: BorderRadius.all( + Radius.circular(5.0), + ), + border: Border.all( + color: HexColor('#707070'), + width: 0.30), + ), + child: AppText( + stepId == selectedStepId ? "inProgress" : stepId < selectedStepId + ? "Completed" + : " Locked ", + fontWeight: FontWeight.bold, + textAlign: TextAlign.center, + fontSize: 10, + color: stepId == selectedStepId ? Color(0xFFCC9B14) : stepId < + selectedStepId ? Color(0xFF359846) : Color(0xFF969696), + ), + ); } } diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart b/lib/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart new file mode 100644 index 00000000..90211413 --- /dev/null +++ b/lib/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart @@ -0,0 +1,149 @@ +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_medication_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; +import 'package:doctor_app_flutter/widgets/shared/new_text_Field.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:hexcolor/hexcolor.dart'; + +class UpdateChiefComplaints extends StatelessWidget { + const UpdateChiefComplaints({ + Key key, + @required this.formKey, + @required this.complaintsController, + @required this.illnessController, + @required this.medicationController, + }) : super(key: key); + + final GlobalKey formKey; + final TextEditingController complaintsController; + final TextEditingController illnessController; + final TextEditingController medicationController; + + @override + Widget build(BuildContext context) { + return Form( + key: formKey, + child: Column(children: [ + SizedBox( + height: 20, + ), + + Container( + + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.all( + Radius.circular(10.0), + ), + border: Border.all( + color: HexColor('#707070'), + width: 0.30), + ), + child: NewTextFields( + hintText: TranslationBase.of(context).addChiefComplaints, + controller: complaintsController, + ), + ), + Container( + margin: + EdgeInsets.only(left: 10, right: 10, top: 15), + child: TextFields( + hasLabelText: complaintsController.text != '' + ? true + : false, + hintText: TranslationBase + .of(context) + .addChiefComplaints, + fontSize: 13.5, + // hintColor: Colors.black, + showLabelText: true, + fontWeight: FontWeight.w600, + maxLines: 25, + minLines: 13, + controller: complaintsController, + validator: (value) { + if (value == null || value == "") + return TranslationBase.of(context) + .emptyMessage; + else if (value.length < 25) + return TranslationBase + .of(context) + .chiefComplaintLength; + //""; + else + return null; + }), + ), + SizedBox( + height: 20, + ), + Container( + margin: + EdgeInsets.only(left: 10, right: 10, top: 15), + child: TextFields( + hasLabelText: + illnessController.text != '' ? true : false, + showLabelText: true, + hintText: TranslationBase + .of(context) + .historyOfPresentIllness, + fontSize: 13.5, + // hintColor: Colors.black, + fontWeight: FontWeight.w600, + maxLines: 25, + minLines: 13, + controller: illnessController, + validator: (value) { + if (value == null || value == "") + return TranslationBase.of(context) + .emptyMessage; + else + return null; + }), + ), + SizedBox( + height: 20, + ), + SizedBox( + height: 10, + ), + UpdateMedicationWidget( + medicationController: medicationController, + ), + SizedBox( + height: 10, + ), + Container( + margin: + EdgeInsets.only(left: 10, right: 10, top: 15), + child: TextFields( + hasLabelText: medicationController.text != '' + ? true + : false, + showLabelText: true, + hintText: TranslationBase + .of(context) + .currentMedications, + fontSize: 13.5, + // hintColor: Colors.black, + fontWeight: FontWeight.w600, + maxLines: 23, + minLines: 10, + controller: medicationController, + validator: (value) { + if (value == null || value == "") + return TranslationBase + .of(context) + .emptyMessage; + else + return null; + }), + ), + SizedBox( + height: 10, + ), + ]), + ); + } +} \ No newline at end of file diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart index c8ac819d..140fec54 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart @@ -16,6 +16,7 @@ import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_history_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_medication_widget.dart'; @@ -243,112 +244,7 @@ class _UpdateSubjectivePageState extends State { isChiefExpand = !isChiefExpand; }); }, - child: Form( - key: formKey, - child: Column(children: [ - SizedBox( - height: 20, - ), - Container( - margin: - EdgeInsets.only(left: 10, right: 10, top: 15), - child: TextFields( - hasLabelText: complaintsController.text != '' - ? true - : false, - hintText: TranslationBase - .of(context) - .addChiefComplaints, - fontSize: 13.5, - // hintColor: Colors.black, - showLabelText: true, - fontWeight: FontWeight.w600, - maxLines: 25, - minLines: 13, - controller: complaintsController, - validator: (value) { - if (value == null || value == "") - return TranslationBase.of(context) - .emptyMessage; - else if (value.length < 25) - return TranslationBase - .of(context) - .chiefComplaintLength; - //""; - else - return null; - }), - ), - SizedBox( - height: 20, - ), - Container( - margin: - EdgeInsets.only(left: 10, right: 10, top: 15), - child: TextFields( - hasLabelText: - illnessController.text != '' ? true : false, - showLabelText: true, - hintText: TranslationBase - .of(context) - .historyOfPresentIllness, - fontSize: 13.5, - // hintColor: Colors.black, - fontWeight: FontWeight.w600, - maxLines: 25, - minLines: 13, - controller: illnessController, - validator: (value) { - if (value == null || value == "") - return TranslationBase.of(context) - .emptyMessage; - else - return null; - }), - ), - SizedBox( - height: 20, - ), - SizedBox( - height: 10, - ), - UpdateMedicationWidget( - medicationController: medicationController, - ), - SizedBox( - height: 10, - ), - Container( - margin: - EdgeInsets.only(left: 10, right: 10, top: 15), - child: TextFields( - hasLabelText: medicationController.text != '' - ? true - : false, - showLabelText: true, - hintText: TranslationBase - .of(context) - .currentMedications, - fontSize: 13.5, - // hintColor: Colors.black, - fontWeight: FontWeight.w600, - maxLines: 23, - minLines: 10, - controller: medicationController, - validator: (value) { - if (value == null || value == "") - return TranslationBase - .of(context) - .emptyMessage; - else - return null; - }), - ), - SizedBox( - height: 10, - ), - ]), - ), + child: UpdateChiefComplaints(formKey: formKey, complaintsController: complaintsController, illnessController: illnessController, medicationController: medicationController), isExpanded: isChiefExpand, ), SizedBox( @@ -602,3 +498,5 @@ class _UpdateSubjectivePageState extends State { } + + diff --git a/lib/widgets/shared/new_text_Field.dart b/lib/widgets/shared/new_text_Field.dart new file mode 100644 index 00000000..dc361abd --- /dev/null +++ b/lib/widgets/shared/new_text_Field.dart @@ -0,0 +1,229 @@ +import 'package:eva_icons_flutter/eva_icons_flutter.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class NumberTextInputFormatter extends TextInputFormatter { + @override + TextEditingValue formatEditUpdate( + TextEditingValue oldValue, TextEditingValue newValue) { + final int newTextLength = newValue.text.length; + int selectionIndex = newValue.selection.end; + int usedSubstringIndex = 0; + final StringBuffer newText = StringBuffer(); + if (newTextLength >= 1) { + newText.write('('); + if (newValue.selection.end >= 1) selectionIndex++; + } + if (newTextLength >= 4) { + newText.write(newValue.text.substring(0, usedSubstringIndex = 3) + ') '); + if (newValue.selection.end >= 3) selectionIndex += 2; + } + if (newTextLength >= 7) { + newText.write(newValue.text.substring(3, usedSubstringIndex = 6) + '-'); + if (newValue.selection.end >= 6) selectionIndex++; + } + if (newTextLength >= 11) { + newText.write(newValue.text.substring(6, usedSubstringIndex = 10) + ' '); + if (newValue.selection.end >= 10) selectionIndex++; + } + // Dump the rest. + if (newTextLength >= usedSubstringIndex) + newText.write(newValue.text.substring(usedSubstringIndex)); + return TextEditingValue( + text: newText.toString(), + selection: TextSelection.collapsed(offset: selectionIndex), + ); + } +} + +final _mobileFormatter = NumberTextInputFormatter(); + +class NewTextFields extends StatefulWidget { + NewTextFields( + {Key key, + this.type, + this.hintText, + this.suffixIcon, + this.autoFocus, + this.onChanged, + this.initialValue, + this.minLines, + this.maxLines, + this.inputFormatters, + this.padding, + this.focus = false, + this.maxLengthEnforced = true, + this.suffixIconColor, + this.inputAction, + this.onSubmit, + this.keepPadding = true, + this.textCapitalization = TextCapitalization.none, + this.controller, + this.keyboardType, + this.validator, + this.borderOnlyError = false, + this.onSaved, + this.onSuffixTap, + this.readOnly: false, + this.maxLength, + this.prefixIcon, + this.bare = false, + this.onTap, + this.fontSize = 16.0, + this.fontWeight = FontWeight.w700, + this.autoValidate = false, + this.hintColor, + this.isEnabled = true}) + : super(key: key); + + final String hintText; + + // final String initialValue; + final String type; + final bool autoFocus; + final IconData suffixIcon; + final Color suffixIconColor; + final Icon prefixIcon; + final VoidCallback onTap; + final TextEditingController controller; + final TextInputType keyboardType; + final FormFieldValidator validator; + final Function onSaved; + final Function onSuffixTap; + final Function onChanged; + final Function onSubmit; + final bool readOnly; + final int maxLength; + final int minLines; + final int maxLines; + final bool maxLengthEnforced; + final bool bare; + final bool isEnabled; + final TextInputAction inputAction; + final double fontSize; + final FontWeight fontWeight; + final bool keepPadding; + final TextCapitalization textCapitalization; + final List inputFormatters; + final bool autoValidate; + final EdgeInsets padding; + final bool focus; + final bool borderOnlyError; + final Color hintColor; + final String initialValue; + @override + _NewTextFieldsState createState() => _NewTextFieldsState(); +} + +class _NewTextFieldsState extends State { + final FocusNode _focusNode = FocusNode(); + bool focus = false; + bool view = false; + + @override + void initState() { + super.initState(); + _focusNode.addListener(() { + setState(() { + focus = _focusNode.hasFocus; + }); + }); + } + + @override + void didUpdateWidget(NewTextFields oldWidget) { + if (widget.focus) _focusNode.requestFocus(); + super.didUpdateWidget(oldWidget); + } + + @override + void dispose() { + _focusNode.dispose(); + super.dispose(); + } + + bool _determineReadOnly() { + if (widget.readOnly != null && widget.readOnly) { + _focusNode.unfocus(); + return true; + } else { + return false; + } + } + + @override + Widget build(BuildContext context) { + return AnimatedContainer( + duration: Duration(milliseconds: 300), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + color: Colors.white), + child: Container( + margin: EdgeInsets.only(top: 8), + child: TextFormField( + enabled: widget.isEnabled, + initialValue: widget.initialValue, + keyboardAppearance: Theme.of(context).brightness, + scrollPhysics: BouncingScrollPhysics(), + autovalidate: widget.autoValidate, + textCapitalization: widget.textCapitalization, + onFieldSubmitted: widget.inputAction == TextInputAction.next + ? (widget.onSubmit != null + ? widget.onSubmit + : (val) { + _focusNode.nextFocus(); + }) + : widget.onSubmit, + textInputAction: widget.inputAction, + minLines: widget.minLines ?? 1, + maxLines: widget.maxLines ?? 1, + maxLengthEnforced: widget.maxLengthEnforced, + onChanged: widget.onChanged, + focusNode: _focusNode, + maxLength: widget.maxLength ?? null, + controller: widget.controller, + keyboardType: widget.keyboardType, + readOnly: _determineReadOnly(), + obscureText: widget.type == "password" && !view ? true : false, + autofocus: widget.autoFocus ?? false, + validator: widget.validator, + onSaved: widget.onSaved, + style: Theme.of(context).textTheme.body2.copyWith( + fontSize: widget.fontSize, fontWeight: widget.fontWeight), + inputFormatters: widget.keyboardType == TextInputType.phone + ? [ + WhitelistingTextInputFormatter.digitsOnly, + _mobileFormatter, + ] + : widget.inputFormatters, + decoration: InputDecoration( + labelText: widget.hintText, + labelStyle: + TextStyle(color: Theme.of(context).textTheme.bodyText1.color), + errorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: Theme.of(context).errorColor.withOpacity(0.5), + width: 1.0), + borderRadius: BorderRadius.circular(12.0)), + focusedErrorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: Theme.of(context).errorColor.withOpacity(0.5), + width: 1.0), + borderRadius: BorderRadius.circular(8.0)), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: Colors.white, width: 1.0), + borderRadius: BorderRadius.circular(12)), + disabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: Colors.white, width: 1.0), + borderRadius: BorderRadius.circular(12)), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: Colors.white, width: 1.0), + borderRadius: BorderRadius.circular(12), + ), + ), + ), + ), + ); + } +} From 4f8047f75119f08154706414f89a56ed7a33ab51 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Tue, 6 Apr 2021 09:37:05 +0300 Subject: [PATCH 10/23] fix small thing on design in schedule --- lib/widgets/doctor/my_schedule_widget.dart | 64 ++++++++++------------ 1 file changed, 30 insertions(+), 34 deletions(-) diff --git a/lib/widgets/doctor/my_schedule_widget.dart b/lib/widgets/doctor/my_schedule_widget.dart index fca0e0b4..c1ba098e 100644 --- a/lib/widgets/doctor/my_schedule_widget.dart +++ b/lib/widgets/doctor/my_schedule_widget.dart @@ -21,31 +21,32 @@ class MyScheduleWidget extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox( - height: 10, - ), - AppText( - workingHoursTable.dayName, - fontSize: 2.5 * SizeConfig.textMultiplier, - fontFamily: 'Poppins', - // fontSize: 18 - ), - SizedBox( - height: 10, - ), - AppText( - ' ${workingHoursTable.date.day} ${(DateUtils.getMonth(workingHoursTable.date.month).toString().substring(0, 3))}', - fontSize: 2.5 * SizeConfig.textMultiplier, - fontWeight: FontWeight.w700, - - fontFamily: 'Poppins', - // fontSize: 18 - ), - ], + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 10, + ), + AppText( + workingHoursTable.dayName, + fontSize: 2.5 * SizeConfig.textMultiplier, + fontFamily: 'Poppins', + // fontSize: 18 + ), + SizedBox( + height: 10, + ), + AppText( + ' ${workingHoursTable.date.day} ${(DateUtils.getMonth(workingHoursTable.date.month).toString().substring(0, 3))}', + fontSize: 2.5 * SizeConfig.textMultiplier, + fontWeight: FontWeight.w700, + fontFamily: 'Poppins', + // fontSize: 18 + ), + ], + ), ), Container( width: MediaQuery.of(context).size.width * 0.55, @@ -80,15 +81,10 @@ class MyScheduleWidget extends StatelessWidget { ), Container( width: MediaQuery.of(context).size.width*0.55, - child: Expanded( - child: Padding( - padding: const EdgeInsets.all(8.0), - child: AppText( - work.from + ' - ' + work.to, - fontSize: 15, - fontWeight: FontWeight.w300, - ), - ), + child: AppText( + '${work.from} - ${work.to}', + fontSize: 15, + fontWeight: FontWeight.w300, ), ) ], From 6ca4797c9129cc56f449b671c567035c967811f5 Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Tue, 6 Apr 2021 09:45:30 +0300 Subject: [PATCH 11/23] hot fixes --- lib/client/base_app_client.dart | 4 ++++ lib/core/model/medical_file_request_model.dart | 4 +++- lib/core/service/medical_file_service.dart | 1 + lib/screens/patients/insurance_approval_screen_patient.dart | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/client/base_app_client.dart b/lib/client/base_app_client.dart index 77545340..ac5846fa 100644 --- a/lib/client/base_app_client.dart +++ b/lib/client/base_app_client.dart @@ -68,6 +68,7 @@ class BaseAppClient { body['LanguageID'] = 2; body['stamp'] = STAMP; + if(!body.containsKey("IPAdress")) body['IPAdress'] = IP_ADDRESS; body['VersionID'] = VERSION_ID; body['Channel'] = CHANNEL; @@ -85,6 +86,9 @@ class BaseAppClient { print("URL : $url"); print("Body : ${json.encode(body)}"); + String bodyData= json.encode(body); + + if (await Helpers.checkConnection()) { final response = await http.post(url, diff --git a/lib/core/model/medical_file_request_model.dart b/lib/core/model/medical_file_request_model.dart index c5a40bb7..8703141a 100644 --- a/lib/core/model/medical_file_request_model.dart +++ b/lib/core/model/medical_file_request_model.dart @@ -1,8 +1,9 @@ class MedicalFileRequestModel { int patientMRN; String vidaAuthTokenID; + String iPAdress; - MedicalFileRequestModel({this.patientMRN, this.vidaAuthTokenID}); + MedicalFileRequestModel({this.patientMRN, this.vidaAuthTokenID,this.iPAdress}); MedicalFileRequestModel.fromJson(Map json) { patientMRN = json['PatientMRN']; @@ -13,6 +14,7 @@ class MedicalFileRequestModel { final Map data = new Map(); data['PatientMRN'] = this.patientMRN; data['VidaAuthTokenID'] = this.vidaAuthTokenID; + data['IPAdress'] = this.iPAdress; return data; } } diff --git a/lib/core/service/medical_file_service.dart b/lib/core/service/medical_file_service.dart index f1ab6dcd..fb6c2449 100644 --- a/lib/core/service/medical_file_service.dart +++ b/lib/core/service/medical_file_service.dart @@ -16,6 +16,7 @@ class MedicalFileService extends BaseService { Future getMedicalFile({int mrn}) async { _fileRequestModel = MedicalFileRequestModel(patientMRN: mrn); + _fileRequestModel.iPAdress = "9.9.9.9"; hasError = false; _medicalFileList.clear(); await baseAppClient.post(GET_MEDICAL_FILE, diff --git a/lib/screens/patients/insurance_approval_screen_patient.dart b/lib/screens/patients/insurance_approval_screen_patient.dart index 0eb3da80..cb0be61c 100644 --- a/lib/screens/patients/insurance_approval_screen_patient.dart +++ b/lib/screens/patients/insurance_approval_screen_patient.dart @@ -147,7 +147,7 @@ class _InsuranceApprovalScreenNewState .toString(), isPrescriptions: true, approvalStatus: model.insuranceApproval[index] - .approvalDetails.status, + .approvalDetails?.status??'', ), ), ), From 93dba4cbebbf991ff03ba8a64b5ef79fb078c3bf Mon Sep 17 00:00:00 2001 From: mosazaid Date: Tue, 6 Apr 2021 10:00:34 +0300 Subject: [PATCH 12/23] vital sign fix bug --- .../profile/vital_sign/LineChartCurved.dart | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/lib/screens/patients/profile/vital_sign/LineChartCurved.dart b/lib/screens/patients/profile/vital_sign/LineChartCurved.dart index e87a7a39..105c57e9 100644 --- a/lib/screens/patients/profile/vital_sign/LineChartCurved.dart +++ b/lib/screens/patients/profile/vital_sign/LineChartCurved.dart @@ -115,16 +115,30 @@ class LineChartCurved extends StatelessWidget { //rotateAngle:-65, margin: 22, getTitles: (value) { - if (timeSeries.length > value.toInt()) { - DateTime dateTime = timeSeries[value.toInt()].time; - if (isDatesSameYear) { - return monthFormat.format(dateTime); + if (timeSeries.length < 15) { + if (timeSeries.length > value.toInt()) { + DateTime dateTime = timeSeries[value.toInt()].time; + if (isDatesSameYear) { + return monthFormat.format(dateTime); + } else { + return yearFormat.format(dateTime); + } } else { - return yearFormat.format(dateTime); + return ''; } } else { - return ''; + if (value.toInt() == 0 || + value.toInt() == timeSeries.length - 1 || + xAxixs.contains(value.toInt())) { + DateTime dateTime = timeSeries[value.toInt()].time; + if (isDatesSameYear) { + return monthFormat.format(dateTime); + } else { + return yearFormat.format(dateTime); + } + } } + /*if (timeSeries.length < 15) { if (timeSeries.length > value.toInt()) { DateTime dateTime = timeSeries[value.toInt()].time; @@ -232,7 +246,7 @@ class LineChartCurved extends StatelessWidget { final LineChartBarData lineChartBarData1 = LineChartBarData( spots: spots, isCurved: true, - colors: [Colors.red]/*[Theme.of(context).primaryColor]*/, + colors: [Colors.red] /*[Theme.of(context).primaryColor]*/, barWidth: 5, isStrokeCapRound: true, dotData: FlDotData( From 83a98a3d58fc9f9fdd2a03645a38172e20fd7b0c Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Tue, 6 Apr 2021 10:46:36 +0300 Subject: [PATCH 13/23] add new lab form small design fix --- lib/screens/procedures/add_lab_orders.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/screens/procedures/add_lab_orders.dart b/lib/screens/procedures/add_lab_orders.dart index 5c0cde24..93773c8f 100644 --- a/lib/screens/procedures/add_lab_orders.dart +++ b/lib/screens/procedures/add_lab_orders.dart @@ -175,7 +175,7 @@ class _AddSelectedLabOrderState extends State { Row( children: [ AppText( - 'New Radiology Order', + 'New Lab Order', fontWeight: FontWeight.w700, fontSize: 20, ), From 5f482663ddf72a809dfb4710780d4a90aba78c96 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Tue, 6 Apr 2021 10:47:57 +0300 Subject: [PATCH 14/23] fix the stepper --- lib/screens/doctor/doctor_repaly_chat.dart | 5 +- lib/widgets/doctor/my_schedule_widget.dart | 4 +- .../profile/soap_update/steps_widget.dart | 75 ++++++++++--------- 3 files changed, 43 insertions(+), 41 deletions(-) diff --git a/lib/screens/doctor/doctor_repaly_chat.dart b/lib/screens/doctor/doctor_repaly_chat.dart index 35718793..362603b5 100644 --- a/lib/screens/doctor/doctor_repaly_chat.dart +++ b/lib/screens/doctor/doctor_repaly_chat.dart @@ -43,10 +43,11 @@ class DoctorReplayChat extends StatelessWidget { decoration: BoxDecoration( color: Colors.white, ), - height: 150, + height: 130, child: Container( + color: Colors.red, padding: EdgeInsets.only( - left: 10, right: 10, bottom: 10), + left: 10, right: 10), margin: EdgeInsets.only(top: 50), child: Column( children: [ diff --git a/lib/widgets/doctor/my_schedule_widget.dart b/lib/widgets/doctor/my_schedule_widget.dart index c1ba098e..d705010d 100644 --- a/lib/widgets/doctor/my_schedule_widget.dart +++ b/lib/widgets/doctor/my_schedule_widget.dart @@ -31,7 +31,7 @@ class MyScheduleWidget extends StatelessWidget { ), AppText( workingHoursTable.dayName, - fontSize: 2.5 * SizeConfig.textMultiplier, + fontSize: 18, fontFamily: 'Poppins', // fontSize: 18 ), @@ -40,7 +40,7 @@ class MyScheduleWidget extends StatelessWidget { ), AppText( ' ${workingHoursTable.date.day} ${(DateUtils.getMonth(workingHoursTable.date.month).toString().substring(0, 3))}', - fontSize: 2.5 * SizeConfig.textMultiplier, + fontSize: 18, fontWeight: FontWeight.w700, fontFamily: 'Poppins', // fontSize: 18 diff --git a/lib/widgets/patients/profile/soap_update/steps_widget.dart b/lib/widgets/patients/profile/soap_update/steps_widget.dart index dab907b2..9a6747c8 100644 --- a/lib/widgets/patients/profile/soap_update/steps_widget.dart +++ b/lib/widgets/patients/profile/soap_update/steps_widget.dart @@ -32,7 +32,7 @@ class StepsWidget extends StatelessWidget { ), ), Positioned( - top: 45, + top: 50, left: 0, child: InkWell( onTap: () => changeCurrentTab(0), @@ -40,8 +40,8 @@ class StepsWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - width: 50, - height:50, + width: 38, + height: 38, decoration: BoxDecoration( border: index == 0 ? Border.all(color: Color(0xFFCC9B14), width: 2) @@ -57,7 +57,7 @@ class StepsWidget extends StatelessWidget { : Color(0xFFCCCCCC), ), child: Center( - child: Icon(FontAwesomeIcons.check, size: 25, + child: Icon(FontAwesomeIcons.check, size: 20, color: Colors.white,) ), ), @@ -70,7 +70,7 @@ class StepsWidget extends StatelessWidget { AppText( "Subjective", fontWeight: FontWeight.bold, - fontSize: 14, + fontSize: 12, ), StatusLabel(selectedStepId: index, stepId: 0,), @@ -81,7 +81,7 @@ class StepsWidget extends StatelessWidget { ), ), Positioned( - top: 45, + top: 50, left: MediaQuery .of(context) .size @@ -92,8 +92,8 @@ class StepsWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - width: 50, - height: 50, + width: 38, + height: 38, decoration: BoxDecoration( border: index == 1 ? Border.all(color: Color(0xFFCC9B14), width: 2) @@ -109,7 +109,7 @@ class StepsWidget extends StatelessWidget { : Color(0xFFCCCCCC), ), child: Center( - child: Icon(FontAwesomeIcons.check, size: 25, + child: Icon(FontAwesomeIcons.check, size: 20, color: Colors.white,) ), ), @@ -122,7 +122,7 @@ class StepsWidget extends StatelessWidget { AppText( "Objective", fontWeight: FontWeight.bold, - fontSize: 14, + fontSize: 12, ), StatusLabel(selectedStepId: index, stepId: 1,), @@ -134,7 +134,7 @@ class StepsWidget extends StatelessWidget { ), ), Positioned( - top: 45, + top: 50, left: MediaQuery .of(context) .size @@ -148,8 +148,8 @@ class StepsWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - width:50, - height:50, + width: 38, + height: 38, decoration: BoxDecoration( border: index == 2 ? Border.all(color: Color(0xFFCC9B14), width: 2) @@ -165,7 +165,7 @@ class StepsWidget extends StatelessWidget { : Color(0xFFCCCCCC), ), child: Center( - child: Icon(FontAwesomeIcons.check, size: 25, + child: Icon(FontAwesomeIcons.check, size: 20, color: Colors.white,) ), ), @@ -178,7 +178,7 @@ class StepsWidget extends StatelessWidget { AppText( "Assessment", fontWeight: FontWeight.bold, - fontSize: 14, + fontSize: 12, ), StatusLabel(selectedStepId: index, stepId: 2,), ], @@ -188,16 +188,16 @@ class StepsWidget extends StatelessWidget { ), ), Positioned( - top: 45, + top: 50, right: 0, child: InkWell( onTap: () => index >= 3 ? changeCurrentTab(4) : null, child: Column( - crossAxisAlignment: CrossAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.end, children: [ Container( - width:50, - height:50, + width: 38, + height: 38, decoration: BoxDecoration( border: index == 3 ? Border.all(color: Color(0xFFCC9B14), width: 2) @@ -213,7 +213,7 @@ class StepsWidget extends StatelessWidget { : Color(0xFFCCCCCC), ), child: Center( - child: Icon(FontAwesomeIcons.check, size: 25, + child: Icon(FontAwesomeIcons.check, size: 20, color: Colors.white,) ), ), @@ -227,7 +227,7 @@ class StepsWidget extends StatelessWidget { "Plan", fontWeight: FontWeight.bold, textAlign: TextAlign.center, - fontSize: 14, + fontSize: 12, ), StatusLabel(selectedStepId: index, stepId: 3,), ], @@ -257,7 +257,7 @@ class StepsWidget extends StatelessWidget { ), ), Positioned( - top: 45, + top: 50, right: 0, child: InkWell( onTap: () => changeCurrentTab(0), @@ -265,8 +265,8 @@ class StepsWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - width: 50, - height:50, + width: 38, + height: 38, decoration: BoxDecoration( border: index == 0 ? Border.all(color: Color(0xFFCC9B14), width: 2) @@ -282,7 +282,7 @@ class StepsWidget extends StatelessWidget { : Color(0xFFCCCCCC), ), child: Center( - child: Icon(FontAwesomeIcons.check, size: 25, + child: Icon(FontAwesomeIcons.check, size: 20, color: Colors.white,) ), ), @@ -299,7 +299,7 @@ class StepsWidget extends StatelessWidget { ), ), Positioned( - top: 45, + top: 50, right: MediaQuery .of(context) .size @@ -310,8 +310,8 @@ class StepsWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - width: 50, - height: 50, + width: 38, + height: 38, decoration: BoxDecoration( border: index == 1 ? Border.all(color: Color(0xFFCC9B14), width: 2) @@ -327,7 +327,7 @@ class StepsWidget extends StatelessWidget { : Color(0xFFCCCCCC), ), child: Center( - child: Icon(FontAwesomeIcons.check, size: 25, + child: Icon(FontAwesomeIcons.check, size: 20, color: Colors.white,) ), ), @@ -355,8 +355,8 @@ class StepsWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - width:50, - height:50, + width: 38, + height: 38, decoration: BoxDecoration( border: index == 2 ? Border.all(color: Color(0xFFCC9B14), width: 2) @@ -372,7 +372,7 @@ class StepsWidget extends StatelessWidget { : Color(0xFFCCCCCC), ), child: Center( - child: Icon(FontAwesomeIcons.check, size: 25, + child: Icon(FontAwesomeIcons.check, size: 20, color: Colors.white,) ), ), @@ -393,7 +393,7 @@ class StepsWidget extends StatelessWidget { ), ), Positioned( - top: 45, + top: 50, left: 0, child: InkWell( onTap: () => index >= 3 ? changeCurrentTab(4) : null, @@ -401,8 +401,8 @@ class StepsWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - width:50, - height:50, + width: 38, + height: 38, decoration: BoxDecoration( border: index == 3 ? Border.all(color: Color(0xFFCC9B14), width: 2) @@ -418,7 +418,7 @@ class StepsWidget extends StatelessWidget { : Color(0xFFCCCCCC), ), child: Center( - child: Icon(FontAwesomeIcons.check, size: 25, + child: Icon(FontAwesomeIcons.check, size: 20, color: Colors.white,) ), ), @@ -453,7 +453,8 @@ class StatusLabel extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - padding: EdgeInsets.symmetric(horizontal: 5, vertical: 3), + width: 65, + padding: EdgeInsets.symmetric(horizontal: 2, vertical: 3), decoration: BoxDecoration( color: stepId == selectedStepId ? Color(0xFFF1E9D3) : stepId < selectedStepId ? Color(0xFFD8E8DB) : Color(0xFFCCCCCC), From 00975a2dddccfd8a580a56571673f0310448b934 Mon Sep 17 00:00:00 2001 From: mosazaid Date: Tue, 6 Apr 2021 11:03:21 +0300 Subject: [PATCH 15/23] fix arrival patient problem --- lib/config/config.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/config/config.dart b/lib/config/config.dart index 538aed37..59929f45 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -121,7 +121,7 @@ const GET_DASHBOARD = const GET_SICKLEAVE_STATISTIC = 'Services/DoctorApplication.svc/REST/PreSickLeaveStatistics'; const ARRIVED_PATIENT_URL = - 'Services/DoctorApplication.svc/REST/PatientArrivalList​'; + 'Services/DoctorApplication.svc/REST/PatientArrivalList'; const ADD_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/PostSickLeave'; const GET_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/GetAllSickLeaves'; const EXTEND_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/ExtendSickLeave'; From d8cce04b8ab3919491c18cc4257176a6679304e1 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Tue, 6 Apr 2021 11:16:07 +0300 Subject: [PATCH 16/23] fix replay design --- lib/screens/doctor/doctor_repaly_chat.dart | 100 +++++++++++++++------ lib/widgets/shared/TextFields.dart | 15 ++-- 2 files changed, 81 insertions(+), 34 deletions(-) diff --git a/lib/screens/doctor/doctor_repaly_chat.dart b/lib/screens/doctor/doctor_repaly_chat.dart index 362603b5..6980348b 100644 --- a/lib/screens/doctor/doctor_repaly_chat.dart +++ b/lib/screens/doctor/doctor_repaly_chat.dart @@ -43,12 +43,11 @@ class DoctorReplayChat extends StatelessWidget { decoration: BoxDecoration( color: Colors.white, ), - height: 130, + height: 115, child: Container( - color: Colors.red, padding: EdgeInsets.only( left: 10, right: 10), - margin: EdgeInsets.only(top: 50), + margin: EdgeInsets.only(top: 40), child: Column( children: [ Row( @@ -301,31 +300,76 @@ class DoctorReplayChat extends StatelessWidget { ), ), bottomSheet: Container( - child:TextFields( - hasLabelText: msgController.text != '' - ? true - : false, - showLabelText: false, - hintText: TranslationBase - .of(context) - .typeHereToReply, - fontSize: 13.5, - suffixIcon: FontAwesomeIcons.arrowRight, - suffixIconColor: Colors.green, - // hintColor: Colors.black, - fontWeight: FontWeight.w600, - maxLines: 50, - minLines: 3, - controller: msgController, - validator: (value) { - if (value == null || value == "") - return TranslationBase.of(context) - .emptyMessage; - else - return null; - }), - height: MediaQuery.of(context).size.height * 0.1, - ), + width: double.infinity, + // height: MediaQuery.of(context).size.height * 0.12, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + FractionallySizedBox( + child: Container( + child: TextFields( + borderRadius: 0, + hasLabelText: msgController.text != '' + ? true + : false, + showLabelText: false, + hintText: "\n"+TranslationBase + .of(context) + .typeHereToReply, + fontSize: 13.5, + + suffixIcon: FontAwesomeIcons.arrowRight, + suffixIconColor: Colors.green, + // hintColor: Colors.black, + fontWeight: FontWeight.w600, + maxLines: 50, + minLines: 3, + controller: msgController, + validator: (value) { + if (value == null || value == "") + return TranslationBase.of(context) + .emptyMessage; + else + return null; + }), + + ), + ), + ], + ), + ) + + + // Container( + // child:SingleChildScrollView( + // child: TextFields( + // borderRadius: 0, + // hasLabelText: msgController.text != '' + // ? true + // : false, + // showLabelText: false, + // hintText: "\n"+TranslationBase + // .of(context) + // .typeHereToReply, + // fontSize: 13.5, + // + // suffixIcon: FontAwesomeIcons.arrowRight, + // suffixIconColor: Colors.green, + // // hintColor: Colors.black, + // fontWeight: FontWeight.w600, + // maxLines: 50, + // minLines: 3, + // controller: msgController, + // validator: (value) { + // if (value == null || value == "") + // return TranslationBase.of(context) + // .emptyMessage; + // else + // return null; + // }), + // ), + // height: MediaQuery.of(context).size.height * 0.11, + // ), )); } } diff --git a/lib/widgets/shared/TextFields.dart b/lib/widgets/shared/TextFields.dart index 706c65b7..aab1eb61 100644 --- a/lib/widgets/shared/TextFields.dart +++ b/lib/widgets/shared/TextFields.dart @@ -77,7 +77,7 @@ class TextFields extends StatefulWidget { this.hasBorder = true, this.onTapTextFields, this.hasLabelText = false, - this.showLabelText = false}) + this.showLabelText = false, this.borderRadius= 8.0}) : super(key: key); final String hintText; @@ -116,6 +116,8 @@ class TextFields extends StatefulWidget { final Color fillColor; final bool hasBorder; final bool showLabelText; + + final double borderRadius; bool hasLabelText; @override @@ -276,6 +278,7 @@ class _TextFieldsState extends State { hintText: widget.hintText, hintStyle: TextStyle( fontSize: widget.fontSize, + fontWeight: widget.fontWeight, color: widget.hintColor ?? Theme.of(context).hintColor, ), @@ -304,7 +307,7 @@ class _TextFieldsState extends State { width: 1.0) : BorderSide(color: Colors.transparent, width: 0), borderRadius: widget.hasBorder - ? BorderRadius.circular(widget.bare ? 0.0 : 8.0) + ? BorderRadius.circular(widget.bare ? 0.0 : widget.borderRadius) : BorderRadius.circular(0.0), ), focusedErrorBorder: OutlineInputBorder( @@ -315,13 +318,13 @@ class _TextFieldsState extends State { .withOpacity(widget.bare ? 0.0 : 0.5), width: 1.0) : BorderSide(color: Colors.transparent, width: 0), - borderRadius: BorderRadius.circular(widget.bare ? 0.0 : 8.0)), + borderRadius: BorderRadius.circular(widget.bare ? 0.0 : widget.borderRadius)), focusedBorder: OutlineInputBorder( borderSide: widget.hasBorder ? BorderSide(color: Colors.grey, width: 1.0) : BorderSide(color: Colors.transparent, width: 0), borderRadius: widget.hasBorder - ? BorderRadius.circular(widget.bare ? 0.0 : 8.0) + ? BorderRadius.circular(widget.bare ? 0.0 : widget.borderRadius) : BorderRadius.circular(0.0), ), disabledBorder: OutlineInputBorder( @@ -329,14 +332,14 @@ class _TextFieldsState extends State { ? BorderSide(color: Colors.grey, width: 1.0) : BorderSide(color: Colors.transparent, width: 0), borderRadius: widget.hasBorder - ? BorderRadius.circular(widget.bare ? 0.0 : 8.0) + ? BorderRadius.circular(widget.bare ? 0.0 : widget.borderRadius) : BorderRadius.circular(0.0)), enabledBorder: OutlineInputBorder( borderSide: widget.hasBorder ? BorderSide(color: Colors.grey, width: 1.0) : BorderSide(color: Colors.transparent, width: 0), borderRadius: widget.hasBorder - ? BorderRadius.circular(widget.bare ? 0.0 : 8.0) + ? BorderRadius.circular(widget.bare ? 0.0 : widget.borderRadius) : BorderRadius.circular(0.0), ), ), From 9559265a2d20b86011d9ed3d8a01d0b57031d5e0 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Tue, 6 Apr 2021 11:41:59 +0300 Subject: [PATCH 17/23] update chief complaint design --- .../soap_update/expandable_SOAP_widget.dart | 2 +- .../profile/soap_update/steps_widget.dart | 1 + .../subjective/update_Chief_complaints.dart | 193 +++++++++--------- lib/widgets/shared/new_text_Field.dart | 7 + 4 files changed, 108 insertions(+), 95 deletions(-) diff --git a/lib/widgets/patients/profile/soap_update/expandable_SOAP_widget.dart b/lib/widgets/patients/profile/soap_update/expandable_SOAP_widget.dart index 24a69a0b..57eb065b 100644 --- a/lib/widgets/patients/profile/soap_update/expandable_SOAP_widget.dart +++ b/lib/widgets/patients/profile/soap_update/expandable_SOAP_widget.dart @@ -38,7 +38,7 @@ class ExpandableSOAPWidget extends StatelessWidget { Texts(headerTitle, variant: isExpanded ? "bodyText" : '', bold: isExpanded ? true : false, - fontSize: 20, + fontSize: 15, color: Colors.black), Icon( FontAwesomeIcons.asterisk, diff --git a/lib/widgets/patients/profile/soap_update/steps_widget.dart b/lib/widgets/patients/profile/soap_update/steps_widget.dart index 9a6747c8..88c47706 100644 --- a/lib/widgets/patients/profile/soap_update/steps_widget.dart +++ b/lib/widgets/patients/profile/soap_update/steps_widget.dart @@ -222,6 +222,7 @@ class StepsWidget extends StatelessWidget { ), Center( child: Column( + crossAxisAlignment: CrossAxisAlignment.end, children: [ AppText( "Plan", diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart b/lib/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart index 90211413..ef1caeb5 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart @@ -28,80 +28,78 @@ class UpdateChiefComplaints extends StatelessWidget { SizedBox( height: 20, ), - - Container( - - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.all( - Radius.circular(10.0), - ), - border: Border.all( - color: HexColor('#707070'), - width: 0.30), - ), - child: NewTextFields( - hintText: TranslationBase.of(context).addChiefComplaints, - controller: complaintsController, - ), - ), - Container( - margin: - EdgeInsets.only(left: 10, right: 10, top: 15), - child: TextFields( - hasLabelText: complaintsController.text != '' - ? true - : false, - hintText: TranslationBase - .of(context) - .addChiefComplaints, - fontSize: 13.5, - // hintColor: Colors.black, - showLabelText: true, - fontWeight: FontWeight.w600, - maxLines: 25, - minLines: 13, - controller: complaintsController, - validator: (value) { - if (value == null || value == "") - return TranslationBase.of(context) - .emptyMessage; - else if (value.length < 25) - return TranslationBase - .of(context) - .chiefComplaintLength; - //""; - else - return null; - }), + //TODO handel error cases + NewTextFields( + hintText: TranslationBase.of(context).addChiefComplaints, + controller: complaintsController, + maxLines: 25, + minLines: 13, ), + + // Container( + // margin: + // EdgeInsets.only(left: 10, right: 10, top: 15), + // child: TextFields( + // hasLabelText: complaintsController.text != '' + // ? true + // : false, + // hintText: TranslationBase + // .of(context) + // .addChiefComplaints, + // fontSize: 13.5, + // // hintColor: Colors.black, + // showLabelText: true, + // fontWeight: FontWeight.w600, + // maxLines: 25, + // minLines: 13, + // controller: complaintsController, + // validator: (value) { + // if (value == null || value == "") + // return TranslationBase.of(context) + // .emptyMessage; + // else if (value.length < 25) + // return TranslationBase + // .of(context) + // .chiefComplaintLength; + // //""; + // else + // return null; + // }), + // ), SizedBox( height: 20, ), - Container( - margin: - EdgeInsets.only(left: 10, right: 10, top: 15), - child: TextFields( - hasLabelText: - illnessController.text != '' ? true : false, - showLabelText: true, - hintText: TranslationBase - .of(context) - .historyOfPresentIllness, - fontSize: 13.5, - // hintColor: Colors.black, - fontWeight: FontWeight.w600, - maxLines: 25, - minLines: 13, - controller: illnessController, - validator: (value) { - if (value == null || value == "") - return TranslationBase.of(context) - .emptyMessage; - else - return null; - }), + + NewTextFields( + hintText: TranslationBase.of(context).historyOfPresentIllness, + controller: illnessController, + maxLines: 25, + minLines: 13, ), + // Container( + // margin: + // EdgeInsets.only(left: 10, right: 10, top: 15), + // child: TextFields( + // hasLabelText: + // illnessController.text != '' ? true : false, + // showLabelText: true, + // hintText: TranslationBase + // .of(context) + // .historyOfPresentIllness, + // fontSize: 13.5, + // // hintColor: Colors.black, + // fontWeight: FontWeight.w600, + // maxLines: 25, + // minLines: 13, + // controller: illnessController, + // validator: (value) { + // if (value == null || value == "") + // return TranslationBase.of(context) + // .emptyMessage; + // else + // return null; + // }), + // ), SizedBox( height: 20, ), @@ -114,31 +112,38 @@ class UpdateChiefComplaints extends StatelessWidget { SizedBox( height: 10, ), - Container( - margin: - EdgeInsets.only(left: 10, right: 10, top: 15), - child: TextFields( - hasLabelText: medicationController.text != '' - ? true - : false, - showLabelText: true, - hintText: TranslationBase - .of(context) - .currentMedications, - fontSize: 13.5, - // hintColor: Colors.black, - fontWeight: FontWeight.w600, - maxLines: 23, - minLines: 10, - controller: medicationController, - validator: (value) { - if (value == null || value == "") - return TranslationBase - .of(context) - .emptyMessage; - else - return null; - }), + // Container( + // margin: + // EdgeInsets.only(left: 10, right: 10, top: 15), + // child: TextFields( + // hasLabelText: medicationController.text != '' + // ? true + // : false, + // showLabelText: true, + // hintText: TranslationBase + // .of(context) + // .currentMedications, + // fontSize: 13.5, + // // hintColor: Colors.black, + // fontWeight: FontWeight.w600, + // maxLines: 23, + // minLines: 10, + // controller: medicationController, + // validator: (value) { + // if (value == null || value == "") + // return TranslationBase + // .of(context) + // .emptyMessage; + // else + // return null; + // }), + // ), + + NewTextFields( + hintText: TranslationBase.of(context).currentMedications, + controller: medicationController, + maxLines: 23, + minLines: 10, ), SizedBox( height: 10, diff --git a/lib/widgets/shared/new_text_Field.dart b/lib/widgets/shared/new_text_Field.dart index dc361abd..6ad3d570 100644 --- a/lib/widgets/shared/new_text_Field.dart +++ b/lib/widgets/shared/new_text_Field.dart @@ -2,6 +2,7 @@ import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:hexcolor/hexcolor.dart'; class NumberTextInputFormatter extends TextInputFormatter { @override @@ -158,9 +159,15 @@ class _NewTextFieldsState extends State { duration: Duration(milliseconds: 300), decoration: BoxDecoration( borderRadius: BorderRadius.circular(12), + border: Border.all( + color: HexColor('#707070'), + width: 0.30), color: Colors.white), child: Container( margin: EdgeInsets.only(top: 8), + padding: EdgeInsets.only(top: 8), + + child: TextFormField( enabled: widget.isEnabled, initialValue: widget.initialValue, From e6cad64cf0a618678926f5407a7b9a4d77b849b5 Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Tue, 6 Apr 2021 12:59:22 +0300 Subject: [PATCH 18/23] fix PatientArrivalList --- lib/client/base_app_client.dart | 4 ++-- lib/config/config.dart | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/client/base_app_client.dart b/lib/client/base_app_client.dart index ac5846fa..31f3be0d 100644 --- a/lib/client/base_app_client.dart +++ b/lib/client/base_app_client.dart @@ -68,7 +68,7 @@ class BaseAppClient { body['LanguageID'] = 2; body['stamp'] = STAMP; - if(!body.containsKey("IPAdress")) + // if(!body.containsKey("IPAdress")) body['IPAdress'] = IP_ADDRESS; body['VersionID'] = VERSION_ID; body['Channel'] = CHANNEL; @@ -87,7 +87,7 @@ class BaseAppClient { print("URL : $url"); print("Body : ${json.encode(body)}"); String bodyData= json.encode(body); - + var asd=""; if (await Helpers.checkConnection()) { diff --git a/lib/config/config.dart b/lib/config/config.dart index a8f7ef6e..c8b4e8e4 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -121,7 +121,7 @@ const GET_DASHBOARD = const GET_SICKLEAVE_STATISTIC = 'Services/DoctorApplication.svc/REST/PreSickLeaveStatistics'; const ARRIVED_PATIENT_URL = - 'Services/DoctorApplication.svc/REST/PatientArrivalList​'; + 'Services/DoctorApplication.svc/REST/PatientArrivalList'; const ADD_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/PostSickLeave'; const GET_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/GetAllSickLeaves'; const EXTEND_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/ExtendSickLeave'; From 8fd318548aeab00be1093124829fe2583f70f8ef Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Tue, 6 Apr 2021 13:15:45 +0300 Subject: [PATCH 19/23] finish chief complaint design --- .../subjective/update_Chief_complaints.dart | 140 +++++++----------- .../subjective/update_medication_widget.dart | 7 +- .../subjective/update_subjective_page.dart | 46 +++++- lib/widgets/shared/TextFields.dart | 13 +- 4 files changed, 106 insertions(+), 100 deletions(-) diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart b/lib/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart index ef1caeb5..fd424767 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart @@ -1,10 +1,10 @@ import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_medication_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/new_text_Field.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:hexcolor/hexcolor.dart'; + +import '../custom_validation_error.dart'; class UpdateChiefComplaints extends StatelessWidget { const UpdateChiefComplaints({ @@ -13,18 +13,24 @@ class UpdateChiefComplaints extends StatelessWidget { @required this.complaintsController, @required this.illnessController, @required this.medicationController, + this.complaintsControllerError, + this.illnessControllerError, + this.medicationControllerError, }) : super(key: key); final GlobalKey formKey; final TextEditingController complaintsController; final TextEditingController illnessController; final TextEditingController medicationController; + final String complaintsControllerError; + final String illnessControllerError; + final String medicationControllerError; @override Widget build(BuildContext context) { return Form( key: formKey, - child: Column(children: [ + child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: 20, ), @@ -33,9 +39,14 @@ class UpdateChiefComplaints extends StatelessWidget { hintText: TranslationBase.of(context).addChiefComplaints, controller: complaintsController, maxLines: 25, - minLines: 13, + minLines: 3, ), + Container( + child: CustomValidationError( + error: complaintsControllerError, + )), + // Container( // margin: // EdgeInsets.only(left: 10, right: 10, top: 15), @@ -66,89 +77,46 @@ class UpdateChiefComplaints extends StatelessWidget { // return null; // }), // ), - SizedBox( - height: 20, - ), - - NewTextFields( - hintText: TranslationBase.of(context).historyOfPresentIllness, - controller: illnessController, - maxLines: 25, - minLines: 13, - ), - // Container( - // margin: - // EdgeInsets.only(left: 10, right: 10, top: 15), - // child: TextFields( - // hasLabelText: - // illnessController.text != '' ? true : false, - // showLabelText: true, - // hintText: TranslationBase - // .of(context) - // .historyOfPresentIllness, - // fontSize: 13.5, - // // hintColor: Colors.black, - // fontWeight: FontWeight.w600, - // maxLines: 25, - // minLines: 13, - // controller: illnessController, - // validator: (value) { - // if (value == null || value == "") - // return TranslationBase.of(context) - // .emptyMessage; - // else - // return null; - // }), - // ), - SizedBox( - height: 20, - ), - SizedBox( - height: 10, - ), - UpdateMedicationWidget( - medicationController: medicationController, - ), - SizedBox( - height: 10, - ), - // Container( - // margin: - // EdgeInsets.only(left: 10, right: 10, top: 15), - // child: TextFields( - // hasLabelText: medicationController.text != '' - // ? true - // : false, - // showLabelText: true, - // hintText: TranslationBase - // .of(context) - // .currentMedications, - // fontSize: 13.5, - // // hintColor: Colors.black, - // fontWeight: FontWeight.w600, - // maxLines: 23, - // minLines: 10, - // controller: medicationController, - // validator: (value) { - // if (value == null || value == "") - // return TranslationBase - // .of(context) - // .emptyMessage; - // else - // return null; - // }), - // ), + SizedBox( + height: 20, + ), - NewTextFields( - hintText: TranslationBase.of(context).currentMedications, - controller: medicationController, - maxLines: 23, - minLines: 10, - ), - SizedBox( - height: 10, - ), - ]), + NewTextFields( + hintText: TranslationBase + .of(context) + .historyOfPresentIllness, + controller: illnessController, + maxLines: 25, + minLines: 3, + ), + Container( + child: CustomValidationError(error: illnessControllerError,)), + SizedBox( + height: 20, + ), + SizedBox( + height: 10, + ), + UpdateMedicationWidget( + medicationController: medicationController, + ), + SizedBox( + height: 10, + ), + NewTextFields( + hintText: TranslationBase + .of(context) + .currentMedications, + controller: medicationController, + maxLines: 25, + minLines: 3, + ), + Container(child: CustomValidationError( + error: medicationControllerError,)), + SizedBox( + height: 10, + ), + ]), ); } } \ No newline at end of file diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_medication_widget.dart b/lib/widgets/patients/profile/soap_update/subjective/update_medication_widget.dart index f32bfe6e..68844765 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_medication_widget.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_medication_widget.dart @@ -16,6 +16,7 @@ import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/material.dart'; +import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; import '../custom_validation_error.dart'; @@ -40,17 +41,19 @@ class _UpdateMedicationWidgetState extends State { return Column( children: [ Container( - margin: EdgeInsets.only(left: 10, right: 10, top: 15), child: TextFields( hintText: TranslationBase.of(context).addMedication, + borderColor: HexColor('#707070'), + borderWidth: 0.30, fontSize: 13.5, + borderRadius: 12, onTapTextFields: () { openMedicationList(context); }, readOnly: true, // hintColor: Colors.black, suffixIcon: EvaIcons.plusCircleOutline, - suffixIconColor: AppGlobal.appPrimaryColor, + suffixIconColor: Color(0xFF2B353E), fontWeight: FontWeight.w600, // controller: messageController, validator: (value) { diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart index 140fec54..c40ee25e 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart @@ -19,8 +19,6 @@ import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_history_widget.dart'; -import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_medication_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; @@ -53,7 +51,9 @@ class _UpdateSubjectivePageState extends State { TextEditingController illnessController = TextEditingController(); TextEditingController complaintsController = TextEditingController(); TextEditingController medicationController = TextEditingController(); - + String complaintsControllerError = ''; + String medicationControllerError = ''; + String illnessControllerError = ''; final formKey = GlobalKey(); getHistory(SOAPViewModel model) async { @@ -235,8 +235,7 @@ class _UpdateSubjectivePageState extends State { height: 30, ), ExpandableSOAPWidget( - headerTitle: TranslationBase - .of(context) + headerTitle: TranslationBase.of(context) .chiefComplaints .toUpperCase(), onTap: () { @@ -244,7 +243,15 @@ class _UpdateSubjectivePageState extends State { isChiefExpand = !isChiefExpand; }); }, - child: UpdateChiefComplaints(formKey: formKey, complaintsController: complaintsController, illnessController: illnessController, medicationController: medicationController), + child: UpdateChiefComplaints( + formKey: formKey, + complaintsController: complaintsController, + illnessController: illnessController, + medicationController: medicationController, + complaintsControllerError: complaintsControllerError, + illnessControllerError: illnessControllerError, + medicationControllerError: medicationControllerError, + ), isExpanded: isChiefExpand, ), SizedBox( @@ -356,7 +363,9 @@ class _UpdateSubjectivePageState extends State { formKey.currentState.save(); formKey.currentState.validate(); - + complaintsControllerError = ''; + medicationControllerError = ''; + illnessControllerError = ''; if (complaintsController.text.isNotEmpty && illnessController.text.isNotEmpty && complaintsController.text.length > 25) { @@ -382,6 +391,29 @@ class _UpdateSubjectivePageState extends State { widget.changePageViewIndex(1); } else { + setState(() { + if (complaintsController.text.isEmpty) { + complaintsControllerError = TranslationBase + .of(context) + .emptyMessage; + } else if (complaintsController.text.length < 25) { + complaintsControllerError = TranslationBase + .of(context) + .chiefComplaintLength; + } + + if (illnessController.text.isEmpty) { + illnessControllerError = TranslationBase + .of(context) + .emptyMessage; + } + + if (medicationController.text.isEmpty) { + medicationControllerError = TranslationBase + .of(context) + .emptyMessage; + } + }); helpers.showErrorToast(TranslationBase .of(context) .chiefComplaintErrorMsg); diff --git a/lib/widgets/shared/TextFields.dart b/lib/widgets/shared/TextFields.dart index aab1eb61..18d8e778 100644 --- a/lib/widgets/shared/TextFields.dart +++ b/lib/widgets/shared/TextFields.dart @@ -77,7 +77,7 @@ class TextFields extends StatefulWidget { this.hasBorder = true, this.onTapTextFields, this.hasLabelText = false, - this.showLabelText = false, this.borderRadius= 8.0}) + this.showLabelText = false, this.borderRadius= 8.0, this.borderColor, this.borderWidth = 1, }) : super(key: key); final String hintText; @@ -116,8 +116,9 @@ class TextFields extends StatefulWidget { final Color fillColor; final bool hasBorder; final bool showLabelText; - + Color borderColor; final double borderRadius; + final double borderWidth; bool hasLabelText; @override @@ -202,6 +203,8 @@ class _TextFieldsState extends State { @override Widget build(BuildContext context) { + + widget.borderColor = widget.borderColor?? Colors.grey; return (AnimatedContainer( duration: Duration(milliseconds: 300), decoration: widget.bare @@ -321,7 +324,7 @@ class _TextFieldsState extends State { borderRadius: BorderRadius.circular(widget.bare ? 0.0 : widget.borderRadius)), focusedBorder: OutlineInputBorder( borderSide: widget.hasBorder - ? BorderSide(color: Colors.grey, width: 1.0) + ? BorderSide(color: widget.borderColor,width: widget.borderWidth) : BorderSide(color: Colors.transparent, width: 0), borderRadius: widget.hasBorder ? BorderRadius.circular(widget.bare ? 0.0 : widget.borderRadius) @@ -329,14 +332,14 @@ class _TextFieldsState extends State { ), disabledBorder: OutlineInputBorder( borderSide: widget.hasBorder - ? BorderSide(color: Colors.grey, width: 1.0) + ? BorderSide(color: widget.borderColor,width: widget.borderWidth) : BorderSide(color: Colors.transparent, width: 0), borderRadius: widget.hasBorder ? BorderRadius.circular(widget.bare ? 0.0 : widget.borderRadius) : BorderRadius.circular(0.0)), enabledBorder: OutlineInputBorder( borderSide: widget.hasBorder - ? BorderSide(color: Colors.grey, width: 1.0) + ? BorderSide(color: widget.borderColor,width: widget.borderWidth) : BorderSide(color: Colors.transparent, width: 0), borderRadius: widget.hasBorder ? BorderRadius.circular(widget.bare ? 0.0 : widget.borderRadius) From da0f93202439e0ca82797625148cb6373eedc48a Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Tue, 6 Apr 2021 13:26:04 +0300 Subject: [PATCH 20/23] update Text Fields --- lib/widgets/shared/new_text_Field.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/widgets/shared/new_text_Field.dart b/lib/widgets/shared/new_text_Field.dart index 6ad3d570..f2e90f44 100644 --- a/lib/widgets/shared/new_text_Field.dart +++ b/lib/widgets/shared/new_text_Field.dart @@ -71,8 +71,8 @@ class NewTextFields extends StatefulWidget { this.prefixIcon, this.bare = false, this.onTap, - this.fontSize = 16.0, - this.fontWeight = FontWeight.w700, + this.fontSize = 15.0, + this.fontWeight = FontWeight.w500, this.autoValidate = false, this.hintColor, this.isEnabled = true}) @@ -197,7 +197,7 @@ class _NewTextFieldsState extends State { validator: widget.validator, onSaved: widget.onSaved, style: Theme.of(context).textTheme.body2.copyWith( - fontSize: widget.fontSize, fontWeight: widget.fontWeight), + fontSize: widget.fontSize, fontWeight: widget.fontWeight, color: Color(0xFF575757), fontFamily: 'Poppins'), inputFormatters: widget.keyboardType == TextInputType.phone ? [ WhitelistingTextInputFormatter.digitsOnly, @@ -207,7 +207,7 @@ class _NewTextFieldsState extends State { decoration: InputDecoration( labelText: widget.hintText, labelStyle: - TextStyle(color: Theme.of(context).textTheme.bodyText1.color), + TextStyle(color: Color(0xFF2E303A), fontSize:15,fontWeight: FontWeight.w700), errorBorder: OutlineInputBorder( borderSide: BorderSide( color: Theme.of(context).errorColor.withOpacity(0.5), From 2af1b6470ae0361196c66f0a9b9a80215012a370 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Tue, 6 Apr 2021 13:27:46 +0300 Subject: [PATCH 21/23] remove commented code --- lib/screens/doctor/doctor_repaly_chat.dart | 32 ---------------------- 1 file changed, 32 deletions(-) diff --git a/lib/screens/doctor/doctor_repaly_chat.dart b/lib/screens/doctor/doctor_repaly_chat.dart index 6980348b..d183406b 100644 --- a/lib/screens/doctor/doctor_repaly_chat.dart +++ b/lib/screens/doctor/doctor_repaly_chat.dart @@ -338,38 +338,6 @@ class DoctorReplayChat extends StatelessWidget { ], ), ) - - - // Container( - // child:SingleChildScrollView( - // child: TextFields( - // borderRadius: 0, - // hasLabelText: msgController.text != '' - // ? true - // : false, - // showLabelText: false, - // hintText: "\n"+TranslationBase - // .of(context) - // .typeHereToReply, - // fontSize: 13.5, - // - // suffixIcon: FontAwesomeIcons.arrowRight, - // suffixIconColor: Colors.green, - // // hintColor: Colors.black, - // fontWeight: FontWeight.w600, - // maxLines: 50, - // minLines: 3, - // controller: msgController, - // validator: (value) { - // if (value == null || value == "") - // return TranslationBase.of(context) - // .emptyMessage; - // else - // return null; - // }), - // ), - // height: MediaQuery.of(context).size.height * 0.11, - // ), )); } } From 654955fc76270892ac0b0604e23f0f5a1f0458ac Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Tue, 6 Apr 2021 13:31:57 +0300 Subject: [PATCH 22/23] fix label issue --- .../soap_update/subjective/update_subjective_page.dart | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart index c40ee25e..c3a43648 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart @@ -237,7 +237,7 @@ class _UpdateSubjectivePageState extends State { ExpandableSOAPWidget( headerTitle: TranslationBase.of(context) .chiefComplaints - .toUpperCase(), + , onTap: () { setState(() { isChiefExpand = !isChiefExpand; @@ -262,8 +262,7 @@ class _UpdateSubjectivePageState extends State { ExpandableSOAPWidget( headerTitle: TranslationBase .of(context) - .histories - .toUpperCase(), + .histories, onTap: () { setState(() { isHistoryExpand = !isHistoryExpand; @@ -285,7 +284,7 @@ class _UpdateSubjectivePageState extends State { headerTitle: TranslationBase .of(context) .allergiesSoap - .toUpperCase(), + , onTap: () { setState(() { isAllergiesExpand = !isAllergiesExpand; From 0528323e15e6bb97111bebf23921570fee1e04c9 Mon Sep 17 00:00:00 2001 From: mosazaid Date: Tue, 6 Apr 2021 15:21:02 +0300 Subject: [PATCH 23/23] fix patient card appbare bugs --- ...ent-profile-header-new-design-app-bar.dart | 510 +++++----- .../patient-profile-header-new-design.dart | 9 +- ..._profile_header_with_appointment_card.dart | 32 +- ..._header_with_appointment_card_app_bar.dart | 33 +- .../soap_update/update_objective_page.dart | 878 ++++++++++-------- 5 files changed, 780 insertions(+), 682 deletions(-) diff --git a/lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart b/lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart index 6e0192a8..74bb1be7 100644 --- a/lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart +++ b/lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart @@ -20,296 +20,294 @@ class PatientProfileHeaderNewDesignAppBar extends StatelessWidget with Preferred @override Widget build(BuildContext context) { - return PreferredSize( - preferredSize: Size(double.infinity, 200), + return Container( + padding: EdgeInsets.only( + left: 0, right: 5, bottom: 5,), + decoration: BoxDecoration( + color: Colors.white, + ), + height: 200, child: Container( padding: EdgeInsets.only( - left: 0, right: 5, bottom: 5,), - decoration: BoxDecoration( - color: Colors.white, - ), - height: 200, - child: Container( - padding: EdgeInsets.only( - left: 10, right: 10, bottom: 10), - margin: EdgeInsets.only(top: 50), - child: Column( - children: [ - Container( - padding: EdgeInsets.only(left: 12.0), - child: Row(children: [ - IconButton( - icon: Icon(Icons.arrow_back_ios), - color: Colors.black, //Colors.black, - onPressed: () => Navigator.pop(context), - ), - AppText( + left: 10, right: 10, bottom: 10), + margin: EdgeInsets.only(top: 50), + child: Column( + children: [ + Container( + padding: EdgeInsets.only(left: 12.0), + child: Row(children: [ + IconButton( + icon: Icon(Icons.arrow_back_ios), + color: Colors.black, //Colors.black, + onPressed: () => Navigator.pop(context), + ), + Expanded( + child: AppText( patient.firstName != null ? (Helpers.capitalize(patient.firstName) + " " + Helpers.capitalize( patient.lastName)) : Helpers.capitalize(patient.patientDetails.fullName), - fontSize: SizeConfig.textMultiplier * 2.5, + fontSize: SizeConfig.textMultiplier *2.5, fontWeight: FontWeight.bold, backGroundcolor: Colors.white, fontFamily: 'Poppins', ), - patient.gender == 1 - ? Icon( - DoctorApp.male_2, - color: Colors.blue, - ) - : Icon( - DoctorApp.female_1, - color: Colors.pink, - ), - ]), - ), - Row(children: [ - Padding( - padding: EdgeInsets.only(left: 12.0), - child: Container( - width: 60, - height: 60, - child: Image.asset( - patient.gender == 1 - ? 'assets/images/male_avatar.png' - : 'assets/images/female_avatar.png', - fit: BoxFit.cover, - ), - ), ), - SizedBox( - width: 10, + patient.patientDetails != null ? patient.patientDetails.gender == 1 : patient.gender == 1 + ? Icon( + DoctorApp.male_2, + color: Colors.blue, + ) + : Icon( + DoctorApp.female_1, + color: Colors.pink, ), - Expanded( - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - SERVICES_PATIANT2[ - int.parse(patientType)] == - "patientArrivalList" - ? Container( - child: Row( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - children: [ - patient.patientStatusType == - 43 - ? AppText( - TranslationBase.of( - context) - .arrivedP, - color: Colors.green, - fontWeight: - FontWeight.bold, - fontFamily: - 'Poppins', - fontSize: 12, - ) - : AppText( - TranslationBase.of( - context) - .notArrived, - color: - Colors.red[800], + ]), + ), + Row(children: [ + Padding( + padding: EdgeInsets.only(left: 12.0), + child: Container( + width: 60, + height: 60, + child: Image.asset( + patient.patientDetails != null ? patient.patientDetails.gender == 1 : patient.gender == 1 + ? 'assets/images/male_avatar.png' + : 'assets/images/female_avatar.png', + fit: BoxFit.cover, + ), + ), + ), + SizedBox( + width: 10, + ), + Expanded( + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + SERVICES_PATIANT2[ + int.parse(patientType)] == + "patientArrivalList" + ? Container( + child: Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + patient.patientStatusType == + 43 + ? AppText( + TranslationBase.of( + context) + .arrivedP, + color: Colors.green, + fontWeight: + FontWeight.bold, + fontFamily: + 'Poppins', + fontSize: 12, + ) + : AppText( + TranslationBase.of( + context) + .notArrived, + color: + Colors.red[800], + fontWeight: + FontWeight.bold, + fontFamily: + 'Poppins', + fontSize: 12, + ), + arrivalType == '1' + ? AppText( + patient.startTime != + null + ? patient + .startTime + : '', + fontFamily: + 'Poppins', + fontWeight: + FontWeight.w600, + ) + : AppText( + DateUtils.convertStringToDateFormat( + patient + .arrivedOn, + 'MM-dd-yyyy HH:mm'), + fontFamily: + 'Poppins', + fontWeight: + FontWeight.w600, + ) + ], + )) + : SizedBox(), + if (SERVICES_PATIANT2[ + int.parse(patientType)] == + "List_MyOutPatient") + Container( + child: Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context) + .appointmentDate + + " : ", + fontSize: 14, + ), + patient.startTime != null + ? Container( + height: 15, + width: 60, + decoration: + BoxDecoration( + borderRadius: + BorderRadius + .circular( + 25), + color: HexColor( + "#20A169"), + ), + child: AppText( + patient.startTime, + color: Colors.white, + fontSize: 1.5 * + SizeConfig + .textMultiplier, + textAlign: TextAlign + .center, fontWeight: FontWeight.bold, - fontFamily: - 'Poppins', - fontSize: 12, ), - arrivalType == '1' - ? AppText( - patient.startTime != - null - ? patient - .startTime - : '', - fontFamily: - 'Poppins', - fontWeight: - FontWeight.w600, - ) - : AppText( - DateUtils.convertStringToDateFormat( - patient - .arrivedOn, - 'MM-dd-yyyy HH:mm'), - fontFamily: - 'Poppins', + ) + : SizedBox(), + SizedBox( + width: 3.5, + ), + Container( + child: AppText( + convertDateFormat2(patient.appointmentDate.toString()?? ''), + fontSize: 1.5 * + SizeConfig + .textMultiplier, fontWeight: - FontWeight.w600, - ) - ], - )) - : SizedBox(), - if (SERVICES_PATIANT2[ - int.parse(patientType)] == - "List_MyOutPatient") - Container( - child: Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - AppText( - TranslationBase.of(context) - .appointmentDate + - " : ", - fontSize: 14, - ), - patient.startTime != null - ? Container( - height: 15, - width: 60, - decoration: - BoxDecoration( - borderRadius: - BorderRadius - .circular( - 25), - color: HexColor( - "#20A169"), - ), - child: AppText( - patient.startTime, - color: Colors.white, - fontSize: 1.5 * - SizeConfig - .textMultiplier, - textAlign: TextAlign - .center, - fontWeight: - FontWeight.bold, - ), - ) - : SizedBox(), - SizedBox( - width: 3.5, - ), - Container( - child: AppText( - convertDateFormat2(patient.appointmentDate.toString()?? ''), - fontSize: 1.5 * - SizeConfig - .textMultiplier, - fontWeight: - FontWeight.bold, - ), + FontWeight.bold, ), - SizedBox( - height: 0.5, - ) - ], - ), - margin: EdgeInsets.only( - top: 8, - ), - ), - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - RichText( - text: TextSpan( - style: TextStyle( - fontSize: 1.6 * - SizeConfig - .textMultiplier, - color: Colors.black), - children: [ - new TextSpan( - text: - TranslationBase.of( - context) - .fileNumber, - style: TextStyle( - fontSize: 12, - fontFamily: - 'Poppins')), - new TextSpan( - text: patient.patientId - .toString(), - style: TextStyle( - fontWeight: - FontWeight.w700, - fontFamily: - 'Poppins', - fontSize: 14)), - ], ), - ), - Row( - children: [ - AppText( - patient.nationalityName ?? - patient.nationality, - fontWeight: FontWeight.bold, - fontSize: 12, - ), - patient.nationality != null - ? ClipRRect( - borderRadius: - BorderRadius - .circular( - 20.0), - child: Image.network( - patient - .nationalityFlagURL, - height: 25, - width: 30, - errorBuilder: - (BuildContext - context, - Object - exception, - StackTrace - stackTrace) { - return Text( - 'No Image'); - }, - )) - : SizedBox() - ], - ) - ], + SizedBox( + height: 0.5, + ) + ], + ), + margin: EdgeInsets.only( + top: 8, + ), ), - Container( - child: RichText( - text: new TextSpan( - style: new TextStyle( - fontSize: 1.6 * - SizeConfig.textMultiplier, - color: Colors.black, - fontFamily: 'Poppins', - ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + RichText( + text: TextSpan( + style: TextStyle( + fontSize: 1.6 * + SizeConfig + .textMultiplier, + color: Colors.black), children: [ new TextSpan( - text: TranslationBase.of( + text: + TranslationBase.of( context) - .age + - " : ", + .fileNumber, style: TextStyle( - fontSize: 14)), + fontSize: 12, + fontFamily: + 'Poppins')), new TextSpan( - text: - "${DateUtils.getAgeByBirthday(patient.dateofBirth, context)}", + text: patient.patientId + .toString(), style: TextStyle( fontWeight: FontWeight.w700, + fontFamily: + 'Poppins', fontSize: 14)), ], ), ), + Row( + children: [ + AppText( + patient.nationalityName ?? + patient.nationality, + fontWeight: FontWeight.bold, + fontSize: 12, + ), + patient.nationality != null + ? ClipRRect( + borderRadius: + BorderRadius + .circular( + 20.0), + child: Image.network( + patient.nationalityFlagURL, + height: 25, + width: 30, + errorBuilder: + (BuildContext + context, + Object + exception, + StackTrace + stackTrace) { + return Text( + 'No Image'); + }, + )) + : SizedBox() + ], + ) + ], + ), + Container( + child: RichText( + text: new TextSpan( + style: new TextStyle( + fontSize: 1.6 * + SizeConfig.textMultiplier, + color: Colors.black, + fontFamily: 'Poppins', + ), + children: [ + new TextSpan( + text: TranslationBase.of( + context) + .age + + " : ", + style: TextStyle( + fontSize: 14)), + new TextSpan( + text: + "${DateUtils.getAgeByBirthday(patient.patientDetails != null ? patient.patientDetails.dateofBirth : patient.dateofBirth, context)}", + style: TextStyle( + fontWeight: + FontWeight.w700, + fontSize: 14)), + ], + ), ), - ], - ), + ), + ], ), - ]), - ], - ), + ), + ]), + ], ), ), ); diff --git a/lib/widgets/patients/profile/patient-profile-header-new-design.dart b/lib/widgets/patients/profile/patient-profile-header-new-design.dart index de0302a2..8f8e47a0 100644 --- a/lib/widgets/patients/profile/patient-profile-header-new-design.dart +++ b/lib/widgets/patients/profile/patient-profile-header-new-design.dart @@ -54,7 +54,7 @@ class PatientProfileHeaderNewDesign extends StatelessWidget { fontFamily: 'Poppins', ), ), - patient.gender == 1 + patient.patientDetails != null ? patient.patientDetails.gender == 1 : patient.gender == 1 ? Icon( DoctorApp.male_2, color: Colors.blue, @@ -72,7 +72,7 @@ class PatientProfileHeaderNewDesign extends StatelessWidget { width: 60, height: 60, child: Image.asset( - patient.gender == 1 + patient.patientDetails != null ? patient.patientDetails.gender == 1 : patient.gender == 1 ? 'assets/images/male_avatar.png' : 'assets/images/female_avatar.png', fit: BoxFit.cover, @@ -256,8 +256,7 @@ class PatientProfileHeaderNewDesign extends StatelessWidget { .circular( 20.0), child: Image.network( - patient - .nationalityFlagURL, + patient.nationalityFlagURL, height: 25, width: 30, errorBuilder: @@ -295,7 +294,7 @@ class PatientProfileHeaderNewDesign extends StatelessWidget { fontSize: 14)), new TextSpan( text: - "${DateUtils.getAgeByBirthday(patient.dateofBirth, context)}", + "${DateUtils.getAgeByBirthday(patient.patientDetails != null ? patient.patientDetails.dateofBirth : patient.dateofBirth, context)}", style: TextStyle( fontWeight: FontWeight.w700, diff --git a/lib/widgets/patients/profile/patient_profile_header_with_appointment_card.dart b/lib/widgets/patients/profile/patient_profile_header_with_appointment_card.dart index 57f79f7a..6f806c91 100644 --- a/lib/widgets/patients/profile/patient_profile_header_with_appointment_card.dart +++ b/lib/widgets/patients/profile/patient_profile_header_with_appointment_card.dart @@ -63,17 +63,20 @@ class PatientProfileHeaderWhitAppointment extends StatelessWidget { color: Colors.black, //Colors.black, onPressed: () => Navigator.pop(context), ), - AppText( - (Helpers.capitalize(patient.firstName) + - " " + - Helpers.capitalize( - patient.lastName)), - fontSize: SizeConfig.textMultiplier * 3, - fontWeight: FontWeight.bold, - backGroundcolor: Colors.white, - fontFamily: 'Poppins', + Expanded( + child: AppText( + patient.firstName != null ? + (Helpers.capitalize(patient.firstName) + + " " + + Helpers.capitalize( + patient.lastName)) : Helpers.capitalize(patient.patientDetails.fullName), + fontSize: SizeConfig.textMultiplier *2.5, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.white, + fontFamily: 'Poppins', + ), ), - patient.gender == 1 + patient.patientDetails != null ? patient.patientDetails.gender == 1 : patient.gender == 1 ? Icon( DoctorApp.male_2, color: Colors.blue, @@ -91,7 +94,7 @@ class PatientProfileHeaderWhitAppointment extends StatelessWidget { width: 60, height: 60, child: Image.asset( - patient.gender == 1 + patient.patientDetails != null ? patient.patientDetails.gender == 1 : patient.gender == 1 ? 'assets/images/male_avatar.png' : 'assets/images/female_avatar.png', fit: BoxFit.cover, @@ -210,7 +213,7 @@ class PatientProfileHeaderWhitAppointment extends StatelessWidget { ), Container( child: AppText( - convertDateFormat2(patient.appointmentDate??''), + convertDateFormat2(patient.appointmentDate.toString()?? ''), fontSize: 1.5 * SizeConfig .textMultiplier, @@ -275,8 +278,7 @@ class PatientProfileHeaderWhitAppointment extends StatelessWidget { .circular( 20.0), child: Image.network( - patient - .nationalityFlagURL, + patient.nationalityFlagURL, height: 25, width: 30, errorBuilder: @@ -314,7 +316,7 @@ class PatientProfileHeaderWhitAppointment extends StatelessWidget { fontSize: 14)), new TextSpan( text: - "${DateUtils.getAgeByBirthday(patient.dateofBirth, context)}", + "${DateUtils.getAgeByBirthday(patient.patientDetails != null ? patient.patientDetails.dateofBirth : patient.dateofBirth, context)}", style: TextStyle( fontWeight: FontWeight.w700, diff --git a/lib/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart b/lib/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart index 274d2264..e93ba37b 100644 --- a/lib/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart +++ b/lib/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart @@ -63,18 +63,20 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre color: Colors.black, //Colors.black, onPressed: () => Navigator.pop(context), ), - AppText( - patient.firstName != null ? - (Helpers.capitalize(patient.firstName) + - " " + - Helpers.capitalize( - patient.lastName)) : Helpers.capitalize(patient.patientDetails.fullName), - fontSize: SizeConfig.textMultiplier * 2.5, - fontWeight: FontWeight.bold, - backGroundcolor: Colors.white, - fontFamily: 'Poppins', + Expanded( + child: AppText( + patient.firstName != null ? + (Helpers.capitalize(patient.firstName) + + " " + + Helpers.capitalize( + patient.lastName)) : Helpers.capitalize(patient.patientDetails.fullName), + fontSize: SizeConfig.textMultiplier *2.5, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.white, + fontFamily: 'Poppins', + ), ), - patient.gender == 1 + patient.patientDetails != null ? patient.patientDetails.gender == 1 : patient.gender == 1 ? Icon( DoctorApp.male_2, color: Colors.blue, @@ -92,7 +94,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre width: 60, height: 60, child: Image.asset( - patient.gender == 1 + patient.patientDetails != null ? patient.patientDetails.gender == 1 : patient.gender == 1 ? 'assets/images/male_avatar.png' : 'assets/images/female_avatar.png', fit: BoxFit.cover, @@ -211,7 +213,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre ), Container( child: AppText( - convertDateFormat2(patient.appointmentDate??''), + convertDateFormat2(patient.appointmentDate.toString()?? ''), fontSize: 1.5 * SizeConfig .textMultiplier, @@ -276,8 +278,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre .circular( 20.0), child: Image.network( - patient - .nationalityFlagURL, + patient.nationalityFlagURL, height: 25, width: 30, errorBuilder: @@ -315,7 +316,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre fontSize: 14)), new TextSpan( text: - "${DateUtils.getAgeByBirthday(patient.dateofBirth, context)}", + "${DateUtils.getAgeByBirthday(patient.patientDetails != null ? patient.patientDetails.dateofBirth : patient.dateofBirth, context)}", style: TextStyle( fontWeight: FontWeight.w700, diff --git a/lib/widgets/patients/profile/soap_update/update_objective_page.dart b/lib/widgets/patients/profile/soap_update/update_objective_page.dart index af960ff7..1ce5fbea 100644 --- a/lib/widgets/patients/profile/soap_update/update_objective_page.dart +++ b/lib/widgets/patients/profile/soap_update/update_objective_page.dart @@ -1,5 +1,6 @@ import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; +import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; @@ -13,6 +14,7 @@ import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/expandable_SOAP_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; @@ -25,6 +27,7 @@ import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; class UpdateObjectivePage extends StatefulWidget { @@ -33,8 +36,13 @@ class UpdateObjectivePage extends StatefulWidget { final List mySelectedExamination; final PatiantInformtion patientInfo; + UpdateObjectivePage( - {Key key, this.changePageViewIndex, this.mySelectedExamination, this.patientInfo, this.changeLoadingState}); + {Key key, + this.changePageViewIndex, + this.mySelectedExamination, + this.patientInfo, + this.changeLoadingState}); @override _UpdateObjectivePageState createState() => _UpdateObjectivePageState(); @@ -55,6 +63,7 @@ class _UpdateObjectivePageState extends State { )), ); } + @override Widget build(BuildContext context) { final screenSize = MediaQuery.of(context).size; @@ -97,350 +106,435 @@ class _UpdateObjectivePageState extends State { builder: (_, model, w) => AppScaffold( isShowAppBar: false, // baseViewModel: model, - - body: SingleChildScrollView( - physics: ScrollPhysics(), - child: Center( - child: FractionallySizedBox( - widthFactor: 0.9, - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - SizedBox( - height: 30, - ), - HeaderBodyExpandableNotifier( - headerWidget: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Texts(TranslationBase.of(context).physicalSystemExamination, - variant: isSysExaminationExpand - ? "bodyText" - : '', - bold: isSysExaminationExpand ? true : false, - color: Colors.black), - Icon( - FontAwesomeIcons.asterisk, - color: AppGlobal.appPrimaryColor, - size: 12, - ) - ], + body: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: SingleChildScrollView( + physics: ScrollPhysics(), + child: Container( + color: Color.fromRGBO(248, 248, 248, 1), + child: Center( + child: FractionallySizedBox( + widthFactor: 0.95, + child: Container( + margin: EdgeInsets.all(8.0), + padding: EdgeInsets.all(12.0), + decoration: BoxDecoration( + shape: BoxShape.rectangle, + color: Colors.white, + borderRadius: BorderRadius.circular(12), + border: Border.fromBorderSide(BorderSide( + color: Colors.grey.shade400, + width: 0.4, + )), ), - InkWell( - onTap: () { - setState(() { - isSysExaminationExpand = - !isSysExaminationExpand; - }); - }, - child: Icon(isSysExaminationExpand - ? EvaIcons.minus - : EvaIcons.plus)) - ], - ), - bodyWidget: Column(children: [ - SizedBox( - height: 20, - ), - Column( - children: [ - Container( - margin: - EdgeInsets.only(left: 10, right: 10, top: 15), - child: TextFields( - hintText: TranslationBase.of(context).physicalSystemExamination, - fontSize: 13.5, - onTapTextFields: () { - openExaminationList(context); - }, - readOnly: true, - // hintColor: Colors.black, - suffixIcon: EvaIcons.plusCircleOutline, - suffixIconColor: AppGlobal.appPrimaryColor, - fontWeight: FontWeight.w600, - // controller: messageController, - validator: (value) { - if (value == null) - return TranslationBase.of(context) - .emptyMessage; - else - return null; - }), - ), - SizedBox( - height: 20, - ), - Column( - children: - widget.mySelectedExamination.map((examination) { - TextEditingController remarksController= TextEditingController(text :examination.remark); - - return Container( - margin: EdgeInsets.only( - left: 15, right: 15, top: 15), - child: Column(children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Texts( - ( examination - .selectedExamination.nameEn ) - .toUpperCase(), - variant: "bodyText", - bold: true, - color: Colors.black) - ], - ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + HeaderBodyExpandableNotifier( + headerWidget: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + AppText( + "${TranslationBase.of(context).physicalSystemExamination}", + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 2.0, + fontWeight: isSysExaminationExpand ? FontWeight.w700 : FontWeight.normal, + ), + /*Texts( + TranslationBase.of(context) + .physicalSystemExamination, + variant: isSysExaminationExpand + ? "bodyText" + : '', + bold: isSysExaminationExpand + ? true + : false, + color: Colors.black),*/ + Icon( + FontAwesomeIcons.asterisk, + color: AppGlobal.appPrimaryColor, + size: 12, + ) + ], + ), + InkWell( + onTap: () { + setState(() { + isSysExaminationExpand = + !isSysExaminationExpand; + }); + }, + child: Icon(isSysExaminationExpand + ? Icons.keyboard_arrow_up + : Icons.keyboard_arrow_down)) + ], + ), + bodyWidget: Column(children: [ SizedBox( - height: 8, + height: 20, ), - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, + Column( children: [ - Row( - children: [ - InkWell( - child: Center( - child: Container( - height: - screenSize.height * - 0.070, - decoration: - containerBorderDecoration( - examination - .isNormal - ? Color( - 0xFF515A5D) - : Colors - .white, - Colors.grey), - child: Center( - child: Padding( - padding: - const EdgeInsets - .all(8.0), - child: Text( - TranslationBase.of(context).normal, - style: TextStyle( - fontSize: 12, - color: - examination - .isNormal - ? Colors.white - : Colors - .black, - //Colors.black, - fontWeight: - FontWeight - .bold, - ), - ), - ), - )), - ), - onTap: () { - setState(() { - examination.isAbnormal = - false; - examination.isNormal = - true; - examination.notExamined = false; - }); - }), - SizedBox( - width: 12, - ), - InkWell( - child: Center( - child: Container( - height: - screenSize.height * - 0.070, - decoration: - containerBorderDecoration( - examination - .isAbnormal - ? Color( - 0xFF515A5D) - : Colors - .white, - Colors.black), - child: Center( - child: Padding( - padding: - const EdgeInsets - .all(8.0), - child: Text( - TranslationBase.of(context).abnormal, - style: TextStyle( - fontSize: 12, - color: - examination - .isAbnormal - ? Colors.white - : Colors - .black, - //Colors.black, - fontWeight: - FontWeight - .bold, - ), + Container( + margin: EdgeInsets.only( + left: 10, right: 10, top: 15), + child: TextFields( + hintText: TranslationBase.of(context) + .physicalSystemExamination, + fontSize: 13.5, + onTapTextFields: () { + openExaminationList(context); + }, + readOnly: true, + // hintColor: Colors.black, + suffixIcon: + EvaIcons.plusCircleOutline, + suffixIconColor: + AppGlobal.appPrimaryColor, + fontWeight: FontWeight.w600, + // controller: messageController, + validator: (value) { + if (value == null) + return TranslationBase.of(context) + .emptyMessage; + else + return null; + }), + ), + SizedBox( + height: 20, + ), + Column( + children: widget.mySelectedExamination + .map((examination) { + TextEditingController + remarksController = + TextEditingController( + text: examination.remark); + + return Container( + margin: EdgeInsets.only( + left: 15, right: 15, top: 15), + child: Column(children: [ + Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Texts( + (examination + .selectedExamination + .nameEn) + .toUpperCase(), + variant: "bodyText", + bold: true, + color: Colors.black) + ], + ), + SizedBox( + height: 8, + ), + Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Row( + children: [ + InkWell( + child: Center( + child: Container( + height: screenSize + .height * + 0.070, + decoration: containerBorderDecoration( + examination + .isNormal + ? Color( + 0xFF515A5D) + : Colors + .white, + Colors + .grey), + child: Center( + child: + Padding( + padding: + const EdgeInsets.all( + 8.0), + child: Text( + TranslationBase.of( + context) + .normal, + style: + TextStyle( + fontSize: + 12, + color: examination.isNormal + ? Colors.white + : Colors.black, + //Colors.black, + fontWeight: + FontWeight.bold, + ), + ), + ), + )), + ), + onTap: () { + setState(() { + examination + .isAbnormal = + false; + examination + .isNormal = + true; + examination + .notExamined = + false; + }); + }), + SizedBox( + width: 12, ), - ), - )), - ), - onTap: () { - setState(() { - examination.isNormal = - false; - examination.isAbnormal = - true; - examination.notExamined = false; - }); - }),SizedBox( - width: 12, - ), - InkWell( - child: Center( - child: Container( - height: - screenSize.height * - 0.070, - decoration: - containerBorderDecoration( - examination - .notExamined - ? Color( - 0xFF515A5D) - : Colors - .white, - Colors.black), - child: Center( - child: Padding( - padding: - const EdgeInsets - .all(8.0), - child: Text( - "Not Examined", - style: TextStyle( - fontSize: 12, - color: - examination - .notExamined - ? Colors.white - : Colors - .black, - //Colors.black, - fontWeight: - FontWeight - .bold, - ), + InkWell( + child: Center( + child: Container( + height: screenSize + .height * + 0.070, + decoration: containerBorderDecoration( + examination + .isAbnormal + ? Color( + 0xFF515A5D) + : Colors + .white, + Colors + .black), + child: Center( + child: + Padding( + padding: + const EdgeInsets.all( + 8.0), + child: Text( + TranslationBase.of( + context) + .abnormal, + style: + TextStyle( + fontSize: + 12, + color: examination.isAbnormal + ? Colors.white + : Colors.black, + //Colors.black, + fontWeight: + FontWeight.bold, + ), + ), + ), + )), + ), + onTap: () { + setState(() { + examination + .isNormal = + false; + examination + .isAbnormal = + true; + examination + .notExamined = + false; + }); + }), + SizedBox( + width: 12, ), + InkWell( + child: Center( + child: Container( + height: screenSize + .height * + 0.070, + decoration: containerBorderDecoration( + examination + .notExamined + ? Color( + 0xFF515A5D) + : Colors + .white, + Colors + .black), + child: Center( + child: + Padding( + padding: + const EdgeInsets.all( + 8.0), + child: Text( + "Not Examined", + style: + TextStyle( + fontSize: + 12, + color: examination.notExamined + ? Colors.white + : Colors.black, + //Colors.black, + fontWeight: + FontWeight.bold, + ), + ), + ), + )), + ), + onTap: () { + setState(() { + examination + .isAbnormal = + false; + examination + .isNormal = + false; + examination + .notExamined = + true; + }); + }), + ], + ), + InkWell( + child: Icon( + FontAwesomeIcons.trash, + color: Colors.grey, + size: 20, ), - )), - ), - onTap: () { - setState(() { - examination.isAbnormal = - false; - examination.isNormal = - false; - examination.notExamined = true; - }); - }), - ], - ), - InkWell( - - child: Icon( - FontAwesomeIcons.trash, - color: Colors.grey, - size: 20, - ), - onTap: () => removeExamination( - examination.selectedExamination), + onTap: () => removeExamination( + examination + .selectedExamination), + ) + ], + ), + SizedBox( + height: 20, + ), + Container( + margin: EdgeInsets.only( + left: 0, right: 0, top: 15), + child: TextFields( + hasLabelText: + remarksController + .text != + '' + ? true + : false, + showLabelText: true, + hintText: + TranslationBase.of( + context) + .remarks, + fontSize: 13.5, + // hintColor: Colors.black, + fontWeight: FontWeight.w600, + maxLines: 25, + minLines: 4, + controller: + remarksController, + onChanged: (val) { + examination.remark = val; + }, + validator: (value) { + if (value == null) + return TranslationBase + .of(context) + .emptyMessage; + else + return null; + }), + ), + SizedBox( + height: 20, + ), + ])); + }).toList(), ) ], - ), - SizedBox( - height: 20, - ), - Container( - margin: EdgeInsets.only( - left: 0, right: 0, top: 15), - child: TextFields( - hasLabelText: remarksController.text != ''?true:false, - showLabelText: true, - hintText: TranslationBase.of(context).remarks, - fontSize: 13.5, - // hintColor: Colors.black, - fontWeight: FontWeight.w600, - maxLines: 25, - minLines: 4, - controller: remarksController, - onChanged: (val) { - examination.remark = val; - }, - validator: (value) { - if (value == null) - return TranslationBase.of(context) - .emptyMessage; - else - return null; - }), - ), - SizedBox( - height: 20, - ), - ])); - }).toList(), - ) - ], - ) - ]), - isExpand: isSysExaminationExpand, + ) + ]), + isExpand: isSysExaminationExpand, + ), + ], + ), + ), + ), + ), + ), ), - DividerWithSpacesAround(height: 30,), - AppButton( - title: TranslationBase.of(context).next, - loading: model.state == ViewState.BusyLocal, - onPressed: () async { - await submitUpdateObjectivePage(model); - }, + ), + Container( + margin: EdgeInsets.symmetric(horizontal: 16, vertical: 8), + child: Row( + children: [ + Expanded( + child: AppButton( + title: TranslationBase.of(context).previous, + color: HexColor("#EAEAEA"), + fontColor: Colors.black, + onPressed: () { + widget.changePageViewIndex(0); + }, + ), + ), + SizedBox( + width: 10, ), - SizedBox( - height: 30, + Expanded( + child: AppButton( + title: TranslationBase.of(context).next, + loading: model.state == ViewState.BusyLocal, + color: HexColor("#A5A5A5"), + fontColor: HexColor("#5A5A5A"), + fontWeight: FontWeight.bold, + onPressed: () async { + await submitUpdateObjectivePage(model); + }, + ), + ), + ], ), - ], - ), - ), - ), - ))); + ), + ], + ))); } submitUpdateObjectivePage(SOAPViewModel model) async { - - if(widget.mySelectedExamination.isNotEmpty){ + if (widget.mySelectedExamination.isNotEmpty) { Map profile = await sharedPref.getObj(DOCTOR_PROFILE); DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); - PostPhysicalExamRequestModel postPhysicalExamRequestModel = new PostPhysicalExamRequestModel(); + PostPhysicalExamRequestModel postPhysicalExamRequestModel = + new PostPhysicalExamRequestModel(); widget.mySelectedExamination.forEach((exam) { if (postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM == null) - postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM = []; + postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM = + []; - postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM.add( - ListHisProgNotePhysicalExaminationVM( + postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM + .add(ListHisProgNotePhysicalExaminationVM( patientMRN: widget.patientInfo.patientMRN, episodeId: widget.patientInfo.episodeNo, appointmentNo: widget.patientInfo.appointmentNo, remarks: exam.remark ?? '', - createdBy: exam.createdBy??doctorProfile.doctorID, + createdBy: exam.createdBy ?? doctorProfile.doctorID, createdOn: DateTime.now().toIso8601String(), editedBy: doctorProfile.doctorID, editedOn: DateTime.now().toIso8601String(), @@ -450,15 +544,20 @@ class _UpdateObjectivePageState extends State { isNormal: exam.isNormal, // masterDescription: exam.selectedExamination, notExamined: exam.notExamined, - examinationType: exam.isNormal?1:exam.isAbnormal?2:3, - examinationTypeName: exam.isNormal?"Normal":exam.isAbnormal?'AbNormal':"Not Examined", - isNew:exam.isNew - - )); + examinationType: exam.isNormal + ? 1 + : exam.isAbnormal + ? 2 + : 3, + examinationTypeName: exam.isNormal + ? "Normal" + : exam.isAbnormal + ? 'AbNormal' + : "Not Examined", + isNew: exam.isNew)); }); - if(model.patientPhysicalExamList.isEmpty) { - + if (model.patientPhysicalExamList.isEmpty) { await model.postPhysicalExam(postPhysicalExamRequestModel); } else { await model.patchPhysicalExam(postPhysicalExamRequestModel); @@ -482,9 +581,8 @@ class _UpdateObjectivePageState extends State { removeExamination(MasterKeyModel masterKey) { Iterable history = widget.mySelectedExamination - .where( - (element) => - masterKey.id == element.selectedExamination.id && + .where((element) => + masterKey.id == element.selectedExamination.id && masterKey.typeId == element.selectedExamination.typeId); if (history.length > 0) @@ -494,11 +592,9 @@ class _UpdateObjectivePageState extends State { } openExaminationList(BuildContext context) { - final screenSize = MediaQuery - .of(context) - .size; - InputDecoration textFieldSelectorDecoration(String hintText, - String selectedText, bool isDropDown) { + final screenSize = MediaQuery.of(context).size; + InputDecoration textFieldSelectorDecoration( + String hintText, String selectedText, bool isDropDown) { return InputDecoration( focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0), @@ -533,7 +629,8 @@ class _UpdateObjectivePageState extends State { Navigator.of(context).pop(); }); }, - removeExamination: (masterKey) => removeExamination(masterKey),); + removeExamination: (masterKey) => removeExamination(masterKey), + ); }); } } @@ -541,10 +638,13 @@ class _UpdateObjectivePageState extends State { class AddExaminationDailog extends StatefulWidget { final List mySelectedExamination; final Function addSelectedExamination; - final Function (MasterKeyModel) removeExamination; + final Function(MasterKeyModel) removeExamination; const AddExaminationDailog( - {Key key, this.mySelectedExamination, this.addSelectedExamination, this.removeExamination}) + {Key key, + this.mySelectedExamination, + this.addSelectedExamination, + this.removeExamination}) : super(key: key); @override @@ -559,71 +659,69 @@ class _AddExaminationDailogState extends State { child: BaseView( onModelReady: (model) async { if (model.physicalExaminationList.length == 0) { - await model.getMasterLookup( - MasterKeysService.PhysicalExamination); + await model + .getMasterLookup(MasterKeysService.PhysicalExamination); } }, - builder: (_, model, w) => - AppScaffold( + builder: (_, model, w) => AppScaffold( baseViewModel: model, isShowAppBar: false, body: Center( child: Container( child: FractionallySizedBox( - widthFactor: 0.9, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox( - height: 16, - ), - AppText( - TranslationBase.of(context).physicalSystemExamination, - fontWeight: FontWeight.bold, - fontSize: 16, - ), - SizedBox( - height: 16, - ), - MasterKeyCheckboxSearchWidget( - model: model, - hintSearchText: TranslationBase.of(context).searchExamination, - buttonName: TranslationBase.of(context).addExamination, - masterList: model.physicalExaminationList, - removeHistory: (history){ - setState(() { - widget.removeExamination(history); - }); - }, - addHistory: (history){ - setState(() { - MySelectedExamination mySelectedExamination = new MySelectedExamination( - selectedExamination: history - ); - widget - .mySelectedExamination - .add( - mySelectedExamination); - }); - }, - addSelectedHistories: (){ - widget.addSelectedExamination(); - }, - isServiceSelected: (master) =>isServiceSelected(master), - ), - ]), - ))), + widthFactor: 0.9, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 16, + ), + AppText( + TranslationBase.of(context).physicalSystemExamination, + fontWeight: FontWeight.bold, + fontSize: 16, + ), + SizedBox( + height: 16, + ), + MasterKeyCheckboxSearchWidget( + model: model, + hintSearchText: + TranslationBase.of(context).searchExamination, + buttonName: + TranslationBase.of(context).addExamination, + masterList: model.physicalExaminationList, + removeHistory: (history) { + setState(() { + widget.removeExamination(history); + }); + }, + addHistory: (history) { + setState(() { + MySelectedExamination mySelectedExamination = + new MySelectedExamination( + selectedExamination: history); + widget.mySelectedExamination + .add(mySelectedExamination); + }); + }, + addSelectedHistories: () { + widget.addSelectedExamination(); + }, + isServiceSelected: (master) => + isServiceSelected(master), + ), + ]), + ))), )), ); } isServiceSelected(MasterKeyModel masterKey) { - Iterable exam = - widget - .mySelectedExamination - .where((element) => - masterKey.id == element.selectedExamination.id && - masterKey.typeId == element.selectedExamination.typeId); + Iterable exam = widget.mySelectedExamination.where( + (element) => + masterKey.id == element.selectedExamination.id && + masterKey.typeId == element.selectedExamination.typeId); if (exam.length > 0) { return true; }