From fe5456db2a1e515a69f2ecf0e89ccbefd5761e0b Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Mon, 20 Sep 2021 12:49:38 +0300 Subject: [PATCH] fix prescription --- .../prescription/prescriptions_page.dart | 347 +++++++++--------- lib/screens/procedures/ProcedureCard.dart | 33 +- lib/widgets/shared/doctor_card_insurance.dart | 158 ++++---- pubspec.lock | 81 +++- 4 files changed, 338 insertions(+), 281 deletions(-) diff --git a/lib/screens/prescription/prescriptions_page.dart b/lib/screens/prescription/prescriptions_page.dart index 0c3c5123..905ee09a 100644 --- a/lib/screens/prescription/prescriptions_page.dart +++ b/lib/screens/prescription/prescriptions_page.dart @@ -32,193 +32,190 @@ class PrescriptionsPage extends StatelessWidget { onModelReady: (model) => patient.admissionNo == null ? model.getPrescriptions(patient, patientType: patientType) : model.getMedicationForInPatient(patient), - builder: (_, model, w) => NetworkBaseView( - baseViewModel: model, - child: AppScaffold( - baseViewModel: model, - isShowAppBar: true, - backgroundColor: Colors.grey[100], - appBar: PatientProfileAppBar( - patient, - isInpatient: isInpatient, - ), - body: patient.admissionNo == null - ? FractionallySizedBox( - widthFactor: 1.0, - child: ListView( - physics: BouncingScrollPhysics(), - children: [ - SizedBox( - height: 12, - ), - if (model.prescriptionsList.isNotEmpty && patient.patientStatusType != 43) - Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AppText( - TranslationBase.of(context).orders, - style: "caption2", - color: Colors.black, - fontSize: 13, - ), - AppText( - TranslationBase.of(context).prescriptions, - bold: true, - fontSize: 22, + builder: (_, model, w) => AppScaffold( + baseViewModel: model, + isShowAppBar: true, + backgroundColor: Colors.grey[100], + appBar: PatientProfileAppBar( + patient, + isInpatient: isInpatient, + ), + body: patient.admissionNo == null + ? FractionallySizedBox( + widthFactor: 1.0, + child: ListView( + physics: BouncingScrollPhysics(), + children: [ + SizedBox( + height: 12, + ), + if (model.prescriptionsList.isNotEmpty && patient.patientStatusType != 43) + Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context).orders, + style: "caption2", + color: Colors.black, + fontSize: 13, + ), + AppText( + TranslationBase.of(context).prescriptions, + bold: true, + fontSize: 22, + ), + ], + ), + ), + if (patient.patientStatusType != null && patient.patientStatusType == 43) + Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context).orders, + style: "caption2", + color: Colors.black, + fontSize: 13, + ), + AppText( + TranslationBase.of(context).prescriptions, + bold: true, + fontSize: 22, + ), + ], + ), + ), + if ((patient.patientStatusType != null && patient.patientStatusType == 43) || + (isFromLiveCare && patient.appointmentNo != null)) + AddNewOrder( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => BaseAddProcedureTabPage( + patient: patient, + prescriptionModel: model, + procedureType: ProcedureType.PRESCRIPTION, + ), + settings: RouteSettings(name: 'AddProcedureTabPage')), + ); + }, + label: TranslationBase.of(context).applyForNewPrescriptionsOrder, + ), + ...List.generate( + model.prescriptionsList.length, + (index) => InkWell( + onTap: () => Navigator.push( + context, + FadePage( + page: PrescriptionItemsPage( + prescriptions: model.prescriptionsList[index], + patient: patient, + patientType: patientType, + arrivalType: arrivalType, + ), ), - ], + ), + child: DoctorCard( + doctorName: model.prescriptionsList[index].doctorName, + profileUrl: model.prescriptionsList[index].doctorImageURL, + branch: model.prescriptionsList[index].name, + clinic: model.prescriptionsList[index].clinicDescription, + isPrescriptions: true, + appointmentDate: AppDateUtils.getDateTimeFromServerFormat( + model.prescriptionsList[index].appointmentDate, ), + ))), + if (model.prescriptionsList.isEmpty && patient.patientStatusType != 43) + Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + height: 100, ), - if (patient.patientStatusType != null && patient.patientStatusType == 43) + Image.asset('assets/images/no-data.png'), Padding( padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AppText( - TranslationBase.of(context).orders, - style: "caption2", - color: Colors.black, - fontSize: 13, - ), - AppText( - TranslationBase.of(context).prescriptions, - bold: true, - fontSize: 22, - ), - ], - ), - ), - if ((patient.patientStatusType != null && patient.patientStatusType == 43) || - (isFromLiveCare && patient.appointmentNo != null)) - AddNewOrder( - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => BaseAddProcedureTabPage( - patient: patient, - prescriptionModel: model, - procedureType: ProcedureType.PRESCRIPTION, + child: AppText(TranslationBase.of(context).noPrescriptionsFound), + ) + ], + ), + ) + ], + ), + ) + : NetworkBaseView( + baseViewModel: model, + child: FractionallySizedBox( + widthFactor: 1.0, + child: ListView( + physics: BouncingScrollPhysics(), + children: [ + // SizedBox( + // height: 12, + // ), + + ListView.builder( + scrollDirection: Axis.vertical, + shrinkWrap: true, + itemCount: model.medicationForInPatient.length, + itemBuilder: (context, index) { + //model.medicationForInPatient.length, + return InkWell( + onTap: () => Navigator.push( + context, + FadePage( + page: PrescriptionItemsInPatientPage( + prescriptionIndex: index, + prescriptions: model.medicationForInPatient[index], + patient: patient, + patientType: patientType, + arrivalType: arrivalType, + startOn: AppDateUtils.getDateTimeFromServerFormat( + model.medicationForInPatient[index].startDatetime, ), - settings: RouteSettings(name: 'AddProcedureTabPage')), - ); - }, - label: TranslationBase.of(context).applyForNewPrescriptionsOrder, - ), - ...List.generate( - model.prescriptionsList.length, - (index) => InkWell( - onTap: () => Navigator.push( - context, - FadePage( - page: PrescriptionItemsPage( - prescriptions: model.prescriptionsList[index], - patient: patient, - patientType: patientType, - arrivalType: arrivalType, + stopOn: AppDateUtils.getDateTimeFromServerFormat( + model.medicationForInPatient[index].stopDatetime, ), ), ), - child: DoctorCard( - doctorName: model.prescriptionsList[index].doctorName, - profileUrl: model.prescriptionsList[index].doctorImageURL, - branch: model.prescriptionsList[index].name, - clinic: model.prescriptionsList[index].clinicDescription, - isPrescriptions: true, - appointmentDate: AppDateUtils.getDateTimeFromServerFormat( - model.prescriptionsList[index].appointmentDate, ), - ))), - if (model.prescriptionsList.isEmpty && patient.patientStatusType != 43) - Center( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - SizedBox( - height: 100, + child: InPatientDoctorCard( + doctorName: model.medicationForInPatient[index].pHRItemDescription, + profileUrl: 'sss', + branch: 'hamza', + clinic: 'basheer', + isPrescriptions: true, + appointmentDate: AppDateUtils.getDateTimeFromServerFormat( + model.medicationForInPatient[index].prescriptionDatetime, ), - Image.asset('assets/images/no-data.png'), - Padding( - padding: const EdgeInsets.all(8.0), - child: AppText(TranslationBase.of(context).noPrescriptionsFound), - ) - ], + createdBy: model.medicationForInPatient[index].doctorName.toString(), + )); + }), + if (model.medicationForInPatient.length == 0) + Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + height: 100, ), - ) - ], - ), - ) - : NetworkBaseView( - baseViewModel: model, - child: FractionallySizedBox( - widthFactor: 1.0, - child: ListView( - physics: BouncingScrollPhysics(), - children: [ - // SizedBox( - // height: 12, - // ), - - ListView.builder( - scrollDirection: Axis.vertical, - shrinkWrap: true, - itemCount: model.medicationForInPatient.length, - itemBuilder: (context, index) { - //model.medicationForInPatient.length, - return InkWell( - onTap: () => Navigator.push( - context, - FadePage( - page: PrescriptionItemsInPatientPage( - prescriptionIndex: index, - prescriptions: model.medicationForInPatient[index], - patient: patient, - patientType: patientType, - arrivalType: arrivalType, - startOn: AppDateUtils.getDateTimeFromServerFormat( - model.medicationForInPatient[index].startDatetime, - ), - stopOn: AppDateUtils.getDateTimeFromServerFormat( - model.medicationForInPatient[index].stopDatetime, - ), - ), - ), - ), - child: InPatientDoctorCard( - doctorName: model.medicationForInPatient[index].pHRItemDescription, - profileUrl: 'sss', - branch: 'hamza', - clinic: 'basheer', - isPrescriptions: true, - appointmentDate: AppDateUtils.getDateTimeFromServerFormat( - model.medicationForInPatient[index].prescriptionDatetime, - ), - createdBy: model.medicationForInPatient[index].doctorName.toString(), - )); - }), - if (model.medicationForInPatient.length == 0) - Center( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - SizedBox( - height: 100, - ), - Image.asset('assets/images/no-data.png'), - Padding( - padding: const EdgeInsets.all(8.0), - child: AppText(TranslationBase.of(context).noPrescriptionsFound), - ) - ], - ), + Image.asset('assets/images/no-data.png'), + Padding( + padding: const EdgeInsets.all(8.0), + child: AppText(TranslationBase.of(context).noPrescriptionsFound), ) - ], - ), - ), - )), - )); + ], + ), + ) + ], + ), + ), + ))); } } diff --git a/lib/screens/procedures/ProcedureCard.dart b/lib/screens/procedures/ProcedureCard.dart index 31611b67..82bb649c 100644 --- a/lib/screens/procedures/ProcedureCard.dart +++ b/lib/screens/procedures/ProcedureCard.dart @@ -26,7 +26,8 @@ class ProcedureCard extends StatelessWidget { this.categoryID, this.categoryName, this.patient, - this.doctorID, this.isInpatient = false, + this.doctorID, + this.isInpatient = false, }) : super(key: key); @override @@ -47,22 +48,20 @@ class ProcedureCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.start, children: [ Container( - height: MediaQuery.of(context).size.height * .20, + height: MediaQuery.of(context).size.height * .212, width: 5, decoration: BoxDecoration( borderRadius: BorderRadius.only( topLeft: Radius.circular(10), bottomLeft: Radius.circular(10), ), - color: - entityList.orderType == 0 ? Colors.black : Colors.red[500], + color: entityList.orderType == 0 ? Colors.black : Colors.red[500], ), ), Expanded( child: Container( padding: EdgeInsets.only( - left: projectViewModel.isArabic ? 0 : 15, - right: projectViewModel.isArabic ? 15 : 0), + left: projectViewModel.isArabic ? 0 : 15, right: projectViewModel.isArabic ? 15 : 0), child: InkWell( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -75,12 +74,8 @@ class ProcedureCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( - entityList.orderType == 0 - ? 'Routine' - : 'Urgent', - color: entityList.orderType == 0 - ? Colors.black - : Colors.red[800], + entityList.orderType == 0 ? 'Routine' : 'Urgent', + color: entityList.orderType == 0 ? Colors.black : Colors.red[800], fontWeight: FontWeight.w600, ), SizedBox( @@ -144,8 +139,7 @@ class ProcedureCard extends StatelessWidget { ), ), Container( - margin: EdgeInsets.only( - left: 0, top: 25, right: 0, bottom: 0), + margin: EdgeInsets.only(left: 0, top: 25, right: 0, bottom: 0), padding: EdgeInsets.only(left: 4.0, right: 4.0), child: Container( width: 40, @@ -156,9 +150,7 @@ class ProcedureCard extends StatelessWidget { 'assets/images/male_avatar.png', height: 25, width: 30, - errorBuilder: (BuildContext context, - Object exception, - StackTrace stackTrace) { + errorBuilder: (BuildContext context, Object exception, StackTrace stackTrace) { return Text('No Image'); }, ))), @@ -166,8 +158,7 @@ class ProcedureCard extends StatelessWidget { Expanded( flex: 4, child: Container( - margin: EdgeInsets.only( - left: 10, top: 25, right: 10, bottom: 0), + margin: EdgeInsets.only(left: 10, top: 25, right: 10, bottom: 0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -203,7 +194,9 @@ class ProcedureCard extends StatelessWidget { fontSize: 12, ), ), - if ((entityList.categoryID == 2 || entityList.categoryID == 4) && doctorID == entityList.doctorID && !isInpatient) + if ((entityList.categoryID == 2 || entityList.categoryID == 4) && + doctorID == entityList.doctorID && + !isInpatient) InkWell( child: Icon(DoctorApp.edit), onTap: onTap, diff --git a/lib/widgets/shared/doctor_card_insurance.dart b/lib/widgets/shared/doctor_card_insurance.dart index 2b0aae7c..5615015e 100644 --- a/lib/widgets/shared/doctor_card_insurance.dart +++ b/lib/widgets/shared/doctor_card_insurance.dart @@ -53,14 +53,13 @@ class DoctorCardInsurance extends StatelessWidget { children: [ Container( height: 160, - width: 5, + width: 4.5, decoration: BoxDecoration( borderRadius: BorderRadius.only( topLeft: Radius.circular(10), bottomLeft: Radius.circular(10), ), - color: approvalStatus == "Approved" || - approvalStatus == "تمت الموافقة" + color: approvalStatus == "Approved" || approvalStatus == "تمت الموافقة" ? Color(0xff359846) : Color(0xffD02127), ), @@ -68,8 +67,7 @@ class DoctorCardInsurance extends StatelessWidget { Expanded( child: Container( padding: EdgeInsets.only( - left: projectViewModel.isArabic ? 0 : 15, - right: projectViewModel.isArabic ? 15 : 0), + left: projectViewModel.isArabic ? 0 : 15, right: projectViewModel.isArabic ? 15 : 0), child: InkWell( onTap: onTap, child: Column( @@ -80,8 +78,7 @@ class DoctorCardInsurance extends StatelessWidget { children: [ AppText( "$approvalStatus", - color: approvalStatus == "Approved" || - approvalStatus == "تمت الموافقة" + color: approvalStatus == "Approved" || approvalStatus == "تمت الموافقة" ? Color(0xff359846) : Color(0xffD02127), ), @@ -92,7 +89,7 @@ class DoctorCardInsurance extends StatelessWidget { ), color: Color(0xff2E303A)), child: Padding( - padding: const EdgeInsets.all(5.0), + padding: const EdgeInsets.all(12.0), child: AppText( '$patientOut'.replaceAll(" ", ""), color: Colors.white, @@ -126,90 +123,83 @@ class DoctorCardInsurance extends StatelessWidget { flex: 4, child: Container( margin: EdgeInsets.all(10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (orderNo != null && !isPrescriptions) - Row( - children: [ - AppText( - 'order No:', - color: Colors.grey[500], - ), - AppText( - orderNo ?? '', - ) - ], - ), - if (invoiceNO != null && !isPrescriptions) - Row( - children: [ - AppText( - 'Invoice:', - color: Colors.grey[500], - ), - AppText( - invoiceNO, - ) - ], + child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + if (orderNo != null && !isPrescriptions) + Row( + children: [ + AppText( + 'order No:', + color: Colors.grey[500], ), - if (isPrescriptions) - Row( - children: [ - AppText( - TranslationBase.of(context).clinic + - ": ", - color: Colors.grey[500], - fontSize: 14, - //fontWeight: FontWeight.w600, - //color: Colors.grey[500], - ), - Expanded( - child: AppText( - clinic, - //fontWeight: FontWeight.w700, - fontSize: 14.0, - ), - ) - ], + AppText( + orderNo ?? '', + ) + ], + ), + if (invoiceNO != null && !isPrescriptions) + Row( + children: [ + AppText( + 'Invoice:', + color: Colors.grey[500], ), - if (branch2 != null) - Row( - children: [ - AppText( - TranslationBase.of(context).branch + - ": ", - fontSize: 14, - color: Colors.grey[500], - ), - AppText( - branch2, - fontSize: 14.0, - ) - ], + AppText( + invoiceNO, + ) + ], + ), + if (isPrescriptions) + Row( + children: [ + AppText( + TranslationBase.of(context).clinic + ": ", + color: Colors.grey[500], + fontSize: 14, + //fontWeight: FontWeight.w600, + //color: Colors.grey[500], ), - Row( - children: [ - AppText( - TranslationBase.of(context) - .approvalNo + - ": ", - fontSize: 14, - color: Colors.grey[500], - //color: Colors.grey[500], - ), - AppText( - branch, + Expanded( + child: AppText( + clinic, + //fontWeight: FontWeight.w700, fontSize: 14.0, - ) - ], + ), + ) + ], + ), + if (branch2 != null) + Row( + children: [ + AppText( + TranslationBase.of(context).branch + ": ", + fontSize: 14, + color: Colors.grey[500], + ), + AppText( + branch2, + fontSize: 14.0, + ) + ], + ), + Row( + children: [ + AppText( + TranslationBase.of(context).approvalNo + ": ", + fontSize: 14, + color: Colors.grey[500], + //color: Colors.grey[500], ), - ]), + AppText( + branch, + fontSize: 14.0, + ) + ], + ), + ]), ), ), Padding( - padding: - const EdgeInsets.symmetric(horizontal: 15.0), + padding: const EdgeInsets.symmetric(horizontal: 15.0), child: Icon( EvaIcons.eye, ), diff --git a/pubspec.lock b/pubspec.lock index 0229e774..53035a4a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -141,6 +141,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "7.1.0" + cached_network_image: + dependency: "direct main" + description: + name: cached_network_image + url: "https://pub.dartlang.org" + source: hosted + version: "2.5.1" characters: dependency: transitive description: @@ -433,6 +440,20 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_blurhash: + dependency: transitive + description: + name: flutter_blurhash + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.0" + flutter_cache_manager: + dependency: transitive + description: + name: flutter_cache_manager + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" flutter_device_type: dependency: "direct main" description: @@ -595,6 +616,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.1.4" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.19" imei_plugin: dependency: "direct main" description: @@ -693,6 +721,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0" + octo_image: + dependency: transitive + description: + name: octo_image + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.0" open_iconic_flutter: dependency: transitive description: @@ -728,6 +763,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.4" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.28" path_provider_linux: dependency: transitive description: @@ -735,6 +777,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.0.1+2" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4+8" path_provider_platform_interface: dependency: transitive description: @@ -854,6 +903,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.5" + rxdart: + dependency: transitive + description: + name: rxdart + url: "https://pub.dartlang.org" + source: hosted + version: "0.25.0" scratch_space: dependency: transitive description: @@ -950,6 +1006,20 @@ packages: relative: true source: path version: "0.0.0" + sqflite: + dependency: transitive + description: + name: sqflite + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.2+4" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3+3" stack_trace: dependency: transitive description: @@ -985,6 +1055,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0-nullsafety.1" + synchronized: + dependency: transitive + description: + name: synchronized + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0+2" term_glyph: dependency: transitive description: @@ -1154,5 +1231,5 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=2.10.0 <=2.11.0-213.1.beta" - flutter: ">=1.22.0 <2.0.0" + dart: ">=2.10.2 <=2.11.0-213.1.beta" + flutter: ">=1.22.2 <2.0.0"