diff --git a/lib/client/base_app_client.dart b/lib/client/base_app_client.dart index 6ae43c13..fe2723df 100644 --- a/lib/client/base_app_client.dart +++ b/lib/client/base_app_client.dart @@ -36,20 +36,21 @@ class BaseAppClient { }) async { String url = BASE_URL + endPoint; try { - Map profile = await sharedPref.getObj(DOCTOR_PROFILE); - String token = await sharedPref.getString(TOKEN); - if (profile != null) { - DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); - if (body['DoctorID'] == null) - body['DoctorID'] = doctorProfile?.doctorID; - body['EditedBy'] = doctorProfile?.doctorID; - if (body['ProjectID'] == null) { - body['ProjectID'] = doctorProfile?.projectID; - } - if (body['ClinicID'] == null) - body['ClinicID'] = doctorProfile?.clinicID; - } - body['TokenID'] = token ?? ''; + //TODO change it edit By Jammal + // Map profile = await sharedPref.getObj(DOCTOR_PROFILE); + // String token = await sharedPref.getString(TOKEN); + // if (profile != null) { + // DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); + // if (body['DoctorID'] == null) + body['DoctorID'] = 4709;//doctorProfile?.doctorID; + body['EditedBy'] = 4709;//doctorProfile?.doctorID; + //if (body['ProjectID'] == null) { + body['ProjectID'] = 15;//doctorProfile?.projectID; + // } + // if (body['ClinicID'] == null) + body['ClinicID'] = 1;//doctorProfile?.clinicID; + // } + body['TokenID'] = "@dm!n";//token ?? ''; String lang = await sharedPref.getString(APP_Language); if (lang != null && lang == 'ar') body['LanguageID'] = 1; @@ -63,9 +64,10 @@ class BaseAppClient { body['SessionID'] = SESSION_ID; body['IsLoginForDoctorApp'] = IS_LOGIN_FOR_DOCTOR_APP; body['PatientOutSA'] = 0; // PATIENT_OUT_SA; - body['VidaAuthTokenID'] = await sharedPref.getString(VIDA_AUTH_TOKEN_ID); - body['VidaRefreshTokenID'] = - await sharedPref.getString(VIDA_REFRESH_TOKEN_ID); + body['VidaAuthTokenID'] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMDAyIiwianRpIjoiNDM1MGNjZTYtYzc3MS00YjBiLThiNDItMGZhY2IzYzgxMjQ4IiwiZW1haWwiOiIiLCJpZCI6IjEwMDIiLCJOYW1lIjoiVEVNUCAtIERPQ1RPUiIsIkVtcGxveWVlSWQiOiI0NzA5IiwiRmFjaWxpdHlHcm91cElkIjoiMDEwMjY2IiwiRmFjaWxpdHlJZCI6IjE1IiwiUGhhcmFtY3lGYWNpbGl0eUlkIjoiNTUiLCJJU19QSEFSTUFDWV9DT05ORUNURUQiOiJUcnVlIiwiRG9jdG9ySWQiOiI0NzA5IiwiU0VTU0lPTklEIjoiMjE1OTYwNTQiLCJDbGluaWNJZCI6IjEiLCJyb2xlIjpbIkRPQ1RPUlMiLCJIRUFEIERPQ1RPUlMiLCJBRE1JTklTVFJBVE9SUyIsIlJFQ0VQVElPTklTVCIsIkVSIE5VUlNFIiwiRVIgUkVDRVBUSU9OSVNUIiwiUEhBUk1BQ1kgQUNDT1VOVCBTVEFGRiIsIlBIQVJNQUNZIE5VUlNFIiwiSU5QQVRJRU5UIFBIQVJNQUNJU1QiLCJBRE1JU1NJT04gU1RBRkYiLCJBUFBST1ZBTCBTVEFGRiIsIkNPTlNFTlQgIiwiTUVESUNBTCBSRVBPUlQgLSBTSUNLIExFQVZFIE1BTkFHRVIiXSwibmJmIjoxNjA5MjI1MjMwLCJleHAiOjE2MTAwODkyMzAsImlhdCI6MTYwOTIyNTIzMH0.rs7lTBQ1ON4PbR11PBkOyjf818DdeMKuqz2IrCJMYQU"; + //await sharedPref.getString(VIDA_AUTH_TOKEN_ID); + body['VidaRefreshTokenID'] ="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMDAyIiwianRpIjoiNDM1MGNjZTYtYzc3MS00YjBiLThiNDItMGZhY2IzYzgxMjQ4IiwiZW1haWwiOiIiLCJpZCI6IjEwMDIiLCJOYW1lIjoiVEVNUCAtIERPQ1RPUiIsIkVtcGxveWVlSWQiOiI0NzA5IiwiRmFjaWxpdHlHcm91cElkIjoiMDEwMjY2IiwiRmFjaWxpdHlJZCI6IjE1IiwiUGhhcmFtY3lGYWNpbGl0eUlkIjoiNTUiLCJJU19QSEFSTUFDWV9DT05ORUNURUQiOiJUcnVlIiwiRG9jdG9ySWQiOiI0NzA5IiwiU0VTU0lPTklEIjoiMjE1OTYwNTQiLCJDbGluaWNJZCI6IjEiLCJyb2xlIjpbIkRPQ1RPUlMiLCJIRUFEIERPQ1RPUlMiLCJBRE1JTklTVFJBVE9SUyIsIlJFQ0VQVElPTklTVCIsIkVSIE5VUlNFIiwiRVIgUkVDRVBUSU9OSVNUIiwiUEhBUk1BQ1kgQUNDT1VOVCBTVEFGRiIsIlBIQVJNQUNZIE5VUlNFIiwiSU5QQVRJRU5UIFBIQVJNQUNJU1QiLCJBRE1JU1NJT04gU1RBRkYiLCJBUFBST1ZBTCBTVEFGRiIsIkNPTlNFTlQgIiwiTUVESUNBTCBSRVBPUlQgLSBTSUNLIExFQVZFIE1BTkFHRVIiXSwibmJmIjoxNjA5MjI1MjMwLCJleHAiOjE2MTAwODkyMzAsImlhdCI6MTYwOTIyNTIzMH0.rs7lTBQ1ON4PbR11PBkOyjf818DdeMKuqz2IrCJMYQU"; + //await sharedPref.getString(VIDA_REFRESH_TOKEN_ID); print("URL : $url"); print("Body : ${json.encode(body)}"); @@ -78,7 +80,7 @@ class BaseAppClient { 'Accept': 'application/json' }); final int statusCode = response.statusCode; - if (statusCode < 200 || statusCode >= 400 ) { + if (statusCode < 200 || statusCode >= 400) { onFailure('Error While Fetching data', statusCode); } else { var parsed = json.decode(response.body.toString()); @@ -89,7 +91,7 @@ class BaseAppClient { // helpers.showErrorToast('Your session expired Please login agian'); // } else if (parsed['MessageStatus'] == 1) { - if(!parsed['IsAuthenticated']) + if (!parsed['IsAuthenticated']) onFailure(getError(parsed), statusCode); else onSuccess(parsed, statusCode); @@ -106,21 +108,19 @@ class BaseAppClient { } } - String getError(parsed){ + String getError(parsed) { //TODO change this fun String error = parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage']; if (parsed["ValidationErrors"] != null) { - error = parsed["ValidationErrors"]["StatusMessage"].toString() + "\n"; if (parsed["ValidationErrors"]["ValidationErrors"] != null && parsed["ValidationErrors"]["ValidationErrors"].length != 0) { for (var i = 0; - i < parsed["ValidationErrors"]["ValidationErrors"].length; - i++) { + i < parsed["ValidationErrors"]["ValidationErrors"].length; + i++) { error = error + - parsed["ValidationErrors"]["ValidationErrors"][i] - ["Messages"][0] + + parsed["ValidationErrors"]["ValidationErrors"][i]["Messages"][0] + "\n"; } } diff --git a/lib/config/config.dart b/lib/config/config.dart index 4a4a2d1c..8d1d0537 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -125,9 +125,18 @@ const GET_MASTER_LOOKUP_LIST = 'Services/DoctorApplication.svc/REST/GetMasterLookUpList'; const POST_ALLERGY = 'Services/DoctorApplication.svc/REST/PostAllergies'; const POST_HISTORY = 'Services/DoctorApplication.svc/REST/PostHistory'; -const POST_CHIEF_COMPLAINT = 'Services/DoctorApplication.svc/REST/PostChiefcomplaint'; -const POST_PHYSICAL_EXAM = 'Services/DoctorApplication.svc/REST/PostPhysicalExam'; -const POST_PROGRESS_NOTE = '/Services/DoctorApplication.svc/REST/PostProgressNote'; +const POST_CHIEF_COMPLAINT = + 'Services/DoctorApplication.svc/REST/PostChiefcomplaint'; +const POST_PHYSICAL_EXAM = + 'Services/DoctorApplication.svc/REST/PostPhysicalExam'; +const POST_PROGRESS_NOTE = + 'Services/DoctorApplication.svc/REST/PostProgressNote'; + +const POST_ASSESSMENT = + 'Services/DoctorApplication.svc/REST/PostAssessment'; + +const GET_CATEGORISE_PROCEDURE = + 'Services/DoctorApplication.svc/REST/GetCategories'; var selectedPatientType = 1; diff --git a/lib/core/enum/master_lookup_key.dart b/lib/core/enum/master_lookup_key.dart index a4010858..8f5d76f8 100644 --- a/lib/core/enum/master_lookup_key.dart +++ b/lib/core/enum/master_lookup_key.dart @@ -9,7 +9,8 @@ enum MasterKeysService { AllergySeverity, physiotherapyGoals, DiagnosisCondition, - DiagnosisType + DiagnosisType, + ICD10 } extension SelectedMasterKeysService on MasterKeysService { @@ -48,6 +49,9 @@ extension SelectedMasterKeysService on MasterKeysService { case MasterKeysService.DiagnosisType: return 35; break; + case MasterKeysService.ICD10: + return 2500; + break; } } } diff --git a/lib/core/model/procedure/categories_procedure.dart b/lib/core/model/procedure/categories_procedure.dart new file mode 100644 index 00000000..e7a7fd40 --- /dev/null +++ b/lib/core/model/procedure/categories_procedure.dart @@ -0,0 +1,18 @@ +class CategoriseProcedureModel { + String categoryID; + String categoryName; + + CategoriseProcedureModel({this.categoryID, this.categoryName}); + + CategoriseProcedureModel.fromJson(Map json) { + categoryID = json['CategoryID']; + categoryName = json['CategoryName']; + } + + Map toJson() { + final Map data = new Map(); + data['CategoryID'] = this.categoryID; + data['CategoryName'] = this.categoryName; + return data; + } +} diff --git a/lib/core/service/SOAP_service.dart b/lib/core/service/SOAP_service.dart index e5d2023c..3219ef6a 100644 --- a/lib/core/service/SOAP_service.dart +++ b/lib/core/service/SOAP_service.dart @@ -2,6 +2,7 @@ import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/models/SOAP/get_Allergies_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_allergy_request_model.dart'; +import 'package:doctor_app_flutter/models/SOAP/post_assessment_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_chief_complaint_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_histories_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_physical_exam_request_model.dart'; @@ -86,4 +87,16 @@ class SOAPService extends LookupService { super.error = error; }, body: postProgressNoteRequestModel.toJson()); } + + Future postAssessment( + PostAssessmentRequestModel postAssessmentRequestModel) async { + hasError = false; + await baseAppClient.post(POST_ASSESSMENT, + onSuccess: (dynamic response, int statusCode) { + print("Success"); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: postAssessmentRequestModel.toJson()); + } } diff --git a/lib/core/service/base/lookup-service.dart b/lib/core/service/base/lookup-service.dart index 61f0c31e..d677201b 100644 --- a/lib/core/service/base/lookup-service.dart +++ b/lib/core/service/base/lookup-service.dart @@ -33,6 +33,7 @@ class LookupService extends BaseService { // List listOfPhysiotherapyGoals = []; List listOfDiagnosisType = []; List listOfDiagnosisCondition = []; + List listOfICD10 = []; Future getMasterLookup(MasterKeysService masterKeys) async { hasError = false; @@ -120,6 +121,13 @@ class LookupService extends BaseService { .add(MasterKeyModel.fromJson(v)); }); break; + case MasterKeysService.ICD10: + listOfICD10.clear(); + entryList.forEach((v) { + listOfICD10 + .add(MasterKeyModel.fromJson(v)); + }); + break; } } } diff --git a/lib/core/service/prescription_service.dart b/lib/core/service/prescription_service.dart index 46b93481..d51fcc3e 100644 --- a/lib/core/service/prescription_service.dart +++ b/lib/core/service/prescription_service.dart @@ -33,13 +33,16 @@ class PrescriptionService extends BaseService { Future postPrescription() async { hasError = false; //_prescriptionList.clear(); - await baseAppClient.post(POST_PRESCRIPTION_LIST, - onSuccess: (dynamic response, int statusCode) { - _prescriptionList - .add(PrescriptionModel.fromJson(response['PrescriptionList'])); - }, onFailure: (String error, int statusCode) { - hasError = true; - super.error = error; - }, body: _postPrescriptionReqModel.toJson()); + await baseAppClient.post( + GET_CATEGORISE_PROCEDURE, + onSuccess: (dynamic response, int statusCode) { + _prescriptionList + .add(PrescriptionModel.fromJson(response['PrescriptionList'])); + }, + onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, + ); } } diff --git a/lib/core/service/procedure_service.dart b/lib/core/service/procedure_service.dart index 4c795baf..fdc18003 100644 --- a/lib/core/service/procedure_service.dart +++ b/lib/core/service/procedure_service.dart @@ -1,12 +1,22 @@ import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart'; import 'package:doctor_app_flutter/core/model/procedure/get_procedure_model.dart'; import 'package:doctor_app_flutter/core/model/procedure/get_procedure_req_model.dart'; import 'package:doctor_app_flutter/core/model/procedure/post_procedure_req_model.dart'; import 'package:doctor_app_flutter/core/service/base/base_service.dart'; +import 'package:flutter/foundation.dart'; class ProcedureService extends BaseService { List _procedureList = List(); List get procedureList => _procedureList; + List _categoriesList = List(); + List get categoriesList => _categoriesList; + List procedureslist = List(); + + Procedures t1 = Procedures( + category: '02', + procedure: '02011002', + ); GetProcedureReqModel _getProcedureReqModel = GetProcedureReqModel( clinicId: 0, @@ -34,15 +44,31 @@ class ProcedureService extends BaseService { }, body: _getProcedureReqModel.toJson()); } - Future postProcedure() async { + Future getCategories() async { + hasError = false; + _categoriesList.clear(); + await baseAppClient.post( + GET_CATEGORISE_PROCEDURE, + onSuccess: (dynamic response, int statusCode) { + _categoriesList + .add(CategoriseProcedureModel.fromJson(response['listCategories'])); + }, + onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, + ); + } + + Future postProcedure(PostProcedureReqModel postProcedureReqModel) async { hasError = false; _procedureList.clear(); await baseAppClient.post(POST_PROCEDURE_LIST, onSuccess: (dynamic response, int statusCode) { - _procedureList.add(GetProcedureModel.fromJson(response['ProcedureList'])); + print("Success"); }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; - }, body: _postProcedureReqModel.toJson()); + }, body: postProcedureReqModel.toJson()); } } diff --git a/lib/core/viewModel/SOAP_view_model.dart b/lib/core/viewModel/SOAP_view_model.dart index e8cde824..422f554a 100644 --- a/lib/core/viewModel/SOAP_view_model.dart +++ b/lib/core/viewModel/SOAP_view_model.dart @@ -5,6 +5,7 @@ import 'package:doctor_app_flutter/models/SOAP/Allergy_model.dart'; import 'package:doctor_app_flutter/models/SOAP/get_Allergies_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_allergy_request_model.dart'; +import 'package:doctor_app_flutter/models/SOAP/post_assessment_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_chief_complaint_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_histories_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_physical_exam_request_model.dart'; @@ -34,6 +35,7 @@ class SOAPViewModel extends BaseViewModel { List get physicalExaminationList => _SOAPService.physicalExaminationList; List get listOfDiagnosisType => _SOAPService.listOfDiagnosisType; List get listOfDiagnosisCondition => _SOAPService.listOfDiagnosisCondition; + List get listOfICD10 => _SOAPService.listOfICD10; @@ -107,5 +109,15 @@ class SOAPViewModel extends BaseViewModel { setState(ViewState.Idle); } + Future postAssessment(PostAssessmentRequestModel postAssessmentRequestModel) async { + setState(ViewState.BusyLocal); + await _SOAPService.postAssessment(postAssessmentRequestModel); + if (_SOAPService.hasError) { + error = _SOAPService.error; + setState(ViewState.ErrorLocal); + } else + setState(ViewState.Idle); + } + } diff --git a/lib/core/viewModel/procedure_View_model.dart b/lib/core/viewModel/procedure_View_model.dart index f65c0b2e..13e18ed3 100644 --- a/lib/core/viewModel/procedure_View_model.dart +++ b/lib/core/viewModel/procedure_View_model.dart @@ -1,5 +1,7 @@ import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart'; import 'package:doctor_app_flutter/core/model/procedure/get_procedure_model.dart'; +import 'package:doctor_app_flutter/core/model/procedure/post_procedure_req_model.dart'; import 'package:doctor_app_flutter/core/service/procedure_service.dart'; import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; import 'package:doctor_app_flutter/locator.dart'; @@ -8,6 +10,8 @@ class ProcedureViewModel extends BaseViewModel { bool hasError = false; ProcedureService _procedureService = locator(); List get procedureList => _procedureService.procedureList; + List get categoriesList => + _procedureService.categoriesList; Future getProcedure() async { hasError = false; @@ -20,4 +24,28 @@ class ProcedureViewModel extends BaseViewModel { } else setState(ViewState.Idle); } + + Future getCategories() async { + hasError = false; + //_insuranceCardService.clearInsuranceCard(); + setState(ViewState.Busy); + await _procedureService.getCategories(); + if (_procedureService.hasError) { + error = _procedureService.error; + setState(ViewState.ErrorLocal); + } else + setState(ViewState.Idle); + } + + Future postProcedure(PostProcedureReqModel postProcedureReqModel) async { + hasError = false; + //_insuranceCardService.clearInsuranceCard(); + setState(ViewState.Busy); + await _procedureService.postProcedure(postProcedureReqModel); + if (_procedureService.hasError) { + error = _procedureService.error; + setState(ViewState.ErrorLocal); + } else + setState(ViewState.Idle); + } } diff --git a/lib/core/viewModel/project_view_model.dart b/lib/core/viewModel/project_view_model.dart index 267f823a..1448fb47 100644 --- a/lib/core/viewModel/project_view_model.dart +++ b/lib/core/viewModel/project_view_model.dart @@ -101,7 +101,7 @@ class ProjectViewModel with ChangeNotifier { localRes = response; }, onFailure: (String error, int statusCode) { throw error; - }, body: {}); + }, body: Map()); return Future.value(localRes); } catch (error) { @@ -111,18 +111,18 @@ class ProjectViewModel with ChangeNotifier { } void getProfile() async { - Map profile = await sharedPref.getObj(DOCTOR_PROFILE); - DoctorProfileModel doctorProfile = new DoctorProfileModel.fromJson(profile); - ProfileReqModel docInfo = new ProfileReqModel( - doctorID: doctorProfile.doctorID, - clinicID: doctorProfile.clinicID, - license: true, - projectID: doctorProfile.projectID, - tokenID: '', - languageID: 2); + // Map profile = await sharedPref.getObj(DOCTOR_PROFILE); + // DoctorProfileModel doctorProfile = new DoctorProfileModel.fromJson(profile); + // ProfileReqModel docInfo = new ProfileReqModel( + // doctorID: doctorProfile.doctorID, + // clinicID: doctorProfile.clinicID, + // license: true, + // projectID: doctorProfile.projectID, + // tokenID: '', + // languageID: 2); Provider.of(AppGlobal.CONTEX, listen: false) - .getDocProfiles(docInfo.toJson()) + .getDocProfiles(ProfileReqModel().toJson()) .then((res) async { sharedPref.setObj(DOCTOR_PROFILE, res['DoctorProfileList'][0]); }).catchError((err) { diff --git a/lib/models/SOAP/master_key_model.dart b/lib/models/SOAP/master_key_model.dart index 79615f82..a1c32039 100644 --- a/lib/models/SOAP/master_key_model.dart +++ b/lib/models/SOAP/master_key_model.dart @@ -1,18 +1,18 @@ class MasterKeyModel { String alias; String aliasN; - int code; - Null description; - Null detail1; - Null detail2; - Null detail3; - Null detail4; - Null detail5; + dynamic code; + dynamic description; + dynamic detail1; + dynamic detail2; + dynamic detail3; + dynamic detail4; + dynamic detail5; int groupID; int id; String nameAr; String nameEn; - Null remarks; + dynamic remarks; int typeId; String valueList; diff --git a/lib/models/SOAP/post_assessment_request_model.dart b/lib/models/SOAP/post_assessment_request_model.dart new file mode 100644 index 00000000..c8a1ebfd --- /dev/null +++ b/lib/models/SOAP/post_assessment_request_model.dart @@ -0,0 +1,69 @@ +class PostAssessmentRequestModel { + int patientMRN; + int appointmentNo; + int episodeId; + List icdCodeDetails; + + PostAssessmentRequestModel( + {this.patientMRN, + this.appointmentNo, + this.episodeId, + this.icdCodeDetails}); + + PostAssessmentRequestModel.fromJson(Map json) { + patientMRN = json['PatientMRN']; + appointmentNo = json['AppointmentNo']; + episodeId = json['EpisodeId']; + if (json['icdCodeDetails'] != null) { + icdCodeDetails = new List(); + json['icdCodeDetails'].forEach((v) { + icdCodeDetails.add(new IcdCodeDetails.fromJson(v)); + }); + } + } + + Map toJson() { + final Map data = new Map(); + data['PatientMRN'] = this.patientMRN; + data['AppointmentNo'] = this.appointmentNo; + data['EpisodeId'] = this.episodeId; + if (this.icdCodeDetails != null) { + data['icdCodeDetails'] = + this.icdCodeDetails.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class IcdCodeDetails { + String icdcode10Id; + int conditionId; + int diagnosisTypeId; + bool complexDiagnosis; + String remarks; + + IcdCodeDetails( + {this.icdcode10Id, + this.conditionId, + this.diagnosisTypeId, + this.complexDiagnosis, + this.remarks}); + + IcdCodeDetails.fromJson(Map json) { + icdcode10Id = json['icdcode10Id']; + conditionId = json['conditionId']; + diagnosisTypeId = json['diagnosisTypeId']; + complexDiagnosis = json['complexDiagnosis']; + remarks = json['remarks']; + } + + Map toJson() { + final Map data = new Map(); + data['icdcode10Id'] = this.icdcode10Id; + data['conditionId'] = this.conditionId; + data['diagnosisTypeId'] = this.diagnosisTypeId; + data['complexDiagnosis'] = this.complexDiagnosis; + data['remarks'] = this.remarks; + return data; + } +} diff --git a/lib/root_page.dart b/lib/root_page.dart index fe35a246..0f44dc4d 100644 --- a/lib/root_page.dart +++ b/lib/root_page.dart @@ -22,7 +22,7 @@ class RootPage extends StatelessWidget { ); break; case APP_STATUS.UNAUTHENTICATED: - return Loginsreen(); + return LandingPage(); break; case APP_STATUS.AUTHENTICATED: return LandingPage(); diff --git a/lib/routes.dart b/lib/routes.dart index 8792e206..52183a63 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -82,6 +82,7 @@ const String PATIENT_INSURANCE_APPROVALS = const String VITAL_SIGN_DETAILS = 'patients/vital-sign-details'; const String CREATE_EPISODE = 'patients/create-episode'; const String PATIENT_VITAL_SIGN = 'patients/vital-sign-data'; +const String UPDATE_EPISODE = 'patients/create-episode'; const String PATIENT_ADMISSION_REQUEST = 'patients/admission-request'; const String BODY_MEASUREMENTS = 'patients/body-measurements'; @@ -93,6 +94,7 @@ const String ORDER_PROCEDURE = 'procedure/procedure'; // const String LIVECARE_END_DIALOG = 'video-call/EndCallDialogBox'; const String PATIENT_SICKLEAVE = 'patients/patient_sickleave'; const String ADD_SICKLEAVE = 'add-sickleave'; +//todo: change the routing way. var routes = { ROOT: (_) => RootPage(), HOME: (_) => LandingPage(), @@ -128,6 +130,7 @@ var routes = { PATIENT_VITAL_SIGN: (_) => PatientVitalSignScreen(), PATIENT_ADMISSION_REQUEST: (_) => AdmissionRequestDetailScreen(), CREATE_EPISODE: (_) => AddSOAPIndex(), + UPDATE_EPISODE: (_) => AddSOAPIndex(isUpdate: true,), BODY_MEASUREMENTS: (_) => VitalSignItemDetailsScreen(), IN_PATIENT_PRESCRIPTIONS_DETAILS: (_) => InpatientPrescriptionDetailsScreen(), // VIDEO_CALL: (_) => VideoCallPage(patientData: null), diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index b6bbc6cf..c55b5afa 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -115,68 +115,69 @@ class _DashboardScreenState extends State { SizedBox( height: 4, ), - InkWell( - onTap: () async { - showCupertinoPicker( - decKey: '', - context: context, - actionList: projectsProvider - .doctorClinicsList); - }, - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Container( - child: AppText( - authProvider.selectedClinicName != - null - ? authProvider - .selectedClinicName - : authProvider.doctorProfile - .clinicDescription, - fontSize: - SizeConfig.textMultiplier * - 1.7, - color: Colors.white, - textAlign: TextAlign.center, - ), - alignment: projectsProvider.isArabic - ? Alignment.topRight - : Alignment.topLeft, - ), - Row( - mainAxisAlignment: - MainAxisAlignment.start, - mainAxisSize: MainAxisSize.max, - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - InkWell( - child: Container( - margin: EdgeInsets.only( - left: 5, - top: projectsProvider - .isArabic - ? 0 - : 5, - right: 10, - bottom: projectsProvider - .isArabic - ? 15 - : 7), - child: Icon( - DoctorApp.sync_icon, - color: Colors.white, - size: SizeConfig - .textMultiplier * - 1.8, - )), - ), - ], - ), - ]), - ), + //TODO change it edit By Jammal + // InkWell( + // onTap: () async { + // showCupertinoPicker( + // decKey: '', + // context: context, + // actionList: projectsProvider + // .doctorClinicsList); + // }, + // child: Row( + // mainAxisAlignment: + // MainAxisAlignment.spaceBetween, + // children: [ + // Container( + // child: AppText( + // authProvider.selectedClinicName != + // null + // ? authProvider + // .selectedClinicName + // : authProvider.doctorProfile + // .clinicDescription, + // fontSize: + // SizeConfig.textMultiplier * + // 1.7, + // color: Colors.white, + // textAlign: TextAlign.center, + // ), + // alignment: projectsProvider.isArabic + // ? Alignment.topRight + // : Alignment.topLeft, + // ), + // Row( + // mainAxisAlignment: + // MainAxisAlignment.start, + // mainAxisSize: MainAxisSize.max, + // crossAxisAlignment: + // CrossAxisAlignment.start, + // children: [ + // InkWell( + // child: Container( + // margin: EdgeInsets.only( + // left: 5, + // top: projectsProvider + // .isArabic + // ? 0 + // : 5, + // right: 10, + // bottom: projectsProvider + // .isArabic + // ? 15 + // : 7), + // child: Icon( + // DoctorApp.sync_icon, + // color: Colors.white, + // size: SizeConfig + // .textMultiplier * + // 1.8, + // )), + // ), + // ], + // ), + // ]), + // ), ], ), ]), diff --git a/lib/screens/prescription/prescription_screen.dart b/lib/screens/prescription/prescription_screen.dart index 4ccebf39..e29bcefc 100644 --- a/lib/screens/prescription/prescription_screen.dart +++ b/lib/screens/prescription/prescription_screen.dart @@ -76,7 +76,7 @@ class _NewPrescriptionScreenState extends State { fontWeight: FontWeight.bold, ), SizedBox( - width: 20, + width: 5.0, ), AppText( patient.patientId.toString(), @@ -111,7 +111,7 @@ class _NewPrescriptionScreenState extends State { InkWell( onTap: () { addPrescriptionForm(context); - //model.postPrescription(); + model.postPrescription(); }, child: CircleAvatar( radius: 65, @@ -195,6 +195,7 @@ class _NewPrescriptionScreenState extends State { ), onTap: () { addPrescriptionForm(context); + model.postPrescription(); }, ), SizedBox( diff --git a/lib/screens/procedures/procedure_screen.dart b/lib/screens/procedures/procedure_screen.dart index 3af63004..59cf5bdf 100644 --- a/lib/screens/procedures/procedure_screen.dart +++ b/lib/screens/procedures/procedure_screen.dart @@ -1,10 +1,14 @@ +import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/model/procedure/post_procedure_req_model.dart'; import 'package:doctor_app_flutter/core/viewModel/prescription_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.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/screens/base/base_view.dart'; +import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient_profile_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart'; @@ -24,6 +28,7 @@ class ProcedureScreen extends StatefulWidget { class _ProcedureScreenState extends State { int testNum = 1; PatiantInformtion patient; + TextEditingController procedureController = TextEditingController(); @override Widget build(BuildContext context) { final routeArgs = ModalRoute.of(context).settings.arguments as Map; @@ -72,7 +77,7 @@ class _ProcedureScreenState extends State { fontWeight: FontWeight.bold, ), SizedBox( - width: 20, + width: 5.0, ), AppText( patient.patientId.toString(), @@ -376,62 +381,99 @@ class _ProcedureScreenState extends State { } } +postProcedure({ProcedureViewModel model}) async { + model = new ProcedureViewModel(); + PostProcedureReqModel postProcedureReqModel = new PostProcedureReqModel(); + List controls = List(); + List controlsProcedure = List(); + + postProcedureReqModel.appointmentNo = 2016054575; + + postProcedureReqModel.episodeID = 200012166; + postProcedureReqModel.patientMRN = 3120725; + postProcedureReqModel.vidaAuthTokenID = + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxNDg1IiwianRpIjoiZjQ4YTk0OTQtYTczZS00MDI3LWI2MjgtNzc4MjAwMzUyYWEzIiwiZW1haWwiOiJNb2hhbWVkLlJlc3dhbkBjbG91ZHNvbHV0aW9uLXNhLmNvbSIsImlkIjoiMTQ4NSIsIk5hbWUiOiJTSEFLRVJBIFBBUlZFRU4gKFVTRUQgQlkgRVNFUlZJQ0VTKSIsIkVtcGxveWVlSWQiOiIxNDg1IiwiRmFjaWxpdHlHcm91cElkIjoiMDEwMjY2IiwiRmFjaWxpdHlJZCI6IjE1IiwiUGhhcmFtY3lGYWNpbGl0eUlkIjoiNTUiLCJJU19QSEFSTUFDWV9DT05ORUNURUQiOiJUcnVlIiwiRG9jdG9ySWQiOiIxNDg1IiwiU0VTU0lPTklEIjoiMjE1ODUyMTAiLCJDbGluaWNJZCI6IjMiLCJyb2xlIjoiRE9DVE9SUyIsIm5iZiI6MTYwODM2NDU2OCwiZXhwIjoxNjA5MjI4NTY4LCJpYXQiOjE2MDgzNjQ1Njh9.YLbvq5nxPn8o9ZYkcbc5YAX7Jy23Mm0s33oRmE8GHDI'; + + controls.add( + Controls(code: 'Remarks', controlValue: 'Testing'), + ); + controlsProcedure.add( + Procedures(category: "02", procedure: "02011002", controls: controls)); + postProcedureReqModel.procedures = controlsProcedure; + + await model.postProcedure(postProcedureReqModel); + DrAppToastMsg.showSuccesToast('Procedure had been added'); + if (model.state == ViewState.ErrorLocal) { + helpers.showErrorToast(model.error); + } +} + void addSelectedProcedure(context) { + TextEditingController procedureController = TextEditingController(); showModalBottomSheet( context: context, builder: (BuildContext bc) { - return SingleChildScrollView( - child: Container( - height: 490, - child: Padding( - padding: EdgeInsets.all(12.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AppText( - 'Select Procedure'.toUpperCase(), - fontWeight: FontWeight.w900, - ), - SizedBox( - height: 9.0, - ), - Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Container( - decoration: BoxDecoration( - borderRadius: - BorderRadius.all(Radius.circular(6.0)), - border: Border.all( - width: 1.0, color: HexColor("#CCCCCC"))), - child: AppTextFormField( - labelText: 'Add Delected Procedures'.toUpperCase(), - borderColor: Colors.white, - textInputType: TextInputType.text, - inputFormatter: ONLY_LETTERS, + return BaseView( + //onModelReady: (model) => model.getCategories(), + builder: + (BuildContext context, ProcedureViewModel model, Widget child) => + SingleChildScrollView( + child: Container( + height: 490, + child: Padding( + padding: EdgeInsets.all(12.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + 'Select Procedure'.toUpperCase(), + fontWeight: FontWeight.w900, + ), + // Text(model.categoriesList[0].categoryName), + SizedBox( + height: 9.0, + ), + Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + decoration: BoxDecoration( + borderRadius: + BorderRadius.all(Radius.circular(6.0)), + border: Border.all( + width: 1.0, color: HexColor("#CCCCCC"))), + child: AppTextFormField( + labelText: 'Add Delected Procedures'.toUpperCase(), + borderColor: Colors.white, + textInputType: TextInputType.text, + inputFormatter: ONLY_LETTERS, + controller: procedureController, + ), ), - ), - SizedBox( - height: 280.0, - ), - Container( - margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), - child: Wrap( - alignment: WrapAlignment.center, - children: [ - AppButton( - title: TranslationBase.of(context).addMedication, - // onPressed: () { - // Navigator.pop(context); - // prescriptionWarning(context); - // }, - ), - ], + SizedBox( + height: 280.0, + ), + Container( + margin: + EdgeInsets.all(SizeConfig.widthMultiplier * 5), + child: Wrap( + alignment: WrapAlignment.center, + children: [ + AppButton( + title: + TranslationBase.of(context).addMedication, + onPressed: () { + Navigator.pop(context); + postProcedure(); + }, + ), + ], + ), ), - ), - ], - ) - ], + ], + ) + ], + ), ), ), ), diff --git a/lib/widgets/patients/profile/SOAP/add_SOAP_index.dart b/lib/widgets/patients/profile/SOAP/add_SOAP_index.dart index 459c7e28..09d86fd8 100644 --- a/lib/widgets/patients/profile/SOAP/add_SOAP_index.dart +++ b/lib/widgets/patients/profile/SOAP/add_SOAP_index.dart @@ -23,6 +23,9 @@ import '../patient_profile_widget.dart'; import 'steps_widget.dart'; class AddSOAPIndex extends StatefulWidget { + final bool isUpdate; + + const AddSOAPIndex({Key key, this.isUpdate}) : super(key: key); @override _AddSOAPIndexState createState() => _AddSOAPIndexState(); } diff --git a/lib/widgets/patients/profile/SOAP/assessment_page.dart b/lib/widgets/patients/profile/SOAP/assessment_page.dart index 3bd9f0f1..22778913 100644 --- a/lib/widgets/patients/profile/SOAP/assessment_page.dart +++ b/lib/widgets/patients/profile/SOAP/assessment_page.dart @@ -1,8 +1,11 @@ +import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart'; +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; import 'package:doctor_app_flutter/models/SOAP/my_selected_assement.dart'; +import 'package:doctor_app_flutter/models/SOAP/post_assessment_request_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/widgets/shared/Text.dart'; @@ -236,7 +239,7 @@ class _AssessmentPageState extends State { height: 6, ), AppText( - "Some short remark about the allergy", + widget.mySelectedAssessment.remark, fontSize: 10, color: Colors.grey, ), @@ -268,7 +271,9 @@ class _AssessmentPageState extends State { Column( children: [ InkWell( - onTap: () {}, + onTap: () { + openAssessmentDialog(context); + }, child: Icon(EvaIcons .edit2Outline), ) @@ -283,24 +288,55 @@ class _AssessmentPageState extends State { isExpand: isAssessmentExpand, ), DividerWithSpacesAround( - height: 30, - ), - AppButton( - title: TranslationBase - .of(context) - .next, - onPressed: () { - widget.changePageViewIndex(3); - }, - ), - SizedBox( - height: 30, - ), - ], + height: 30, ), - ), + AppButton( + title: TranslationBase.of(context).next, + loading: model.state == ViewState.BusyLocal, + onPressed: () async { + await submitAssessment(model); + }, + ), + SizedBox( + height: 30, + ), + ], ), - ))); + ), + ), + ))); + } + + submitAssessment(SOAPViewModel model) async { + // if (widget.mySelectedAssessment.selectedDiagnosisCondition != null && + // widget.mySelectedAssessment.selectedDiagnosisType != null) { + // PostAssessmentRequestModel postAssessmentRequestModel = + // new PostAssessmentRequestModel( + // patientMRN: 3120690, + // episodeId: 200012117, + // appointmentNo: 2016054573, + // icdCodeDetails: [ + // new IcdCodeDetails( + // remarks: widget.mySelectedAssessment.remark, + // complexDiagnosis: true, + // conditionId: + // widget.mySelectedAssessment.selectedDiagnosisCondition.id, + // diagnosisTypeId: + // widget.mySelectedAssessment.selectedDiagnosisType.id, + // icdcode10Id: "1") + // ]); + // + // await model.postAssessment(postAssessmentRequestModel); + // + // if (model.state == ViewState.ErrorLocal) { + // helpers.showErrorToast(model.error); + // } else { + // widget.changePageViewIndex(3); + // } + // } else { + // helpers.showErrorToast('Please add required field correctly'); + // } + widget.changePageViewIndex(3); } openAssessmentDialog(BuildContext context) { @@ -334,14 +370,15 @@ class AddAssessmentDetails extends StatefulWidget { } class _AddAssessmentDetailsState extends State { - MasterKeyModel _selectedDiagnosisCondition; - MasterKeyModel _selectedDiagnosisType; + // MasterKeyModel _selectedDiagnosisCondition; + // MasterKeyModel _selectedDiagnosisType; TextEditingController remarkController = TextEditingController(); TextEditingController appointmentIdController = TextEditingController( text: "234567"); @override Widget build(BuildContext context) { + remarkController.text = widget.mySelectedAssessment.remark??""; final screenSize = MediaQuery .of(context) .size; @@ -379,6 +416,9 @@ class _AddAssessmentDetailsState extends State { if (model.listOfDiagnosisType.length == 0) { await model.getMasterLookup(MasterKeysService.DiagnosisType); } + if (model.listOfICD10.length == 0) { + await model.getMasterLookup(MasterKeysService.ICD10); + } }, builder: (_, model, w) => AppScaffold( @@ -428,45 +468,48 @@ class _AddAssessmentDetailsState extends State { Container( height: screenSize.height * 0.070, child: InkWell( - onTap: model.listOfDiagnosisCondition != - null - ? () { - MasterKeyDailog dialog = MasterKeyDailog( - list: model.listOfDiagnosisCondition, - okText: TranslationBase - .of(context) - .ok, - okFunction: ( - MasterKeyModel selectedValue) { - setState(() { - _selectedDiagnosisCondition = - selectedValue; - widget.mySelectedAssessment - .selectedDiagnosisCondition = - selectedValue; - }); - }, - ); - showDialog( - barrierDismissible: false, - context: context, - builder: (BuildContext context) { - return dialog; - }, - ); - } - : null, - child: TextField( - decoration: textFieldSelectorDecoration( - "Condition", - _selectedDiagnosisCondition != null - ? _selectedDiagnosisCondition - .nameEn - : null, - true), - enabled: false, - ), - ), + onTap: model.listOfICD10 != null + ? () { + MasterKeyDailog dialog = MasterKeyDailog( + isICD: true, + list: model.listOfICD10, + selectedValue: widget + .mySelectedAssessment + .selectedICD, + okText: TranslationBase + .of(context) + .ok, + okFunction: + (MasterKeyModel selectedValue) { + setState(() { + widget.mySelectedAssessment + .selectedICD = + selectedValue; + }); + }, + ); + showDialog( + barrierDismissible: false, + context: context, + builder: (BuildContext context) { + return dialog; + }, + ); + } + : null, + child: TextField( + decoration: textFieldSelectorDecoration( + "Name / ICD", + widget.mySelectedAssessment + .selectedICD != + null + ? widget.mySelectedAssessment + .selectedICD.nameEn + : null, + true), + enabled: false, + ), + ), ), SizedBox( height: 10, @@ -485,7 +528,8 @@ class _AddAssessmentDetailsState extends State { okFunction: ( MasterKeyModel selectedValue) { setState(() { - _selectedDiagnosisCondition = + widget.mySelectedAssessment + .selectedDiagnosisCondition = selectedValue; }); }, @@ -502,8 +546,10 @@ class _AddAssessmentDetailsState extends State { child: TextField( decoration: textFieldSelectorDecoration( "Condition", - _selectedDiagnosisCondition != null - ? _selectedDiagnosisCondition + widget.mySelectedAssessment + .selectedDiagnosisCondition != null + ? widget.mySelectedAssessment + .selectedDiagnosisCondition .nameEn : null, true), @@ -527,11 +573,11 @@ class _AddAssessmentDetailsState extends State { okFunction: ( MasterKeyModel selectedValue) { setState(() { - _selectedDiagnosisType = - selectedValue; + // _selectedDiagnosisType = + // selectedValue; widget.mySelectedAssessment .selectedDiagnosisType = - _selectedDiagnosisType; + selectedValue; }); }, ); @@ -547,8 +593,10 @@ class _AddAssessmentDetailsState extends State { child: TextField( decoration: textFieldSelectorDecoration( "Type", - _selectedDiagnosisType != null - ? _selectedDiagnosisType.nameEn + widget.mySelectedAssessment + .selectedDiagnosisType != null + ? widget.mySelectedAssessment + .selectedDiagnosisType.nameEn : null, true), enabled: false, diff --git a/lib/widgets/patients/profile/SOAP/objective_page.dart b/lib/widgets/patients/profile/SOAP/objective_page.dart index add9ca16..8d12e1c9 100644 --- a/lib/widgets/patients/profile/SOAP/objective_page.dart +++ b/lib/widgets/patients/profile/SOAP/objective_page.dart @@ -320,43 +320,47 @@ class _ObjectivePageState extends State { } submitObjectivePage(SOAPViewModel model) async { - if(widget.mySelectedExamination.isNotEmpty){ - PostPhysicalExamRequestModel postPhysicalExamRequestModel = new PostPhysicalExamRequestModel(); - widget.mySelectedExamination.forEach((exam) { - if (postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM == - null) - postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM = []; + // if(widget.mySelectedExamination.isNotEmpty){ + // PostPhysicalExamRequestModel postPhysicalExamRequestModel = new PostPhysicalExamRequestModel(); + // widget.mySelectedExamination.forEach((exam) { + // if (postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM == + // null) + // postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM = []; + // + // postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM.add( + // ListHisProgNotePhysicalExaminationVM( + // patientMRN: 3120690, + // episodeId: 200012117, + // appointmentNo: 2016054573, + // remarks: exam.remark ?? '', + // createdBy: 1485, + // createdOn: DateTime.now().toIso8601String(), + // editedBy: 1485, + // editedOn: DateTime.now().toIso8601String(), + // examId: exam.selectedExamination.id, + // examType: exam.selectedExamination.typeId, + // isAbnormal: exam.isAbnormal, + // isNormal: exam.isNormal, + // masterDescription: exam.selectedExamination, + // notExamined: false + // + // )); + // }); + // + // await model.postPhysicalExam(postPhysicalExamRequestModel); + // + // if (model.state == ViewState.ErrorLocal) { + // helpers.showErrorToast(model.error); + // } else { + // widget.changePageViewIndex(2); + // } + // } else { + // helpers.showErrorToast('Please add required field correctly'); + // } - postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM.add( - ListHisProgNotePhysicalExaminationVM( - patientMRN: 3120690, - episodeId: 200012117, - appointmentNo: 2016054573, - remarks: exam.remark ?? '', - createdBy: 1485, - createdOn: DateTime.now().toIso8601String(), - editedBy: 1485, - editedOn: DateTime.now().toIso8601String(), - examId: exam.selectedExamination.id, - examType: exam.selectedExamination.typeId, - isAbnormal: exam.isAbnormal, - isNormal: exam.isNormal, - masterDescription: exam.selectedExamination, - notExamined: false - - )); - }); - - await model.postPhysicalExam(postPhysicalExamRequestModel); + widget.changePageViewIndex(2); - if (model.state == ViewState.ErrorLocal) { - helpers.showErrorToast(model.error); - } else { - } - } - // TODO move it back to else stat when it work. - widget.changePageViewIndex(2); } diff --git a/lib/widgets/patients/profile/SOAP/steps_widget.dart b/lib/widgets/patients/profile/SOAP/steps_widget.dart index 863da3a9..d5cb7ddc 100644 --- a/lib/widgets/patients/profile/SOAP/steps_widget.dart +++ b/lib/widgets/patients/profile/SOAP/steps_widget.dart @@ -1,5 +1,6 @@ import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -70,10 +71,11 @@ class StepsWidget extends StatelessWidget { SizedBox( height: index == 0 ? 5 : 10, ), - Texts('SUBJECTIVE', - variant: "bodyText", - bold: true, - color: Colors.black), + AppText( + "SUBJECTIVE", + fontWeight: FontWeight.bold, + fontSize: 14, + ), ], ), ), @@ -82,7 +84,7 @@ class StepsWidget extends StatelessWidget { top: index == 1 ? 15 : 30, left: MediaQuery.of(context).size.width * 0.28, child: InkWell( - onTap: () => index >= 2 ? changeCurrentTab(1) : null, + onTap: () => index >= 1 ? changeCurrentTab(1) : null, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -119,10 +121,11 @@ class StepsWidget extends StatelessWidget { SizedBox( height: index == 1 ? 5 : 10, ), - Texts('OBJECTIVE', - variant: "bodyText", - bold: true, - color: Colors.black), + AppText( + "OBJECTIVE", + fontWeight: FontWeight.bold, + fontSize: 14, + ), ], ), ), @@ -131,7 +134,10 @@ class StepsWidget extends StatelessWidget { top: index == 2 ? 15 : 30, left: MediaQuery.of(context).size.width * 0.52, child: InkWell( - onTap: () => index >= 2 ? changeCurrentTab(3) : null, + onTap: () { + if(index >= 3) + changeCurrentTab(2); + }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -168,10 +174,11 @@ class StepsWidget extends StatelessWidget { SizedBox( height: index == 2 ? 5 : 10, ), - Texts('ASSESSMENT', - variant: "bodyText", - bold: true, - color: Colors.black), + AppText( + "ASSESSMENT", + fontWeight: FontWeight.bold, + fontSize: 14, + ), ], ), ), @@ -212,15 +219,20 @@ class StepsWidget extends StatelessWidget { ? Colors.white : Colors.grey, ), - ), + ) ), SizedBox( height: index == 3 ? 5 : 10, ), - Texts('PLAN', - variant: "bodyText", - bold: true, - color: Colors.black), + Container( + margin: EdgeInsets.only(left: index == 3? 15:0), + child: AppText( + "PLAN", + fontWeight: FontWeight.bold, + textAlign: TextAlign.center, + fontSize: 14, + ), + ), ], ), ), @@ -274,18 +286,19 @@ class StepsWidget extends StatelessWidget { color: index == 0 ? Colors.black : index > 0 - ? Colors.white - : Colors.grey, + ? Colors.white + : Colors.grey, ), ), ), SizedBox( height: index == 0 ? 5 : 10, ), - Texts('SUBJECTIVE', - variant: "bodyText", - bold: true, - color: Colors.black), + AppText( + "SUBJECTIVE", + fontWeight: FontWeight.bold, + fontSize: 16, + ), ], ), ), @@ -331,10 +344,11 @@ class StepsWidget extends StatelessWidget { SizedBox( height: index == 1 ? 5 : 10, ), - Texts('OBJECTIVE', - variant: "bodyText", - bold: true, - color: Colors.black), + AppText( + "OBJECTIVE", + fontWeight: FontWeight.bold, + fontSize: 14, + ), ], ), ), @@ -343,7 +357,7 @@ class StepsWidget extends StatelessWidget { top: index == 2 ? 15 : 30, right: MediaQuery.of(context).size.width * 0.52, child: InkWell( - onTap: () => index >= 2 ? changeCurrentTab(3) : null, + onTap: () => index >= 3 ? changeCurrentTab(2) : null, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -383,10 +397,11 @@ class StepsWidget extends StatelessWidget { Padding( padding: const EdgeInsets.only(right: 2), - child: Texts('ASSESSMENT', - variant: "bodyText", - bold: true, - color: Colors.black), + child: AppText( + "ASSESSMENT", + fontWeight: FontWeight.bold, + fontSize: 14, + ), ), ], ), @@ -433,10 +448,14 @@ class StepsWidget extends StatelessWidget { SizedBox( height: index == 3 ? 5 : 10, ), - Texts('PLAN', - variant: "bodyText", - bold: true, - color: Colors.black), + Container( + margin: EdgeInsets.only(right:index == 3? 15:0), + child: AppText( + "PLAN", + fontWeight: FontWeight.bold, + fontSize: 14, + ), + ), ], ), ), diff --git a/lib/widgets/patients/profile/SOAP/subjective/subjective_page.dart b/lib/widgets/patients/profile/SOAP/subjective/subjective_page.dart index 9100cb76..d4ed9c86 100644 --- a/lib/widgets/patients/profile/SOAP/subjective/subjective_page.dart +++ b/lib/widgets/patients/profile/SOAP/subjective/subjective_page.dart @@ -168,11 +168,6 @@ class _SubjectivePageState extends State { variant: isHistoryExpand ? "bodyText" : '', bold: isHistoryExpand ? true : false, color: Colors.black), - Icon( - FontAwesomeIcons.asterisk, - color: AppGlobal.appPrimaryColor, - size: 12, - ) ], ), InkWell( @@ -214,11 +209,6 @@ class _SubjectivePageState extends State { variant: isAllergiesExpand ? "bodyText" : '', bold: isAllergiesExpand ? true : false, color: Colors.black), - Icon( - FontAwesomeIcons.asterisk, - color: AppGlobal.appPrimaryColor, - size: 12, - ) ], ), InkWell( @@ -277,13 +267,48 @@ class _SubjectivePageState extends State { {SOAPViewModel model, List myAllergiesList, List myHistoryList}) async { - await postChiefComplaint(model: model); - if (myHistoryList.length != 0) - await postHistories(model: model, myHistoryList: myHistoryList); - if (myAllergiesList.length != 0) - await postAllergy(myAllergiesList: myAllergiesList, model: model); + formKey.currentState.save(); + formKey.currentState.validate(); widget.changePageViewIndex(1); + + // if(complaintsController.text.isNotEmpty && illnessController.text.isNotEmpty && complaintsController.text.length>25) { + // await postChiefComplaint(model: model); + // if (model.state == ViewState.ErrorLocal) { + // helpers.showErrorToast(model.error); + // } else { + // if (myHistoryList.length != 0) { + // await postHistories(model: model, myHistoryList: myHistoryList); + // if (model.state == ViewState.ErrorLocal) { + // helpers.showErrorToast(model.error); + // } else { + // if (myAllergiesList.length != 0) { + // await postAllergy(myAllergiesList: myAllergiesList, model: model); + // if (model.state == ViewState.ErrorLocal) { + // helpers.showErrorToast(model.error); + // } else { + // widget.changePageViewIndex(1); + // } + // } + // + // } + // } else { + // if (myAllergiesList.length != 0) { + // await postAllergy(myAllergiesList: myAllergiesList, model: model); + // if (model.state == ViewState.ErrorLocal) { + // helpers.showErrorToast(model.error); + // } else { + // widget.changePageViewIndex(1); + // } + // } else { + // widget.changePageViewIndex(1); + // } + // } + // } + // } else { + // helpers.showErrorToast('Please add required field correctly'); + // } + } postAllergy( @@ -362,9 +387,6 @@ class _SubjectivePageState extends State { await model.postChiefComplaint(postChiefComplaintRequestModel); - if (model.state == ViewState.ErrorLocal) { - helpers.showErrorToast(model.error); - } } } diff --git a/lib/widgets/patients/profile/profile-welcome-widget.dart b/lib/widgets/patients/profile/profile-welcome-widget.dart index fae705f4..90141080 100644 --- a/lib/widgets/patients/profile/profile-welcome-widget.dart +++ b/lib/widgets/patients/profile/profile-welcome-widget.dart @@ -43,7 +43,8 @@ final double height; mainAxisAlignment: MainAxisAlignment.start, children: [ AppText( - 'Dr. ${authProvider.doctorProfile.doctorName}', + //TODO change it edit By Jammal + 'Dr. ',//${authProvider.doctorProfile.doctorName}', fontWeight: FontWeight.bold, fontSize: SizeConfig.textMultiplier * 2.5, color: Colors.white, @@ -71,7 +72,9 @@ final double height; height: 50, width: 60, child: Image.network( - authProvider.doctorProfile.doctorImageURL, + //TODO change it edit By Jammal + 'https://cdn.pixabay.com/photo/2015/04/23/22/00/tree-736885__340.jpg' + // authProvider.doctorProfile.doctorImageURL, // fit: BoxFit.fill, ), ), diff --git a/lib/widgets/patients/profile/profile_medical_info_widget.dart b/lib/widgets/patients/profile/profile_medical_info_widget.dart index e76fe406..78334e5f 100644 --- a/lib/widgets/patients/profile/profile_medical_info_widget.dart +++ b/lib/widgets/patients/profile/profile_medical_info_widget.dart @@ -18,6 +18,7 @@ import 'PatientProfileButton.dart'; *@desc: Profile Medical Info Widget */ class ProfileMedicalInfoWidget extends StatelessWidget { + ProfileMedicalInfoWidget({Key key, this.patient}) : super(key: key); PatiantInformtion patient; @override @@ -35,6 +36,13 @@ class ProfileMedicalInfoWidget extends StatelessWidget { nameLine2: "Episode", route: CREATE_EPISODE, icon: 'heartbeat.png'), + PatientProfileButton( + key: key, + patient: patient, + nameLine1: "Update", + nameLine2: "Episode", + route: CREATE_EPISODE, + icon: 'heartbeat.png'), PatientProfileButton( key: key, patient: patient, diff --git a/lib/widgets/shared/dialogs/master_key_dailog.dart b/lib/widgets/shared/dialogs/master_key_dailog.dart index a276c4af..a3be364b 100644 --- a/lib/widgets/shared/dialogs/master_key_dailog.dart +++ b/lib/widgets/shared/dialogs/master_key_dailog.dart @@ -2,16 +2,20 @@ import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:flutter/material.dart'; +// ignore: must_be_immutable class MasterKeyDailog extends StatefulWidget { final List list; final okText; final Function(MasterKeyModel) okFunction; MasterKeyModel selectedValue; + final bool isICD; MasterKeyDailog( {@required this.list, @required this.okText, - @required this.okFunction}); + @required this.okFunction, + this.selectedValue, + this.isICD = false}); @override _MasterKeyDailogState createState() => _MasterKeyDailogState(); @@ -62,17 +66,23 @@ class _MasterKeyDailogState extends State { children: [ ...widget.list .map((item) => RadioListTile( - title: Text(item.nameEn.toString()), - groupValue: widget.selectedValue.id.toString(), - value: item.id.toString(), - activeColor: Colors.blue.shade700, - selected: item.id.toString() == widget.selectedValue.id.toString(), - onChanged: (val) { - setState(() { - widget.selectedValue = item; - }); - }, - )) + title: Text( + '${item.nameEn}' + (widget.isICD ? '/${item.code}' : '')), + groupValue: widget.isICD + ? widget.selectedValue.code.toString() + : widget.selectedValue.id.toString(), + value: widget.isICD ? widget.selectedValue.code.toString() : item + .id.toString(), + activeColor: Colors.blue.shade700, + selected: widget.isICD ? item.code.toString() == + widget.selectedValue.code.toString() : item.id.toString() == + widget.selectedValue.id.toString(), + onChanged: (val) { + setState(() { + widget.selectedValue = item; + }); + }, + )) .toList() ], ),