From 03f39b8bab885f0939295fc265ae7c188a0f4e63 Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Sun, 4 Apr 2021 21:50:55 +0300 Subject: [PATCH 01/11] insurance approval new design --- lib/core/model/insurance_approval.dart | 7 +- .../insurance_approval_screen_patient.dart | 976 +++++++++++------- .../patients/insurance_approvals_details.dart | 301 ++++++ lib/widgets/shared/doctor_card_insurance.dart | 177 ++++ 4 files changed, 1097 insertions(+), 364 deletions(-) create mode 100644 lib/screens/patients/insurance_approvals_details.dart create mode 100644 lib/widgets/shared/doctor_card_insurance.dart diff --git a/lib/core/model/insurance_approval.dart b/lib/core/model/insurance_approval.dart index 894fad46..9eef97bb 100644 --- a/lib/core/model/insurance_approval.dart +++ b/lib/core/model/insurance_approval.dart @@ -43,6 +43,7 @@ class InsuranceApprovalModel { int approvalNo; String approvalStatusDescption; int unUsedCount; + String doctorImage; //String companyName; String expiryDate; @@ -75,7 +76,8 @@ class InsuranceApprovalModel { this.expiryDate, this.rceiptOn, this.approvalDetails, - this.appointmentNo}); + this.appointmentNo, + this.doctorImage}); InsuranceApprovalDetails x = InsuranceApprovalDetails(); @@ -104,6 +106,7 @@ class InsuranceApprovalModel { eXuldAPPNO = json['EXuldAPPNO']; projectID = json['ProjectID']; doctorName = json['DoctorName']; + doctorImage = json['DoctorImageURL']; clinicName = json['ClinicName']; approvalDetails = InsuranceApprovalDetails.fromJson(json['ApporvalDetails'][0]); @@ -126,6 +129,8 @@ class InsuranceApprovalModel { data['DeviceTypeID'] = this.deviceTypeID; data['PatientID'] = this.patientID; data['TokenID'] = this.tokenID; + data['DoctorImageURL'] = this.doctorImage; + data['PatientTypeID'] = this.patientTypeID; data['PatientType'] = this.patientType; if (appointmentNo == null) { diff --git a/lib/screens/patients/insurance_approval_screen_patient.dart b/lib/screens/patients/insurance_approval_screen_patient.dart index 95f55e27..0eb3da80 100644 --- a/lib/screens/patients/insurance_approval_screen_patient.dart +++ b/lib/screens/patients/insurance_approval_screen_patient.dart @@ -1,13 +1,21 @@ import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/viewModel/InsuranceViewModel.dart'; +import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; +import 'package:doctor_app_flutter/screens/patients/insurance_approvals_details.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:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.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/doctor_card.dart'; +import 'package:doctor_app_flutter/widgets/shared/doctor_card_insurance.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import '../base/base_view.dart'; @@ -17,393 +25,635 @@ class InsuranceApprovalScreenNew extends StatefulWidget { InsuranceApprovalScreenNew({this.appointmentNo}); @override - _InsuranceApprovalScreenNewState createState() => _InsuranceApprovalScreenNewState(); + _InsuranceApprovalScreenNewState createState() => + _InsuranceApprovalScreenNewState(); } -class _InsuranceApprovalScreenNewState extends State { - +class _InsuranceApprovalScreenNewState + extends State { @override Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); final routeArgs = ModalRoute.of(context).settings.arguments as Map; PatiantInformtion patient = routeArgs['patient']; + patient = routeArgs['patient']; + String patientType = routeArgs['patientType']; return BaseView( - onModelReady: widget.appointmentNo != null - ? (model) => - model.getInsuranceApproval(patient,appointmentNo: widget.appointmentNo) + onModelReady: patient.appointmentNo != null + ? (model) => model.getInsuranceApproval(patient, + appointmentNo: patient.appointmentNo) : (model) => model.getInsuranceApproval(patient), builder: (BuildContext context, InsuranceViewModel model, Widget child) => AppScaffold( + appBar: PatientProfileHeaderNewDesignAppBar( + patient, patientType.toString() ?? "0", patientType), isShowAppBar: true, baseViewModel: model, appBarTitle: TranslationBase.of(context).approvals, - body: SingleChildScrollView( child: Container( - margin: EdgeInsets.only( - left: SizeConfig.screenWidth * 0.004, - right: SizeConfig.screenWidth * 0.004, - top: SizeConfig.screenWidth * 0.04, - ), - child: Column( - children: [ - Container( - width: double.infinity, - height: SizeConfig.screenHeight * 0.09, - color: Color(0xffEEEEEE), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, + margin: EdgeInsets.only( + left: SizeConfig.screenWidth * 0.004, + right: SizeConfig.screenWidth * 0.004, + top: SizeConfig.screenWidth * 0.04, + ), + child: model.insuranceApproval.length != 0 + ? Column( children: [ - Texts( - TranslationBase.of(context).totalApproval, - color: Color(0xff60688B), - fontSize: 19.0, - fontWeight: FontWeight.w600, - ), - if (model.insuranceApproval.length > 0) - Container( - width: 60, - height: 40, - decoration: BoxDecoration( - color: Theme.of(context).primaryColor, - borderRadius: BorderRadius.circular(19.0)), - child: Center( - child: Texts( - model.insuranceApproval[0].unUsedCount - .toString(), - color: Colors.white, fontSize: 17.0, - ), - )) - ], - )), - ...List.generate( - model.insuranceApproval.length, - (index) => RoundedContainer( - backgroundColor: Colors.white, + // Container( + // width: double.infinity, + // height: SizeConfig.screenHeight * 0.09, + // color: Color(0xffEEEEEE), + // child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceAround, + // children: [ + // Texts( + // TranslationBase.of(context).totalApproval, + // color: Color(0xff60688B), + // fontSize: 19.0, + // fontWeight: FontWeight.w600, + // ), + // if (model.insuranceApproval.length > 0) + // Container( + // width: 60, + // height: 40, + // decoration: BoxDecoration( + // color: Theme.of(context).primaryColor, + // borderRadius: BorderRadius.circular(19.0)), + // child: Center( + // child: Texts( + // model.insuranceApproval[0].unUsedCount + // .toString(), + // color: Colors.white, + // fontSize: 17.0, + // ), + // )) + // ], + // )), + Padding( + padding: const EdgeInsets.all(8.0), child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ExpansionTile( - title: Container( - //height: 120.0, - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - model.insuranceApproval[index].patientDescription == "In Patient" - ? Container( - decoration: BoxDecoration( - color: Theme.of(context).primaryColor, - borderRadius: - BorderRadius.circular( - 16.0)), - width: 115.0, - padding: - EdgeInsets.only(left: 11.5), - child: Center( - child: Texts( - TranslationBase.of(context).inPatient, - color: Colors.white, - ), - ), - ) - : Container( - decoration: BoxDecoration( - color: Color(0xff505A5D), - borderRadius: - BorderRadius.circular( - 16.0)), - width: 115.0, - padding: - EdgeInsets.only(left: 11.5), - child: Center( - child: Texts( - TranslationBase.of(context).outpatient, - color: Colors.white, - ), - ), - ), - Padding( - padding: EdgeInsets.symmetric( - vertical: 10.0), - child: Texts( - model.insuranceApproval[index] - .clinicName, - fontSize: 20.0, - color: Color(0xff60686B), - fontWeight: FontWeight.w600, - ), - ), - Texts( - model.insuranceApproval[index] - .doctorName, - fontSize: 17.0, - ), - ], + children: [ + Row( + children: [ + AppText( + 'Insurance', + fontSize: 15.0, + fontWeight: FontWeight.w600, + fontFamily: 'Poppins', ), - ), - children: [ - Padding( - padding: EdgeInsets.symmetric( - vertical: 12.0, horizontal: 12.0), - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Row( - children: [ - Texts( - TranslationBase.of(context).approvalNo, - fontSize: 18.0, - ), - Texts(model.insuranceApproval[index].approvalNo.toString(), - fontSize: 18.0, - fontWeight: FontWeight.w600,), - ], - ), - Divider( - color: Colors.black, - height: 25.0, - thickness: 1.0, - ), - Row( - children: [ - Texts( - TranslationBase.of(context).procedureStatus , - fontSize: 17.5, - ), - SizedBox(width: 12,), - Expanded( - child: Texts( - model.insuranceApproval[index].approvalStatusDescption, - fontWeight: FontWeight.w600, - fontSize: 17.5, - ), - ), - ], - ), - Divider( - color: Colors.black, - height: 25.0, - thickness: 1.0, - ), - Row( - children: [ - Texts( - TranslationBase.of(context).unusedCount, - fontSize: 17.5, - ), - Texts( - model.insuranceApproval[index].unUsedCount.toString(), - fontSize: 17.5, - fontWeight: FontWeight.w600, - ), - ], - ), - Divider( - color: Colors.black, - height: 25.0, - thickness: 1.0, - ), -// Text( -// 'Company Name: ' + -// model.insuranceApproval[index] -// .companyName == -// null -// ? '000' -// : model -// .insuranceApproval[index].companyName, -// style: TextStyle( -// fontSize: 17.5, -// fontWeight: FontWeight.w600), -// ), - Texts( - TranslationBase.of(context).companyName, - fontWeight: FontWeight.w600, - fontSize: 17.5, - ), - - Divider( - color: Colors.black, - height: 25.0, - thickness: 1.0, - ), - Row( - children: [ - Texts( - TranslationBase.of(context).receiptOn , - fontSize: 17.5, - fontWeight: FontWeight.w600, - - ), - Texts( - DateUtils.getDateTimeFromServerFormat(model.insuranceApproval[index].rceiptOn).toString(), - fontSize: 17.5, - fontWeight: FontWeight.w600, - - ), - ], - ), - Divider( - color: Colors.black, - height: 25.0, - thickness: 1.0, - ), - Row( - children: [ - Texts( - TranslationBase.of(context).expiryDate, - fontSize: 17.5, - fontWeight: FontWeight.w600, - - ), - Texts( - DateUtils.getDateTimeFromServerFormat(model.insuranceApproval[index].expiryDate).toString(), - fontSize: 17.5, - fontWeight: FontWeight.w600, - - ), - ], - ), - Divider( - color: Colors.black, - height: 55.0, - thickness: 1.2, - ), - IntrinsicHeight( - child: Row( - crossAxisAlignment: - CrossAxisAlignment.center, - children: [ - Expanded( - flex: 1, - child: Column( - children: [ - Text(TranslationBase.of( - context) - .procedureName), - Padding( - padding: EdgeInsets.only( - top: SizeConfig - .heightMultiplier * - 3.0), - child: Text( - model - .insuranceApproval[ - index] - .approvalDetails == - null - ? '' - : model - .insuranceApproval[ - index] - .approvalDetails - .procedureName, - style: TextStyle( - fontWeight: - FontWeight.w600, - fontSize: 15.5), - ), - ), - ], - ), - ), - VerticalDivider( - width: 10.0, - thickness: 1.2, - color: Colors.black, - ), - Expanded( - flex: 1, - child: Column( - children: [ - Text(TranslationBase.of( - context) - .procedureStatus), - Padding( - padding: EdgeInsets.only( - top: SizeConfig - .heightMultiplier * - 3.0), - child: Text( - model - .insuranceApproval[ - index] - .approvalDetails == - null - ? '' - : model - .insuranceApproval[ - index] - .approvalDetails - .status, - style: TextStyle( - fontSize: 17.5, - fontWeight: - FontWeight - .w600), - ), - ), - ], - ), - ), - VerticalDivider( - width: 2.3, - thickness: 1.2, - color: Colors.black, - ), - Expanded( - flex: 1, - child: Column( - children: [ - Text(TranslationBase.of( - context) - .usageStatus), - Padding( - padding: EdgeInsets.only( - top: SizeConfig - .heightMultiplier * - 3.0), - child: Text( - model - .insuranceApproval[ - index] - .approvalDetails == - null - ? '' - : model - .insuranceApproval[ - index] - .approvalDetails - .isInvoicedDesc, - style: TextStyle( - fontWeight: - FontWeight.w600, - fontSize: 17.5), - ), - ), - ], - ), - ), - ], - ), - ), - Divider( - color: Colors.black, - height: 25.0, - thickness: 1.0, - ), - ], - ), + ], + ), + Row( + children: [ + AppText( + 'Approvals', + fontSize: 30.0, + fontWeight: FontWeight.w700, ), ], ), ], ), - )), - ], - ), - ), + ), + + ...List.generate( + model.insuranceApproval.length, + (index) => Container( + child: InkWell( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + InsuranceApprovalsDetails( + patient: patient, + indexInsurance: index, + )), + ); + }, + child: DoctorCardInsurance( + patientOut: model.insuranceApproval[index] + .patientDescription, + profileUrl: + model.insuranceApproval[index].doctorImage, + clinic: + model.insuranceApproval[index].clinicName, + doctorName: + model.insuranceApproval[index].doctorName, + branch: model + .insuranceApproval[index].approvalNo + .toString(), + isPrescriptions: true, + approvalStatus: model.insuranceApproval[index] + .approvalDetails.status, + ), + ), + ), + // (index) => Container( + // width: double.maxFinite, + // height: MediaQuery.of(context).size.height * .20, + // margin: EdgeInsets.all(10), + // padding: + // EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5), + // decoration: BoxDecoration( + // 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: model.insuranceApproval[index] + // .approvalStatusDescption != + // "Approved" + // ? Colors.red[500] + // : Colors.green, + // ), + // ), + // 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: [ + // Column( + // crossAxisAlignment: + // CrossAxisAlignment.start, + // children: [ + // Texts( + // model.insuranceApproval[index] + // .approvalDetails.status, + // color: model + // .insuranceApproval[ + // index] + // .approvalStatusDescption == + // "Approved" + // ? Colors.green + // : Colors.red[800], + // fontWeight: FontWeight.w600, + // ), + // SizedBox( + // height: 5, + // ), + // AppText(model + // .insuranceApproval[index] + // .doctorName), + // Container( + // child: LargeAvatar( + // url: model + // .insuranceApproval[index] + // .doctorImage, + // ), + // width: 55, + // height: 55, + // ), + // ], + // ), + // Column( + // crossAxisAlignment: + // CrossAxisAlignment.start, + // children: [ + // Row( + // children: [ + // Texts( + // 'Clinic: ', + // color: Colors.grey[500], + // ), + // Texts( + // model + // .insuranceApproval[ + // index] + // .clinicName, + // ), + // ], + // ), + // Row( + // children: [ + // Texts( + // 'Approval No', + // color: Colors.grey[500], + // ), + // Texts( + // model + // .insuranceApproval[ + // index] + // .approvalNo + // .toString(), + // ), + // ], + // ), + // ], + // ), + // SizedBox( + // width: 5, + // ), + // ], + // ), + // Column( + // crossAxisAlignment: + // CrossAxisAlignment.start, + // children: [ + // Row( + // children: [ + // Texts( + // 'Clinic: ', + // color: Colors.grey[500], + // ), + // Texts( + // model + // .insuranceApproval[ + // index] + // .clinicName, + // ), + // ], + // ), + // Row( + // children: [ + // Texts( + // 'Approval No', + // color: Colors.grey[500], + // ), + // Texts( + // model + // .insuranceApproval[ + // index] + // .approvalNo + // .toString(), + // ), + // ], + // ), + // ], + // ), + // Row( + // mainAxisAlignment: + // MainAxisAlignment.end, + // children: [ + // Icon(Icons.remove_red_eye_outlined) + // ], + // ) + // ], + // ), + // ), + // ), + // ), + // ], + // ), + // ), + // ), + // ), +// RoundedContainer( +// backgroundColor: Colors.white, +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// ExpansionTile( +// title: Container( +// //height: 120.0, +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// model.insuranceApproval[index] +// .patientDescription == +// "In Patient" +// ? Container( +// decoration: BoxDecoration( +// color: +// Theme.of(context).primaryColor, +// borderRadius: +// BorderRadius.circular(16.0)), +// width: 115.0, +// padding: EdgeInsets.only(left: 11.5), +// child: Center( +// child: Texts( +// TranslationBase.of(context) +// .inPatient, +// color: Colors.white, +// ), +// ), +// ) +// : Container( +// decoration: BoxDecoration( +// color: Color(0xff505A5D), +// borderRadius: +// BorderRadius.circular(16.0)), +// width: 115.0, +// padding: EdgeInsets.only(left: 11.5), +// child: Center( +// child: Texts( +// TranslationBase.of(context) +// .outpatient, +// color: Colors.white, +// ), +// ), +// ), +// Padding( +// padding: EdgeInsets.symmetric(vertical: 10.0), +// child: Texts( +// model.insuranceApproval[index].clinicName, +// fontSize: 20.0, +// color: Color(0xff60686B), +// fontWeight: FontWeight.w600, +// ), +// ), +// Texts( +// model.insuranceApproval[index].doctorName, +// fontSize: 17.0, +// ), +// ], +// ), +// ), +// children: [ +// Padding( +// padding: EdgeInsets.symmetric( +// vertical: 12.0, horizontal: 12.0), +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Row( +// children: [ +// Texts( +// TranslationBase.of(context).approvalNo, +// fontSize: 18.0, +// ), +// Texts( +// model +// .insuranceApproval[index].approvalNo +// .toString(), +// fontSize: 18.0, +// fontWeight: FontWeight.w600, +// ), +// ], +// ), +// Divider( +// color: Colors.black, +// height: 25.0, +// thickness: 1.0, +// ), +// Row( +// children: [ +// Texts( +// TranslationBase.of(context) +// .procedureStatus, +// fontSize: 17.5, +// ), +// SizedBox( +// width: 12, +// ), +// Expanded( +// child: Texts( +// model.insuranceApproval[index] +// .approvalStatusDescption, +// fontWeight: FontWeight.w600, +// fontSize: 17.5, +// ), +// ), +// ], +// ), +// Divider( +// color: Colors.black, +// height: 25.0, +// thickness: 1.0, +// ), +// Row( +// children: [ +// Texts( +// TranslationBase.of(context).unusedCount, +// fontSize: 17.5, +// ), +// Texts( +// model.insuranceApproval[index] +// .unUsedCount +// .toString(), +// fontSize: 17.5, +// fontWeight: FontWeight.w600, +// ), +// ], +// ), +// Divider( +// color: Colors.black, +// height: 25.0, +// thickness: 1.0, +// ), +// // Text( +// // 'Company Name: ' + +// // model.insuranceApproval[index] +// // .companyName == +// // null +// // ? '000' +// // : model +// // .insuranceApproval[index].companyName, +// // style: TextStyle( +// // fontSize: 17.5, +// // fontWeight: FontWeight.w600), +// // ), +// Texts( +// TranslationBase.of(context).companyName, +// fontWeight: FontWeight.w600, +// fontSize: 17.5, +// ), +// +// Divider( +// color: Colors.black, +// height: 25.0, +// thickness: 1.0, +// ), +// Row( +// children: [ +// Texts( +// TranslationBase.of(context).receiptOn, +// fontSize: 17.5, +// fontWeight: FontWeight.w600, +// ), +// Texts( +// DateUtils.getDateTimeFromServerFormat( +// model.insuranceApproval[index] +// .rceiptOn) +// .toString(), +// fontSize: 17.5, +// fontWeight: FontWeight.w600, +// ), +// ], +// ), +// Divider( +// color: Colors.black, +// height: 25.0, +// thickness: 1.0, +// ), +// Row( +// children: [ +// Texts( +// TranslationBase.of(context).expiryDate, +// fontSize: 17.5, +// fontWeight: FontWeight.w600, +// ), +// Texts( +// DateUtils.getDateTimeFromServerFormat( +// model.insuranceApproval[index] +// .expiryDate) +// .toString(), +// fontSize: 17.5, +// fontWeight: FontWeight.w600, +// ), +// ], +// ), +// Divider( +// color: Colors.black, +// height: 55.0, +// thickness: 1.2, +// ), +// IntrinsicHeight( +// child: Row( +// crossAxisAlignment: +// CrossAxisAlignment.center, +// children: [ +// Expanded( +// flex: 1, +// child: Column( +// children: [ +// Text(TranslationBase.of(context) +// .procedureName), +// Padding( +// padding: EdgeInsets.only( +// top: SizeConfig +// .heightMultiplier * +// 3.0), +// child: Text( +// model.insuranceApproval[index] +// .approvalDetails == +// null +// ? '' +// : model +// .insuranceApproval[ +// index] +// .approvalDetails +// .procedureName, +// style: TextStyle( +// fontWeight: +// FontWeight.w600, +// fontSize: 15.5), +// ), +// ), +// ], +// ), +// ), +// VerticalDivider( +// width: 10.0, +// thickness: 1.2, +// color: Colors.black, +// ), +// Expanded( +// flex: 1, +// child: Column( +// children: [ +// Text(TranslationBase.of(context) +// .procedureStatus), +// Padding( +// padding: EdgeInsets.only( +// top: SizeConfig +// .heightMultiplier * +// 3.0), +// child: Text( +// model.insuranceApproval[index] +// .approvalDetails == +// null +// ? '' +// : model +// .insuranceApproval[ +// index] +// .approvalDetails +// .status, +// style: TextStyle( +// fontSize: 17.5, +// fontWeight: +// FontWeight.w600), +// ), +// ), +// ], +// ), +// ), +// VerticalDivider( +// width: 2.3, +// thickness: 1.2, +// color: Colors.black, +// ), +// Expanded( +// flex: 1, +// child: Column( +// children: [ +// Text(TranslationBase.of(context) +// .usageStatus), +// Padding( +// padding: EdgeInsets.only( +// top: SizeConfig +// .heightMultiplier * +// 3.0), +// child: Text( +// model.insuranceApproval[index] +// .approvalDetails == +// null +// ? '' +// : model +// .insuranceApproval[ +// index] +// .approvalDetails +// .isInvoicedDesc, +// style: TextStyle( +// fontWeight: +// FontWeight.w600, +// fontSize: 17.5), +// ), +// ), +// ], +// ), +// ), +// ], +// ), +// ), +// Divider( +// color: Colors.black, +// height: 25.0, +// thickness: 1.0, +// ), +// ], +// ), +// ), +// ], +// ), +// ], +// ), +// ), + ), + ], + ) + : Column( + children: [ + Container( + height: 200, + width: double.infinity, + child: Center( + child: Text("No Insurance Approvals Found"))) + ], + )), ), ), ); diff --git a/lib/screens/patients/insurance_approvals_details.dart b/lib/screens/patients/insurance_approvals_details.dart new file mode 100644 index 00000000..4f746c3d --- /dev/null +++ b/lib/screens/patients/insurance_approvals_details.dart @@ -0,0 +1,301 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/core/viewModel/InsuranceViewModel.dart'; +import 'package:doctor_app_flutter/core/viewModel/project_view_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/date-utils.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/Text.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/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +class InsuranceApprovalsDetails extends StatefulWidget { + PatiantInformtion patient; + int indexInsurance; + InsuranceApprovalsDetails({this.patient, this.indexInsurance}); + @override + _InsuranceApprovalsDetailsState createState() => + _InsuranceApprovalsDetailsState( + patient: patient, indexInsurance: indexInsurance); +} + +class _InsuranceApprovalsDetailsState extends State { + PatiantInformtion patient; + int indexInsurance; + + _InsuranceApprovalsDetailsState({this.patient, this.indexInsurance}); + + @override + Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); + final routeArgs = ModalRoute.of(context).settings.arguments as Map; + + return BaseView( + onModelReady: patient.appointmentNo != null + ? (model) => model.getInsuranceApproval(patient, + appointmentNo: patient.appointmentNo) + : (model) => model.getInsuranceApproval(patient), + builder: (BuildContext context, InsuranceViewModel model, Widget child) => + AppScaffold( + isShowAppBar: true, + baseViewModel: model, + appBar: PatientProfileHeaderNewDesignAppBar( + patient, patient.patientType.toString(), patient.arrivedOn), + body: SingleChildScrollView( + child: Container( + child: Column( + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + Row( + children: [ + AppText( + 'Insurance', + fontSize: 15.0, + fontWeight: FontWeight.w600, + fontFamily: 'Poppins', + ), + ], + ), + Row( + children: [ + AppText( + 'Approvals', + fontSize: 30.0, + fontWeight: FontWeight.w700, + ), + ], + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(10), + decoration: BoxDecoration( + border: Border.all( + width: 0.5, + color: Colors.white, + ), + borderRadius: BorderRadius.all( + Radius.circular(15.0), + ), + color: Colors.white), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + Row( + children: [ + Texts( + model.insuranceApproval[indexInsurance] + .approvalDetails.status, + color: + model.insuranceApproval[indexInsurance] + .approvalDetails.status == + "Approved" + ? Color(0xff359846) + : (0xffD02127), + ), + ], + ), + Row( + children: [ + Texts( + model.insuranceApproval[indexInsurance] + .doctorName + .toUpperCase(), + color: Colors.black, + fontSize: 18, + fontWeight: FontWeight.bold, + ) + ], + ), + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 8.0), + child: Row( + children: [ + Column( + children: [ + Container( + height: 85.0, + width: 85.0, + child: CircleAvatar( + radius: + SizeConfig.imageSizeMultiplier * + 12, + // radius: (52) + child: ClipRRect( + borderRadius: + BorderRadius.circular(50), + child: Image.network( + model + .insuranceApproval[ + indexInsurance] + .doctorImage, + fit: BoxFit.fill, + width: 700, + ), + ), + backgroundColor: Colors.transparent, + ), + ), + ], + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8.0), + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + //mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + height: 25.0, + ), + Row( + children: [ + Texts( + 'Clinic: ', + color: Colors.grey[500], + ), + Texts( + model + .insuranceApproval[ + indexInsurance] + .clinicName, + ) + ], + ), + Row( + children: [ + Texts( + 'Approval No: ', + color: Colors.grey[500], + ), + Texts( + model + .insuranceApproval[ + indexInsurance] + .approvalNo + .toString(), + ) + ], + ), + Row( + children: [ + Texts( + 'Unused Count:', + color: Colors.grey[500], + ), + Texts(model + .insuranceApproval[ + indexInsurance] + .unUsedCount + .toString()) + ], + ), + Row( + children: [ + Texts( + 'Company Name :', + color: Colors.grey[500], + ), + Texts('Sample') + ], + ), + SizedBox( + height: 25.0, + ), + Row( + children: [ + Texts( + '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:', + color: Colors.grey[500], + ), + Texts( + '${DateUtils.getDayMonthYearDateFormatted(DateUtils.getDateTimeFromServerFormat(model.insuranceApproval[indexInsurance].expiryDate), isArabic: projectViewModel.isArabic)}', + color: Colors.black, + fontWeight: FontWeight.w600, + fontSize: 14, + ), + ], + ), + ], + ), + ), + ], + ), + ), + SizedBox( + height: 20.0, + ), + Container( + child: Column( + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceAround, + children: [ + Texts('Procedure'), + Texts('Status'), + Texts('Usage Status') + ], + ), + Divider( + color: Colors.black45, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceAround, + children: [ + Expanded( + child: Texts(model + .insuranceApproval[indexInsurance] + .approvalDetails + .procedureName), + ), + Texts(model + .insuranceApproval[indexInsurance] + .approvalDetails + .status), + Texts(model + .insuranceApproval[indexInsurance] + .approvalDetails + .isInvoicedDesc), + ], + ) + ], + ), + ), + ], + ), + ), + ), + ], + ), + ), + )), + ); + } +} diff --git a/lib/widgets/shared/doctor_card_insurance.dart b/lib/widgets/shared/doctor_card_insurance.dart new file mode 100644 index 00000000..1380aef8 --- /dev/null +++ b/lib/widgets/shared/doctor_card_insurance.dart @@ -0,0 +1,177 @@ +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 { + final String doctorName; + final String branch; + final DateTime appointmentDate; + final String profileUrl; + final String invoiceNO; + final String orderNo; + final Function onTap; + final bool isPrescriptions; + final String clinic; + final String approvalStatus; + final String patientOut; + + DoctorCardInsurance( + {this.doctorName, + this.branch, + this.profileUrl, + this.invoiceNO, + this.onTap, + this.appointmentDate, + this.orderNo, + this.isPrescriptions = false, + this.clinic, + this.approvalStatus, + this.patientOut}); + + @override + Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); + return Container( + margin: EdgeInsets.all(10), + decoration: BoxDecoration( + border: Border.all( + width: 0.5, + color: Colors.white, + ), + borderRadius: BorderRadius.all( + Radius.circular(15.0), + ), + 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, + )), + ], + ), + 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], + ), + Texts( + clinic, + ) + ], + ), + if (branch != null) + Row( + children: [ + Texts( + 'Approval No: ', + color: Colors.grey[500], + ), + Texts( + branch, + ) + ], + ) + ]), + ), + ), + Icon( + EvaIcons.eye, + size: 38.0, + ) + ], + ), + ], + ), + ), + ), + ); + } +} From 6b9bf1d7520ab912f4e9c5015684731ec596a3f7 Mon Sep 17 00:00:00 2001 From: Sultan Khan Date: Mon, 5 Apr 2021 10:12:40 +0300 Subject: [PATCH 02/11] dashboard overflow change --- lib/screens/dashboard_screen.dart | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index 9e8aa8ab..b645100d 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -196,14 +196,14 @@ class _DashboardScreenState extends State { return Row( mainAxisSize: MainAxisSize.max, children: [ - AppText( - item.clinicName, - fontSize: SizeConfig - .textMultiplier * - 2.1, - color: Colors.black, - fontWeight: FontWeight.bold, - ), + AppText(item.clinicName, + fontSize: SizeConfig + .textMultiplier * + 1.6, + color: Colors.black, + fontWeight: FontWeight.bold, + textAlign: + TextAlign.center), ], ); }).toList(); @@ -1004,7 +1004,7 @@ class _DashboardScreenState extends State { top: 10, left: 10, right: 0), child: Icon( DoctorApp.search, - size: 35, + size: 32, color: Colors.white, )), Container( @@ -1014,6 +1014,7 @@ class _DashboardScreenState extends State { .searchmedicinepatient, color: Colors.white, textAlign: TextAlign.start, + fontSize: 14, )) ], ), From daa417a19b179d3762549e300b7809c72c8feac5 Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Mon, 5 Apr 2021 12:12:52 +0300 Subject: [PATCH 03/11] Insurance approval new design --- .../patients/insurance_approvals_details.dart | 48 +++++++++++++++---- .../profile_medical_info_widget_search.dart | 10 ---- lib/widgets/shared/doctor_card_insurance.dart | 21 ++++---- 3 files changed, 51 insertions(+), 28 deletions(-) diff --git a/lib/screens/patients/insurance_approvals_details.dart b/lib/screens/patients/insurance_approvals_details.dart index 4f746c3d..ba93b780 100644 --- a/lib/screens/patients/insurance_approvals_details.dart +++ b/lib/screens/patients/insurance_approvals_details.dart @@ -100,7 +100,7 @@ class _InsuranceApprovalsDetailsState extends State { .approvalDetails.status == "Approved" ? Color(0xff359846) - : (0xffD02127), + : Color(0xffD02127), ), ], ), @@ -269,20 +269,48 @@ class _InsuranceApprovalsDetailsState extends State { mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ - Expanded( + 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), ), - Texts(model - .insuranceApproval[indexInsurance] - .approvalDetails - .status), - Texts(model - .insuranceApproval[indexInsurance] - .approvalDetails - .isInvoicedDesc), + 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/patients/profile/profile_medical_info_widget_search.dart b/lib/widgets/patients/profile/profile_medical_info_widget_search.dart index b4c445ca..c49c4576 100644 --- a/lib/widgets/patients/profile/profile_medical_info_widget_search.dart +++ b/lib/widgets/patients/profile/profile_medical_info_widget_search.dart @@ -134,16 +134,6 @@ class ProfileMedicalInfoWidgetSearch extends StatelessWidget { nameLine1: TranslationBase.of(context).progress, nameLine2: TranslationBase.of(context).note, icon: 'patient/Progress_notes.png'), - if (int.parse(patientType) == 7 || int.parse(patientType) == 6) - PatientProfileButton( - key: key, - patient: patient, - patientType: patientType, - arrivalType: arrivalType, - route: ORDER_PROCEDURE, - nameLine1: TranslationBase.of(context).orders, - nameLine2: TranslationBase.of(context).procedures, - icon: 'patient/Order_Procedures.png'), ], ), ); diff --git a/lib/widgets/shared/doctor_card_insurance.dart b/lib/widgets/shared/doctor_card_insurance.dart index 1380aef8..4c2bc6d1 100644 --- a/lib/widgets/shared/doctor_card_insurance.dart +++ b/lib/widgets/shared/doctor_card_insurance.dart @@ -43,12 +43,15 @@ class DoctorCardInsurance extends StatelessWidget { return Container( margin: EdgeInsets.all(10), decoration: BoxDecoration( - border: Border.all( - width: 0.5, - color: Colors.white, - ), - borderRadius: BorderRadius.all( - Radius.circular(15.0), + 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( @@ -142,8 +145,10 @@ class DoctorCardInsurance extends StatelessWidget { 'Clinic: ', color: Colors.grey[500], ), - Texts( - clinic, + Expanded( + child: Texts( + clinic, + ), ) ], ), From 5e85af35c2341449dcd2613056691eae72d5834e Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Mon, 5 Apr 2021 12:22:00 +0300 Subject: [PATCH 04/11] 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 05/11] 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 5309ace62ef89bbde7ddb465139a1c2a63bb1226 Mon Sep 17 00:00:00 2001 From: Sultan Khan Date: Mon, 5 Apr 2021 13:02:01 +0300 Subject: [PATCH 06/11] sick leave --- lib/config/config.dart | 5 +- lib/screens/sick-leave/add-sickleave.dart | 141 +++++++++++---------- lib/screens/sick-leave/show-sickleave.dart | 1 + 3 files changed, 76 insertions(+), 71 deletions(-) diff --git a/lib/config/config.dart b/lib/config/config.dart index f402bea2..06768cbc 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'; @@ -143,6 +143,9 @@ const GET_PROCEDURE_LIST = 'Services/DoctorApplication.svc/REST/GetOrderedProcedure'; const POST_PROCEDURE_LIST = 'Services/DoctorApplication.svc/REST/PostProcedure'; +const GET_PATIENT_ARRIVAL_LIST = + 'Services/DoctorApplication.svc/REST/PatientArrivalList'; + ///Lab Order const GET_Patient_LAB_ORDERS = 'Services/Patients.svc/REST/GetPatientLabOrders'; const GET_Patient_LAB_SPECIAL_RESULT = diff --git a/lib/screens/sick-leave/add-sickleave.dart b/lib/screens/sick-leave/add-sickleave.dart index 1297a673..5c0ad3f4 100644 --- a/lib/screens/sick-leave/add-sickleave.dart +++ b/lib/screens/sick-leave/add-sickleave.dart @@ -230,76 +230,77 @@ class AddSickLeavScreen extends StatelessWidget { )); }).toList(), ) - : new Builder(builder: (context) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.all(10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AppText( - TranslationBase.of(context).patient, - fontWeight: FontWeight.bold, - ), - AppText( - TranslationBase.of(context).sickLeave, - fontSize: 24, - fontWeight: FontWeight.bold, - ), - ], - )), - Container( - width: SizeConfig.screenWidth, - margin: EdgeInsets.only( - left: 20, right: 20, top: 20, bottom: 20), - padding: EdgeInsets.all(20), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), - color: HexColor('#EAEAEA')), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Container( - child: Container( - decoration: BoxDecoration( - color: Colors.grey, - borderRadius: - BorderRadius.circular(10)), - padding: EdgeInsets.all(3), - child: IconButton( - icon: Icon( - Icons.add, - size: 35, - color: Colors.white, - ), - onPressed: () { - openSickLeave( - context, - false, - ); - }), - )), - Padding( - child: AppText( - TranslationBase.of(context) - .noSickLeaveApplied, - fontWeight: FontWeight.bold, - fontFamily: 'Poppins', - fontSize: 16, - textAlign: TextAlign.center, - color: HexColor('#7E7E7E')), - padding: EdgeInsets.all(10), - ), - ], - )), - SizedBox( - height: SizeConfig.screenHeight * .6, - ) - ], - ); - }), + : SizedBox() + // : new Builder(builder: (context) { + // return Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Padding( + // padding: EdgeInsets.all(10), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // AppText( + // TranslationBase.of(context).patient, + // fontWeight: FontWeight.bold, + // ), + // AppText( + // TranslationBase.of(context).sickLeave, + // fontSize: 24, + // fontWeight: FontWeight.bold, + // ), + // ], + // )), + // Container( + // width: SizeConfig.screenWidth, + // margin: EdgeInsets.only( + // left: 20, right: 20, top: 20, bottom: 20), + // padding: EdgeInsets.all(20), + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(10), + // color: HexColor('#EAEAEA')), + // child: Column( + // mainAxisAlignment: MainAxisAlignment.start, + // children: [ + // Container( + // child: Container( + // decoration: BoxDecoration( + // color: Colors.grey, + // borderRadius: + // BorderRadius.circular(10)), + // padding: EdgeInsets.all(3), + // child: IconButton( + // icon: Icon( + // Icons.add, + // size: 35, + // color: Colors.white, + // ), + // onPressed: () { + // openSickLeave( + // context, + // false, + // ); + // }), + // )), + // Padding( + // child: AppText( + // TranslationBase.of(context) + // .noSickLeaveApplied, + // fontWeight: FontWeight.bold, + // fontFamily: 'Poppins', + // fontSize: 16, + // textAlign: TextAlign.center, + // color: HexColor('#7E7E7E')), + // padding: EdgeInsets.all(10), + // ), + // ], + // )), + // SizedBox( + // height: SizeConfig.screenHeight * .6, + // ) + // ], + // ); + // }), ])))); } diff --git a/lib/screens/sick-leave/show-sickleave.dart b/lib/screens/sick-leave/show-sickleave.dart index 52ec7094..f64147dc 100644 --- a/lib/screens/sick-leave/show-sickleave.dart +++ b/lib/screens/sick-leave/show-sickleave.dart @@ -30,6 +30,7 @@ class ShowSickLeaveScreen extends StatelessWidget { model.getSickLeave(patient.patientMRN ?? patient.patientId), builder: (_, model, w) => AppScaffold( baseViewModel: model, + isShowAppBar: false, appBarTitle: TranslationBase.of(context).sickleave, body: SingleChildScrollView( child: Column( From 6300d3f0fc0176e351864ef15c5639305d5f2cd8 Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Mon, 5 Apr 2021 14:22:49 +0300 Subject: [PATCH 07/11] 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 08/11] 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 09/11] 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 10/11] 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 11/11] 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"