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 356c321d..d3118559 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -748,4 +748,11 @@ const Map> localizedValues = { }, 'appointmentDate': {'en': "Appointment Date", 'ar': "تاريخ الموعد"}, 'arrived_p': {'en': "Arrived", '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/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/patients/patients_screen.dart b/lib/screens/patients/patients_screen.dart index 0febe68b..06a5d92d 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( @@ -494,7 +516,6 @@ class _PatientsScreenState extends State { .getFrom, "to": patient.getTo, - "isSearch":isSearch }); }, ); @@ -574,6 +595,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 +625,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/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 8c8afde2..2df3339f 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]; @@ -1136,6 +1138,9 @@ class TranslationBase { String get appointmentDate => localizedValues['appointmentDate'][locale.languageCode]; String get arrivedP => localizedValues['arrived_p'][locale.languageCode]; + String get fileNumber => localizedValues['fileNumber'][locale.languageCode]; + String get reschedule => localizedValues['reschedule'][locale.languageCode]; + String get leaves => localizedValues['leaves'][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/patients/PatientCard.dart b/lib/widgets/patients/PatientCard.dart index 98d2a8f5..997cb83d 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,275 @@ 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, + ), + 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: 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/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/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.yaml b/pubspec.yaml index 6dd072f5..6bc1526a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -122,6 +122,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