From 54fbe76c7b90bada6d9ae440767725815d96f668 Mon Sep 17 00:00:00 2001 From: mosazaid Date: Thu, 27 May 2021 15:56:43 +0300 Subject: [PATCH] medical report fixes and vital sign --- .../MedicalReport/MeidcalReportModel.dart | 38 +++- .../MedicalReportDetailPage.dart | 10 +- .../medical_report/MedicalReportPage.dart | 214 ++++++++++-------- .../vital_sign/vital_sign_details_screen.dart | 2 +- .../vital_sign_item_details_screen.dart | 2 +- 5 files changed, 168 insertions(+), 98 deletions(-) diff --git a/lib/models/patient/MedicalReport/MeidcalReportModel.dart b/lib/models/patient/MedicalReport/MeidcalReportModel.dart index 450b93f6..473140d1 100644 --- a/lib/models/patient/MedicalReport/MeidcalReportModel.dart +++ b/lib/models/patient/MedicalReport/MeidcalReportModel.dart @@ -6,10 +6,19 @@ class MedicalReportModel { String invoiceNo; int status; String verifiedOn; - int verifiedBy; + String verifiedBy; String editedOn; int editedBy; int lineItemNo; + String createdOn; + int templateID; + int doctorID; + int doctorGender; + String doctorGenderDescription; + String doctorGenderDescriptionN; + String doctorImageURL; + String doctorName; + String doctorNameN; String reportDataHtml; MedicalReportModel( @@ -24,6 +33,15 @@ class MedicalReportModel { this.editedOn, this.editedBy, this.lineItemNo, + this.createdOn, + this.templateID, + this.doctorID, + this.doctorGender, + this.doctorGenderDescription, + this.doctorGenderDescriptionN, + this.doctorImageURL, + this.doctorName, + this.doctorNameN, this.reportDataHtml}); MedicalReportModel.fromJson(Map json) { @@ -38,6 +56,15 @@ class MedicalReportModel { editedOn = json['EditedOn']; editedBy = json['EditedBy']; lineItemNo = json['LineItemNo']; + createdOn = json['CreatedOn']; + templateID = json['TemplateID']; + doctorID = json['DoctorID']; + doctorGender = json['DoctorGender']; + doctorGenderDescription = json['DoctorGenderDescription']; + doctorGenderDescriptionN = json['DoctorGenderDescriptionN']; + doctorImageURL = json['DoctorImageURL']; + doctorName = json['DoctorName']; + doctorNameN = json['DoctorNameN']; reportDataHtml = json['ReportDataHtml']; } @@ -54,6 +81,15 @@ class MedicalReportModel { data['EditedOn'] = this.editedOn; data['EditedBy'] = this.editedBy; data['LineItemNo'] = this.lineItemNo; + data['CreatedOn'] = this.createdOn; + data['TemplateID'] = this.templateID; + data['DoctorID'] = this.doctorID; + data['DoctorGender'] = this.doctorGender; + data['DoctorGenderDescription'] = this.doctorGenderDescription; + data['DoctorGenderDescriptionN'] = this.doctorGenderDescriptionN; + data['DoctorImageURL'] = this.doctorImageURL; + data['DoctorName'] = this.doctorName; + data['DoctorNameN'] = this.doctorNameN; data['ReportDataHtml'] = this.reportDataHtml; return data; } diff --git a/lib/screens/patients/profile/medical_report/MedicalReportDetailPage.dart b/lib/screens/patients/profile/medical_report/MedicalReportDetailPage.dart index 1233fe98..e63f39eb 100644 --- a/lib/screens/patients/profile/medical_report/MedicalReportDetailPage.dart +++ b/lib/screens/patients/profile/medical_report/MedicalReportDetailPage.dart @@ -1,4 +1,5 @@ import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/core/viewModel/PatientMedicalReportViewModel.dart'; import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/models/patient/MedicalReport/MeidcalReportModel.dart'; @@ -23,10 +24,11 @@ class MedicalReportDetailPage extends StatelessWidget { String arrivalType = routeArgs['arrivalType']; MedicalReportModel medicalReport = routeArgs['medicalReport']; - return BaseView( + return BaseView( builder: (_, model, w) => AppScaffold( baseViewModel: model, isShowAppBar: true, + backgroundColor: Theme.of(context).scaffoldBackgroundColor, appBar: PatientProfileHeaderNewDesignAppBar( patient, patientType, @@ -57,7 +59,7 @@ class MedicalReportDetailPage extends StatelessWidget { ], ), ), - Container( + medicalReport.reportDataHtml != null ? Container( width: double.infinity, margin: EdgeInsets.symmetric(horizontal: 16, vertical: 16), padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16), @@ -73,8 +75,10 @@ class MedicalReportDetailPage extends StatelessWidget { ), ), child: Html( - data: medicalReport.reportDataHtml + data: medicalReport.reportDataHtml ?? "" ), + ) : Container( + ), ], ), diff --git a/lib/screens/patients/profile/medical_report/MedicalReportPage.dart b/lib/screens/patients/profile/medical_report/MedicalReportPage.dart index b54d4837..eb078dd5 100644 --- a/lib/screens/patients/profile/medical_report/MedicalReportPage.dart +++ b/lib/screens/patients/profile/medical_report/MedicalReportPage.dart @@ -17,6 +17,7 @@ import 'package:doctor_app_flutter/widgets/shared/card_with_bg_widget.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_html/flutter_html.dart'; import 'package:provider/provider.dart'; import '../../../../routes.dart'; @@ -84,113 +85,142 @@ class MedicalReportPage extends StatelessWidget { }, label: TranslationBase.of(context).createNewMedicalReport, ), - // if (model.state == ViewState.ErrorLocal) - // Container( - // child: ErrorMessage(error: model.error), - // ), if (model.state != ViewState.ErrorLocal) ...List.generate( model.medicalReportList.length, - (index) => CardWithBgWidget( - hasBorder: false, - bgColor: model.medicalReportList[index].status == 1 - ? Colors.red[700] - : Colors.green[700], - widget: Column( - children: [ - Row( - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AppText( - model.medicalReportList[index].status == 1 - ? TranslationBase.of(context).onHold - : TranslationBase.of(context).verified, - color: model.medicalReportList[index].status == 1 - ? Colors.red[700] - : Colors.green[700], - ), - AppText( - "Jammal" ?? "", - fontSize: 15, - bold: true, - ), - ], - )), - Expanded( - child: Column( + (index) => Container( + margin: EdgeInsets.symmetric(horizontal: 8), + child: CardWithBgWidget( + hasBorder: false, + bgColor: model.medicalReportList[index].status == 1 + ? Colors.red[700] + : Colors.green[700], + widget: Column( + children: [ + Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + model.medicalReportList[index].status == 1 + ? TranslationBase.of(context).onHold + : TranslationBase.of(context).verified, + color: + model.medicalReportList[index].status == + 1 + ? Colors.red[700] + : Colors.green[700], + fontSize: 1.4 * SizeConfig.textMultiplier, + bold: true, + ), + AppText( + projectViewModel.isArabic + ? model.medicalReportList[index] + .doctorNameN + : model.medicalReportList[index] + .doctorName, + fontSize: 1.9 * SizeConfig.textMultiplier, + fontWeight: FontWeight.w700, + color: Color(0xFF2E303A), + ), + ], + )), + Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ AppText( - '${AppDateUtils.convertDateFromServerFormat( - model.medicalReportList[index].editedOn, - "dd/MM/yyyy")}', - color: Colors.black, + '${AppDateUtils.convertDateFromServerFormat(model.medicalReportList[index].editedOn ?? model.medicalReportList[index].createdOn, "dd MMM yyyy")}', + color: Color(0xFF2E303A), fontWeight: FontWeight.w600, - fontSize: 14, + fontSize: 1.6 * SizeConfig.textMultiplier, ), AppText( - '${AppDateUtils.convertDateFromServerFormat( - model.medicalReportList[index].editedOn, - "hh:mm a")}', + '${AppDateUtils.convertDateFromServerFormat(model.medicalReportList[index].editedOn ?? model.medicalReportList[index].createdOn, "hh:mm a")}', + color: Color(0xFF2E303A), fontWeight: FontWeight.w600, - color: Colors.grey[700], - fontSize: 14, + fontSize: 1.5 * SizeConfig.textMultiplier, ), ], ), - ), - ], - ), - Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Container( - child: LargeAvatar( - name: "Jammal", - url: null, + ], + ), + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Container( + margin: EdgeInsets.only( + left: 0, top: 4, right: 8, bottom: 0), + child: LargeAvatar( + name: projectViewModel.isArabic + ? model + .medicalReportList[index].doctorNameN + : model + .medicalReportList[index].doctorName, + url: model + .medicalReportList[index].doctorImageURL, + ), + width: 50, + height: 50, ), - width: 55, - height: 55, - ), - Expanded(child: AppText("")), - InkWell( - onTap: () { - if (model.medicalReportList[index].status == - 1) { - Navigator.of(context).pushNamed( - PATIENT_MEDICAL_REPORT_INSERT, - arguments: { - 'patient': patient, - 'patientType': patientType, - 'arrivalType': arrivalType, - 'type': MedicalReportStatus.ADD, - 'medicalReport': - model.medicalReportList[index] - }); - } else { - Navigator.of(context).pushNamed( - PATIENT_MEDICAL_REPORT_DETAIL, - arguments: { - 'patient': patient, - 'patientType': patientType, - 'arrivalType': arrivalType, - 'medicalReport': - model.medicalReportList[index] - }); - } - }, - child: Icon( - model.medicalReportList[index].status == 1 - ? EvaIcons.eye - : DoctorApp.edit_1, + Expanded( + child: Container( + height: 50, + child: AppText( + TranslationBase.of(context).showDetail, + fontSize: 1.4 * SizeConfig.textMultiplier, + ), + ), + // child: Html( + // data: model.medicalReportList[index] + // .reportDataHtml ?? + // ""), ), - ) - ], - ), - ], + Container( + child: InkWell( + onTap: () { + if (model.medicalReportList[index].status == + 1) { + Navigator.of(context).pushNamed( + PATIENT_MEDICAL_REPORT_DETAIL, + arguments: { + 'patient': patient, + 'patientType': patientType, + 'arrivalType': arrivalType, + 'medicalReport': + model.medicalReportList[index] + }); + } else { + Navigator.of(context).pushNamed( + PATIENT_MEDICAL_REPORT_INSERT, + arguments: { + 'patient': patient, + 'patientType': patientType, + 'arrivalType': arrivalType, + 'type': MedicalReportStatus.ADD, + 'medicalReport': + model.medicalReportList[index] + }); + } + }, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Icon( + model.medicalReportList[index].status == + 1 + ? EvaIcons.eye + : DoctorApp.edit_1, + ), + ], + ), + ), + ) + ], + ), + ], + ), ), ), ), 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 33f9a1cb..e8314816 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 @@ -57,7 +57,7 @@ class VitalSignDetailsScreen extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( - "${patient.firstName ?? patient.patientDetails?.firstName??''}'s", + "${patient.firstName ?? patient.patientDetails != null ? patient.patientDetails.firstName : patient.fullName}'s", fontSize: SizeConfig.textMultiplier * 1.6, fontWeight: FontWeight.w700, color: Color(0xFF2E303A), 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 343d0590..9e6663de 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 @@ -202,7 +202,7 @@ class VitalSignItemDetailsScreen extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( - "${patient.firstName ?? patient.patientDetails.firstName}'s", + "${patient.firstName ?? patient.patientDetails != null ? patient.patientDetails.firstName : patient.fullName}'s", fontFamily: 'Poppins', fontSize: SizeConfig.textMultiplier * 1.6, fontWeight: FontWeight.w600,