diff --git a/lib/config/config.dart b/lib/config/config.dart index 81dea160..df2b83e8 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -4,8 +4,8 @@ const MAX_SMALL_SCREEN = 660; const ONLY_NUMBERS = "[0-9]"; const ONLY_LETTERS = "[a-zA-Z &'\"]"; const ONLY_DATE = "[0-9/]"; -const BASE_URL = 'https://hmgwebservices.com/'; -//const BASE_URL = 'https://uat.hmgwebservices.com/'; +// const BASE_URL = 'https://hmgwebservices.com/'; +const BASE_URL = 'https://uat.hmgwebservices.com/'; const PHARMACY_ITEMS_URL = "Services/Lists.svc/REST/GetPharmcyItems_Region_enh"; const PHARMACY_LIST_URL = "Services/Patients.svc/REST/GetPharmcyList"; const PATIENT_PROGRESS_NOTE_URL = diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 4f64d5ee..5544ca75 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -337,8 +337,8 @@ const Map> localizedValues = { 'sameBranch': {'en': "Same Branch", 'ar': 'نفس الفرع'}, 'otherBranch': {'en': "Other Branch", 'ar': 'فرع آخر'}, 'dr': {'en': "DR.", 'ar': 'د.'}, - 'previewHealth': {'en': "Preview Health", 'ar': 'معاينة الصحة'}, - 'summaryReport': {'en': "Summary Report", 'ar': 'تقرير موجز'}, + 'previewHealth': {'en': "Health", 'ar': 'الصحة'}, + 'summaryReport': {'en': "Summary", 'ar': 'موجز'}, 'accept': {'en': "ACCEPT", 'ar': 'قبول'}, 'reject': {'en': "REJECT", 'ar': 'رفض'}, 'noAppointmentsErrorMsg': { @@ -490,7 +490,7 @@ const Map> localizedValues = { 'significantSigns': {'en': "SIGNIFICANT SIGNS", 'ar': 'علامات مهمة'}, 'backAbdomen': {'en': "Back : Abdomen", 'ar': 'الظهر: البطن'}, 'reasons': {'en': "Reasons", 'ar': 'الأسباب'}, - 'createNew': {'en': "Create New", 'ar': 'انشاء '}, + 'createNew': {'en': "Create", 'ar': 'انشاء '}, 'episode': {'en': "Episode", 'ar': 'Episode'}, 'chiefComplaints': {'en': "Chief Complaints", 'ar': 'الشكاوى'}, 'addChiefComplaints': {'en': "Add Chief Complaints", 'ar': ' اضافه الشكاوى'}, diff --git a/lib/screens/patients/profile/patient_profile_screen.dart b/lib/screens/patients/profile/patient_profile_screen.dart index 6adf2eee..a2282f49 100644 --- a/lib/screens/patients/profile/patient_profile_screen.dart +++ b/lib/screens/patients/profile/patient_profile_screen.dart @@ -5,19 +5,25 @@ import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/models/SOAP/GeneralGetReqForSOAP.dart'; +import 'package:doctor_app_flutter/models/SOAP/PostEpisodeReqModel.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/date-utils.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/profile_medical_info_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget_search.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:doctor_app_flutter/widgets/shared/borderedButton.dart'; +import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; +import '../../../routes.dart'; + /* *@author: Elham Rababah *@Date:22/4/2020 @@ -38,6 +44,7 @@ class PatientProfileScreen extends StatelessWidget { patient = routeArgs['patient']; String patientType = routeArgs['patientType']; + String arrivalType = routeArgs['arrivalType']; String from = routeArgs['from']; String to = routeArgs['to']; if (routeArgs.containsKey("isSearch")) { @@ -61,773 +68,397 @@ class PatientProfileScreen extends StatelessWidget { builder: (_, model, w) => AppScaffold( baseViewModel: model, appBarTitle: TranslationBase.of(context).patientProfile, + isShowAppBar: false, body: Container( color: Color(0XFFF2F2F2), - child: CustomScrollView(primary: false, slivers: [ - SliverList( - delegate: SliverChildListDelegate( - [ - /* Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - decoration: BoxDecoration(boxShadow: [ - BoxShadow( - color: Colors.grey.shade300, - blurRadius: 10.0, - spreadRadius: 0, - offset: Offset(0, 10)), - ], color: Colors.white), - child: Column(children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - children: [ - AvatarWidget( - Icon( - patient.genderDescription == "Male" - ? DoctorApp.male - : DoctorApp.female_icon, - size: 70, - color: Colors.white, - ), + child: Stack( + children: [ + SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + padding: EdgeInsets.only( + left: 0, right: 5, bottom: 5, top: 5), + decoration: BoxDecoration( + color: Colors.white, + ), + height: 220, + 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), ), - SizedBox( - width: 20, + AppText( + (Helpers.capitalize(patient.firstName) + + " " + + Helpers.capitalize( + patient.lastName)), + fontSize: SizeConfig.textMultiplier * 3, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.white, + fontFamily: 'Poppins', ), - Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - AppText( - patient.firstName + - ' ' + - patient.lastName, - color: Colors.black, - fontWeight: FontWeight.bold, - ), - Row( - children: [ - AppText( - TranslationBase.of(context) - .fileNo, - color: Colors.black, - fontWeight: FontWeight.bold, - ), - SizedBox( - width: 4, - ), - AppText( - patient.patientId.toString(), - color: Colors.black, - fontWeight: FontWeight.normal, - ), - ], - ), - model.patientAllergiesList - .isNotEmpty && - model.getAllergicNames( - projectViewModel - .isArabic) != - '' - ? Container( - width: MediaQuery.of(context) - .size - .width * - 0.65, - child: Padding( - padding: const EdgeInsets - .symmetric(vertical: 8), - child: AppText( - TranslationBase.of( - context) - .allergicTO + - " : " + - model.getAllergicNames( - projectViewModel - .isArabic), - color: Color(0xFFB9382C), - fontWeight: - FontWeight.bold, - ), - ), - ) - : AppText(''), - ], - ) - ], + patient.gender == 1 + ? Icon( + DoctorApp.male_2, + color: Colors.blue, + ) + : Icon( + DoctorApp.female_1, + color: Colors.pink, + ), + ]), ), - ), - Container( - width: double.infinity, - height: 1, - color: Color(0xffCCCCCC), - ), - Container( - height: 11 * SizeConfig.textMultiplier, - child: Row( - children: [ - Expanded( - child: Padding( - padding: const EdgeInsets.fromLTRB( - 16.0, 8.0, 8.0, 8.0), - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - AppText( - TranslationBase.of(context).age, - fontWeight: FontWeight.bold, - fontSize: 2 * - SizeConfig.textMultiplier, - ), - SizedBox( - height: 4, - ), - AppText( - "${DateUtils.convertDateFromServerFormat(patient.dateofBirth, 'dd-MM-yyyy')} / ${DateUtils.getAgeByBirthday(patient.dateofBirth, context)}", - fontWeight: FontWeight.normal, - fontSize: 1.6 * - SizeConfig.textMultiplier, - ), - ], - ), + 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, ), ), - Container( - width: 1, - color: Color(0xffCCCCCC), - ), - Expanded( - child: Padding( - padding: const EdgeInsets.fromLTRB( - 16.0, 8.0, 8.0, 8.0), - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - AppText( - TranslationBase.of(context) - .nationality, - fontWeight: FontWeight.bold, - fontSize: 2 * - SizeConfig.textMultiplier, - ), - SizedBox( - height: 4, - ), - AppText( - patient.nationalityName ?? - patient.nationality, - fontWeight: FontWeight.normal, - fontSize: 1.7 * - SizeConfig.textMultiplier, - ), - ], - ), - ), - ), - Container( - width: 1, - color: Color(0xffCCCCCC), - ), - Expanded( - child: Padding( - padding: const EdgeInsets.fromLTRB( - 16.0, 8.0, 8.0, 8.0), - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - AppText( - TranslationBase.of(context) - .gender, - fontWeight: FontWeight.bold, - fontSize: 2 * - SizeConfig.textMultiplier, - ), - SizedBox( - height: 4, - ), - AppText( - patient.gender.toString() == '1' - ? 'Male' - : 'Female', - fontWeight: FontWeight.normal, - fontSize: 1.8 * - SizeConfig.textMultiplier, - ), - ], - ), - ), - ), - ], - ), - ), - Container( - width: double.infinity, - height: 1, - color: Color(0xffCCCCCC), - ), - ]), - ), - if (patient.admissionNo != null) - Container( - margin: EdgeInsets.all(16), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AppText( - TranslationBase.of(context) - .admissionDetail, - color: Colors.black, - fontWeight: FontWeight.bold, - fontSize: 1.8 * SizeConfig.textMultiplier, ), SizedBox( - height: 4, + width: 10, ), - Container( - decoration: BoxDecoration( - color: Colors.white, - shape: BoxShape.rectangle, - borderRadius: BorderRadius.circular(8), - border: - Border.fromBorderSide(BorderSide( - color: Color(0xffBBBBBB), - width: 1, - )), - ), + Expanded( child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, children: [ - Padding( - padding: EdgeInsets.all(16), - child: Column( - children: [ - Row( - children: [ - Container( - width: 14 * - SizeConfig - .textMultiplier, - child: AppText( - TranslationBase.of( - context) - .dateTime, - color: Colors.black, - fontWeight: - FontWeight.bold, - fontSize: 1.6 * - SizeConfig - .textMultiplier, - ), - ), - Expanded( - child: AppText( - patient.createdOn != - null - ? "${DateUtils.convertDateFromServerFormat(patient.createdOn, 'EEEE dd, MMMM yyyy hh:mm a')}" - : "", - color: Colors.black, - fontWeight: - FontWeight.normal, - fontSize: 1.6 * - SizeConfig - .textMultiplier, - ), - ), - ], - ), - SizedBox( - height: 4, - ), - Row( - children: [ - Container( - width: 14 * - SizeConfig - .textMultiplier, - child: AppText( - TranslationBase.of( - context) - .admissionNo, - color: Colors.black, - fontWeight: - FontWeight.bold, - fontSize: 1.6 * - SizeConfig - .textMultiplier, - ), - ), - AppText( - patient.admissionNo != - null - ? patient.admissionNo - : '', - color: Colors.black, - fontWeight: - FontWeight.normal, - fontSize: 1.6 * - SizeConfig - .textMultiplier, - ), - ], - ), - SizedBox( - height: 4, - ), - Row( + SERVICES_PATIANT2[ + int.parse(patientType)] == + "patientArrivalList" + ? Container( + child: Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, children: [ - Container( - width: 14 * - SizeConfig - .textMultiplier, - child: AppText( - TranslationBase.of( - context) - .losNo, - color: Colors.black, - fontWeight: - FontWeight.bold, - fontSize: 1.6 * - SizeConfig - .textMultiplier, - ), - ), - AppText( - patient.createdOn != null - ? DateUtils - .differenceBetweenServerDateAndCurrent( - patient - .createdOn, - context) - : "", - color: Colors.black, - fontWeight: - FontWeight.normal, - fontSize: 1.6 * - SizeConfig - .textMultiplier, - ), + 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, + ) ], - ), - ], - ), - ), - const Divider( - color: Color(0xffCCCCCC), - height: 5, - thickness: 1, - indent: 0, - endIndent: 0, - ), - Container( - height: - 10 * SizeConfig.textMultiplier, - child: Row( - children: [ - Expanded( - child: Padding( - padding: const EdgeInsets - .fromLTRB( - 16.0, 8.0, 8.0, 8.0), - child: Column( - crossAxisAlignment: - CrossAxisAlignment - .start, - children: [ - AppText( - TranslationBase.of( - context) - .area, - fontWeight: - FontWeight.bold, - fontSize: 1.6 * - SizeConfig - .textMultiplier, - ), - SizedBox( - height: 4, - ), - AppText( - patient - .clinicDescription, - fontWeight: - FontWeight.normal, - fontSize: 1.6 * - SizeConfig - .textMultiplier, - ), - ], - ), + )) + : SizedBox(), + if (SERVICES_PATIANT2[ + int.parse(patientType)] == + "List_MyOutPatient") + Container( + child: Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context) + .appointmentDate + + " : ", + fontSize: 14, ), - ), - Container( - width: 1, - color: Color(0xffCCCCCC), - ), - Expanded( - child: Padding( - padding: const EdgeInsets - .fromLTRB( - 16.0, 8.0, 8.0, 8.0), - child: Column( - crossAxisAlignment: - CrossAxisAlignment - .start, - mainAxisAlignment: - MainAxisAlignment - .spaceEvenly, - children: [ - Expanded( - child: Row( - crossAxisAlignment: - CrossAxisAlignment - .start, - children: [ - AppText( - TranslationBase.of( - context) - .room, - fontWeight: - FontWeight - .bold, - fontSize: 1.6 * - SizeConfig - .textMultiplier, - ), - SizedBox( - width: 4, - ), - Expanded( - child: AppText( - "${patient.nursingStationName}\n${patient.roomId}", - fontWeight: - FontWeight - .normal, - fontSize: 1.4 * - SizeConfig - .textMultiplier, - ), - ), - ], + patient.startTime != null + ? Container( + height: 15, + width: 60, + decoration: + BoxDecoration( + borderRadius: + BorderRadius + .circular( + 25), + color: HexColor( + "#20A169"), ), - ), - SizedBox( - height: 4, - ), - Expanded( - child: Row( - crossAxisAlignment: - CrossAxisAlignment - .start, - children: [ - AppText( - TranslationBase.of( - context) - .bed, - fontWeight: - FontWeight - .bold, - fontSize: 1.6 * - SizeConfig - .textMultiplier, - ), - SizedBox( - width: 4, - ), - AppText( - "${patient.bedId}", - fontWeight: - FontWeight - .normal, - fontSize: 1.6 * - SizeConfig - .textMultiplier, - ), - ], + 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, ), ), - ), - ], - ), - ) - ], - ), - ) - ], - ), - ), - ], - ),*/ - Container( - // margin: EdgeInsets.all(6), - padding: EdgeInsets.only( - left: 0, right: 5, bottom: 5, top: 5), - decoration: BoxDecoration( - // borderRadius: BorderRadius.circular(15), - color: Colors.white, - ), - child: Stack( - children: [ - Container( - padding: EdgeInsets.only( - left: 10, right: 10, bottom: 10), - child: Column( - children: [ - 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( + height: 0.5, + ) + ], + ), + margin: EdgeInsets.only( + top: 8, + ), ), - ), - ), - SizedBox( - width: 10, - ), - Expanded( - child: Column( + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, 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, - ), - patientType == '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( + RichText( + text: TextSpan( + style: TextStyle( + fontSize: 1.6 * + SizeConfig + .textMultiplier, + color: Colors.black), + children: [ + new TextSpan( + text: + 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, - ), - ), - SizedBox( - height: 0.5, - ) - ], - ), - margin: EdgeInsets.only( - top: 8, - ), + .fileNumber, + style: TextStyle( + fontSize: 12, + fontFamily: + 'Poppins')), + new TextSpan( + text: patient.patientId + .toString(), + style: TextStyle( + fontWeight: + FontWeight.w700, + fontFamily: + 'Poppins', + fontSize: 14)), + ], ), + ), Row( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, children: [ - RichText( - text: new TextSpan( - style: new TextStyle( - fontSize: 2.0 * - SizeConfig - .textMultiplier, - color: Colors.black), - children: [ - new TextSpan( - text: TranslationBase - .of(context) - .fileNumber, - style: TextStyle( - fontSize: 14, - fontFamily: - 'Poppins')), - new TextSpan( - text: patient - .patientId - .toString(), - style: TextStyle( - fontWeight: - FontWeight - .w700, - fontFamily: - 'Poppins', - fontSize: 15)), - ], - ), + AppText( + patient.nationalityName ?? + patient.nationality, + fontWeight: FontWeight.bold, + fontSize: 12, ), - Expanded(child: Row( - children: [ - AppText( - patient.nationalityName ?? - patient.nationality, - fontWeight: FontWeight.bold, - fontSize: 14, - ), - patient.nationality != null - ? ClipRRect( + patient.nationality != null + ? ClipRRect( borderRadius: - BorderRadius.circular(20.0), + BorderRadius + .circular( + 20.0), child: Image.network( - patient.nationalityFlagURL, + patient + .nationalityFlagURL, height: 25, width: 30, - errorBuilder: (BuildContext context, - Object exception, - StackTrace stackTrace) { - return Text('No Image'); + errorBuilder: + (BuildContext + context, + Object + exception, + StackTrace + stackTrace) { + return Text( + 'No Image'); }, )) - : SizedBox() - ], - )) + : SizedBox() ], ) ], ), - ) - ], - crossAxisAlignment: - CrossAxisAlignment.start, + 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.dateofBirth, context)}", + style: TextStyle( + fontWeight: + FontWeight.w700, + fontSize: 14)), + ], + ), + ), + ), + ], + ), ), - ], - ), + ]), + ], ), - ], + ), ), - ), - ], - ), - ), - SliverPadding( - padding: const EdgeInsets.all(16.0), - sliver: isFromSearch - ? ProfileMedicalInfoWidgetSearch( - patient: patient, - patientType: patientType, - from: from, - to: to, + Padding( + padding: const EdgeInsets.all(16.0), + child: Container( + child: Column( + children: [ + isFromSearch + ? ProfileMedicalInfoWidgetSearch( + patient: patient, + patientType: patientType, + from: from, + to: to, + ) + : ProfileMedicalInfoWidget( + patient: patient, + patientType: patientType, + from: from, + to: to, + ), + ], + ), + ), ) - : ProfileMedicalInfoWidget( - patient: patient, - patientType: patientType, - from: from, - to: to, - ), - ) - ]), + ], + ), + ), + if (int.parse(patientType) == 7 || + int.parse(patientType) == 6) + Positioned( + top: 195, + left: 20, + right: 20, + child: Row( + children: [ + Expanded(child: Container()), + if (patient.episodeNo == 0) + BorderedButton( + "${TranslationBase.of(context).createNew}\n${TranslationBase.of(context).episode}", + backgroundColor: Colors.red.shade700, + textColor: Colors.white, + vPadding: 8, + radius: 30, + hPadding: 20, + fontWeight: FontWeight.normal, + fontSize: 12, + fontFamily: 'Poppins', + icon: Image.asset( + "assets/images/create-episod.png", + color: Colors.white, + height: 30, + ), + handler: () async { + PostEpisodeReqModel postEpisodeReqModel = + PostEpisodeReqModel( + appointmentNo: patient.appointmentNo, + patientMRN: patient.patientMRN); + GifLoaderDialogUtils.showMyDialog(context); + await model.postEpisode(postEpisodeReqModel); + GifLoaderDialogUtils.hideDialog(context); + patient.episodeNo = model.episodeID; + Navigator.of(context).pushNamed( + CREATE_EPISODE, + arguments: {'patient': patient}); + }, + ), + if (patient.episodeNo != 0) + BorderedButton( + "${TranslationBase.of(context).update}\n${TranslationBase.of(context).episode}", + backgroundColor: Colors.red.shade700, + textColor: Colors.white, + vPadding: 8, + radius: 30, + hPadding: 20, + fontWeight: FontWeight.normal, + fontSize: 12, + fontFamily: 'Poppins', + icon: Image.asset( + "assets/images/modilfy-episode.png", + color: Colors.white, + height: 30, + ), + handler: () { + Navigator.of(context).pushNamed( + UPDATE_EPISODE, + arguments: {'patient': patient}); + }, + ), + ], + ), + ), + ], + ), ), )); } @@ -875,7 +506,6 @@ convertDateFormat2(String str) { return newDate.toString(); } - isToday(date) { DateTime tempDate = new DateFormat("yyyy-MM-dd").parse(date); return DateFormat("yyyy-MM-dd").format(tempDate) == @@ -892,3 +522,500 @@ myBoxDecoration() { ), borderRadius: BorderRadius.circular(10)); } + +/* Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + decoration: BoxDecoration(boxShadow: [ + BoxShadow( + color: Colors.grey.shade300, + blurRadius: 10.0, + spreadRadius: 0, + offset: Offset(0, 10)), + ], color: Colors.white), + child: Column(children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + AvatarWidget( + Icon( + patient.genderDescription == "Male" + ? DoctorApp.male + : DoctorApp.female_icon, + size: 70, + color: Colors.white, + ), + ), + SizedBox( + width: 20, + ), + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + AppText( + patient.firstName + + ' ' + + patient.lastName, + color: Colors.black, + fontWeight: FontWeight.bold, + ), + Row( + children: [ + AppText( + TranslationBase.of(context) + .fileNo, + color: Colors.black, + fontWeight: FontWeight.bold, + ), + SizedBox( + width: 4, + ), + AppText( + patient.patientId.toString(), + color: Colors.black, + fontWeight: FontWeight.normal, + ), + ], + ), + model.patientAllergiesList + .isNotEmpty && + model.getAllergicNames( + projectViewModel + .isArabic) != + '' + ? Container( + width: MediaQuery.of(context) + .size + .width * + 0.65, + child: Padding( + padding: const EdgeInsets + .symmetric(vertical: 8), + child: AppText( + TranslationBase.of( + context) + .allergicTO + + " : " + + model.getAllergicNames( + projectViewModel + .isArabic), + color: Color(0xFFB9382C), + fontWeight: + FontWeight.bold, + ), + ), + ) + : AppText(''), + ], + ) + ], + ), + ), + Container( + width: double.infinity, + height: 1, + color: Color(0xffCCCCCC), + ), + Container( + height: 11 * SizeConfig.textMultiplier, + child: Row( + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.fromLTRB( + 16.0, 8.0, 8.0, 8.0), + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context).age, + fontWeight: FontWeight.bold, + fontSize: 2 * + SizeConfig.textMultiplier, + ), + SizedBox( + height: 4, + ), + AppText( + "${DateUtils.convertDateFromServerFormat(patient.dateofBirth, 'dd-MM-yyyy')} / ${DateUtils.getAgeByBirthday(patient.dateofBirth, context)}", + fontWeight: FontWeight.normal, + fontSize: 1.6 * + SizeConfig.textMultiplier, + ), + ], + ), + ), + ), + Container( + width: 1, + color: Color(0xffCCCCCC), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.fromLTRB( + 16.0, 8.0, 8.0, 8.0), + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context) + .nationality, + fontWeight: FontWeight.bold, + fontSize: 2 * + SizeConfig.textMultiplier, + ), + SizedBox( + height: 4, + ), + AppText( + patient.nationalityName ?? + patient.nationality, + fontWeight: FontWeight.normal, + fontSize: 1.7 * + SizeConfig.textMultiplier, + ), + ], + ), + ), + ), + Container( + width: 1, + color: Color(0xffCCCCCC), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.fromLTRB( + 16.0, 8.0, 8.0, 8.0), + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context) + .gender, + fontWeight: FontWeight.bold, + fontSize: 2 * + SizeConfig.textMultiplier, + ), + SizedBox( + height: 4, + ), + AppText( + patient.gender.toString() == '1' + ? 'Male' + : 'Female', + fontWeight: FontWeight.normal, + fontSize: 1.8 * + SizeConfig.textMultiplier, + ), + ], + ), + ), + ), + ], + ), + ), + Container( + width: double.infinity, + height: 1, + color: Color(0xffCCCCCC), + ), + ]), + ), + if (patient.admissionNo != null) + Container( + margin: EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context) + .admissionDetail, + color: Colors.black, + fontWeight: FontWeight.bold, + fontSize: 1.8 * SizeConfig.textMultiplier, + ), + SizedBox( + height: 4, + ), + Container( + decoration: BoxDecoration( + color: Colors.white, + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8), + border: + Border.fromBorderSide(BorderSide( + color: Color(0xffBBBBBB), + width: 1, + )), + ), + child: Column( + children: [ + Padding( + padding: EdgeInsets.all(16), + child: Column( + children: [ + Row( + children: [ + Container( + width: 14 * + SizeConfig + .textMultiplier, + child: AppText( + TranslationBase.of( + context) + .dateTime, + color: Colors.black, + fontWeight: + FontWeight.bold, + fontSize: 1.6 * + SizeConfig + .textMultiplier, + ), + ), + Expanded( + child: AppText( + patient.createdOn != + null + ? "${DateUtils.convertDateFromServerFormat(patient.createdOn, 'EEEE dd, MMMM yyyy hh:mm a')}" + : "", + color: Colors.black, + fontWeight: + FontWeight.normal, + fontSize: 1.6 * + SizeConfig + .textMultiplier, + ), + ), + ], + ), + SizedBox( + height: 4, + ), + Row( + children: [ + Container( + width: 14 * + SizeConfig + .textMultiplier, + child: AppText( + TranslationBase.of( + context) + .admissionNo, + color: Colors.black, + fontWeight: + FontWeight.bold, + fontSize: 1.6 * + SizeConfig + .textMultiplier, + ), + ), + AppText( + patient.admissionNo != + null + ? patient.admissionNo + : '', + color: Colors.black, + fontWeight: + FontWeight.normal, + fontSize: 1.6 * + SizeConfig + .textMultiplier, + ), + ], + ), + SizedBox( + height: 4, + ), + Row( + children: [ + Container( + width: 14 * + SizeConfig + .textMultiplier, + child: AppText( + TranslationBase.of( + context) + .losNo, + color: Colors.black, + fontWeight: + FontWeight.bold, + fontSize: 1.6 * + SizeConfig + .textMultiplier, + ), + ), + AppText( + patient.createdOn != null + ? DateUtils + .differenceBetweenServerDateAndCurrent( + patient + .createdOn, + context) + : "", + color: Colors.black, + fontWeight: + FontWeight.normal, + fontSize: 1.6 * + SizeConfig + .textMultiplier, + ), + ], + ), + ], + ), + ), + const Divider( + color: Color(0xffCCCCCC), + height: 5, + thickness: 1, + indent: 0, + endIndent: 0, + ), + Container( + height: + 10 * SizeConfig.textMultiplier, + child: Row( + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets + .fromLTRB( + 16.0, 8.0, 8.0, 8.0), + child: Column( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + AppText( + TranslationBase.of( + context) + .area, + fontWeight: + FontWeight.bold, + fontSize: 1.6 * + SizeConfig + .textMultiplier, + ), + SizedBox( + height: 4, + ), + AppText( + patient + .clinicDescription, + fontWeight: + FontWeight.normal, + fontSize: 1.6 * + SizeConfig + .textMultiplier, + ), + ], + ), + ), + ), + Container( + width: 1, + color: Color(0xffCCCCCC), + ), + Expanded( + child: Padding( + padding: const EdgeInsets + .fromLTRB( + 16.0, 8.0, 8.0, 8.0), + child: Column( + crossAxisAlignment: + CrossAxisAlignment + .start, + mainAxisAlignment: + MainAxisAlignment + .spaceEvenly, + children: [ + Expanded( + child: Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + AppText( + TranslationBase.of( + context) + .room, + fontWeight: + FontWeight + .bold, + fontSize: 1.6 * + SizeConfig + .textMultiplier, + ), + SizedBox( + width: 4, + ), + Expanded( + child: AppText( + "${patient.nursingStationName}\n${patient.roomId}", + fontWeight: + FontWeight + .normal, + fontSize: 1.4 * + SizeConfig + .textMultiplier, + ), + ), + ], + ), + ), + SizedBox( + height: 4, + ), + Expanded( + child: Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + AppText( + TranslationBase.of( + context) + .bed, + fontWeight: + FontWeight + .bold, + fontSize: 1.6 * + SizeConfig + .textMultiplier, + ), + SizedBox( + width: 4, + ), + AppText( + "${patient.bedId}", + fontWeight: + FontWeight + .normal, + fontSize: 1.6 * + SizeConfig + .textMultiplier, + ), + ], + ), + ), + ], + ), + ), + ), + ], + ), + ) + ], + ), + ) + ], + ), + ), + ], + ),*/ diff --git a/lib/widgets/patients/profile/PatientProfileButton.dart b/lib/widgets/patients/profile/PatientProfileButton.dart index e0a1e5f0..28d3b700 100644 --- a/lib/widgets/patients/profile/PatientProfileButton.dart +++ b/lib/widgets/patients/profile/PatientProfileButton.dart @@ -36,6 +36,7 @@ class PatientProfileButton extends StatelessWidget { Widget build(BuildContext context) { return new Container( margin: new EdgeInsets.symmetric(horizontal: 4.0), + padding: EdgeInsets.fromLTRB(10, 10, 10, 5), child: InkWell( onTap: isDisable ? null @@ -45,6 +46,14 @@ class PatientProfileButton extends StatelessWidget { navigator(context, this.route); }, child: Column(children: [ + Container( + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + child: new Image.asset(url + icon, width: 50, height: 50,)) + ], + )), Container( alignment: Alignment.topLeft, padding: EdgeInsets.all(5), @@ -53,33 +62,22 @@ class PatientProfileButton extends StatelessWidget { children: [ AppText( this.nameLine1, - color: Color(0xFFB9382C), + color: Colors.black, /*Color(0xFFB9382C),*/ fontWeight: FontWeight.w600, textAlign: TextAlign.left, - fontSize: SizeConfig.textMultiplier * 2, + fontSize: SizeConfig.textMultiplier * 1.5, ), AppText( this.nameLine2, color: Colors.black, fontWeight: FontWeight.w600, textAlign: TextAlign.left, - fontSize: SizeConfig.textMultiplier * 2, + fontSize: SizeConfig.textMultiplier * 1.5, ), if (isLoading) DrAppCircularProgressIndeicator() ], ), ), - Expanded( - child: Container( - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Container( - padding: EdgeInsets.all(10), - child: new Image.asset(url + icon)) - ], - )), - ) ]), ), decoration: BoxDecoration( @@ -99,7 +97,6 @@ class PatientProfileButton extends StatelessWidget { ), ], ), - padding: EdgeInsets.fromLTRB(5, 10, 5, 5), ); } diff --git a/lib/widgets/patients/profile/profile_medical_info_widget.dart b/lib/widgets/patients/profile/profile_medical_info_widget.dart index 60a0154e..d85d7b44 100644 --- a/lib/widgets/patients/profile/profile_medical_info_widget.dart +++ b/lib/widgets/patients/profile/profile_medical_info_widget.dart @@ -29,13 +29,15 @@ class ProfileMedicalInfoWidget extends StatelessWidget { Widget build(BuildContext context) { return BaseView( onModelReady: (model) async {}, - builder: (_, model, w) => SliverGrid.count( + builder: (_, model, w) => GridView.count( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), crossAxisSpacing: 10, - mainAxisSpacing: 20, - crossAxisCount: 2, - childAspectRatio: 1.5, + mainAxisSpacing: 10, + childAspectRatio: 1 / 1.0, + crossAxisCount: 3, children: [ - if (int.parse(patientType) == 7 || int.parse(patientType) == 6) + /*if (int.parse(patientType) == 7 || int.parse(patientType) == 6) PatientProfileButton( key: key, patient: patient, @@ -62,23 +64,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget { nameLine1: TranslationBase.of(context).update, nameLine2: TranslationBase.of(context).episode, route: UPDATE_EPISODE, - icon: 'modilfy-episode.png'), - if (int.parse(patientType) == 7 || int.parse(patientType) == 6) - PatientProfileButton( - key: key, - patient: patient, - route: RADIOLOGY, - nameLine1: TranslationBase.of(context).radiology, - nameLine2: TranslationBase.of(context).service, - icon: 'radiology-1.png'), - if (int.parse(patientType) == 7 || int.parse(patientType) == 6) - PatientProfileButton( - key: key, - patient: patient, - route: PATIENT_INSURANCE_APPROVALS, - nameLine1: TranslationBase.of(context).insurance, - nameLine2: TranslationBase.of(context).service, - icon: 'lab.png'), + icon: 'modilfy-episode.png'),*/ if (int.parse(patientType) == 7 || int.parse(patientType) == 6) PatientProfileButton( key: key, @@ -87,11 +73,8 @@ class ProfileMedicalInfoWidget extends StatelessWidget { to: to, nameLine1: TranslationBase.of(context).vital, nameLine2: TranslationBase.of(context).signs, - route: - VITAL_SIGN_DETAILS /* PATIENT_VITAL_SIGN - */ - , - icon: 'heartbeat.png'), + route: VITAL_SIGN_DETAILS, + icon: 'patient/vital_signs.png'), if (selectedPatientType != 7) PatientProfileButton( key: key, @@ -99,14 +82,14 @@ class ProfileMedicalInfoWidget extends StatelessWidget { route: LAB_ORDERS, nameLine1: TranslationBase.of(context).lab, nameLine2: TranslationBase.of(context).result, - icon: 'lab.png'), + icon: 'patient/lab_results.png'), PatientProfileButton( key: key, patient: patient, route: MEDICAL_FILE, nameLine1: TranslationBase.of(context).previewHealth, nameLine2: TranslationBase.of(context).summaryReport, - icon: 'radiology-1.png'), + icon: 'patient/health_summary.png'), if (selectedPatientType != 0 && selectedPatientType != 5 && selectedPatientType != 7) @@ -116,7 +99,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget { route: PROGRESS_NOTE, nameLine1: TranslationBase.of(context).progress, nameLine2: TranslationBase.of(context).note, - icon: 'heartbeat.png'), + icon: 'patient/Progress_notes.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) PatientProfileButton( key: key, @@ -124,7 +107,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget { route: PATIENT_ADMISSION_REQUEST, nameLine1: TranslationBase.of(context).admission, nameLine2: TranslationBase.of(context).request, - icon: 'heartbeat.png'), + icon: 'patient/admission_req.png'), (int.parse(patientType) == 7 || int.parse(patientType) == 6) ? PatientProfileButton( key: key, @@ -132,14 +115,14 @@ class ProfileMedicalInfoWidget extends StatelessWidget { route: ORDER_PRESCRIPTION, nameLine1: TranslationBase.of(context).orders, nameLine2: TranslationBase.of(context).prescription, - icon: 'lab.png') + icon: 'patient/order_prescription.png') : PatientProfileButton( key: key, patient: patient, route: ORDER_PRESCRIPTION_HISTORY, nameLine1: TranslationBase.of(context).orders, nameLine2: TranslationBase.of(context).prescription, - icon: 'lab.png'), + icon: 'patient/order_prescription.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) PatientProfileButton( key: key, @@ -147,7 +130,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget { route: ORDER_PROCEDURE, nameLine1: TranslationBase.of(context).orders, nameLine2: TranslationBase.of(context).procedures, - icon: 'lab.png'), + icon: 'patient/Order_Procedures.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) PatientProfileButton( key: key, @@ -155,7 +138,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget { route: REFER_PATIENT_TO_DOCTOR, nameLine1: TranslationBase.of(context).myReferral, nameLine2: TranslationBase.of(context).patient, - icon: 'note.png'), + icon: 'patient/refer_patient.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) PatientProfileButton( key: key, @@ -163,7 +146,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget { route: ADD_SICKLEAVE, nameLine1: TranslationBase.of(context).patientSick, nameLine2: TranslationBase.of(context).leave, - icon: 'sick_leaves_icons.png'), + icon: 'patient/patient_sick_leave.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) PatientProfileButton( key: key, @@ -171,7 +154,23 @@ class ProfileMedicalInfoWidget extends StatelessWidget { route: PATIENT_UCAF_REQUEST, nameLine1: TranslationBase.of(context).patient, nameLine2: TranslationBase.of(context).ucaf, - icon: 'lab.png'), + icon: 'patient/ucaf.png'), + if (int.parse(patientType) == 7 || int.parse(patientType) == 6) + PatientProfileButton( + key: key, + patient: patient, + route: RADIOLOGY, + nameLine1: TranslationBase.of(context).radiology, + nameLine2: TranslationBase.of(context).service, + icon: 'patient/health_summary.png'), + if (int.parse(patientType) == 7 || int.parse(patientType) == 6) + PatientProfileButton( + key: key, + patient: patient, + route: PATIENT_INSURANCE_APPROVALS, + nameLine1: TranslationBase.of(context).insurance, + nameLine2: TranslationBase.of(context).service, + icon: 'patient/vital_signs.png'), ], ), ); diff --git a/lib/widgets/patients/profile/profile_medical_info_widget_search.dart b/lib/widgets/patients/profile/profile_medical_info_widget_search.dart index 883b3e4b..f01319ab 100644 --- a/lib/widgets/patients/profile/profile_medical_info_widget_search.dart +++ b/lib/widgets/patients/profile/profile_medical_info_widget_search.dart @@ -20,7 +20,7 @@ class ProfileMedicalInfoWidgetSearch extends StatelessWidget { Widget build(BuildContext context) { return BaseView( onModelReady: (model) async {}, - builder: (_, model, w) => SliverGrid.count( + builder: (_, model, w) => GridView.count( crossAxisSpacing: 10, mainAxisSpacing: 20, crossAxisCount: 2, diff --git a/lib/widgets/shared/borderedButton.dart b/lib/widgets/shared/borderedButton.dart index 5ccf4544..4e841254 100644 --- a/lib/widgets/shared/borderedButton.dart +++ b/lib/widgets/shared/borderedButton.dart @@ -16,6 +16,7 @@ class BorderedButton extends StatelessWidget { final double rPadding; final double bPadding; final double fontSize; + final String fontFamily; final Widget icon; final FontWeight fontWeight; @@ -34,6 +35,7 @@ class BorderedButton extends StatelessWidget { this.rPadding = 4.0, this.bPadding = 0.0, this.fontSize = 0, + this.fontFamily = 'WorkSans', this.icon, this.fontWeight, }); @@ -55,22 +57,24 @@ class BorderedButton extends StatelessWidget { )), ), child: Container( + padding: (hPadding > 0 || vPadding > 0) + ? EdgeInsets.symmetric( + vertical: vPadding, horizontal: hPadding) + : EdgeInsets.fromLTRB( + lPadding, tPadding, rPadding, bPadding), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ icon != null ? icon : Container(), Container( - padding: (hPadding > 0 || vPadding > 0) - ? EdgeInsets.symmetric( - vertical: vPadding, horizontal: hPadding) - : EdgeInsets.fromLTRB( - lPadding, tPadding, rPadding, bPadding), + margin: EdgeInsets.symmetric(horizontal: 2), child: Text( text, textAlign: TextAlign.center, style: TextStyle( fontSize: fontSize == 0 ? SizeConfig.textMultiplier * 1.6 : fontSize, fontWeight: fontWeight != null ? fontWeight : FontWeight.normal, + fontFamily: fontFamily, color: textColor ?? Color(0xffc4aa54)), ), ),