diff --git a/lib/config/config.dart b/lib/config/config.dart index c01434ce..2afbe5ac 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -380,6 +380,10 @@ const CHECK_ACTIVATION_CODE_FOR_PATIENT = const PATIENT_REGISTRATION = "Services/Authentication.svc/REST/PatientRegistration"; const GET_PATIENT_INFO= "Services/NHIC.svc/REST/GetPatientInfo"; + +/// Discharge Summary +const GET_PENDING_DISCHARGE_SUMMARY = "Services/DoctorApplication.svc/REST/DoctorApp_GetPendingDischargeSummary"; + var selectedPatientType = 1; //*********change value to decode json from Dropdown ************ diff --git a/lib/core/enum/CalenderType.dart b/lib/core/enum/CalenderType.dart new file mode 100644 index 00000000..51f98512 --- /dev/null +++ b/lib/core/enum/CalenderType.dart @@ -0,0 +1,4 @@ +enum CalenderType{ + Gregorian, + Hijri, +} \ No newline at end of file diff --git a/lib/core/service/patient/profile/discharge_summary_servive.dart b/lib/core/service/patient/profile/discharge_summary_servive.dart new file mode 100644 index 00000000..daea1b42 --- /dev/null +++ b/lib/core/service/patient/profile/discharge_summary_servive.dart @@ -0,0 +1,32 @@ +import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/core/service/base/base_service.dart'; +import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryReqModel.dart'; +import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryResModel.dart'; +import 'package:doctor_app_flutter/models/operation_report/create_update_operation_report_request_model.dart'; +import 'package:doctor_app_flutter/models/operation_report/get_operation_details_request_modle.dart'; +import 'package:doctor_app_flutter/models/operation_report/get_operation_details_response_modle.dart'; +import 'package:doctor_app_flutter/models/operation_report/get_reservations_response_model.dart'; +import 'package:doctor_app_flutter/models/operation_report/get_reservations_request_model.dart'; + +class DischargeSummaryService extends BaseService { + List _pendingDischargeSummaryList = []; + List get pendingDischargeSummaryList => _pendingDischargeSummaryList; + + Future getPendingDischargeSummary( + {GetDischargeSummaryReqModel getDischargeSummaryReqModel}) async { + + hasError = false; + await baseAppClient.post(GET_PENDING_DISCHARGE_SUMMARY, + onSuccess: (dynamic response, int statusCode) { + _pendingDischargeSummaryList.clear(); + response['List_PendingDischargeSummary'].forEach( + (v) { + _pendingDischargeSummaryList.add(GetDischargeSummaryResModel.fromJson(v)); + }, + ); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: getDischargeSummaryReqModel.toJson()); + } +} diff --git a/lib/core/service/operation_report_servive.dart b/lib/core/service/patient/profile/operation_report_servive.dart similarity index 100% rename from lib/core/service/operation_report_servive.dart rename to lib/core/service/patient/profile/operation_report_servive.dart diff --git a/lib/core/viewModel/profile/discharge_summary_view_model.dart b/lib/core/viewModel/profile/discharge_summary_view_model.dart new file mode 100644 index 00000000..29910570 --- /dev/null +++ b/lib/core/viewModel/profile/discharge_summary_view_model.dart @@ -0,0 +1,31 @@ +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/service/patient/profile/discharge_summary_servive.dart'; +import 'package:doctor_app_flutter/core/service/patient/profile/operation_report_servive.dart'; +import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; +import 'package:doctor_app_flutter/locator.dart'; +import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryReqModel.dart'; +import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryResModel.dart'; + +class DischargeSummaryViewModel extends BaseViewModel { + bool hasError = false; + DischargeSummaryService _dischargeSummaryService = + locator(); + + List get pendingDischargeSummaryList => + _dischargeSummaryService.pendingDischargeSummaryList; + + + Future getPendingDischargeSummary({int patientId, int admissionNo, }) async { + GetDischargeSummaryReqModel getDischargeSummaryReqModel = GetDischargeSummaryReqModel(admissionNo:admissionNo,patientID: patientId ); + hasError = false; + setState(ViewState.Busy); + await _dischargeSummaryService.getPendingDischargeSummary(getDischargeSummaryReqModel: getDischargeSummaryReqModel); + if (_dischargeSummaryService.hasError) { + error = _dischargeSummaryService.error; + setState(ViewState.ErrorLocal); + } else { + setState(ViewState.Idle); + } + } + +} diff --git a/lib/core/viewModel/operation_report_view_model.dart b/lib/core/viewModel/profile/operation_report_view_model.dart similarity index 96% rename from lib/core/viewModel/operation_report_view_model.dart rename to lib/core/viewModel/profile/operation_report_view_model.dart index 2bfdebce..e3f4f430 100644 --- a/lib/core/viewModel/operation_report_view_model.dart +++ b/lib/core/viewModel/profile/operation_report_view_model.dart @@ -1,5 +1,5 @@ import 'package:doctor_app_flutter/core/enum/viewstate.dart'; -import 'package:doctor_app_flutter/core/service/operation_report_servive.dart'; +import 'package:doctor_app_flutter/core/service/patient/profile/operation_report_servive.dart'; import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; import 'package:doctor_app_flutter/locator.dart'; import 'package:doctor_app_flutter/models/operation_report/create_update_operation_report_request_model.dart'; diff --git a/lib/locator.dart b/lib/locator.dart index 243905d8..18c04ffc 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -1,11 +1,12 @@ import 'package:doctor_app_flutter/core/service/authentication_service.dart'; import 'package:doctor_app_flutter/core/service/home/scan_qr_service.dart'; -import 'package:doctor_app_flutter/core/service/operation_report_servive.dart'; +import 'package:doctor_app_flutter/core/service/patient/profile/discharge_summary_servive.dart'; import 'package:doctor_app_flutter/core/service/pending_order_service.dart'; import 'package:doctor_app_flutter/core/viewModel/dashboard_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/hospitals_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/medical_file_view_model.dart'; -import 'package:doctor_app_flutter/core/viewModel/operation_report_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/profile/discharge_summary_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/profile/operation_report_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/pednding_orders_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/prescription_view_model.dart'; @@ -31,6 +32,7 @@ import 'core/service/patient/out_patient_service.dart'; import 'core/service/patient/patient-doctor-referral-service.dart'; import 'core/service/patient/patientInPatientService.dart'; import 'core/service/patient/patient_service.dart'; +import 'core/service/patient/profile/operation_report_servive.dart'; import 'core/service/patient/referral_patient_service.dart'; import 'core/service/patient_medical_file/admission_request/patient-admission-request-service.dart'; import 'core/service/patient_medical_file/insurance/InsuranceCardService.dart'; @@ -109,6 +111,7 @@ void setupLocator() { locator.registerLazySingleton(() => OperationReportService()); locator.registerLazySingleton(() => PendingOrderService()); locator.registerLazySingleton(() => PatientRegistrationService()); + locator.registerLazySingleton(() => DischargeSummaryService()); /// View Model locator.registerFactory(() => DoctorReplayViewModel()); @@ -140,5 +143,6 @@ void setupLocator() { locator.registerFactory(() => OperationReportViewModel()); locator.registerFactory(() => PatientRegistrationViewModel()); locator.registerFactory(() => PendingOrdersViewModel()); + locator.registerFactory(() => DischargeSummaryViewModel()); } diff --git a/lib/models/discharge_summary/GetDischargeSummaryReqModel.dart b/lib/models/discharge_summary/GetDischargeSummaryReqModel.dart new file mode 100644 index 00000000..2d2c14ad --- /dev/null +++ b/lib/models/discharge_summary/GetDischargeSummaryReqModel.dart @@ -0,0 +1,27 @@ +class GetDischargeSummaryReqModel { + int patientID; + int admissionNo; + int patientType; + int patientTypeID; + + GetDischargeSummaryReqModel( + {this.patientID, this.admissionNo, this.patientType = 1, this.patientTypeID=1}); + + GetDischargeSummaryReqModel.fromJson(Map json) { + patientID = json['PatientID']; + admissionNo = json['AdmissionNo']; + patientType = json['PatientType']; + patientTypeID = json['PatientTypeID']; + } + + Map toJson() { + final Map data = new Map(); + data['PatientID'] = this.patientID; + data['AdmissionNo'] = this.admissionNo; + data['PatientType'] = this.patientType; + data['PatientTypeID'] = this.patientTypeID; + data['SetupID'] = "010266"; + data['isDentalAllowedBackend'] = false; + return data; + } +} diff --git a/lib/models/discharge_summary/GetDischargeSummaryResModel.dart b/lib/models/discharge_summary/GetDischargeSummaryResModel.dart new file mode 100644 index 00000000..006ac6a2 --- /dev/null +++ b/lib/models/discharge_summary/GetDischargeSummaryResModel.dart @@ -0,0 +1,192 @@ +class GetDischargeSummaryResModel { + String setupID; + int projectID; + int dischargeNo; + String dischargeDate; + int admissionNo; + int assessmentNo; + int patientType; + int patientID; + int clinicID; + int doctorID; + String finalDiagnosis; + String persentation; + String pastHistory; + String planOfCare; + String investigations; + String followupPlan; + String conditionOnDischarge; + String significantFindings; + String planedProcedure; + int daysStayed; + String remarks; + String eRCare; + int status; + bool isActive; + int createdBy; + String createdOn; + int editedBy; + String editedOn; + bool isPatientDied; + Null isMedicineApproved; + Null isOpenBillDischarge; + Null activatedDate; + Null activatedBy; + Null lAMA; + Null patientCodition; + Null others; + Null reconciliationInstruction; + String dischargeInstructions; + String reason; + Null dischargeDisposition; + Null hospitalID; + String createdByName; + Null createdByNameN; + String editedByName; + Null editedByNameN; + + GetDischargeSummaryResModel( + {this.setupID, + this.projectID, + this.dischargeNo, + this.dischargeDate, + this.admissionNo, + this.assessmentNo, + this.patientType, + this.patientID, + this.clinicID, + this.doctorID, + this.finalDiagnosis, + this.persentation, + this.pastHistory, + this.planOfCare, + this.investigations, + this.followupPlan, + this.conditionOnDischarge, + this.significantFindings, + this.planedProcedure, + this.daysStayed, + this.remarks, + this.eRCare, + this.status, + this.isActive, + this.createdBy, + this.createdOn, + this.editedBy, + this.editedOn, + this.isPatientDied, + this.isMedicineApproved, + this.isOpenBillDischarge, + this.activatedDate, + this.activatedBy, + this.lAMA, + this.patientCodition, + this.others, + this.reconciliationInstruction, + this.dischargeInstructions, + this.reason, + this.dischargeDisposition, + this.hospitalID, + this.createdByName, + this.createdByNameN, + this.editedByName, + this.editedByNameN}); + + GetDischargeSummaryResModel.fromJson(Map json) { + setupID = json['SetupID']; + projectID = json['ProjectID']; + dischargeNo = json['DischargeNo']; + dischargeDate = json['DischargeDate']; + admissionNo = json['AdmissionNo']; + assessmentNo = json['AssessmentNo']; + patientType = json['PatientType']; + patientID = json['PatientID']; + clinicID = json['ClinicID']; + doctorID = json['DoctorID']; + finalDiagnosis = json['FinalDiagnosis']; + persentation = json['Persentation']; + pastHistory = json['PastHistory']; + planOfCare = json['PlanOfCare']; + investigations = json['Investigations']; + followupPlan = json['FollowupPlan']; + conditionOnDischarge = json['ConditionOnDischarge']; + significantFindings = json['SignificantFindings']; + planedProcedure = json['PlanedProcedure']; + daysStayed = json['DaysStayed']; + remarks = json['Remarks']; + eRCare = json['ERCare']; + status = json['Status']; + isActive = json['IsActive']; + createdBy = json['CreatedBy']; + createdOn = json['CreatedOn']; + editedBy = json['EditedBy']; + editedOn = json['EditedOn']; + isPatientDied = json['IsPatientDied']; + isMedicineApproved = json['IsMedicineApproved']; + isOpenBillDischarge = json['IsOpenBillDischarge']; + activatedDate = json['ActivatedDate']; + activatedBy = json['ActivatedBy']; + lAMA = json['LAMA']; + patientCodition = json['PatientCodition']; + others = json['Others']; + reconciliationInstruction = json['ReconciliationInstruction']; + dischargeInstructions = json['DischargeInstructions']; + reason = json['Reason']; + dischargeDisposition = json['DischargeDisposition']; + hospitalID = json['HospitalID']; + createdByName = json['CreatedByName']; + createdByNameN = json['CreatedByNameN']; + editedByName = json['EditedByName']; + editedByNameN = json['EditedByNameN']; + } + + Map toJson() { + final Map data = new Map(); + data['SetupID'] = this.setupID; + data['ProjectID'] = this.projectID; + data['DischargeNo'] = this.dischargeNo; + data['DischargeDate'] = this.dischargeDate; + data['AdmissionNo'] = this.admissionNo; + data['AssessmentNo'] = this.assessmentNo; + data['PatientType'] = this.patientType; + data['PatientID'] = this.patientID; + data['ClinicID'] = this.clinicID; + data['DoctorID'] = this.doctorID; + data['FinalDiagnosis'] = this.finalDiagnosis; + data['Persentation'] = this.persentation; + data['PastHistory'] = this.pastHistory; + data['PlanOfCare'] = this.planOfCare; + data['Investigations'] = this.investigations; + data['FollowupPlan'] = this.followupPlan; + data['ConditionOnDischarge'] = this.conditionOnDischarge; + data['SignificantFindings'] = this.significantFindings; + data['PlanedProcedure'] = this.planedProcedure; + data['DaysStayed'] = this.daysStayed; + data['Remarks'] = this.remarks; + data['ERCare'] = this.eRCare; + data['Status'] = this.status; + data['IsActive'] = this.isActive; + data['CreatedBy'] = this.createdBy; + data['CreatedOn'] = this.createdOn; + data['EditedBy'] = this.editedBy; + data['EditedOn'] = this.editedOn; + data['IsPatientDied'] = this.isPatientDied; + data['IsMedicineApproved'] = this.isMedicineApproved; + data['IsOpenBillDischarge'] = this.isOpenBillDischarge; + data['ActivatedDate'] = this.activatedDate; + data['ActivatedBy'] = this.activatedBy; + data['LAMA'] = this.lAMA; + data['PatientCodition'] = this.patientCodition; + data['Others'] = this.others; + data['ReconciliationInstruction'] = this.reconciliationInstruction; + data['DischargeInstructions'] = this.dischargeInstructions; + data['Reason'] = this.reason; + data['DischargeDisposition'] = this.dischargeDisposition; + data['HospitalID'] = this.hospitalID; + data['CreatedByName'] = this.createdByName; + data['CreatedByNameN'] = this.createdByNameN; + data['EditedByName'] = this.editedByName; + data['EditedByNameN'] = this.editedByNameN; + return data; + } +} diff --git a/lib/models/patient/get_list_stp_referral_frequency_request.dart b/lib/models/patient/get_list_stp_referral_frequency_request.dart index 7f466deb..edae9f18 100644 --- a/lib/models/patient/get_list_stp_referral_frequency_request.dart +++ b/lib/models/patient/get_list_stp_referral_frequency_request.dart @@ -37,7 +37,6 @@ class STPReferralFrequencyRequest { {this.languageID = 2, this.stamp = "2020-06-03T11:18:19.986Z", this.iPAdress = "11.11.11.11", - this.versionID = 5.8, this.channel = 9, this.tokenID, this.sessionID = "JBXRsDl37L", diff --git a/lib/models/patient/progress_note_request.dart b/lib/models/patient/progress_note_request.dart index fe0add5f..13e1b571 100644 --- a/lib/models/patient/progress_note_request.dart +++ b/lib/models/patient/progress_note_request.dart @@ -35,8 +35,6 @@ class ProgressNoteRequest { bool isLoginForDoctorApp; bool patientOutSA; int patientTypeID; - double versionID; - ProgressNoteRequest( {this.visitType , this.admissionNo, @@ -49,7 +47,6 @@ class ProgressNoteRequest { this.sessionID = "LlBk8lUEJY", this.isLoginForDoctorApp = true, this.patientTypeID = 1, - this.versionID = 5.5, this.patientOutSA = false}); ProgressNoteRequest.fromJson(Map json) { @@ -65,7 +62,6 @@ class ProgressNoteRequest { isLoginForDoctorApp = json['IsLoginForDoctorApp']; patientOutSA = json['PatientOutSA']; patientTypeID = json['PatientTypeID']; - versionID = json['VersionID']; } Map toJson() { @@ -82,7 +78,6 @@ class ProgressNoteRequest { data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp; data['PatientOutSA'] = this.patientOutSA; data['PatientTypeID'] = this.patientTypeID; - data['VersionID'] = this.versionID; return data; } } \ No newline at end of file diff --git a/lib/models/pharmacies/pharmacies_List_request_model.dart b/lib/models/pharmacies/pharmacies_List_request_model.dart index 90b5c378..a00e217a 100644 --- a/lib/models/pharmacies/pharmacies_List_request_model.dart +++ b/lib/models/pharmacies/pharmacies_List_request_model.dart @@ -26,7 +26,6 @@ class PharmaciesListRequestModel { this.languageID = 2, this.stamp = '2020-04-23T21:01:21.492Z', this.ipAdress = '11.11.11.11', - this.versionID = 5.5, this.tokenID, this.sessionID = 'e29zoooEJ4', this.isLoginForDoctorApp = true, diff --git a/lib/models/pharmacies/pharmacies_items_request_model.dart b/lib/models/pharmacies/pharmacies_items_request_model.dart index 4f2e947a..e81ce9b3 100644 --- a/lib/models/pharmacies/pharmacies_items_request_model.dart +++ b/lib/models/pharmacies/pharmacies_items_request_model.dart @@ -10,7 +10,6 @@ class PharmaciesItemsRequestModel { String pHRItemName; int pageIndex = 0; int pageSize = 20; - double versionID = 5.5; int channel = 3; int languageID = 2; String iPAdress = "10.20.10.20"; @@ -24,7 +23,6 @@ class PharmaciesItemsRequestModel { {this.pHRItemName, this.pageIndex = 0, this.pageSize = 20, - this.versionID = 5.8, this.channel = 3, this.languageID = 2, this.iPAdress = "10.20.10.20", @@ -38,7 +36,6 @@ class PharmaciesItemsRequestModel { pHRItemName = json['PHR_itemName']; pageIndex = json['PageIndex']; pageSize = json['PageSize']; - versionID = json['VersionID']; channel = json['Channel']; languageID = json['LanguageID']; iPAdress = json['IPAdress']; @@ -54,7 +51,6 @@ class PharmaciesItemsRequestModel { data['PHR_itemName'] = this.pHRItemName; data['PageIndex'] = this.pageIndex; data['PageSize'] = this.pageSize; - data['VersionID'] = this.versionID; data['Channel'] = this.channel; data['LanguageID'] = this.languageID; data['IPAdress'] = this.iPAdress; diff --git a/lib/routes.dart b/lib/routes.dart index da56ce33..4ce73a4e 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -7,6 +7,7 @@ import 'package:doctor_app_flutter/screens/patients/insurance_approval_screen_pa import 'package:doctor_app_flutter/screens/patients/profile/diabetic_chart/diabetic_chart.dart'; import 'package:doctor_app_flutter/screens/patients/profile/diagnosis/diagnosis_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/admission-orders/admission_orders_screen.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/discharge_summary/discharge_summary.dart'; import 'package:doctor_app_flutter/screens/patients/profile/lab_result/all_lab_special_result_page.dart'; import 'package:doctor_app_flutter/screens/patients/profile/lab_result/labs_home_page.dart'; import 'package:doctor_app_flutter/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart'; @@ -78,7 +79,9 @@ const String PENDING_ORDERS = 'pending-orders'; const String ADMISSION_ORDERS = 'admission-orders'; const String NURSING_PROGRESS_NOTE = 'nursing_progress_note'; const String DIAGNOSIS_FOR_IN_PATIENT = 'get_diagnosis_for_in_patient'; + const String DIABETIC_CHART_VALUES = 'get_diabetic_chart_values'; +const String DISCHARGE_SUMMARY = 'discharge_summary'; //todo: change the routing way. var routes = { @@ -125,6 +128,7 @@ var routes = { GET_OPERATION_REPORT: (_) => OperationReportScreen(), PENDING_ORDERS: (_) => PendingOrdersScreen(), NURSING_PROGRESS_NOTE: (_) => NursingProgressNoteScreen(), + DISCHARGE_SUMMARY : (_) => DischargeSummaryPage(), DIAGNOSIS_FOR_IN_PATIENT: (_) => DiagnosisScreen(), ADMISSION_ORDERS: (_) => AdmissionOrdersScreen(), DIABETIC_CHART_VALUES: (_) => DiabeticChart(), diff --git a/lib/screens/patients/profile/discharge_summary/all_discharge_summary.dart b/lib/screens/patients/profile/discharge_summary/all_discharge_summary.dart new file mode 100644 index 00000000..0ae7bf04 --- /dev/null +++ b/lib/screens/patients/profile/discharge_summary/all_discharge_summary.dart @@ -0,0 +1,67 @@ +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/profile/discharge_summary_view_model.dart'; +import 'package:doctor_app_flutter/screens/base/base_view.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/screens/doctor/doctor_replay/doctor_reply_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; +import 'package:flutter/material.dart'; + +import 'discharge_Summary_widget.dart'; + + +class AllDischargeSummary extends StatefulWidget { + final Function changeCurrentTab; + + const AllDischargeSummary({Key key, this.changeCurrentTab}) : super(key: key); + + @override + _AllDischargeSummaryState createState() => _AllDischargeSummaryState(); +} + +class _AllDischargeSummaryState extends State { + + int pageIndex = 1; + @override + Widget build(BuildContext context) { + return BaseView( + onModelReady: (model) { + model.getPendingDischargeSummary(); + }, + builder: (_, model, w) => AppScaffold( + baseViewModel: model, + isShowAppBar: false, + body: model.pendingDischargeSummaryList.isEmpty + ?ErrorMessage(error: TranslationBase.of(context).noItem)// DrAppEmbeddedError(error: TranslationBase.of(context).noItem) + : Column( + children: [ + Expanded( + child: Container( + padding: EdgeInsetsDirectional.fromSTEB(30, 0, 30, 0), + child: ListView.builder( + scrollDirection: Axis.vertical, + itemCount: model.pendingDischargeSummaryList.length, + shrinkWrap: true, + itemBuilder: (BuildContext ctxt, int index) { + return Column( + children: [ + InkWell( + child: DischargeSummaryWidget( + dischargeSummary: model + .pendingDischargeSummaryList[index]), + ), + + ], + ); + }), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/screens/patients/profile/discharge_summary/discharge_Summary_widget.dart b/lib/screens/patients/profile/discharge_summary/discharge_Summary_widget.dart new file mode 100644 index 00000000..f4c67442 --- /dev/null +++ b/lib/screens/patients/profile/discharge_summary/discharge_Summary_widget.dart @@ -0,0 +1,171 @@ +import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; +import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; +import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryResModel.dart'; +import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_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/app_texts_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/card_with_bg_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/user-guid/CusomRow.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class DischargeSummaryWidget extends StatefulWidget { + final GetDischargeSummaryResModel dischargeSummary; + bool isShowMore = false; + + DischargeSummaryWidget({Key key, this.dischargeSummary}); + + @override + _DischargeSummaryWidgetState createState() => _DischargeSummaryWidgetState(); +} + +class _DischargeSummaryWidgetState extends State { + @override + Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); + + return Container( + child: CardWithBgWidget( + bgColor:Colors.transparent, + hasBorder: false, + widget: Container( + child: InkWell( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + AppText( + AppDateUtils.getDateTimeFromServerFormat( + widget.dischargeSummary.createdOn) + .day + .toString() + + " " + + AppDateUtils.getMonth( + AppDateUtils.getDateTimeFromServerFormat( + widget.dischargeSummary.createdOn) + .month) + .toString() + .substring(0, 3) + + ' ' + + AppDateUtils.getDateTimeFromServerFormat( + widget.dischargeSummary.createdOn) + .year + .toString(), + fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + ), + AppText( + AppDateUtils.getDateTimeFromServerFormat( + widget.dischargeSummary.createdOn) + .hour + .toString() + + ":" + + AppDateUtils.getDateTimeFromServerFormat( + widget.dischargeSummary.createdOn) + .minute + .toString(), + fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + ) + ], + ), + ], + ), + SizedBox( + height: 20, + ), + + Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + SizedBox( + width: 20, + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // SizedBox(height: 10,), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + CustomRow( + label: TranslationBase.of(context).fileNumber, + value: widget.dischargeSummary.patientID.toString(), + isCopyable:false, + ), + SizedBox( + height: 8, + ), + ], + ), + ], + ), + + Container( + width: MediaQuery.of(context).size.width * 0.5, + child: RichText( + maxLines: 3, + overflow: TextOverflow.ellipsis, + text: new TextSpan( + style: new TextStyle( + fontSize: 1.3 * SizeConfig.textMultiplier, + color: Color(0xFF575757)), + children: [ + new TextSpan( + text: + TranslationBase.of(context).requestType + + ": ", + style: TextStyle( + fontSize: SizeConfig + .getTextMultiplierBasedOnWidth() * + 2.8, + color: Color(0xFF575757), + //TranslationBase.of(context).doctorResponse + " : ", + )), + new TextSpan( + text: + "${widget.dischargeSummary.dischargeInstructions}", + style: TextStyle( + fontFamily: 'Poppins', + fontSize: SizeConfig + .getTextMultiplierBasedOnWidth() * + 3, + color: Color(0xFF2E303A), + fontWeight: FontWeight.w700, + )), + ], + ), + ), + ), + ], + ) + ], + ), + // Container( + // alignment: projectViewModel.isArabic?Alignment.centerLeft:Alignment.centerRight, + // child: Icon(FontAwesomeIcons.arrowRight, + // size: 20, color: Colors.black),) + ], + ), + // onTap: onTap, + )), + ), + ); + } +} diff --git a/lib/screens/patients/profile/discharge_summary/discharge_summary.dart b/lib/screens/patients/profile/discharge_summary/discharge_summary.dart new file mode 100644 index 00000000..1625d7bb --- /dev/null +++ b/lib/screens/patients/profile/discharge_summary/discharge_summary.dart @@ -0,0 +1,187 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart'; +import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; +import 'package:doctor_app_flutter/screens/base/base_view.dart'; +import 'package:doctor_app_flutter/screens/doctor/doctor_replay/doctor_repaly_chat.dart'; +import 'package:doctor_app_flutter/util/helpers.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/screens/doctor/doctor_replay/doctor_reply_widget.dart'; +import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-app-bar.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; +import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; +import 'package:doctor_app_flutter/widgets/shared/text_fields/text_fields_utils.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import 'all_discharge_summary.dart'; +import 'pending_discharge_summary.dart'; + +class DischargeSummaryPage extends StatefulWidget { + final Function changeCurrentTab; + + const DischargeSummaryPage({Key key, this.changeCurrentTab}) : super(key: key); + + @override + _DoctorReplyScreenState createState() => _DoctorReplyScreenState(); +} + +class _DoctorReplyScreenState extends State + with SingleTickerProviderStateMixin { + TabController _tabController; + int _activeTab = 0; + int pageIndex = 1; + + @override + void initState() { + super.initState(); + _tabController = TabController(length: 2, vsync: this); + _tabController.addListener(_handleTabSelection); + } + + @override + void dispose() { + super.dispose(); + _tabController.dispose(); + } + + _handleTabSelection() { + setState(() { + _activeTab = _tabController.index; + }); + } + + @override + Widget build(BuildContext context) { + final screenSize = MediaQuery.of(context).size; + final routeArgs = ModalRoute.of(context).settings.arguments as Map; + PatiantInformtion patient = routeArgs['patient']; + + return WillPopScope( + onWillPop: () async { + widget.changeCurrentTab(); + return false; + }, + child: AppScaffold( + appBarTitle: TranslationBase.of(context).replay2, + isShowAppBar: true, + // appBarTitle: TranslationBase.of(context).progressNote, + appBar: PatientProfileAppBar( + patient, + isInpatient: true, + ), + body: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Scaffold( + extendBodyBehindAppBar: false, + appBar: PreferredSize( + preferredSize: Size.fromHeight( + MediaQuery.of(context).size.height * 0.070), + child: Container( + height: MediaQuery.of(context).size.height * 0.070, + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + color: Theme.of(context).dividerColor, + width: 0.5), //width: 0.7 + ), + color: Colors.white), + child: Center( + child: TabBar( + isScrollable: false, + controller: _tabController, + indicatorColor: Colors.transparent, + indicatorWeight: 1.0, + indicatorSize: TabBarIndicatorSize.tab, + labelColor: Theme.of(context).primaryColor, + labelPadding: EdgeInsets.only( + top: 0, left: 0, right: 0, bottom: 0), + unselectedLabelColor: Colors.grey[800], + tabs: [ + tabWidget( + screenSize, + _activeTab == 0, + "Pending", + ), + tabWidget( + screenSize, + _activeTab == 1, + TranslationBase.of(context).all, + ), + ], + ), + ), + ), + ), + body: Column( + children: [ + Expanded( + child: TabBarView( + physics: BouncingScrollPhysics(), + controller: _tabController, + children: [ + PendingDischargeSummary(patient:patient ,), + AllDischargeSummary(), + ], + ), + ), + ], + ), + ), + ), + ], + ), + ), + ); + } +} + +Widget tabWidget(Size screenSize, bool isActive, String title, + {int counter = -1}) { + return Center( + child: Container( + height: screenSize.height * 0.070, + decoration: TextFieldsUtils.containerBorderDecoration( + isActive ? Color(0xFFD02127 /*B8382B*/) : Color(0xFFEAEAEA), + isActive ? Color(0xFFD02127) : Color(0xFFEAEAEA), + borderRadius: 4, + borderWidth: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + AppText( + title, + fontSize: SizeConfig.textMultiplier * 1.5, + color: isActive ? Colors.white : Color(0xFF2B353E), + fontWeight: FontWeight.w700, + ), + if (counter != -1) + Container( + margin: EdgeInsets.all(4), + width: 15, + height: 15, + decoration: BoxDecoration( + color: isActive ? Colors.white : Color(0xFFD02127), + shape: BoxShape.circle, + ), + child: Center( + child: FittedBox( + child: AppText( + "$counter", + fontSize: SizeConfig.textMultiplier * 1.5, + color: !isActive ? Colors.white : Color(0xFFD02127), + fontWeight: FontWeight.w700, + ), + ), + ), + ), + ], + ), + ), + ); +} diff --git a/lib/screens/patients/profile/discharge_summary/pending_discharge_summary.dart b/lib/screens/patients/profile/discharge_summary/pending_discharge_summary.dart new file mode 100644 index 00000000..3981163e --- /dev/null +++ b/lib/screens/patients/profile/discharge_summary/pending_discharge_summary.dart @@ -0,0 +1,75 @@ +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/profile/discharge_summary_view_model.dart'; +import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; +import 'package:doctor_app_flutter/screens/base/base_view.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/screens/doctor/doctor_replay/doctor_reply_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; +import 'package:flutter/material.dart'; + +import 'discharge_Summary_widget.dart'; + +class PendingDischargeSummary extends StatefulWidget { + final Function changeCurrentTab; + final PatiantInformtion patient; + + const PendingDischargeSummary({Key key, this.changeCurrentTab, this.patient}) + : super(key: key); + + @override + _PendingDischargeSummaryState createState() => + _PendingDischargeSummaryState(); +} + +class _PendingDischargeSummaryState extends State { + int pageIndex = 1; + + @override + Widget build(BuildContext context) { + return BaseView( + onModelReady: (model) { + model.getPendingDischargeSummary( + patientId: widget.patient.patientId, + admissionNo: int.parse(widget.patient.admissionNo), + + ); + }, + builder: (_, model, w) => AppScaffold( + baseViewModel: model, + isShowAppBar: false, + body: model.pendingDischargeSummaryList.isEmpty + ? ErrorMessage( + error: TranslationBase.of(context) + .noItem) // DrAppEmbeddedError(error: TranslationBase.of(context).noItem) + : Column( + children: [ + Expanded( + child: Container( + padding: EdgeInsetsDirectional.fromSTEB(30, 0, 30, 0), + child: ListView.builder( + scrollDirection: Axis.vertical, + itemCount: model.pendingDischargeSummaryList.length, + shrinkWrap: true, + itemBuilder: (BuildContext ctxt, int index) { + return Column( + children: [ + InkWell( + child: DischargeSummaryWidget( + dischargeSummary: model + .pendingDischargeSummaryList[index]), + ), + ], + ); + }), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/screens/patients/profile/operation_report/operation_report.dart b/lib/screens/patients/profile/operation_report/operation_report.dart index a445309e..c2751424 100644 --- a/lib/screens/patients/profile/operation_report/operation_report.dart +++ b/lib/screens/patients/profile/operation_report/operation_report.dart @@ -2,7 +2,7 @@ import 'package:doctor_app_flutter/core/model/note/note_model.dart'; import 'package:doctor_app_flutter/core/model/note/update_note_model.dart'; import 'package:doctor_app_flutter/core/service/AnalyticsService.dart'; import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; -import 'package:doctor_app_flutter/core/viewModel/operation_report_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/profile/operation_report_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; diff --git a/lib/screens/patients/profile/operation_report/update_operation_report.dart b/lib/screens/patients/profile/operation_report/update_operation_report.dart index 0800bc16..d042ff2f 100644 --- a/lib/screens/patients/profile/operation_report/update_operation_report.dart +++ b/lib/screens/patients/profile/operation_report/update_operation_report.dart @@ -6,7 +6,7 @@ import 'package:doctor_app_flutter/core/model/note/CreateNoteModel.dart'; import 'package:doctor_app_flutter/core/model/note/note_model.dart'; import 'package:doctor_app_flutter/core/model/note/update_note_model.dart'; import 'package:doctor_app_flutter/core/provider/robot_provider.dart'; -import 'package:doctor_app_flutter/core/viewModel/operation_report_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/profile/operation_report_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; diff --git a/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart b/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart index 69090bde..ca304986 100644 --- a/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart +++ b/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart @@ -115,10 +115,10 @@ class ProfileGridForInPatient extends StatelessWidget { PatientProfileCardModel( TranslationBase.of(context).discharge, TranslationBase.of(context).report, - null, + DISCHARGE_SUMMARY, 'patient/patient_sick_leave.png', - isInPatient: isInpatient, - isDisable: true), + isInPatient: isInpatient,) + , PatientProfileCardModel( TranslationBase.of(context).patientSick, TranslationBase.of(context).leave, diff --git a/lib/screens/patients/register_patient/RegisterConfirmationPatientPage.dart b/lib/screens/patients/register_patient/RegisterConfirmationPatientPage.dart index af861294..c03c6f96 100644 --- a/lib/screens/patients/register_patient/RegisterConfirmationPatientPage.dart +++ b/lib/screens/patients/register_patient/RegisterConfirmationPatientPage.dart @@ -8,7 +8,7 @@ import 'package:doctor_app_flutter/core/model/note/note_model.dart'; import 'package:doctor_app_flutter/core/model/note/update_note_model.dart'; import 'package:doctor_app_flutter/core/provider/robot_provider.dart'; import 'package:doctor_app_flutter/core/viewModel/PatientRegistrationViewModel.dart'; -import 'package:doctor_app_flutter/core/viewModel/operation_report_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/profile/operation_report_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; @@ -63,8 +63,7 @@ class _RegisterConfirmationPatientPageState TextEditingController middleNameAr; TextEditingController lastNameAr; TextEditingController emailAddressController; - TextEditingController langController = TextEditingController( - text: "English"); + TextEditingController langController = TextEditingController(text: "English"); int selectedLang = 1; @override @@ -397,10 +396,13 @@ class _RegisterConfirmationPatientPageState widget.model.getPatientInfoResponseModel.dateOfBirth); String wellFormat = "${dateFormat.day}\/${dateFormat.month}\/${dateFormat.year}"; - print(dateFormat.toUtc().toString()); + print( + dateFormat.toUtc().toString(), + ); HijriCalendar hijriDate = HijriCalendar.fromDate( - new DateTime(dateFormat.year, dateFormat.month, - dateFormat.day)); + new DateTime( + dateFormat.year, dateFormat.month, dateFormat.day), + ); // return ; GifLoaderDialogUtils.showMyDialog(context); @@ -664,7 +666,6 @@ class _RegisterConfirmationPatientPageState groupValue: selectedLang, onChanged: (value) { setSelectedLang(value); - }, activeColor: Colors.red, ), @@ -682,10 +683,11 @@ class _RegisterConfirmationPatientPageState ); }); } - setSelectedLang(lang){ + + setSelectedLang(lang) { setState(() { selectedLang = lang; - langController.text = lang==1?"English": "العربيه"; + langController.text = lang == 1 ? "English" : "العربيه"; }); Navigator.of(context).pop(); } diff --git a/lib/screens/patients/register_patient/RegisterSearchPatientPage.dart b/lib/screens/patients/register_patient/RegisterSearchPatientPage.dart index 432842d3..2afc593e 100644 --- a/lib/screens/patients/register_patient/RegisterSearchPatientPage.dart +++ b/lib/screens/patients/register_patient/RegisterSearchPatientPage.dart @@ -20,6 +20,10 @@ import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/country_textfield_custom.dart'; import 'package:flutter/material.dart'; +import 'package:hijri/hijri_calendar.dart'; +import 'package:hijri_picker/hijri_picker.dart'; +import 'package:doctor_app_flutter/core/enum/CalenderType.dart'; +import 'package:intl/intl.dart'; class RegisterSearchPatientPage extends StatefulWidget { final Function changePageViewIndex; @@ -54,8 +58,10 @@ class _RegisterSearchPatientPageState extends State { TextEditingController(text: "1062938285"); String idError; - DateTime _birthDate; + DateTime _birthDateInGregorian; String birthdateError; + var birthDateInHijri = new HijriCalendar.now(); + CalenderType calenderType = CalenderType.Gregorian; @override void initState() { @@ -178,15 +184,44 @@ class _RegisterSearchPatientPageState extends State { SizedBox( height: 10, ), + Row( + children: [ + Expanded( + child: RadioListTile( + title: AppText("Gregorian"), + value: CalenderType.Gregorian, + groupValue: calenderType, + onChanged: (CalenderType value) { + setState(() { + calenderType = value; + }); + }, + ), + ), + Expanded( + child: RadioListTile( + title: AppText("Hijri"), + value: CalenderType.Hijri, + groupValue: calenderType, + onChanged: (CalenderType value) { + setState(() { + calenderType = value; + }); + }, + ), + ), + ], + ), + SizedBox( + height: 10, + ), AppTextFieldCustom( height: screenSize.height * 0.075, hintText: "Birthdate", - dropDownText: _birthDate != null - ? "${AppDateUtils.convertStringToDateFormat(_birthDate.toString(), "yyyy/MM/dd")}" - : null, + dropDownText: getBirthdate(), enabled: false, isTextFieldHasSuffix: true, - validationError: _birthDate == null && isSubmitted + validationError: _birthDateInGregorian == null && isSubmitted ? TranslationBase.of(context).emptyMessage : null, suffixIcon: IconButton( @@ -197,12 +232,29 @@ class _RegisterSearchPatientPageState extends State { onPressed: null, ), onClick: () { - if (_birthDate == null) { - _birthDate = DateTime.now(); + if (_birthDateInGregorian == null) { + _birthDateInGregorian = DateTime.now(); } - _selectDate(context, _birthDate, (picked) { + _selectDate(context, _birthDateInGregorian, + (dynamic selectedDate) { setState(() { - _birthDate = picked; + if (calenderType == CalenderType.Hijri) { + birthDateInHijri = selectedDate; + _birthDateInGregorian = HijriCalendar().hijriToGregorian( + birthDateInHijri.hYear, + birthDateInHijri.hMonth, + birthDateInHijri.hDay); + print(_birthDateInGregorian); + print(birthDateInHijri); + } else { + _birthDateInGregorian = selectedDate; + birthDateInHijri = HijriCalendar() + .gregorianToHijri( + selectedDate.year, selectedDate.month, selectedDate.day); + + print(_birthDateInGregorian); + print(birthDateInHijri); + } }); }); }, @@ -276,13 +328,14 @@ class _RegisterSearchPatientPageState extends State { patientOutSA: 0, generalid: GENERAL_ID, dOB: - "${AppDateUtils.convertStringToDateFormat(_birthDate.toString(), "yyyy/MM/dd")}"); + "${AppDateUtils.convertStringToDateFormat(_birthDateInGregorian.toString(), "yyyy/MM/dd")}"); await widget.model.checkPatientForRegistration( checkPatientForRegistrationModel); GetPatientInfoRequestModel getPatientInfoRequestModel = GetPatientInfoRequestModel( //TODO Elham* this return the static to dynamic - //patientIdentificationID:"1062938285", _idController.text, + patientIdentificationID: "1062938285", + // _idController.text, isHijri: 0, isDentalAllowedBackend: false, patientOutSA: 0, @@ -319,23 +372,41 @@ class _RegisterSearchPatientPageState extends State { _phoneController.text.isNotEmpty && _idController.text != null && _idController.text.isNotEmpty && - _birthDate != null) { + _birthDateInGregorian != null) { return true; } return false; } Future _selectDate(BuildContext context, DateTime dateTime, - Function(DateTime picked) updateDate) async { - final DateTime picked = await showDatePicker( - context: context, - initialDate: dateTime, - firstDate: DateTime(DateTime.now().year - 150), - lastDate: DateTime(DateTime.now().year + 150), - initialEntryMode: DatePickerEntryMode.calendar, - ); - if (picked != null && picked != dateTime) { - updateDate(picked); + Function(dynamic) updateDate) async { + if (calenderType == CalenderType.Hijri) { + HijriCalendar hijriDate = HijriCalendar.fromDate(DateTime.now()); + final HijriCalendar pickedH = await showHijriDatePicker( + context: context, + initialDate: birthDateInHijri ?? hijriDate, + lastDate: new HijriCalendar() + ..hYear = hijriDate.hYear + ..hMonth = hijriDate.hMonth + ..hDay = hijriDate.hDay, + firstDate: new HijriCalendar() + ..hYear = 1438 + ..hMonth = 12 + ..hDay = 25, + initialDatePickerMode: DatePickerMode.day, + ); + if (pickedH != null && birthDateInHijri != pickedH) updateDate(pickedH); + } else { + final DateTime picked = await showDatePicker( + context: context, + initialDate: dateTime ?? DateTime.now(), + firstDate: DateTime(DateTime.now().year - 150), + lastDate: DateTime.now(), + initialEntryMode: DatePickerEntryMode.calendar, + ); + if (picked != null && picked != dateTime) { + updateDate(picked); + } } } @@ -359,4 +430,18 @@ class _RegisterSearchPatientPageState extends State { }, ); } + + getBirthdate() { + + if (calenderType == CalenderType.Hijri) { + return birthDateInHijri != null + ? "$birthDateInHijri" + : null; + }else{ + return _birthDateInGregorian != null + ? "${AppDateUtils.convertStringToDateFormat(_birthDateInGregorian.toString(), "yyyy/MM/dd")}" + : null; + } + + } } diff --git a/pubspec.lock b/pubspec.lock index 3080216d..3e9968d3 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -575,12 +575,19 @@ packages: source: hosted version: "1.0.6" hijri: - dependency: "direct main" + dependency: transitive description: name: hijri url: "https://pub.dartlang.org" source: hosted version: "2.0.3" + hijri_picker: + dependency: "direct main" + description: + name: hijri_picker + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" html: dependency: "direct main" description: @@ -699,7 +706,7 @@ packages: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.4" + version: "1.3.0-nullsafety.3" mime: dependency: transitive description: @@ -1033,7 +1040,7 @@ packages: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.10.0-nullsafety.2" + version: "1.10.0-nullsafety.1" sticky_headers: dependency: "direct main" description: @@ -1238,5 +1245,5 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=2.10.2 <=2.11.0-213.1.beta" + dart: ">=2.10.2 <2.11.0" flutter: ">=1.22.2 <2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 485e8ae6..23d6a2aa 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -104,7 +104,8 @@ dependencies: badges: ^1.1.4 # Hijri - hijri: ^2.0.0 +# hijri: ^2.0.3 + hijri_picker: ^2.0.0