diff --git a/assets/fonts/Poppins/Poppins-Bold.ttf b/assets/fonts/Poppins/Poppins-Bold.ttf new file mode 100644 index 00000000..b94d47f3 Binary files /dev/null and b/assets/fonts/Poppins/Poppins-Bold.ttf differ diff --git a/assets/fonts/Poppins/Poppins-Medium.ttf b/assets/fonts/Poppins/Poppins-Medium.ttf new file mode 100644 index 00000000..e90e87ed Binary files /dev/null and b/assets/fonts/Poppins/Poppins-Medium.ttf differ diff --git a/assets/fonts/Poppins/Poppins-Regular.ttf b/assets/fonts/Poppins/Poppins-Regular.ttf new file mode 100644 index 00000000..be06e7fd Binary files /dev/null and b/assets/fonts/Poppins/Poppins-Regular.ttf differ diff --git a/assets/images/female_avatar.png b/assets/images/female_avatar.png new file mode 100644 index 00000000..9ff4b8b7 Binary files /dev/null and b/assets/images/female_avatar.png differ diff --git a/assets/images/male_avatar.png b/assets/images/male_avatar.png new file mode 100644 index 00000000..972a59ac Binary files /dev/null and b/assets/images/male_avatar.png differ diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index b2ab19b9..d1db1a1f 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -764,4 +764,13 @@ const Map> localizedValues = { }, "show-more-btn": {"en": "Flow Chart", "ar": "النتائج التراكمية"}, + "open-rad": {"en": "Open Image", "ar": "فتح صور الاشعة"}, + + 'fileNumber': {'en': "File Number: ", 'ar': " :رقم الملف"}, + 'searchPatient-name': { + 'en': 'Search Name, Medical File, Phone Number', + 'ar': "اسم البحث ، الملف الطبي ، رقم الهاتف" + }, + 'reschedule': {'en': 'Reschedule', 'ar': 'إعادة الجدولة'}, + 'leaves': {'en': 'Leaves', 'ar': 'يغادر'}, }; diff --git a/lib/core/model/prescription_req_model.dart b/lib/core/model/prescription_req_model.dart index 3accb428..3eb71072 100644 --- a/lib/core/model/prescription_req_model.dart +++ b/lib/core/model/prescription_req_model.dart @@ -1,18 +1,21 @@ class PrescriptionReqModel { String vidaAuthTokenID; dynamic patientMRN; + dynamic appNo; - PrescriptionReqModel({this.vidaAuthTokenID, this.patientMRN}); + PrescriptionReqModel({this.vidaAuthTokenID, this.patientMRN, this.appNo}); PrescriptionReqModel.fromJson(Map json) { vidaAuthTokenID = json['VidaAuthTokenID']; patientMRN = json['PatientMRN']; + appNo = json['AppointmentNo']; } Map toJson() { final Map data = new Map(); data['VidaAuthTokenID'] = this.vidaAuthTokenID; data['PatientMRN'] = this.patientMRN; + data['AppointmentNo'] = this.appNo; return data; } } diff --git a/lib/core/service/medicine_service.dart b/lib/core/service/medicine_service.dart index 44b380d6..5c716d6d 100644 --- a/lib/core/service/medicine_service.dart +++ b/lib/core/service/medicine_service.dart @@ -11,7 +11,7 @@ class MedicineService extends BaseService { var _pharmaciesList = []; get pharmacyItemsList => _pharmacyItemsList; get pharmaciesList => _pharmaciesList; - + String searchText=''; List patientAssessmentList = []; PharmaciesItemsRequestModel _itemsRequestModel = @@ -20,6 +20,7 @@ class MedicineService extends BaseService { Future getMedicineItem(String itemName) async { _itemsRequestModel.pHRItemName = itemName; + searchText =itemName; await baseAppClient.post( PHARMACY_ITEMS_URL, onSuccess: (dynamic response, int statusCode) { diff --git a/lib/core/service/prescription_service.dart b/lib/core/service/prescription_service.dart index 8b518c07..758f4595 100644 --- a/lib/core/service/prescription_service.dart +++ b/lib/core/service/prescription_service.dart @@ -82,7 +82,9 @@ class PrescriptionService extends LookupService { } Future getPrescription({int mrn}) async { - _prescriptionReqModel = PrescriptionReqModel(patientMRN: mrn); + _prescriptionReqModel = PrescriptionReqModel( + patientMRN: mrn, + ); hasError = false; _prescriptionList.clear(); await baseAppClient.post(GET_PRESCRIPTION_LIST, diff --git a/lib/core/viewModel/medicine_view_model.dart b/lib/core/viewModel/medicine_view_model.dart index a029b519..9e83d63e 100644 --- a/lib/core/viewModel/medicine_view_model.dart +++ b/lib/core/viewModel/medicine_view_model.dart @@ -15,7 +15,7 @@ class MedicineViewModel extends BaseViewModel { PrescriptionService _prescriptionService = locator(); get pharmacyItemsList => _medicineService.pharmacyItemsList; - + get searchText=>_medicineService.searchText; get pharmaciesList => _medicineService.pharmaciesList; get medicationStrengthList => _prescriptionService.medicationStrengthList; @@ -34,6 +34,7 @@ class MedicineViewModel extends BaseViewModel { List get patientAssessmentList => _prescriptionService.patientAssessmentList; + List get allMedicationList => _prescriptionService.allMedicationList; List get itemMedicineList => _prescriptionService.itemMedicineList; @@ -41,6 +42,7 @@ class MedicineViewModel extends BaseViewModel { _prescriptionService.itemMedicineListRoute; List get itemMedicineListUnit => _prescriptionService.itemMedicineListUnit; + Future getItem({int itemID}) async { //hasError = false; //_insuranceCardService.clearInsuranceCard(); diff --git a/lib/models/patient/patiant_info_model.dart b/lib/models/patient/patiant_info_model.dart index ceb84175..7b54af8a 100644 --- a/lib/models/patient/patiant_info_model.dart +++ b/lib/models/patient/patiant_info_model.dart @@ -1,5 +1,3 @@ - - // TODO : it have to be changed. class PatiantInformtion { @@ -55,114 +53,129 @@ class PatiantInformtion { String nursingStationName; String startTime; String visitType; - - PatiantInformtion({ - this.list, - this.projectId, - this.clinicId, - this.doctorId, - this.patientId, - this.doctorName, - this.doctorNameN, - this.firstName, - this.middleName, - this.lastName, - this.firstNameN, - this.middleNameN, - this.lastNameN, - this.gender, - this.dateofBirth, - this.nationalityId, - this.mobileNumber, - this.emailAddress, - this.patientIdentificationNo, - this.patientType, - this.admissionNo, - this.admissionDate, - this.createdOn, - this.roomId, - this.bedId, - this.nursingStationId, - this.description, - this.clinicDescription, - this.clinicDescriptionN, - this.nationalityName, - this.nationalityNameN, - this.age, - this.genderDescription, - this.nursingStationName, - this.appointmentDate, - this.startTime, - this.appointmentNo, - this.appointmentType, - this.arrivedOn, - this.clinicGroupId, - this.companyName, - this.dischargeStatus, - this.doctorDetails, - this.endTime, - this.episodeNo, - this.fallRiskScore, - this.genderInt, - this.isSigned, - this.medicationOrders, - this.nationality, - this.patientMRN, - this.visitType, - }); + String nationalityFlagURL; + int patientStatusType; + PatiantInformtion( + {this.list, + this.projectId, + this.clinicId, + this.doctorId, + this.patientId, + this.doctorName, + this.doctorNameN, + this.firstName, + this.middleName, + this.lastName, + this.firstNameN, + this.middleNameN, + this.lastNameN, + this.gender, + this.dateofBirth, + this.nationalityId, + this.mobileNumber, + this.emailAddress, + this.patientIdentificationNo, + this.patientType, + this.admissionNo, + this.admissionDate, + this.createdOn, + this.roomId, + this.bedId, + this.nursingStationId, + this.description, + this.clinicDescription, + this.clinicDescriptionN, + this.nationalityName, + this.nationalityNameN, + this.age, + this.genderDescription, + this.nursingStationName, + this.appointmentDate, + this.startTime, + this.appointmentNo, + this.appointmentType, + this.arrivedOn, + this.clinicGroupId, + this.companyName, + this.dischargeStatus, + this.doctorDetails, + this.endTime, + this.episodeNo, + this.fallRiskScore, + this.genderInt, + this.isSigned, + this.medicationOrders, + this.nationality, + this.patientMRN, + this.visitType, + this.nationalityFlagURL, + this.patientStatusType}); factory PatiantInformtion.fromJson(Map json) => PatiantInformtion( - projectId: json["ProjectID"] ?? json["projectID"], - clinicId: json["ClinicID"]?? json["clinicID"], - doctorId: json["DoctorID"]?? json["doctorID"], - patientId: json["PatientID"]?? json["patientID"]??json['patientMRN'] ?? json['PatientMRN'], - doctorName: json["DoctorName"]?? json["doctorName"], - doctorNameN: json["DoctorNameN"]?? json["doctorNameN"], - firstName: json["FirstName"]?? json["firstName"], - middleName: json["MiddleName"]?? json["middleName"], - lastName: json["LastName"]?? json["lastName"], - firstNameN: json["FirstNameN"]?? json["firstNameN"], - middleNameN: json["MiddleNameN"]?? json["middleNameN"], - lastNameN: json["LastNameN"]?? json["lastNameN"], - gender: json["Gender"]?? json["gender"], - dateofBirth: json["DateofBirth"]?? json["dob"], - nationalityId: json["NationalityID"]?? json["nationalityID"], - mobileNumber: json["MobileNumber"]?? json["mobileNumber"], - emailAddress: json["EmailAddress"]?? json["emailAddress"], - patientIdentificationNo: json["PatientIdentificationNo"]?? json["patientIdentificationNo"], - patientType: json["PatientType"]?? json["patientType"], - admissionNo: json["AdmissionNo"]?? json["admissionNo"], - admissionDate: json["AdmissionDate"]?? json["admissionDate"], - createdOn: json["CreatedOn"]?? json["CreatedOn"], - roomId: json["RoomID"]?? json["roomID"], - bedId: json["BedID"]?? json["bedID"], - nursingStationId: json["NursingStationID"]?? json["nursingStationID"], - description: json["Description"]?? json["description"], - clinicDescription: json["ClinicDescription"]?? json["clinicDescription"], - clinicDescriptionN: json["ClinicDescriptionN"]?? json["clinicDescriptionN"], - nationalityName: json["NationalityName"]?? json["nationalityName"]??json['NationalityName'], - nationalityNameN: json["NationalityNameN"]?? json["nationalityNameN"]??json['NationalityNameN'], - age: json["Age"]?? json["age"], - genderDescription: json["GenderDescription"], - nursingStationName: json["NursingStationName"], - appointmentDate: json["AppointmentDate"]?? '', - startTime: json["StartTime"], - appointmentNo :json['appointmentNo'] ?? json['AppointmentNo'], - appointmentType :json['appointmentType'], - arrivedOn :json['arrivedOn'], - clinicGroupId :json['clinicGroupId'], - companyName :json['companyName'], - dischargeStatus :json['dischargeStatus'], - doctorDetails :json['doctorDetails'], - endTime :json['endTime'], - episodeNo :json['episodeNo'] ?? json['EpisodeID'], - fallRiskScore :json['fallRiskScore'], - isSigned :json['isSigned'], - medicationOrders :json['medicationOrders'], - nationality :json['nationality']??json['NationalityNameN'], - patientMRN :json['patientMRN'] ?? json['PatientMRN'], - visitType :json['visitType'] ?? json['visitType'], - ); - + projectId: json["ProjectID"] ?? json["projectID"], + clinicId: json["ClinicID"] ?? json["clinicID"], + doctorId: json["DoctorID"] ?? json["doctorID"], + patientId: json["PatientID"] ?? + json["patientID"] ?? + json['patientMRN'] ?? + json['PatientMRN'], + doctorName: json["DoctorName"] ?? json["doctorName"], + doctorNameN: json["DoctorNameN"] ?? json["doctorNameN"], + firstName: json["FirstName"] ?? json["firstName"], + middleName: json["MiddleName"] ?? json["middleName"], + lastName: json["LastName"] ?? json["lastName"], + firstNameN: json["FirstNameN"] ?? json["firstNameN"], + middleNameN: json["MiddleNameN"] ?? json["middleNameN"], + lastNameN: json["LastNameN"] ?? json["lastNameN"], + gender: json["Gender"] ?? json["gender"], + dateofBirth: json["DateofBirth"] ?? json["dob"], + nationalityId: json["NationalityID"] ?? json["nationalityID"], + mobileNumber: json["MobileNumber"] ?? json["mobileNumber"], + emailAddress: json["EmailAddress"] ?? json["emailAddress"], + patientIdentificationNo: json["PatientIdentificationNo"] ?? + json["patientIdentificationNo"], + patientType: json["PatientType"] ?? json["patientType"], + admissionNo: json["AdmissionNo"] ?? json["admissionNo"], + admissionDate: json["AdmissionDate"] ?? json["admissionDate"], + createdOn: json["CreatedOn"] ?? json["CreatedOn"], + roomId: json["RoomID"] ?? json["roomID"], + bedId: json["BedID"] ?? json["bedID"], + nursingStationId: + json["NursingStationID"] ?? json["nursingStationID"], + description: json["Description"] ?? json["description"], + clinicDescription: + json["ClinicDescription"] ?? json["clinicDescription"], + clinicDescriptionN: + json["ClinicDescriptionN"] ?? json["clinicDescriptionN"], + nationalityName: json["NationalityName"] ?? + json["nationalityName"] ?? + json['NationalityName'], + nationalityNameN: json["NationalityNameN"] ?? + json["nationalityNameN"] ?? + json['NationalityNameN'], + age: json["Age"] ?? json["age"], + genderDescription: json["GenderDescription"], + nursingStationName: json["NursingStationName"], + appointmentDate: json["AppointmentDate"] ?? '', + startTime: json["startTime"], + appointmentNo: json['appointmentNo'] ?? json['AppointmentNo'], + appointmentType: json['appointmentType'], + arrivedOn: json['arrivedOn'], + clinicGroupId: json['clinicGroupId'], + companyName: json['companyName'], + dischargeStatus: json['dischargeStatus'], + doctorDetails: json['doctorDetails'], + endTime: json['endTime'], + episodeNo: json['episodeNo'] ?? json['EpisodeID'], + fallRiskScore: json['fallRiskScore'], + isSigned: json['isSigned'], + medicationOrders: json['medicationOrders'], + nationality: json['nationality'] ?? json['NationalityNameN'], + patientMRN: json['patientMRN'] ?? json['PatientMRN'], + visitType: json['visitType'] ?? json['visitType'], + nationalityFlagURL: + json['NationalityFlagURL'] ?? json['NationalityFlagURL'], + patientStatusType: + json['patientStatusType'] ?? json['patientStatusType']); } diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index 77bbe042..67218e02 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -753,7 +753,7 @@ class _DashboardScreenState extends State { SizedBox( height: 15, ), - sliderActiveIndex == 0 + sliderActiveIndex == 1 ? Column( children: [ Row( @@ -793,7 +793,7 @@ class _DashboardScreenState extends State { }))) ], ) - : sliderActiveIndex == 1 + : sliderActiveIndex == 0 ? Column( children: [ Row( @@ -988,7 +988,8 @@ class _DashboardScreenState extends State { Navigator.of(context) .pushNamed(PATIENTS, arguments: { "patientSearchForm": _patientSearchFormValues, - "selectedType": "7" + "selectedType": "7", + "arrivalType": "1" }); }, ), @@ -1024,12 +1025,6 @@ class _DashboardScreenState extends State { builder: (context) => SearchMedicinePatientScreen(), )); - - // Navigator.of(context) - // .pushNamed(PATIENTS, arguments: { - // "patientSearchForm": _patientSearchFormValues, - // "selectedType": "7" - // }); }, ) ], @@ -1037,132 +1032,6 @@ class _DashboardScreenState extends State { SizedBox( height: 10, ), - // Row( - // mainAxisAlignment: MainAxisAlignment.spaceBetween, - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // DashboardItem( - // child: Column( - // mainAxisAlignment: MainAxisAlignment.spaceAround, - // children: [ - // Center( - // child: Icon( - // DoctorApp.search_patient_1, - // size: 50, - // color: Colors.black, - // ), - // ), - // Column( - // children: [ - // AppText( - // TranslationBase.of(context).searchAbout, - // color: Colors.black, - // textAlign: TextAlign.center, - // ), - // AppText( - // TranslationBase.of(context).patient, - // color: Colors.black, - // textAlign: TextAlign.center, - // ) - // ], - // ) - // ], - // ), - // hasBorder: true, - // onTap: () { - // Navigator.of(context).pushNamed(PATIENT_SEARCH); - // }, - // ), - // DashboardItem( - // child: Column( - // mainAxisAlignment: MainAxisAlignment.spaceAround, - // children: [ - // Icon( - // DoctorApp.medicine_search, - // size: 50, - // color: Colors.black, - // ), - // AppText( - // TranslationBase.of(context).searchMedicine, - // color: Colors.black, - // textAlign: TextAlign.center, - // ) - // ], - // ), - // hasBorder: true, - // onTap: () { - // // Navigator.push( - // // context, - // // MaterialPageRoute( - // // builder: (context) => MedicineSearchScreen(), - // // ), - // // ); - // }, - // ), - // DashboardItem( - // child: Column( - // mainAxisAlignment: MainAxisAlignment.spaceAround, - // children: [ - // Icon( - // DoctorApp.leaves, - // size: 50, - // ), - // AppText( - // TranslationBase.of(context).rescheduleLeaves, - // color: Colors.black, - // textAlign: TextAlign.center, - // ) - // ], - // ), - // hasBorder: true, - // onTap: () { - // Navigator.push( - // context, - // MaterialPageRoute( - // builder: (context) => - // AddRescheduleLeavScreen(), - // // MyReferredPatient(), - // ), - // ); - // }, - // ), -// DashboardItem( -// child: Column( -// mainAxisAlignment: MainAxisAlignment.spaceAround, -// children: [ -// Icon( -// DoctorApp.qr_code, -// size: 50, -// color: Colors.black, -// ), -// Column( -// children: [ -// AppText( -// projectsProvider.isArabic -// ? TranslationBase.of(context).reader -// : TranslationBase.of(context).qr, -// color: Colors.black, -// textAlign: TextAlign.center, -// ), -// AppText( -// projectsProvider.isArabic -// ? TranslationBase.of(context).qr -// : TranslationBase.of(context).reader, -// color: Colors.black, -// textAlign: TextAlign.center, -// ), -// ], -// ) -// ], -// ), -// // imageName: '1.png', -// hasBorder: true, -// onTap: () { -// Navigator.of(context).pushNamed(QR_READER); -// }, -// ), - //], - //), SizedBox( height: 20, ), @@ -1173,41 +1042,6 @@ class _DashboardScreenState extends State { SizedBox( width: 8, ), - // DashboardItem( - // child: Column( - // mainAxisAlignment: MainAxisAlignment.spaceAround, - // children: [ - // Icon( - // DoctorApp.mail, - // size: 50, - // color: Colors.black, - // ), - // Column( - // children: [ - // AppText( - // TranslationBase.of(context).theDoctor, - // textAlign: TextAlign.center, - // color: Colors.black, - // ), - // AppText( - // TranslationBase.of(context).reply, - // textAlign: TextAlign.center, - // color: Colors.black, - // ), - // ], - // ) - // ], - // ), - // hasBorder: true, - // onTap: () { - // Navigator.push( - // context, - // MaterialPageRoute( - // builder: (context) => DoctorReplyScreen(), - // ), - // ); - // }, - // ) ], ), SizedBox( @@ -1224,41 +1058,6 @@ class _DashboardScreenState extends State { ); } - // static List> _createInpatientData(model) { - // final data = [ - // new GaugeSegment( - // model.dashboardItemsList[0].summaryoptions[0].kPIParameter, - // getValue(model.dashboardItemsList[0].summaryoptions[0].value), - // charts.MaterialPalette.blue.shadeDefault), - // new GaugeSegment( - // model.dashboardItemsList[0].summaryoptions[1].kPIParameter, - // getValue(model.dashboardItemsList[0].summaryoptions[1].value), - // charts.MaterialPalette.cyan.shadeDefault), - // new GaugeSegment( - // model.dashboardItemsList[0].summaryoptions[2].kPIParameter, - // getValue(model.dashboardItemsList[0].summaryoptions[2].value), - // charts.MaterialPalette.red.shadeDefault), - // new GaugeSegment( - // model.dashboardItemsList[0].summaryoptions[3].kPIParameter, - // getValue(model.dashboardItemsList[0].summaryoptions[3].value), - // charts.MaterialPalette.deepOrange.shadeDefault.lighter), - // new GaugeSegment( - // model.dashboardItemsList[0].summaryoptions[4].kPIParameter, - // getValue(model.dashboardItemsList[0].summaryoptions[4].value), - // charts.MaterialPalette.green.shadeDefault), - // ]; - - // return [ - // new charts.Series( - // id: 'Segments', - // domainFn: (GaugeSegment segment, _) => segment.segment, - // measureFn: (GaugeSegment segment, _) => segment.size, - // data: data, - // colorFn: (GaugeSegment segment, _) => segment.color, - // ) - // ]; - // } - static List> _createReferralData(model) { final data = [ new GaugeSegment( @@ -1290,71 +1089,6 @@ class _DashboardScreenState extends State { return value == 0 ? 1 : value; } - // showCupertinoPicker( - // {context, List actionList, decKey, onSelectFun}) { - // showModalBottomSheet( - // isDismissible: false, - // isScrollControlled: true, - // context: context, - // builder: (BuildContext builder) { - // return Container( - // // height: 500, - // height: SizeConfig.realScreenHeight * 0.4, - // color: Color(0xfff7f7f7), - // child: Column( - // mainAxisAlignment: MainAxisAlignment.end, - // children: [ - // Container( - // color: Color(0xfff7f7f7), - // child: Row( - // mainAxisAlignment: MainAxisAlignment.end, - // children: [ - // CupertinoButton( - // child: AppText(TranslationBase.of(context).cancel - // // style: TextStyle(context) - // ), - // onPressed: () { - // Navigator.pop(context); - // }, - // ), - // CupertinoButton( - // child: AppText(TranslationBase.of(context).done - // // style: textStyle(context), - // ), - // onPressed: () { - // Navigator.pop(context); - // // onSelectFun(cupertinoPickerIndex); - // }, - // ) - // ], - // ), - // ), - // Container( - // height: SizeConfig.realScreenHeight * 0.3, - // color: Color(0xfff7f7f7), - // child: Column( - // children: actionList - // .map((e) => Flexible( - // child: Container( - // height: 50, - // child: InkWell( - // onTap: () => changeClinic( - // e.clinicID, context, model), - // child: AppText( - // e.clinicName, - // fontSize: - // SizeConfig.textMultiplier * 1.9, - // )), - // ), - // )) - // .toList(), - // )) - // ], - // ), - // ); - // }); - // } - changeClinic(clinicId, BuildContext context, model) async { // Navigator.pop(context); changeIsLoading(true); @@ -1528,80 +1262,13 @@ class _DashboardScreenState extends State { margin: 5, child: Padding( padding: const EdgeInsets.all(5.0), - child: getOutPatientStack(model.dashboardItemsList[0]))), + child: getOutPatientStack(model.dashboardItemsList[1]))), RoundedContainer( height: MediaQuery.of(context).size.height * 0.32, margin: 5, child: Padding( padding: const EdgeInsets.all(5.0), - child: getOutPatientStack(model.dashboardItemsList[1]))), - // Column( - // mainAxisAlignment: MainAxisAlignment.spaceEvenly, - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // rowCount( - // model.dashboardItemsList[0] - // .summaryoptions[0].kPIParameter, - // model.dashboardItemsList[0] - // .summaryoptions[0].value, - // Colors.blue), - // rowCount( - // model.dashboardItemsList[0] - // .summaryoptions[1].kPIParameter, - // model.dashboardItemsList[0] - // .summaryoptions[1].value, - // Colors.cyan), - // rowCount( - // model.dashboardItemsList[0] - // .summaryoptions[2].kPIParameter, - // model.dashboardItemsList[0] - // .summaryoptions[2].value, - // Colors.red), - // rowCount( - // model.dashboardItemsList[0] - // .summaryoptions[3].kPIParameter, - // model.dashboardItemsList[0] - // .summaryoptions[3].value, - // Colors.orange), - // rowCount( - // model.dashboardItemsList[0] - // .summaryoptions[4].kPIParameter, - // model.dashboardItemsList[0] - // .summaryoptions[4].value, - // Colors.green), - // ], - // ))), - // Expanded( - // flex: 3, - // child: Stack(children: [ - // Container( - // child: GaugeChart(_createInpatientData(model))), - // Positioned( - // child: Center( - // child: Column( - // children: [ - // AppText( - // TranslationBase.of(context).inPatient, - // fontSize: 11, - // fontWeight: FontWeight.bold, - // ), - // AppText( - // getPatientCount(model.dashboardItemsList[0]) - // .toString(), - // fontSize: 18, - // fontWeight: FontWeight.bold, - // ) - // ], - // )), - // top: MediaQuery.of(context).size.height * 0.12, - // left: MediaQuery.of(context).size.width * 0.11) - // ])), - // ], - // ) - - // ), - //]) - //), + child: getOutPatientStack(model.dashboardItemsList[0]))), RoundedContainer( height: MediaQuery.of(context).size.height * 0.24, margin: 5, @@ -1653,18 +1320,6 @@ class _DashboardScreenState extends State { model.dashboardItemsList[2] .summaryoptions[2].value, Colors.red), - // rowCount( - // model.dashboardItemsList[2] - // .summaryoptions[3].kPIParameter, - // model.dashboardItemsList[2] - // .summaryoptions[3].value, - // Colors.orange), - // rowCount( - // model.dashboardItemsList[2] - // .summaryoptions[4].kPIParameter, - // model.dashboardItemsList[2] - // .summaryoptions[4].value, - // Colors.green), ], ), ) @@ -1679,12 +1334,6 @@ class _DashboardScreenState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - // AppText( - // TranslationBase.of(context)., - // fontSize: 11, - // fontWeight: FontWeight.bold, - // textOverflow: TextOverflow.ellipsis, - // ), AppText( getPatientCount(model.dashboardItemsList[2]) .toString(), @@ -1701,154 +1350,6 @@ class _DashboardScreenState extends State { ], )), ])), - // RoundedContainer( - // height: MediaQuery.of(context).size.height * 0.24, - // margin: 5, - // child: Column( - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // Padding( - // padding: EdgeInsets.all(10), - // child: AppText(TranslationBase.of(context).otherStatistic)), - // Row( - // mainAxisAlignment: MainAxisAlignment.spaceAround, - // crossAxisAlignment: CrossAxisAlignment.center, - // children: [ - // DashboardItem( - // width: MediaQuery.of(context).size.width * 0.25, - // height: MediaQuery.of(context).orientation == - // Orientation.portrait - // ? MediaQuery.of(context).size.height * 0.18 - // : MediaQuery.of(context).size.height * 0.36, - // child: Column( - // mainAxisAlignment: MainAxisAlignment.spaceAround, - // children: [ - // Container( - // margin: EdgeInsets.only(top: 5), - // child: Icon( - // DoctorApp.lab_results, - // size: 40, - // color: Colors.black, - // ), - // ), - // Container( - // // margin: EdgeInsets.only(bottom: 10), - // child: Column( - // children: [ - // AppText( - // model.dashboardItemsList.length > 0 - // ? getPatientCount( - // model.dashboardItemsList[5]) - // : "", - // fontSize: SizeConfig.textMultiplier * 6, - // color: Colors.black, - // ), - // AppText( - // TranslationBase.of(context).targetPatient, - // textAlign: TextAlign.center, - // color: Colors.black, - // ) - // ], - // ), - // ), - // ], - // ), - // //imageName: '1.png', - // opacity: 0, - // ), - // Container( - // color: Colors.black12, - // height: MediaQuery.of(context).size.height * 0.18, - // width: 1, - // ), - // DashboardItem( - // width: MediaQuery.of(context).size.width * 0.25, - // height: MediaQuery.of(context).orientation == - // Orientation.portrait - // ? MediaQuery.of(context).size.height * 0.18 - // : MediaQuery.of(context).size.height * 0.36, - // child: Column( - // mainAxisAlignment: MainAxisAlignment.spaceAround, - // children: [ - // Container( - // margin: EdgeInsets.only(top: 5), - // child: Icon( - // DoctorApp.radiology, - // size: 40, - // color: Colors.black, - // ), - // ), - // Container( - // margin: EdgeInsets.only(bottom: 5), - // child: Column( - // children: [ - // AppText( - // clinicName.length.toString(), - // fontSize: SizeConfig.textMultiplier * 6, - // color: Colors.black, - // ), - // AppText( - // TranslationBase.of(context).clinic, - // color: Colors.black, - // ) - // ], - // ), - // ), - // ], - // ), - // //imageName: '2.png', - // opacity: 0, - // ), - // Container( - // color: Colors.black12, - // height: MediaQuery.of(context).size.height * 0.18, - // width: 1, - // ), - // DashboardItem( - // width: MediaQuery.of(context).size.width * 0.25, - // height: MediaQuery.of(context).orientation == - // Orientation.portrait - // ? MediaQuery.of(context).size.height * 0.18 - // : MediaQuery.of(context).size.height * 0.36, - // child: Column( - // mainAxisAlignment: MainAxisAlignment.spaceAround, - // children: [ - // Container( - // margin: EdgeInsets.only(top: 5), - // child: Icon( - // DoctorApp.referral, - // size: 40, - // color: Colors.black, - // ), - // ), - // Container( - // margin: EdgeInsets.only(bottom: 5), - // child: Column( - // children: [ - // AppText( - // model.dashboardItemsList.length > 0 - // ? getPatientCount( - // model.dashboardItemsList[2]) - // : "", - // fontSize: SizeConfig.textMultiplier * 6, - // color: Colors.black, - // ), - // AppText( - // TranslationBase.of(context).referral, - // color: Colors.black, - // ) - // ], - // ), - // ), - // ], - // ), - // //imageName: '3.png', - // opacity: 0, - // ), - // ], - // ) - // ], - // )) ]; } } diff --git a/lib/screens/medical-file/medical_file_page.dart b/lib/screens/medical-file/medical_file_page.dart index 2b817d8b..79f7416f 100644 --- a/lib/screens/medical-file/medical_file_page.dart +++ b/lib/screens/medical-file/medical_file_page.dart @@ -31,128 +31,122 @@ class _MedicalFilePageState extends State { body: NetworkBaseView( baseViewModel: model, child: SingleChildScrollView( - child: Center( - child: Container( - color: Colors.white, - child: Column( - // mainAxisAlignment: model.medicalFileList.length != 0 && - // model.medicalFileList != null - // ? MainAxisAlignment.start - // : MainAxisAlignment.center, - children: [ - PatientPageHeaderWidget(patient), - Divider( - height: 1.0, - thickness: 1.0, - color: Colors.grey, - ), - (model.medicalFileList.length != 0 && - model.medicalFileList != null) - ? ListView.builder( - //physics: , - physics: NeverScrollableScrollPhysics(), - scrollDirection: Axis.vertical, - shrinkWrap: true, - itemCount: model.medicalFileList[0].entityList[0] - .timelines.length, - itemBuilder: (BuildContext ctxt, int index) { - return Padding( - padding: EdgeInsets.symmetric( - horizontal: 12.0, vertical: 8.0), - child: InkWell( - child: Container( - child: Column( - children: [ - Row( - children: [ - AppText( - TranslationBase.of(context) - .branch + - ": ", - fontWeight: FontWeight.w700, - ), - AppText(model - .medicalFileList[0] - .entityList[0] - .timelines[index] - .projectName), - ], - ), - Row( - children: [ - AppText( - TranslationBase.of(context) - .doctorName - .toUpperCase() + - ": ", - fontWeight: FontWeight.w700, - ), - Expanded( - child: AppText( - model - .medicalFileList[0] - .entityList[0] - .timelines[index] - .doctorName, - fontWeight: FontWeight.w700, - ), - ), - ], - ), - Row( - children: [ - AppText( - TranslationBase.of(context) - .clinicName + - ": ", - fontWeight: FontWeight.w700, - ), - AppText( + child: Container( + color: Colors.white, + child: Column( + // mainAxisAlignment: model.medicalFileList.length != 0 && + // model.medicalFileList != null + // ? MainAxisAlignment.start + // : MainAxisAlignment.center, + children: [ + PatientPageHeaderWidget(patient), + Divider( + height: 1.0, + thickness: 1.0, + color: Colors.grey, + ), + (model.medicalFileList != null && + model.medicalFileList.length != 0) + ? ListView.builder( + //physics: , + physics: NeverScrollableScrollPhysics(), + scrollDirection: Axis.vertical, + shrinkWrap: true, + itemCount: model.medicalFileList[0].entityList[0] + .timelines.length, + itemBuilder: (BuildContext ctxt, int index) { + return Padding( + padding: EdgeInsets.symmetric( + horizontal: 12.0, vertical: 8.0), + child: InkWell( + child: Container( + child: Column( + children: [ + Row( + children: [ + AppText( + TranslationBase.of(context).branch + + ": ", + fontWeight: FontWeight.w700, + ), + AppText(model + .medicalFileList[0] + .entityList[0] + .timelines[index] + .projectName), + ], + ), + Row( + children: [ + AppText( + TranslationBase.of(context) + .doctorName + .toUpperCase() + + ": ", + fontWeight: FontWeight.w700, + ), + Expanded( + child: AppText( model .medicalFileList[0] .entityList[0] .timelines[index] - .clinicName, + .doctorName, + fontWeight: FontWeight.w700, ), - ], - ), - SizedBox(height: 10.0), - Divider( - height: 1.0, - thickness: 1.0, - color: Colors.grey.shade400, - ) - ], - ), + ), + ], + ), + Row( + children: [ + AppText( + TranslationBase.of(context) + .clinicName + + ": ", + fontWeight: FontWeight.w700, + ), + AppText( + model + .medicalFileList[0] + .entityList[0] + .timelines[index] + .clinicName, + ), + ], + ), + SizedBox(height: 10.0), + Divider( + height: 1.0, + thickness: 1.0, + color: Colors.grey.shade400, + ) + ], ), - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => - MedicalFileDetails( - age: patient.age, - firstName: patient.firstName, - lastName: patient.lastName, - gender: - patient.genderDescription, - encounterNumber: index, - pp: patient.patientId, - )), - ); - }, ), - ); - }) - : Center( - child: Container( - child: AppText( - 'THERES NO MEDICAL FILE FOR THIS Patient', + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + MedicalFileDetails( + age: patient.age, + firstName: patient.firstName, + lastName: patient.lastName, + gender: patient.genderDescription, + encounterNumber: index, + pp: patient.patientId, + )), + ); + }, ), - ), - ) - ], - ), + ); + }) + : Container( + child: AppText( + 'THERES NO MEDICAL FILE FOR THIS Patient', + ), + ) + ], ), ), ), diff --git a/lib/screens/medicine/medicine_search_screen.dart b/lib/screens/medicine/medicine_search_screen.dart index ea891f3e..a37debbf 100644 --- a/lib/screens/medicine/medicine_search_screen.dart +++ b/lib/screens/medicine/medicine_search_screen.dart @@ -1,10 +1,10 @@ import 'dart:math'; import 'package:autocomplete_textfield/autocomplete_textfield.dart'; +import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/model/get_medication_response_model.dart'; import 'package:doctor_app_flutter/core/viewModel/medicine_view_model.dart'; -import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/medicine/pharmacies_list_screen.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; @@ -12,13 +12,13 @@ import 'package:doctor_app_flutter/util/dr_app_toast_msg.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/medicine/medicine_item_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; -import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/material.dart'; +import 'package:hexcolor/hexcolor.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:speech_to_text/speech_recognition_error.dart'; import 'package:speech_to_text/speech_recognition_result.dart'; @@ -117,151 +117,169 @@ class _MedicineSearchState extends State { Widget build(BuildContext context) { return BaseView( onModelReady: (model) async { - if (model.allMedicationList.length == 0) - await model.getMedicationList(); + // if (model.allMedicationList.length == 0) + // await model.getMedicationList(); }, - builder: (_, model, w) => AppScaffold( - baseViewModel: model, - isShowAppBar: false, - appBarTitle: TranslationBase.of(context).searchMedicine, - body: SingleChildScrollView( - child: FractionallySizedBox( - widthFactor: 0.97, - child: SingleChildScrollView( - child: Container( - // height: SizeConfig.screenHeight, - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - SizedBox( - height: SizeConfig.screenHeight * .16, - ), - Column(children: [ - FractionallySizedBox( - widthFactor: 0.9, - child: Column( - children: [ - Container( - // height: MediaQuery.of(context).size.height * 0.070, - child: InkWell( - onTap: model.allMedicationList != null - ? () { - setState(() { - _selectedMedication = null; - }); - } - : null, - child: _selectedMedication == null - ? AutoCompleteTextField< - GetMedicationResponseModel>( - decoration: textFieldSelectorDecoration( - TranslationBase.of(context) - .searchMedicineNameHere, - _selectedMedication != null - ? _selectedMedication.genericName - : null, - true, - icon: EvaIcons.search), - itemSubmitted: (item) => setState( - () => _selectedMedication = item), - key: key, - suggestions: model.allMedicationList, - itemBuilder: (context, suggestion) => - new Padding( - child: Texts( - suggestion.description + - '/' + - suggestion.genericName), - padding: EdgeInsets.all(10.0)), - itemSorter: (a, b) => 1, - itemFilter: (suggestion, input) => - suggestion.genericName - .toLowerCase() - .startsWith( - input.toLowerCase()) || - suggestion.description - .toLowerCase() - .startsWith( - input.toLowerCase()) || - suggestion.keywords - .toLowerCase() - .startsWith(input.toLowerCase()), - ) - : TextField( - minLines: 2, - maxLines: 2, - decoration: textFieldSelectorDecoration( - TranslationBase.of(context) - .searchMedicineNameHere, - _selectedMedication != null - ? _selectedMedication - .description + - (' (${_selectedMedication.genericName} )') - : null, - true, - icon: EvaIcons.search), - enabled: false, - ), + builder: (_, model, w) { + myController.text =model.searchText; + return AppScaffold( + // baseViewModel: model, + isShowAppBar: false, + appBarTitle: TranslationBase.of(context).searchMedicine, + body: SingleChildScrollView( + child: FractionallySizedBox( + widthFactor: 0.97, + child: SingleChildScrollView( + child: Container( + // height: SizeConfig.screenHeight, + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + SizedBox( + height: SizeConfig.screenHeight * .16, + ), + FractionallySizedBox( + widthFactor: 0.9, + child: Container( + decoration: BoxDecoration( + borderRadius: + BorderRadius.all(Radius.circular(6.0)), + border: Border.all( + width: 1.0, color: HexColor("#CCCCCC"))), + padding: EdgeInsets.all(10), + child: AppTextFormField( + borderColor: Colors.white, + hintText: TranslationBase.of(context) + .searchMedicineNameHere, + controller: myController, + onSaved: (value) {}, + onFieldSubmitted: (value) { + searchMedicine(context, model); + }, + inputFormatter: ONLY_LETTERS, ), ), - ], - ), - ) - ]), - SizedBox( - height: SizeConfig.screenHeight * .5, - ), - Column( - children: [ - FractionallySizedBox( - widthFactor: 0.97, - child: Wrap( - alignment: WrapAlignment.center, - children: [ - // TODO change it secondary button and add loading - AppButton( - title: TranslationBase.of(context).search, - onPressed: () async { - await searchMedicine(context, model); - }, + ), + FractionallySizedBox( + widthFactor: 0.9, + child: Container( + child: Wrap( + alignment: WrapAlignment.center, + children: [ + // TODO change it secondary button and add loading + AppButton( + title: TranslationBase.of(context).search, + onPressed: () async{ + await searchMedicine(context, model); + + }, + ), + ], ), - ], + ), + ), + + Container( + margin: EdgeInsets.only( + left: SizeConfig.heightMultiplier * 2), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + TranslationBase + .of(context) + .youCanFind + + (myController.text !=''?model.pharmacyItemsList.length + .toString():'0' )+ + " " + + TranslationBase + .of(context) + .itemsInSearch, + fontWeight: FontWeight.bold, + ), + ], + ), + ), + SizedBox( + height:10, ), - ) - ], - ) - ], - ), - )), + if(myController.text !='') + Container( + height: MediaQuery + .of(context) + .size + .height * 0.5, + child: ListView.builder( + padding: const EdgeInsets.only(top:20), + + scrollDirection: Axis.vertical, + // shrinkWrap: true, + itemCount: + model.pharmacyItemsList == + null + ? 0 + : model + .pharmacyItemsList.length, + itemBuilder: + (BuildContext context, int index) { + return InkWell( + child: MedicineItemWidget( + label: model + .pharmacyItemsList[index] + ["ItemDescription"], + url: model + .pharmacyItemsList[index] + ["ImageSRCUrl"], + ), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + PharmaciesListScreen( + itemID: model + .pharmacyItemsList[ + index]["ItemID"], + url: model + .pharmacyItemsList[ + index]["ImageSRCUrl"]), + ), + ); + }, + ); + }, + ), + ), + ], + ), + )), + ), ), - ), - ), + );} + ); } searchMedicine(context, MedicineViewModel model) async { FocusScope.of(context).unfocus(); - if (_selectedMedication.isNullOrEmpty()) { - helpers.showErrorToast(TranslationBase.of(context).typeMedicineName); + if (myController.text.isNullOrEmpty()) { + helpers.showErrorToast(TranslationBase + .of(context) + .typeMedicineName); //"Type Medicine Name") return; - } else if (_selectedMedication.description.length < 3) { - helpers.showErrorToast(TranslationBase.of(context).moreThan3Letter); + } + if (myController.text.length < 3) { + helpers.showErrorToast(TranslationBase + .of(context) + .moreThan3Letter); return; } - // GifLoaderDialogUtils.showMyDialog(context); - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => PharmaciesListScreen( - itemID: _selectedMedication.itemId, - selectedMedication: _selectedMedication, - ), - ), - ); - // await model.getMedicineItem(_selectedMedication.description); - // GifLoaderDialogUtils.hideDialog(context); + GifLoaderDialogUtils.showMyDialog(context); + + await model.getMedicineItem(myController.text); + GifLoaderDialogUtils.hideDialog(context); } startVoiceSearch() { diff --git a/lib/screens/medicine/pharmacies_list_screen.dart b/lib/screens/medicine/pharmacies_list_screen.dart index 61bd7ad4..6af1d5b7 100644 --- a/lib/screens/medicine/pharmacies_list_screen.dart +++ b/lib/screens/medicine/pharmacies_list_screen.dart @@ -2,7 +2,6 @@ import 'dart:convert'; import 'dart:typed_data'; import 'package:doctor_app_flutter/config/size_config.dart'; -import 'package:doctor_app_flutter/core/model/get_medication_response_model.dart'; import 'package:doctor_app_flutter/core/viewModel/medicine_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; @@ -23,11 +22,9 @@ class PharmaciesListScreen extends StatefulWidget { final int itemID; final String url; - final GetMedicationResponseModel selectedMedication; // In the constructor, require a item id. - PharmaciesListScreen( - {Key key, @required this.itemID, this.url, this.selectedMedication}) + PharmaciesListScreen({Key key, @required this.itemID, this.url}) : super(key: key); @override @@ -52,39 +49,31 @@ class _PharmaciesListState extends State { Widget build(BuildContext context) { projectsProvider = Provider.of(context); return BaseView( - onModelReady: (model) async { - await model.getPharmaciesList(widget.selectedMedication.itemId); - await model.getMedicineItem(widget.selectedMedication.description); - - }, - builder: (_, model, w) => - AppScaffold( - baseViewModel: model, - appBarTitle: TranslationBase - .of(context) - .pharmaciesList, - body: Container( - height: SizeConfig.screenHeight, - child: ListView( - shrinkWrap: true, - scrollDirection: Axis.vertical, - physics: const AlwaysScrollableScrollPhysics(), - children: [ - model.pharmaciesList.length > 0 && model.pharmacyItemsList.length > 0 + onModelReady: (model) => model.getPharmaciesList(widget.itemID), + builder: (_, model, w) => AppScaffold( + baseViewModel: model, + appBarTitle: TranslationBase.of(context).pharmaciesList, + body: Container( + height: SizeConfig.screenHeight, + child: ListView( + shrinkWrap: true, + scrollDirection: Axis.vertical, + physics: const AlwaysScrollableScrollPhysics(), + children: [ + model.pharmaciesList.length > 0 ? RoundedContainer( - child: Row( - children: [ - Expanded( - flex: 1, - child: ClipRRect( - borderRadius: - BorderRadius.all(Radius.circular(7)), - child: model.pharmacyItemsList[0] - ["ImageSRCUrl"]!= null - ? Image.network( - model.pharmacyItemsList[0]["ImageSRCUrl"], - height: - SizeConfig.imageSizeMultiplier * + child: Row( + children: [ + Expanded( + flex: 1, + child: ClipRRect( + borderRadius: + BorderRadius.all(Radius.circular(7)), + child: widget.url != null + ? Image.network( + widget.url, + height: + SizeConfig.imageSizeMultiplier * 21, width: SizeConfig.imageSizeMultiplier * @@ -241,8 +230,8 @@ class _PharmaciesListState extends State { }), ), ) - ]), - ),),); + ]), + ),),); } @@ -253,7 +242,7 @@ class _PharmaciesListState extends State { //TODO CHECK THE URL IS NULL OR NOT Uint8List dataFromBase64String(String base64String) { if(base64String !=null) - return base64Decode(base64String); + return base64Decode(base64String); } String base64String(Uint8List data) { diff --git a/lib/screens/medicine/search_medicine_patient_screen.dart b/lib/screens/medicine/search_medicine_patient_screen.dart index d16bfc2c..245c0602 100644 --- a/lib/screens/medicine/search_medicine_patient_screen.dart +++ b/lib/screens/medicine/search_medicine_patient_screen.dart @@ -50,16 +50,15 @@ class _SearchMedicinePatientScreen extends State child: Center( child: Container( height: 60.0, - color: Colors.white, margin: EdgeInsets.only(top: 10.0), - width: MediaQuery.of(context).size.width, // 0.9, - // decoration: BoxDecoration( - // border: Border( - // bottom: BorderSide( - // color: Theme.of(context).dividerColor, - // width: 0.9), //width: 0.7 - // ), - // color: Colors.white), + width: MediaQuery.of(context).size.width * 0.92, // 0.9, + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + color: Theme.of(context).dividerColor, + width: 0.9), //width: 0.7 + ), + color: Colors.white), child: TabBar( isScrollable: true, onTap: (index) { @@ -68,42 +67,31 @@ class _SearchMedicinePatientScreen extends State }); }, controller: _tabController, - indicatorWeight: 0.01, - indicatorSize: TabBarIndicatorSize.label, + indicatorWeight: 5.0, + indicatorSize: TabBarIndicatorSize.tab, + indicatorColor: Colors.red[800], labelColor: Theme.of(context).primaryColor, - indicatorColor: Colors.grey[800], - // labelPadding: - // EdgeInsets.only(top: 4.0, left: 35.0, right: 35.0), + labelPadding: + EdgeInsets.only(top: 4.0, left: 35.0, right: 35.0), unselectedLabelColor: Colors.grey[800], tabs: [ Container( - width: MediaQuery.of(context).size.width * 0.40, - decoration: BoxDecoration( - color: activeIndex == 0 - ? Colors.red[700] - : Colors.grey[200], - borderRadius: BorderRadius.circular(5)), + width: MediaQuery.of(context).size.width * 0.30, child: Center( child: AppText( TranslationBase.of(context).searchPatient, - color: activeIndex == 0 ? Colors.white : Colors.black, + color: Colors.black, fontWeight: FontWeight.bold, ), ), ), Container( - width: MediaQuery.of(context).size.width * 0.40, - decoration: BoxDecoration( - color: activeIndex == 1 - ? Colors.red[700] - : Colors.grey[200], - borderRadius: BorderRadius.circular(5)), + width: MediaQuery.of(context).size.width * 0.30, child: Center( child: AppText( - TranslationBase.of(context).searchMedicine, - fontWeight: FontWeight.bold, - color: activeIndex == 1 ? Colors.white : Colors.black, - ), + TranslationBase.of(context).searchMedicine, + fontWeight: FontWeight.bold, + color: Colors.black), ), ), ], diff --git a/lib/screens/patients/patient_search_screen.dart b/lib/screens/patients/patient_search_screen.dart index 7e8302c9..8b34c50d 100644 --- a/lib/screens/patients/patient_search_screen.dart +++ b/lib/screens/patients/patient_search_screen.dart @@ -510,7 +510,7 @@ class _PatientSearchScreenState extends State { ), ]) : SizedBox( - height: SizeConfig.screenHeight * .4, + height: SizeConfig.screenHeight * .45, ), ], ), diff --git a/lib/screens/patients/patients_screen.dart b/lib/screens/patients/patients_screen.dart index 0febe68b..2900f56a 100644 --- a/lib/screens/patients/patients_screen.dart +++ b/lib/screens/patients/patients_screen.dart @@ -33,8 +33,12 @@ class PatientsScreen extends StatefulWidget { final patientSearchForm; final selectedType; final isAppbar; + final arrivalType; PatientsScreen( - {this.patientSearchForm, this.selectedType, this.isAppbar = true}); + {this.patientSearchForm, + this.selectedType, + this.isAppbar = true, + this.arrivalType}); @override _PatientsScreenState createState() => _PatientsScreenState(); } @@ -70,6 +74,7 @@ class _PatientsScreenState extends State { var selectedFilter = 1; bool _isError = false; String error = ""; + String arrivalType; ProjectViewModel projectsProvider; final _controller = TextEditingController(); @@ -85,8 +90,13 @@ class _PatientsScreenState extends State { for (var i = 0; i < responseModelList2.length; i++) { String firstName = responseModelList[i].firstName.toUpperCase(); String lastName = responseModelList[i].lastName.toUpperCase(); + String mobile = responseModelList[i].mobileNumber.toUpperCase(); + String patientID = responseModelList[i].patientId.toString(); + if (firstName.contains(str.toUpperCase()) || - lastName.contains(str.toUpperCase())) { + lastName.contains(str.toUpperCase()) || + mobile.contains(str) || + patientID.contains(str)) { filterData.add(responseModelList[i]); } } @@ -220,7 +230,9 @@ class _PatientsScreenState extends State { patientType = widget.selectedType != null ? widget.selectedType : routeArgs['selectedType']; - + arrivalType = widget.arrivalType != null + ? widget.arrivalType + : routeArgs['arrivalType']; if (routeArgs != null && routeArgs.containsKey("isSearch")) { isSearch = routeArgs['isSearch']; } @@ -355,7 +367,7 @@ class _PatientsScreenState extends State { Container( width: SizeConfig.screenWidth * 0.9, height: - SizeConfig.screenHeight * 0.07, + SizeConfig.screenHeight * 0.08, child: TextField( controller: _controller, onChanged: (String str) { @@ -364,21 +376,30 @@ class _PatientsScreenState extends State { decoration: buildInputDecoration( context, TranslationBase.of(context) - .searchPatient), + .searchPatientName), ), ), SizedBox( height: 10.0, ), if (int.parse(patientType) == 7) - ClinicList( - clinicId: clinicId, - onClinicChange: (newValue) { - clinicId = newValue; - changeClinic( - newValue, context, model); - }, - ), + Container( + padding: EdgeInsets.all(5), + decoration: BoxDecoration( + color: Colors.white, + border: Border.all( + color: Colors.grey), + borderRadius: + BorderRadius.circular( + 10)), + child: ClinicList( + clinicId: clinicId, + onClinicChange: (newValue) { + clinicId = newValue; + changeClinic( + newValue, context, model); + }, + )), Padding( padding: EdgeInsets.only( top: MediaQuery.of(context) @@ -482,6 +503,7 @@ class _PatientsScreenState extends State { return PatientCard( patientInfo: item, patientType: patientType, + arrivalType: arrivalType, onTap: () { Navigator.of(context) .pushNamed( @@ -574,6 +596,11 @@ class _PatientsScreenState extends State { } parsed = lItems; responseModelList = new ModelResponse.fromJson(parsed).list; + responseModelList.sort((a, b) { + var adate = a.arrivedOn; + var bdate = b.arrivedOn; //before -> var bdate = b.expiry; + return adate.compareTo(bdate); + }); responseModelList2 = responseModelList; _isError = false; } else { @@ -599,10 +626,10 @@ class _PatientsScreenState extends State { InputDecoration buildInputDecoration(BuildContext context, hint) { return InputDecoration( suffixIcon: IconButton( - icon: new Image.asset("assets/images/filter-512.png"), + icon: Icon(DoctorApp.search_patient), color: Colors.grey, onPressed: () {}, - iconSize: 20, + iconSize: 30, ), filled: true, fillColor: Colors.white, diff --git a/lib/screens/patients/profile/radiology/radiology_report_screen.dart b/lib/screens/patients/profile/radiology/radiology_report_screen.dart index 29544cdf..75be23e8 100644 --- a/lib/screens/patients/profile/radiology/radiology_report_screen.dart +++ b/lib/screens/patients/profile/radiology/radiology_report_screen.dart @@ -1,37 +1,76 @@ 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/shared/app_buttons_widget.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:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:url_launcher/url_launcher.dart'; class RadiologyReportScreen extends StatelessWidget { final String reportData; + final String url; - RadiologyReportScreen({Key key, this.reportData}); + RadiologyReportScreen({Key key, this.reportData, this.url}); @override Widget build(BuildContext context) { return AppScaffold( - appBarTitle: TranslationBase.of(context).radiologyReport, - body: Container( - padding: EdgeInsets.all(10), - margin: EdgeInsets.all(10), - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(10)), - color: Colors.white, - border: Border( - bottom: BorderSide(color: Colors.grey, width: 0.5), - top: BorderSide(color: Colors.grey, width: 0.5), - left: BorderSide(color: Colors.grey, width: 0.5), - right: BorderSide(color: Colors.grey, width: 0.5), + appBarTitle: TranslationBase.of(context).radiologyReport, + body: SingleChildScrollView( + child: Column( + children: [ + Container( + padding: EdgeInsets.all(10), + margin: EdgeInsets.all(10), + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(10)), + color: Colors.white, + border: Border( + bottom: BorderSide(color: Colors.grey, width: 0.5), + top: BorderSide(color: Colors.grey, width: 0.5), + left: BorderSide(color: Colors.grey, width: 0.5), + right: BorderSide(color: Colors.grey, width: 0.5), + ), + ), + child: AppText( + reportData, + fontSize: 2.5 * SizeConfig.textMultiplier, + ), + ), + SizedBox(height:MediaQuery.of(context).size.height * 0.13 ,) + ], ), ), - child: AppText( - reportData, - fontSize: 2.5 * SizeConfig.textMultiplier, - ), - ), - ); + bottomSheet: url == null + ? Container( + height: MediaQuery.of(context).size.height * 0, + ) + : Container( + width: double.infinity, + height: MediaQuery.of(context).size.height * 0.1, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + FractionallySizedBox( + widthFactor: 0.9, + child: Container( + child: Wrap( + alignment: WrapAlignment.center, + children: [ + // TODO change it secondary button and add loading + AppButton( + title: TranslationBase.of(context).openRad, + onPressed: () async { + launch(url); + }, + ), + ], + ), + ), + ), + ], + ), + )); } } diff --git a/lib/screens/patients/profile/radiology/radiology_screen.dart b/lib/screens/patients/profile/radiology/radiology_screen.dart index cdab5bca..0bce886a 100644 --- a/lib/screens/patients/profile/radiology/radiology_screen.dart +++ b/lib/screens/patients/profile/radiology/radiology_screen.dart @@ -102,6 +102,8 @@ class _RadiologyScreenState extends State { reportData: model .patientRadiologyList[index] .reportData, + url: model + .patientRadiologyList[index].imageURL, )), ); }, diff --git a/lib/screens/patients/profile/referral/patient_referral_screen.dart b/lib/screens/patients/profile/referral/patient_referral_screen.dart index f4b04d02..80f30aad 100644 --- a/lib/screens/patients/profile/referral/patient_referral_screen.dart +++ b/lib/screens/patients/profile/referral/patient_referral_screen.dart @@ -55,6 +55,7 @@ class _PatientReferralScreen extends State child: TabBar( isScrollable: true, controller: _tabController, + indicatorColor: Colors.red[800], indicatorWeight: 5.0, indicatorSize: TabBarIndicatorSize.tab, labelColor: Theme.of(context).primaryColor, diff --git a/lib/screens/prescription/prescription_screen.dart b/lib/screens/prescription/prescription_screen.dart index 87202979..18655e65 100644 --- a/lib/screens/prescription/prescription_screen.dart +++ b/lib/screens/prescription/prescription_screen.dart @@ -35,7 +35,7 @@ class _NewPrescriptionScreenState extends State { final routeArgs = ModalRoute.of(context).settings.arguments as Map; patient = routeArgs['patient']; return BaseView( - onModelReady: (model) => model.getPrescription(mrn: 0), + onModelReady: (model) => model.getPrescription(mrn: patient.patientId), builder: (BuildContext context, PrescriptionViewModel model, Widget child) => AppScaffold( diff --git a/lib/util/helpers.dart b/lib/util/helpers.dart index 4f9543c1..8a4cfbd0 100644 --- a/lib/util/helpers.dart +++ b/lib/util/helpers.dart @@ -421,4 +421,8 @@ class Helpers { static hideKeyboard(BuildContext context) { FocusScope.of(context).unfocus(); } + + static String capitalize(str) { + return "${str[0].toUpperCase()}${str.substring(1).toLowerCase()}"; + } } diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart index dcba4c84..3861c822 100644 --- a/lib/util/translations_delegate_base.dart +++ b/lib/util/translations_delegate_base.dart @@ -70,6 +70,8 @@ class TranslationBase { String get searchPatient => localizedValues['searchPatient'][locale.languageCode]; + String get searchPatientName => + localizedValues['searchPatient-name'][locale.languageCode]; String get searchAbout => localizedValues['searchAbout'][locale.languageCode]; @@ -1147,6 +1149,11 @@ class TranslationBase { String get noDataAvailable => localizedValues['noDataAvailable'][locale.languageCode]; String get showMoreBtn => localizedValues['show-more-btn'][locale.languageCode]; + String get fileNumber => localizedValues['fileNumber'][locale.languageCode]; + String get reschedule => localizedValues['reschedule'][locale.languageCode]; + String get leaves => localizedValues['leaves'][locale.languageCode]; + String get openRad => localizedValues['open-rad'][locale.languageCode]; + } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/widgets/auth/verification_methods.dart b/lib/widgets/auth/verification_methods.dart index 8839c47c..d7f6a816 100644 --- a/lib/widgets/auth/verification_methods.dart +++ b/lib/widgets/auth/verification_methods.dart @@ -695,7 +695,7 @@ class _VerificationMethodsState extends State { this.checkActivationCode(authProv, value: value); }, () => { - //Navigator.pop(context), + Navigator.pop(context), print('Faild..'), }, ).displayDialog(context); diff --git a/lib/widgets/doctor/lab_result_widget.dart b/lib/widgets/doctor/lab_result_widget.dart index e897f33e..5ca50864 100644 --- a/lib/widgets/doctor/lab_result_widget.dart +++ b/lib/widgets/doctor/lab_result_widget.dart @@ -59,9 +59,58 @@ class _LabResultWidgetState extends State { decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(10)), ), - child: Column( - children: widget.labResult.map((result) { + child: Column(children: [ + Container( + child: Row( + children: [ + Expanded( + child: Container( + decoration: BoxDecoration( + color: HexColor('#515B5D'), + borderRadius: BorderRadius.only( + topLeft: Radius.circular(10.0), + ), + ), + child: Center( + child: Texts( + TranslationBase.of(context).description, + color: Colors.white, + ), + ), + height: 60, + ), + ), + Expanded( + child: Container( + color: HexColor('#515B5D'), + child: Center( + child: Texts( + TranslationBase.of(context).value, + color: Colors.white), + ), + height: 60), + ), + Expanded( + child: Container( + decoration: BoxDecoration( + color: HexColor('#515B5D'), + borderRadius: BorderRadius.only( + topRight: Radius.circular(10.0), + ), + ), + child: Center( + child: Texts( + TranslationBase.of(context).range, + color: Colors.white), + ), + height: 60), + ), + ], + ), + ), + ...widget.labResult.map((result) { return Container( + padding: EdgeInsets.symmetric(horizontal: 4), decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(10)), border: Border( @@ -76,53 +125,6 @@ class _LabResultWidgetState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - children: [ - Expanded( - child: Container( - decoration: BoxDecoration( - color: HexColor('#515B5D'), - borderRadius: BorderRadius.only( - topLeft: Radius.circular(10.0), - ), - ), - child: Center( - child: Texts( - TranslationBase.of(context) - .description, - color: Colors.white, - ), - ), - height: 60, - ), - ), - Expanded( - child: Container( - color: HexColor('#515B5D'), - child: Center( - child: Texts( - TranslationBase.of(context).value, - color: Colors.white), - ), - height: 60), - ), - Expanded( - child: Container( - decoration: BoxDecoration( - color: HexColor('#515B5D'), - borderRadius: BorderRadius.only( - topRight: Radius.circular(10.0), - ), - ), - child: Center( - child: Texts( - TranslationBase.of(context).range, - color: Colors.white), - ), - height: 60), - ), - ], - ), Row( children: [ Expanded( @@ -164,7 +166,7 @@ class _LabResultWidgetState extends State { ), ); }).toList(), - ), + ]), ), ) ], diff --git a/lib/widgets/patients/PatientCard.dart b/lib/widgets/patients/PatientCard.dart index 98d2a8f5..93a176ea 100644 --- a/lib/widgets/patients/PatientCard.dart +++ b/lib/widgets/patients/PatientCard.dart @@ -3,6 +3,7 @@ import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/util/date-utils.dart'; +import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; @@ -15,200 +16,278 @@ class PatientCard extends StatelessWidget { final PatiantInformtion patientInfo; final Function onTap; final String patientType; - const PatientCard({Key key, this.patientInfo, this.onTap, this.patientType}) + final String arrivalType; + const PatientCard( + {Key key, + this.patientInfo, + this.onTap, + this.patientType, + this.arrivalType}) : super(key: key); @override Widget build(BuildContext context) { return Container( - width: SizeConfig.screenWidth * 0.95, - padding: EdgeInsets.only(left: 10, right: 10, bottom: 10), + width: SizeConfig.screenWidth * 0.9, + margin: EdgeInsets.all(6), + padding: EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5), decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), color: Colors.white), - margin: EdgeInsets.all(5), - child: InkWell( - child: Column( - children: [ - SERVICES_PATIANT2[int.parse(patientType)] == "patientArrivalList" - ? Container(height: 5, color: Colors.green[800]) - : Container(), - SizedBox( - height: 10, - ), - SERVICES_PATIANT2[int.parse(patientType)] == "patientArrivalList" - ? Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - AppText( - TranslationBase.of(context).arrivedP, - color: Colors.green[800], - fontWeight: FontWeight.bold, - ), - isToday(patientInfo.arrivedOn) == false - ? AppText(DateUtils.convertStringToDateFormat( - patientInfo.arrivedOn, 'mm-dd-yyyy hh:mm')) - : AppText(DateUtils.convertStringToDateFormat( - patientInfo.arrivedOn, 'hh:mm')) - ], - ) - : SizedBox(), - Padding( - padding: EdgeInsets.only(left: 12.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row(children: [ - AppText( - patientInfo.firstName + " " + patientInfo.lastName, - fontSize: SizeConfig.textMultiplier * 2.5, - fontWeight: FontWeight.bold, - backGroundcolor: Colors.white, - ), - patientInfo.gender == 1 - ? Icon( - DoctorApp.male_2, - color: Colors.blue, - ) - : Icon( - DoctorApp.female_1, - color: Colors.pink, - ), - ]), - AppText( - patientInfo.nationalityName ?? patientInfo.nationality, - fontWeight: FontWeight.bold, - ) - ], - )), - Row(children: [ - Column( - mainAxisAlignment: MainAxisAlignment.start, - children: [ + borderRadius: BorderRadius.circular(15), + color: Colors.white, + ), + child: Stack(children: [ + Container( + height: MediaQuery.of(context).size.height * .17, + width: 5, + decoration: BoxDecoration( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(10), + bottomLeft: Radius.circular(10)), + color: patientInfo.patientStatusType == 43 + ? Colors.green[500] + : Colors.red[800], + )), + Container( + padding: EdgeInsets.only(left: 10, right: 10, bottom: 10), + child: InkWell( + child: Column( + children: [ + SizedBox( + height: 10, + ), + SERVICES_PATIANT2[int.parse(patientType)] == + "patientArrivalList" + ? Padding( + padding: EdgeInsets.only(left: 12.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + patientInfo.patientStatusType == 43 + ? AppText( + TranslationBase.of(context).arrivedP, + color: Colors.green, + fontWeight: FontWeight.bold, + fontFamily: 'Poppins', + fontSize: 12, + ) + : AppText( + TranslationBase.of(context).notArrived, + color: Colors.red[800], + fontWeight: FontWeight.bold, + fontFamily: 'Poppins', + fontSize: 12, + ), + this.arrivalType == '1' + ? AppText( + patientInfo.startTime != null + ? patientInfo.startTime + : '', + fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + ) + : AppText( + DateUtils.convertStringToDateFormat( + patientInfo.arrivedOn, + 'MM-dd-yyyy HH:mm'), + fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + ) + ], + )) + : SizedBox(), Padding( - padding: EdgeInsets.only(left: 12.0), - child: Container( - decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: Color.fromRGBO(0, 0, 0, 0.08), - offset: Offset(0.0, 5.0), - blurRadius: 16.0) + padding: EdgeInsets.only(left: 12.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: [ + AppText( + (Helpers.capitalize(patientInfo.firstName) + + " " + + Helpers.capitalize(patientInfo.lastName)), + fontSize: SizeConfig.textMultiplier * 2, + fontWeight: FontWeight.bold, + backGroundcolor: Colors.white, + fontFamily: 'Poppins', + ), + patientInfo.gender == 1 + ? Icon( + DoctorApp.male_2, + color: Colors.blue, + ) + : Icon( + DoctorApp.female_1, + color: Colors.pink, + ), + ]), + Row( + children: [ + AppText( + patientInfo.nationalityName ?? + patientInfo.nationality, + fontWeight: FontWeight.bold, + fontSize: 14, + ), + patientInfo.nationality != null + ? ClipRRect( + borderRadius: + BorderRadius.circular(20.0), + child: Image.network( + patientInfo.nationalityFlagURL, + height: 25, + width: 30, + errorBuilder: (BuildContext context, + Object exception, + StackTrace stackTrace) { + return Text('No Image'); + }, + )) + : SizedBox() + ], + ) ], - borderRadius: BorderRadius.all(Radius.circular(35.0)), - color: Color(0xffCCCCCC), - ), - width: 70, - height: 70, - child: Icon( - patientInfo.gender == 1 - ? DoctorApp.male - : DoctorApp.female_icon, - size: 70, - color: Colors.white, - ), - ), - ), - ], - ), - SizedBox( - width: 10, - ), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - child: RichText( - text: new TextSpan( - style: new TextStyle( - fontSize: 2.0 * SizeConfig.textMultiplier, - color: Colors.black), - children: [ - new TextSpan( - text: TranslationBase.of(context).fileNo, - style: TextStyle( - fontSize: - 2.2 * SizeConfig.textMultiplier)), - new TextSpan( - text: patientInfo.patientId.toString(), - style: TextStyle( - fontWeight: FontWeight.w700, - )), - ], - ), - ), - ), - Container( - child: RichText( - text: new TextSpan( - style: new TextStyle( - fontSize: 2.0 * SizeConfig.textMultiplier, - color: Colors.black), - children: [ - new TextSpan( - text: TranslationBase.of(context).age + " : ", + )), + Row(children: [ + Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(left: 12.0), + child: Container( + // decoration: BoxDecoration( + // boxShadow: [ + // // BoxShadow( + // // color: Color.fromRGBO(0, 0, 0, 0.08), + // // offset: Offset(0.0, 5.0), + // // blurRadius: 16.0) + // // ], + // // borderRadius: BorderRadius.all(Radius.circular(35.0)), + // // color: Color(0xffCCCCCC), + // ), + width: 60, + height: 60, + child: Image.asset( + patientInfo.gender == 1 + ? 'assets/images/male_avatar.png' + : 'assets/images/female_avatar.png', + fit: BoxFit.cover, ), - new TextSpan( - text: - "${DateUtils.getAgeByBirthday(patientInfo.dateofBirth, context)}", - style: TextStyle( - fontWeight: FontWeight.w700, - )), - ], + ), ), - ), + ], ), - if (SERVICES_PATIANT2[int.parse(patientType)] == - "List_MyOutPatient") - Container( - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - AppText( - TranslationBase.of(context).appointmentDate + - " : ", - fontSize: 14, - ), - Container( - height: 15, - width: 60, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(25), - color: HexColor("#20A169"), - ), - child: AppText( - patientInfo.startTime, - color: Colors.white, - fontSize: 1.5 * SizeConfig.textMultiplier, - textAlign: TextAlign.center, - fontWeight: FontWeight.bold, + SizedBox( + width: 10, + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + child: RichText( + text: new TextSpan( + style: new TextStyle( + fontSize: 2.0 * SizeConfig.textMultiplier, + color: Colors.black), + children: [ + new TextSpan( + text: TranslationBase.of(context) + .fileNumber, + style: TextStyle( + fontSize: 14, + fontFamily: 'Poppins')), + new TextSpan( + text: patientInfo.patientId.toString(), + style: TextStyle( + fontWeight: FontWeight.w700, + fontFamily: 'Poppins', + fontSize: 15)), + ], ), ), - SizedBox( - width: 3.5, + ), + Container( + child: RichText( + text: new TextSpan( + style: new TextStyle( + fontSize: 2.0 * SizeConfig.textMultiplier, + color: Colors.black, + fontFamily: 'Poppins', + ), + children: [ + new TextSpan( + text: TranslationBase.of(context).age + + " : ", + style: TextStyle(fontSize: 14)), + new TextSpan( + text: + "${DateUtils.getAgeByBirthday(patientInfo.dateofBirth, context)}", + style: TextStyle( + fontWeight: FontWeight.w700, + fontSize: 15)), + ], + ), ), + ), + if (SERVICES_PATIANT2[int.parse(patientType)] == + "List_MyOutPatient") Container( - child: AppText( - convertDateFormat2( - patientInfo.appointmentDate.toString()), - fontSize: 1.5 * SizeConfig.textMultiplier, - fontWeight: FontWeight.bold, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context) + .appointmentDate + + " : ", + fontSize: 14, + ), + patientInfo.startTime != null + ? Container( + height: 15, + width: 60, + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(25), + color: HexColor("#20A169"), + ), + child: AppText( + patientInfo.startTime, + color: Colors.white, + fontSize: 1.5 * + SizeConfig.textMultiplier, + textAlign: TextAlign.center, + fontWeight: FontWeight.bold, + ), + ) + : SizedBox(), + SizedBox( + width: 3.5, + ), + Container( + child: AppText( + convertDateFormat2(patientInfo + .appointmentDate + .toString()), + fontSize: + 1.5 * SizeConfig.textMultiplier, + fontWeight: FontWeight.bold, + ), + ), + SizedBox( + height: 0.5, + ) + ], + ), + margin: EdgeInsets.only( + top: 8, ), - ), - SizedBox( - height: 0.5, ) - ], - ), - margin: EdgeInsets.only( - top: 8, - ), - ) - ])) - ]), - ], - ), - onTap: onTap, - )); + ])) + ]), + ], + ), + onTap: onTap, + )) + ])); // ]), // TableRow(children: [ diff --git a/lib/widgets/patients/profile/profile_medical_info_widget.dart b/lib/widgets/patients/profile/profile_medical_info_widget.dart index fb0ef609..60a0154e 100644 --- a/lib/widgets/patients/profile/profile_medical_info_widget.dart +++ b/lib/widgets/patients/profile/profile_medical_info_widget.dart @@ -36,72 +36,70 @@ class ProfileMedicalInfoWidget extends StatelessWidget { childAspectRatio: 1.5, children: [ if (int.parse(patientType) == 7 || int.parse(patientType) == 6) - PatientProfileButton( - key: key, - patient: patient, - isDisable: patient.episodeNo != 0 ? true : false, - nameLine1: TranslationBase.of(context).createNew, - nameLine2: TranslationBase.of(context).episode, - route: CREATE_EPISODE, - onTap: () async { - PostEpisodeReqModel postEpisodeReqModel = PostEpisodeReqModel( - appointmentNo: patient.appointmentNo, - patientMRN: patient.patientMRN); - await model.postEpisode(postEpisodeReqModel); - patient.episodeNo = model.episodeID; - Navigator.of(context) - .pushNamed(CREATE_EPISODE, arguments: {'patient': patient}); - }, - isLoading: model.state == ViewState.BusyLocal, - icon: 'create-episod.png'), + PatientProfileButton( + key: key, + patient: patient, + isDisable: patient.episodeNo != 0 ? true : false, + nameLine1: TranslationBase.of(context).createNew, + nameLine2: TranslationBase.of(context).episode, + route: CREATE_EPISODE, + onTap: () async { + PostEpisodeReqModel postEpisodeReqModel = PostEpisodeReqModel( + appointmentNo: patient.appointmentNo, + patientMRN: patient.patientMRN); + await model.postEpisode(postEpisodeReqModel); + patient.episodeNo = model.episodeID; + Navigator.of(context).pushNamed(CREATE_EPISODE, + arguments: {'patient': patient}); + }, + isLoading: model.state == ViewState.BusyLocal, + icon: 'create-episod.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) - PatientProfileButton( - key: key, - patient: patient, - isDisable: patient.episodeNo == 0 ? true : false, - nameLine1: TranslationBase.of(context).update, - nameLine2: TranslationBase.of(context).episode, - route: UPDATE_EPISODE, - icon: 'modilfy-episode.png'), - + PatientProfileButton( + key: key, + patient: patient, + isDisable: patient.episodeNo == 0 ? true : false, + nameLine1: TranslationBase.of(context).update, + nameLine2: TranslationBase.of(context).episode, + route: UPDATE_EPISODE, + icon: 'modilfy-episode.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) - PatientProfileButton( - key: key, - patient: patient, - route: RADIOLOGY, - nameLine1: TranslationBase.of(context).radiology, - nameLine2: TranslationBase.of(context).service, - icon: 'radiology-1.png'), + PatientProfileButton( + key: key, + patient: patient, + route: RADIOLOGY, + nameLine1: TranslationBase.of(context).radiology, + nameLine2: TranslationBase.of(context).service, + icon: 'radiology-1.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) - PatientProfileButton( - key: key, - patient: patient, - route: PATIENT_INSURANCE_APPROVALS, - nameLine1: TranslationBase.of(context).insurance, - nameLine2: TranslationBase.of(context).service, - icon: 'lab.png'), - + PatientProfileButton( + key: key, + patient: patient, + route: PATIENT_INSURANCE_APPROVALS, + nameLine1: TranslationBase.of(context).insurance, + nameLine2: TranslationBase.of(context).service, + icon: 'lab.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) - PatientProfileButton( - key: key, - patient: patient, - from: from, - to: to, - nameLine1: TranslationBase.of(context).vital, - nameLine2: TranslationBase.of(context).signs, - route: - VITAL_SIGN_DETAILS /* PATIENT_VITAL_SIGN + PatientProfileButton( + key: key, + patient: patient, + from: from, + to: to, + nameLine1: TranslationBase.of(context).vital, + nameLine2: TranslationBase.of(context).signs, + route: + VITAL_SIGN_DETAILS /* PATIENT_VITAL_SIGN */ - , - icon: 'heartbeat.png'), + , + icon: 'heartbeat.png'), if (selectedPatientType != 7) - PatientProfileButton( - key: key, - patient: patient, - route: LAB_ORDERS, - nameLine1: TranslationBase.of(context).lab, - nameLine2: TranslationBase.of(context).result, - icon: 'lab.png'), + PatientProfileButton( + key: key, + patient: patient, + route: LAB_ORDERS, + nameLine1: TranslationBase.of(context).lab, + nameLine2: TranslationBase.of(context).result, + icon: 'lab.png'), PatientProfileButton( key: key, patient: patient, @@ -112,26 +110,26 @@ class ProfileMedicalInfoWidget extends StatelessWidget { if (selectedPatientType != 0 && selectedPatientType != 5 && selectedPatientType != 7) - PatientProfileButton( - key: key, - patient: patient, - route: PROGRESS_NOTE, - nameLine1: TranslationBase.of(context).progress, - nameLine2: TranslationBase.of(context).note, - icon: 'heartbeat.png'), + PatientProfileButton( + key: key, + patient: patient, + route: PROGRESS_NOTE, + nameLine1: TranslationBase.of(context).progress, + nameLine2: TranslationBase.of(context).note, + icon: 'heartbeat.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) - PatientProfileButton( - key: key, - patient: patient, - route: PATIENT_ADMISSION_REQUEST, - nameLine1: TranslationBase.of(context).admission, - nameLine2: TranslationBase.of(context).request, - icon: 'heartbeat.png'), + PatientProfileButton( + key: key, + patient: patient, + route: PATIENT_ADMISSION_REQUEST, + nameLine1: TranslationBase.of(context).admission, + nameLine2: TranslationBase.of(context).request, + icon: 'heartbeat.png'), (int.parse(patientType) == 7 || int.parse(patientType) == 6) ? PatientProfileButton( key: key, patient: patient, - route: ORDER_PRESCRIPTION_HISTORY, + route: ORDER_PRESCRIPTION, nameLine1: TranslationBase.of(context).orders, nameLine2: TranslationBase.of(context).prescription, icon: 'lab.png') @@ -151,29 +149,29 @@ class ProfileMedicalInfoWidget extends StatelessWidget { nameLine2: TranslationBase.of(context).procedures, icon: 'lab.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) - PatientProfileButton( - key: key, - patient: patient, - route: REFER_PATIENT_TO_DOCTOR, - nameLine1: TranslationBase.of(context).myReferral, - nameLine2: TranslationBase.of(context).patient, - icon: 'note.png'), + PatientProfileButton( + key: key, + patient: patient, + route: REFER_PATIENT_TO_DOCTOR, + nameLine1: TranslationBase.of(context).myReferral, + nameLine2: TranslationBase.of(context).patient, + icon: 'note.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) - PatientProfileButton( - key: key, - patient: patient, - route: ADD_SICKLEAVE, - nameLine1: TranslationBase.of(context).patientSick, - nameLine2: TranslationBase.of(context).leave, - icon: 'sick_leaves_icons.png'), + PatientProfileButton( + key: key, + patient: patient, + route: ADD_SICKLEAVE, + nameLine1: TranslationBase.of(context).patientSick, + nameLine2: TranslationBase.of(context).leave, + icon: 'sick_leaves_icons.png'), if (int.parse(patientType) == 7 || int.parse(patientType) == 6) - PatientProfileButton( - key: key, - patient: patient, - route: PATIENT_UCAF_REQUEST, - nameLine1: TranslationBase.of(context).patient, - nameLine2: TranslationBase.of(context).ucaf, - icon: 'lab.png'), + PatientProfileButton( + key: key, + patient: patient, + route: PATIENT_UCAF_REQUEST, + nameLine1: TranslationBase.of(context).patient, + nameLine2: TranslationBase.of(context).ucaf, + icon: 'lab.png'), ], ), ); diff --git a/lib/widgets/patients/profile/profile_medical_info_widget_search.dart b/lib/widgets/patients/profile/profile_medical_info_widget_search.dart index 67b1cad1..98487523 100644 --- a/lib/widgets/patients/profile/profile_medical_info_widget_search.dart +++ b/lib/widgets/patients/profile/profile_medical_info_widget_search.dart @@ -26,7 +26,6 @@ class ProfileMedicalInfoWidgetSearch extends StatelessWidget { crossAxisCount: 2, childAspectRatio: 1.5, children: [ - PatientProfileButton( key: key, patient: patient, @@ -66,22 +65,21 @@ class ProfileMedicalInfoWidgetSearch extends StatelessWidget { // nameLine1: TranslationBase.of(context).admission, // nameLine2: TranslationBase.of(context).request, // icon: 'heartbeat.png'), - // (int.parse(patientType) == 7 || int.parse(patientType) == 6) - // ? PatientProfileButton( - // key: key, - // patient: patient, - // route: ORDER_PRESCRIPTION, - // nameLine1: TranslationBase.of(context).orders, - // nameLine2: TranslationBase.of(context).prescription, - // icon: 'lab.png') - // : - PatientProfileButton( - key: key, - patient: patient, - route: ORDER_PRESCRIPTION_HISTORY, - nameLine1: TranslationBase.of(context).orders, - nameLine2: TranslationBase.of(context).prescription, - icon: 'lab.png'), + (int.parse(patientType) == 7 || int.parse(patientType) == 6) + ? PatientProfileButton( + key: key, + patient: patient, + route: ORDER_PRESCRIPTION, + nameLine1: TranslationBase.of(context).orders, + nameLine2: TranslationBase.of(context).prescription, + icon: 'lab.png') + : PatientProfileButton( + key: key, + patient: patient, + route: ORDER_PRESCRIPTION_HISTORY, + nameLine1: TranslationBase.of(context).orders, + nameLine2: TranslationBase.of(context).prescription, + icon: 'lab.png'), PatientProfileButton( key: key, patient: patient, diff --git a/lib/widgets/shared/app_drawer_widget.dart b/lib/widgets/shared/app_drawer_widget.dart index 7f4d0caf..590f09d6 100644 --- a/lib/widgets/shared/app_drawer_widget.dart +++ b/lib/widgets/shared/app_drawer_widget.dart @@ -142,8 +142,11 @@ class _AppDrawerState extends State { }, ), InkWell( - child: DrawerItem(TranslationBase.of(context).rescheduleLeaves, - DoctorApp.leaves), + child: DrawerItem( + TranslationBase.of(context).reschedule, + DoctorApp.leaves, + subTitle: TranslationBase.of(context).leaves, + ), onTap: () { Navigator.pop(context); diff --git a/lib/widgets/shared/app_scaffold_widget.dart b/lib/widgets/shared/app_scaffold_widget.dart index 378094c7..9842bbed 100644 --- a/lib/widgets/shared/app_scaffold_widget.dart +++ b/lib/widgets/shared/app_scaffold_widget.dart @@ -17,13 +17,13 @@ class AppScaffold extends StatelessWidget { final bool isLoading; final bool isShowAppBar; final BaseViewModel baseViewModel; - + final Widget bottomSheet; AppScaffold( {this.appBarTitle = '', this.body, this.isLoading = false, this.isShowAppBar = true, - this.baseViewModel}); + this.baseViewModel, this.bottomSheet}); @override Widget build(BuildContext context) { @@ -59,6 +59,8 @@ class AppScaffold extends StatelessWidget { ], ) : null, + + bottomSheet: bottomSheet, body: projectProvider.isInternetConnection ? baseViewModel != null ? NetworkBaseView( diff --git a/lib/widgets/shared/drawer_item_widget.dart b/lib/widgets/shared/drawer_item_widget.dart index 9696aa1f..83afb860 100644 --- a/lib/widgets/shared/drawer_item_widget.dart +++ b/lib/widgets/shared/drawer_item_widget.dart @@ -42,6 +42,7 @@ class _DrawerItemState extends State { AppText( widget.title, color: widget.color ?? Colors.black, + textOverflow: TextOverflow.ellipsis, // fontWeight: FontWeight.bold, // margin: 5, marginLeft: 5, diff --git a/pubspec.lock b/pubspec.lock index 4a3f9c9e..5333d889 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" diff --git a/pubspec.yaml b/pubspec.yaml index 8c3825e1..f01be6df 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -125,6 +125,15 @@ flutter: - asset: assets/fonts/Work_Sans/WorkSans-Bold.ttf - asset: assets/fonts/Work_Sans/WorkSans-Bold.ttf weight: 700 + + - family: Poppins + fonts: + - asset: assets/fonts/Poppins/Poppins-Regular.ttf + - asset: assets/fonts/Poppins/Poppins-Medium.ttf + - asset: assets/fonts/Poppins/Poppins-Bold.ttf + weight: 700 + + # - family: Trajan Pro # fonts: # - asset: fonts/TrajanPro.ttf