WD: diagnosis and progress note get and getclininc api added.

update_flutter_3.24_vida_plus_episode_v2
taha.alam 1 year ago
parent 6559dd123f
commit 1976c04e12

@ -342,6 +342,9 @@ const GET_LIST_OF_DIAGNOSIS = 'Services/DoctorApplication.svc/REST/DiagnosisDeta
const EDIT_DIAGNOSIS = 'Services/DoctorApplication.svc/REST/EditDiagnosis'; const EDIT_DIAGNOSIS = 'Services/DoctorApplication.svc/REST/EditDiagnosis';
const RESOLVE_DIAGNOSIS = 'Services/DoctorApplication.svc/REST/DiagnosisResolve';
const GET_CLINIC = 'Services/DoctorApplication.svc/REST/GetDoctorClinicsForVidaPlus';
var selectedPatientType = 1; var selectedPatientType = 1;

@ -1208,11 +1208,13 @@ const Map<String, Map<String, String>> localizedValues = {
"kindlySelectCategory": {"en": "Kindly Select Any Diagnosis Category", "ar":"يرجى اختيار أي فئة تشخيص"}, "kindlySelectCategory": {"en": "Kindly Select Any Diagnosis Category", "ar":"يرجى اختيار أي فئة تشخيص"},
"noRemarks": {"en": "No Remarks", "ar":"لا ملاحظات"}, "noRemarks": {"en": "No Remarks", "ar":"لا ملاحظات"},
"event": {"en": "Event: ", "ar":"حدث: "}, "event": {"en": "Event: ", "ar":"حدث: "},
"editDiagnosis": {"en": "Edit Diagnosis ", "ar":"تحرير التشخيص"},
"selectedDiagnosis": {"en": "Kindly Select Diagnosis", "ar":"يرجى اختيار التشخيص: "}, "selectedDiagnosis": {"en": "Kindly Select Diagnosis", "ar":"يرجى اختيار التشخيص: "},
"selectConditionFirst": {"en": "Kindly Select Diagnosis Condition", "ar":"يرجى اختيار حالة التشخيص: "}, "selectConditionFirst": {"en": "Kindly Select Diagnosis Condition", "ar":"يرجى اختيار حالة التشخيص: "},
"deletedRemarks": {"en": "Deleted Remarks: ", "ar":"ملاحظات محذوفة: "}, "deletedRemarks": {"en": "Deleted Remarks: ", "ar":"ملاحظات محذوفة: "},
"newValue": {"en": "New Value: ", "ar":"قيمة جديدة: "}, "newValue": {"en": "New Value: ", "ar":"قيمة جديدة: "},
"fieldName": {"en": "Field Name: ", "ar":"اسم الحقل: "}, "fieldName": {"en": "Field Name: ", "ar":"اسم الحقل: "},
"noChangeRecorded": {"en": "No Change Recorded Unable To Perform Edit", "ar":"لم يتم تسجيل أي تغيير، غير قادر على إجراء التحرير"},
"oldValue": {"en": "Old Value: ", "ar":"القيمة القديمة: "}, "oldValue": {"en": "Old Value: ", "ar":"القيمة القديمة: "},
"favoriteDiagnosis": {"en": "Favorite Diagnosis", "ar":"التشخيص المفضل"}, "favoriteDiagnosis": {"en": "Favorite Diagnosis", "ar":"التشخيص المفضل"},
"addToFavorite": {"en": "Add To Favorite", "ar":"إضافة إلى المفضلة"}, "addToFavorite": {"en": "Add To Favorite", "ar":"إضافة إلى المفضلة"},

@ -107,6 +107,61 @@ class PatientPreviousDiagnosis {
}); });
} }
} }
Map<String, dynamic> toJson() {
return {
'active': active,
'admissionId': admissionId,
'admissionRequestId': admissionRequestId,
'appointmentId': appointmentId,
'approvedBy': approvedBy,
'approvedOn': approvedOn,
'assessmentId': assessmentId,
'chiefComplainId': chiefComplainId,
'clinicGroupId': clinicGroupId,
'clinicId': clinicId,
'condition': condition,
'createdBy': createdBy,
'createdOn': createdOn,
'deletedBy': deletedBy,
'deletedByDoctorName': deletedByDoctorName,
'deletedOn': deletedOn,
'deletedRemarks': deletedRemarks,
'diagnosisType': diagnosisType,
'doctorId': doctorId,
'episodeId': episodeId,
'hospitalGroupId': hospitalGroupId,
'hospitalId': hospitalId,
'icdCodeDetailsDto': icdCodeDetailsDto,
'icdSubVersion': icdSubVersion,
'icdType': icdType,
'icdVersion': icdVersion,
'location': location,
'loginUserId': loginUserId,
'modifiedBy': modifiedBy,
'modifiedOn': modifiedOn,
'module': module,
'parentLocation': parentLocation,
'patientId': patientId,
'patientProblemChangeHistories': patientProblemChangeHistories,
'patientProblemId': patientProblemId,
'patientProblemRevisionId': patientProblemRevisionId,
'pomrId': pomrId,
'previousProblem': previousProblem,
'problemId': problemId,
'problemName': problemName,
'remarks': remarks,
'resolved': resolved,
'selectedCategoryCode': selectedCategoryCode,
'selectedChapterCode': selectedChapterCode,
'selectedDisease': selectedDisease,
'selectedIcdCode': selectedIcdCode,
'selectedSectionCode': selectedSectionCode,
'status': status,
'visitWiseSelected': visitWiseSelected,
'visitWisePatientDiagnoses': visitWisePatientDiagnoses?.map((v) => v.toJson()).toList(),
};
}
} }
class VisitWisePatientDiagnosis { class VisitWisePatientDiagnosis {
@ -130,7 +185,7 @@ class VisitWisePatientDiagnosis {
int? hospitalId; int? hospitalId;
String? icdSubVersion; String? icdSubVersion;
String? icdType; String? icdType;
dynamic icdVersion; // Adjust type if necessary dynamic icdVersion;
bool? isPreviousProblem; bool? isPreviousProblem;
String? location; String? location;
String? loginUserId; String? loginUserId;
@ -187,4 +242,46 @@ class VisitWisePatientDiagnosis {
selectedDoctorId = json['selectedDoctorId']; selectedDoctorId = json['selectedDoctorId'];
selectedIcdCode = json['selectedIcdCode']; selectedIcdCode = json['selectedIcdCode'];
} }
Map<String, dynamic> toJson() {
return {
'active': active,
'admissionId': admissionId,
'appointmentId': appointmentId,
'approvedBy': approvedBy,
'approvedOn': approvedOn,
'assessmentId': assessmentId,
'clinicId': clinicId,
'condition': condition,
'createdBy': createdBy,
'createdOn': createdOn,
'deletedBy': deletedBy,
'deletedOn': deletedOn,
'deletedRemarks': deletedRemarks,
'diagnosisType': diagnosisType,
'doctorId': doctorId,
'episodeId': episodeId,
'hospitalGroupId': hospitalGroupId,
'hospitalId': hospitalId,
'icdSubVersion': icdSubVersion,
'icdType': icdType,
'icdVersion': icdVersion,
'isPreviousProblem': isPreviousProblem,
'location': location,
'loginUserId': loginUserId,
'modifiedBy': modifiedBy,
'modifiedOn': modifiedOn,
'patientDiagnosisId': patientDiagnosisId,
'patientId': patientId,
'patientProblemRevisionId': patientProblemRevisionId,
'pomrId': pomrId,
'problemName': problemName,
'remarks': remarks,
'resolved': resolved,
'selected': selected,
'selectedDisease': selectedDisease,
'selectedDoctorId': selectedDoctorId,
'selectedIcdCode': selectedIcdCode,
};
}
} }

@ -0,0 +1,35 @@
class Clinic {
int? clinicGroupID;
String? clinicGroupName;
int? clinicID;
String? clinicNameArabic;
String? clinicNameEnglish;
Clinic({
this.clinicGroupID,
this.clinicGroupName,
this.clinicID,
this.clinicNameArabic,
this.clinicNameEnglish,
});
factory Clinic.fromJson(Map<String, dynamic> json) {
return Clinic(
clinicGroupID: json['clinicGroupID'],
clinicGroupName: json['clinicGroupName'],
clinicID: json['clinicID'],
clinicNameArabic: json['clinicNameArabic'],
clinicNameEnglish: json['clinicNameEnglish'],
);
}
Map<String, dynamic> toJson() {
return {
'clinicGroupID': clinicGroupID,
'clinicGroupName': clinicGroupName,
'clinicID': clinicID,
'clinicNameArabic': clinicNameArabic,
'clinicNameEnglish': clinicNameEnglish,
};
}
}

@ -31,6 +31,7 @@ import 'package:doctor_app_flutter/core/model/SOAP/history/post_histories_reques
import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/get_physical_exam_list_res_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/get_physical_exam_list_res_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/get_physical_exam_req_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/get_physical_exam_req_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/post_physical_exam_request_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/post_physical_exam_request_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/progress_note/Clinic.dart';
import 'package:doctor_app_flutter/core/model/SOAP/progress_note/GetGetProgressNoteResModel.dart'; import 'package:doctor_app_flutter/core/model/SOAP/progress_note/GetGetProgressNoteResModel.dart';
import 'package:doctor_app_flutter/core/model/SOAP/progress_note/get_progress_note_req_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/progress_note/get_progress_note_req_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/progress_note/post_progress_note_request_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/progress_note/post_progress_note_request_model.dart';
@ -63,6 +64,7 @@ class SOAPService extends LookupService {
List<SearchDiagnosis> searchDiagnosisList = []; List<SearchDiagnosis> searchDiagnosisList = [];
List<PatientPhysicalExamination> patientPhysicalExaminationList = []; List<PatientPhysicalExamination> patientPhysicalExaminationList = [];
List<GeneralSpeciality> generalSpeciality = []; List<GeneralSpeciality> generalSpeciality = [];
List<Clinic> clinicsList = [];
Map<String, List<Category>> specialityDetails = {}; Map<String, List<Category>> specialityDetails = {};
Map<String, dynamic> diagnosisTypeList = {}; Map<String, dynamic> diagnosisTypeList = {};
Map<String, dynamic> conditionTypeList = {}; Map<String, dynamic> conditionTypeList = {};
@ -938,8 +940,8 @@ class SOAPService extends LookupService {
}, body: request); }, body: request);
} }
Future<bool> addToFavoriteDiagnosis(PatiantInformtion paitientInfo, String doctorName, Future<bool> addToFavoriteDiagnosis(PatiantInformtion paitientInfo,
String subFavoriteCode, dynamic? userId) async { String doctorName, String subFavoriteCode, dynamic? userId) async {
Map<String, dynamic> request = { Map<String, dynamic> request = {
"ProjectID": paitientInfo.projectId, "ProjectID": paitientInfo.projectId,
"listDiagnosisFavourite": [ "listDiagnosisFavourite": [
@ -960,13 +962,13 @@ class SOAPService extends LookupService {
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
var result = response['ListDiagnosisAddFavourite']['resultData']; var result = response['ListDiagnosisAddFavourite']['resultData'];
isFavoriteAdded = true; isFavoriteAdded = true;
if ((result as List).isEmpty) { if ((result is List) && (result as List).isEmpty) {
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast(
response['ListDiagnosisAddFavourite']['message']); response['ListDiagnosisAddFavourite']['message']);
} else { } else {
DrAppToastMsg.showSuccesToast(response['ListDiagnosisAddFavourite']['message']); DrAppToastMsg.showSuccesToast(
response['ListDiagnosisAddFavourite']['message']);
} }
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
favoriteDiagnosisDetailsList.clear(); favoriteDiagnosisDetailsList.clear();
hasError = true; hasError = true;
@ -1062,9 +1064,13 @@ class SOAPService extends LookupService {
} }
} }
Future<bool> createDiagnosis(PatiantInformtion patient, SearchDiagnosis? searchDiagnosis, Future<bool> createDiagnosis(
String? diagnosisType, String conditionType, String remarks, bool isNew) async{ PatiantInformtion patient,
SearchDiagnosis? searchDiagnosis,
String? diagnosisType,
String conditionType,
String remarks,
bool isNew) async {
Map<String, dynamic>? user = await sharedPref.getObj(LOGGED_IN_USER); Map<String, dynamic>? user = await sharedPref.getObj(LOGGED_IN_USER);
var request = { var request = {
"pomrId": patient.pomrId, "pomrId": patient.pomrId,
@ -1094,35 +1100,88 @@ class SOAPService extends LookupService {
"doctorId": patient.doctorId, "doctorId": patient.doctorId,
"doctorCode": user?['List_MemberInformation'][0]['MemberID'], "doctorCode": user?['List_MemberInformation'][0]['MemberID'],
"ProjectID": patient.projectId, "ProjectID": patient.projectId,
"codeRange":searchDiagnosis.codeRange "codeRange": searchDiagnosis.codeRange
}; };
var success = false; var success = false;
await baseAppClient.post(CREATE_DIAGNOSIS, await baseAppClient.post(CREATE_DIAGNOSIS,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
DrAppToastMsg.showSuccesToast(response['CreatDiagnosis']['message']); DrAppToastMsg.showSuccesToast(response['CreatDiagnosis']['message']);
success = true; success = true;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
success = false; success = false;
hasError = true; hasError = true;
super.error = error; super.error = error;
}, body: request); }, body: request);
return success; return success;
} }
Future<bool> editDiagnosis(PatientPreviousDiagnosis diagnosis) async{
Map<String, dynamic>? user = await sharedPref.getObj(LOGGED_IN_USER); Future<bool> editDiagnosis(PatientPreviousDiagnosis diagnosis) async {
var request = diag; var request = diagnosis.toJson();
var success = false; var success = false;
await baseAppClient.post(CREATE_DIAGNOSIS, await baseAppClient.post(EDIT_DIAGNOSIS,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
DrAppToastMsg.showSuccesToast(response['CreatDiagnosis']['message']); if (response['ListVisitWisePatientDiagnosis']['resultData'] != null &&
success = true; (response['ListVisitWisePatientDiagnosis']['resultData'] as List)
}, onFailure: (String error, int statusCode) { .isNotEmpty) {
success = true;
return;
}
success = false; success = false;
hasError = true; }, onFailure: (String error, int statusCode) {
super.error = error; success = false;
}, body: request); hasError = true;
super.error = error;
}, body: request);
return success;
}
Future<bool> resolveDiagnosis(PatientPreviousDiagnosis diagnosis) async {
var request = {
"patientProblemRevisionId": diagnosis.patientProblemRevisionId,
"patientProblemId": diagnosis.patientProblemId,
"patientId": diagnosis.patientId,
"doctorId": diagnosis.doctorId,
"pomrId": diagnosis.pomrId,
"appointmentId": diagnosis.appointmentId,
"problemId": diagnosis.problemId,
"diagnosisType": diagnosis.diagnosisType,
};
var success = false;
await baseAppClient.post(RESOLVE_DIAGNOSIS,
onSuccess: (dynamic response, int statusCode) {
if (response['ListDiagnosisResolve'] != null &&
response['ListDiagnosisResolve']['resultData'] != null &&
(response['ListVisitWisePatientDiagnosis']['resultData'] as List)
.isNotEmpty) {
success = true;
return;
}
success = false;
}, onFailure: (String error, int statusCode) {
success = false;
hasError = true;
super.error = error;
}, body: request);
return success;
}
Future<bool> getClinic() async {
Map<String,dynamic> request = {};
var success = false;
await baseAppClient.post(GET_CLINIC,
onSuccess: (dynamic response, int statusCode) {
response['ListDoctorClinics'].forEach((v) =>
v['categories'].forEach(
(cat) => clinicsList.add(Clinic.fromJson(cat))));
success = false;
}, onFailure: (String error, int statusCode) {
success = false;
hasError = true;
super.error = error;
}, body: request);
return success; return success;
} }

@ -9,7 +9,6 @@ import 'package:doctor_app_flutter/core/model/SOAP/Assessment/post_assessment_re
import 'package:doctor_app_flutter/core/model/SOAP/allergy/get_allergies_list_vida_plus.dart'; import 'package:doctor_app_flutter/core/model/SOAP/allergy/get_allergies_list_vida_plus.dart';
import 'package:doctor_app_flutter/core/model/SOAP/assessment/FavoriteDiseaseDetails.dart'; import 'package:doctor_app_flutter/core/model/SOAP/assessment/FavoriteDiseaseDetails.dart';
import 'package:doctor_app_flutter/core/model/SOAP/assessment/audit_diagnosis.dart'; import 'package:doctor_app_flutter/core/model/SOAP/assessment/audit_diagnosis.dart';
import 'package:doctor_app_flutter/core/model/SOAP/assessment/diagnosis_type.dart';
import 'package:doctor_app_flutter/core/model/SOAP/assessment/patient_previous_diagnosis.dart'; import 'package:doctor_app_flutter/core/model/SOAP/assessment/patient_previous_diagnosis.dart';
import 'package:doctor_app_flutter/core/model/SOAP/assessment/search_diagnosis.dart'; import 'package:doctor_app_flutter/core/model/SOAP/assessment/search_diagnosis.dart';
import 'package:doctor_app_flutter/core/model/SOAP/chief_complaint/get_chief_complaint_req_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/chief_complaint/get_chief_complaint_req_model.dart';
@ -26,13 +25,12 @@ import 'package:doctor_app_flutter/core/model/SOAP/in_patient/get_episode_for_in
import 'package:doctor_app_flutter/core/model/SOAP/in_patient/post_episode_for_Inpatient_request_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/in_patient/post_episode_for_Inpatient_request_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/master_key_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/Category.dart'; import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/Category.dart';
import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/CreatePhysicalExamination.dart';
import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/get_physical_exam_list_res_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/get_physical_exam_list_res_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/get_physical_exam_req_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/get_physical_exam_req_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/patient_physical_examination.dart'; import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/patient_physical_examination.dart';
import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/post_physical_exam_request_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/post_physical_exam_request_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/post_physical_examination_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/post_episode_req_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/post_episode_req_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/progress_note/Clinic.dart';
import 'package:doctor_app_flutter/core/model/SOAP/progress_note/GetGetProgressNoteResModel.dart'; import 'package:doctor_app_flutter/core/model/SOAP/progress_note/GetGetProgressNoteResModel.dart';
import 'package:doctor_app_flutter/core/model/SOAP/progress_note/get_progress_note_req_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/progress_note/get_progress_note_req_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/progress_note/post_progress_note_request_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/progress_note/post_progress_note_request_model.dart';
@ -156,6 +154,8 @@ class SOAPViewModel extends BaseViewModel {
List<ProgressNote> get progressNote => List<ProgressNote> get progressNote =>
_SOAPService.patientProgressNoteListVidaPlus; _SOAPService.patientProgressNoteListVidaPlus;
List<Clinic> get clinics =>
_SOAPService.clinicsList;
Map<String, List<Category>> get specialityDetails => Map<String, List<Category>> get specialityDetails =>
_SOAPService.specialityDetails; _SOAPService.specialityDetails;
@ -1285,6 +1285,29 @@ class SOAPViewModel extends BaseViewModel {
return result; return result;
} }
Future<bool> editDiagnosis(PatientPreviousDiagnosis diagnosis) async {
setState(ViewState.BusyLocal);
bool result = await _SOAPService.editDiagnosis(diagnosis);
if (_SOAPService.hasError) {
error = _SOAPService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
return result;
}
Future<bool> resolveDiagnosis(PatientPreviousDiagnosis diagnosis) async {
setState(ViewState.BusyLocal);
bool result = await _SOAPService.resolveDiagnosis(diagnosis);
if (_SOAPService.hasError) {
error = _SOAPService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
return result;
}
void changeCurrentCategorySelectedState( void changeCurrentCategorySelectedState(
GeneralSpeciality selectedExamination, bool status) { GeneralSpeciality selectedExamination, bool status) {
final item = speciality.firstWhere( final item = speciality.firstWhere(
@ -1308,4 +1331,14 @@ class SOAPViewModel extends BaseViewModel {
speciality = searchList; speciality = searchList;
notifyListeners(); notifyListeners();
} }
getClinics() async {
setState(ViewState.BusyLocal);
await _SOAPService.getClinic();
if (_SOAPService.hasError) {
error = _SOAPService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
} }

@ -6,6 +6,7 @@ import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/assessment/add_diagnosis.dart'; import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/assessment/add_diagnosis.dart';
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/assessment/widget/audit_list_bottom_sheet.dart'; import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/assessment/widget/audit_list_bottom_sheet.dart';
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/assessment/widget/edit_diagnosis.dart';
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/assessment/widget/empty_diagnosis.dart'; import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/assessment/widget/empty_diagnosis.dart';
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/subjective/chief_complaint/widgets/add_soap_item.dart'; import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/subjective/chief_complaint/widgets/add_soap_item.dart';
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/widgets/SoapDetailItem.dart'; import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/widgets/SoapDetailItem.dart';
@ -97,7 +98,7 @@ class _CurrentDiagnosisState extends State<CurrentDiagnosis> {
remarks: remarks:
widget.currentDiagnosisItems[index].remarks ?? widget.currentDiagnosisItems[index].remarks ??
'', '',
onSoapDetailActionClicked: (action) { onSoapDetailActionClicked: (action) async{
switch (action) { switch (action) {
case SoapDetailItemActions.AUDIT: case SoapDetailItemActions.AUDIT:
model.getAuditOfDiagnosis( model.getAuditOfDiagnosis(
@ -108,9 +109,22 @@ class _CurrentDiagnosisState extends State<CurrentDiagnosis> {
''); '');
break; break;
case SoapDetailItemActions.EDIT: case SoapDetailItemActions.EDIT:
// TODO: Handle this case. bool result = await Navigator.push(
context,
FadePage(
page: EditDiagnosis(
patientInfo: widget.patientInfo, diagnosis: widget.currentDiagnosisItems[index],
)));
if (result) {
model.getCurrentDiagnosisList(widget.patientInfo);
}
break;
case SoapDetailItemActions.RESOLVE: case SoapDetailItemActions.RESOLVE:
// TODO: Handle this case. bool result = await model.resolveDiagnosis(widget.currentDiagnosisItems[index]);
if (result) {
model.getCurrentDiagnosisList(widget.patientInfo);
}
break;
case SoapDetailItemActions.REMOVE: case SoapDetailItemActions.REMOVE:
showConfirmationDialog(context, showConfirmationDialog(context,

@ -19,31 +19,41 @@ import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dar
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get_it/get_it.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
List<String> patientState = ["", "Stable", "Not Stable", "Not Defined"]; class EditDiagnosis extends StatefulWidget {
class EnterDiagnosis extends StatefulWidget {
final PatiantInformtion patientInfo; final PatiantInformtion patientInfo;
final PatientPreviousDiagnosis diagnosis; final PatientPreviousDiagnosis diagnosis;
const EnterDiagnosis({super.key, required this.patientInfo, required this.diagnosis}); const EditDiagnosis(
{super.key, required this.patientInfo, required this.diagnosis});
@override @override
State<EnterDiagnosis> createState() => _EnterDiagnosisState(); State<EditDiagnosis> createState() => _EditDiagnosisState();
} }
class _EnterDiagnosisState extends State<EnterDiagnosis> { class _EditDiagnosisState extends State<EditDiagnosis> {
final TextEditingController filteredSearchController = final TextEditingController filteredSearchController =
TextEditingController(); TextEditingController();
bool showAllDiagnosis = true; bool showAllDiagnosis = true;
String status = ''; String status = '';
String? selectedDiagnosisItem; String? selectedDiagnosisItem;
String? selectedDiagnosisItemValue;
TextEditingController remarksController = TextEditingController(); TextEditingController remarksController = TextEditingController();
Timer? _tTimer; Timer? _tTimer;
SOAPViewModel? model; SOAPViewModel? model;
SearchDiagnosis? selectedDiagnosis; SearchDiagnosis? selectedDiagnosis;
@override
void initState() {
super.initState();
filteredSearchController.text = widget.diagnosis.selectedDisease ?? '';
filteredSearchController.text = widget.diagnosis.remarks ?? '';
status = widget.diagnosis.condition ?? '';
selectedDiagnosisItemValue = widget.diagnosis?.diagnosisType ?? '';
}
void _onTextChanged(String text) { void _onTextChanged(String text) {
if (_tTimer != null) { if (_tTimer != null) {
_tTimer!.cancel(); _tTimer!.cancel();
@ -59,15 +69,31 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<SOAPViewModel>( return BaseView<SOAPViewModel>(onModelReady: (model) {
onModelReady: (model) { this.model = model;
this.model = model; WidgetsBinding.instance.addPostFrameCallback((_) {
}, model.getConditionAndType(widget.patientInfo);
builder: (_, model, w) => AppScaffold( });
isLoading: model.state == ViewState.BusyLocal , }, builder: (_, model, w) {
if (selectedDiagnosisItem == null && model.diagnosisTypeList.isNotEmpty) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mounted) {
setState(() {
selectedDiagnosisItem = model.diagnosisTypeList.keys.firstWhere(
(k) =>
model.diagnosisTypeList[k] == selectedDiagnosisItemValue,
orElse: () => '');
if (selectedDiagnosisItem?.isEmpty == true)
selectedDiagnosisItem = null;
});
}
});
}
return AppScaffold(
isLoading: model.state == ViewState.BusyLocal,
isShowAppBar: true, isShowAppBar: true,
appBar: PatientSearchHeader( appBar: PatientSearchHeader(
title: TranslationBase.of(context).addDiagnosis), title: TranslationBase.of(context).editDiagnosis),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
@ -75,7 +101,7 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
AppText( AppText(
TranslationBase.of(context).addDiagnosis, TranslationBase.of(context).editDiagnosis,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF2E303A), color: Color(0xFF2E303A),
fontSize: 16, fontSize: 16,
@ -90,7 +116,7 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
controller: filteredSearchController, controller: filteredSearchController,
onClick: () { onClick: () {
setState( setState(
() { () {
selectedDiagnosis = null; selectedDiagnosis = null;
filteredSearchController.text = ''; filteredSearchController.text = '';
model.selectedIcd = ''; model.selectedIcd = '';
@ -124,12 +150,12 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
child: AppText(model.icdVersionList[index]), child: AppText(model.icdVersionList[index]),
onTap: () { onTap: () {
setState( setState(
() { () {
selectedDiagnosis = selectedDiagnosis =
model.findTheDiagnosisItem( model.findTheDiagnosisItem(
model.icdVersionList[index]); model.icdVersionList[index]);
filteredSearchController.text = filteredSearchController.text =
model.icdVersionList[index]; model.icdVersionList[index];
model.searchDiagnosisList.clear(); model.searchDiagnosisList.clear();
model.icdVersionList.clear(); model.icdVersionList.clear();
}, },
@ -145,34 +171,34 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
SizedBox( SizedBox(
height: 8, height: 8,
), ),
Row( // Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ // children: [
Row( // Row(
children: [ // children: [
Switch( // Switch(
value: showAllDiagnosis, // value: showAllDiagnosis,
activeColor: Colors.red, // activeColor: Colors.red,
onChanged: (bool value) { // onChanged: (bool value) {
setState(() { // setState(() {
showAllDiagnosis = value; // showAllDiagnosis = value;
}); // });
}, // },
), // ),
SizedBox( // SizedBox(
width: 8, // width: 8,
), // ),
AppText( // AppText(
TranslationBase.of(context).showAllDiagnosis, // TranslationBase.of(context).showAllDiagnosis,
fontWeight: FontWeight.w500, // fontWeight: FontWeight.w500,
color: Color(0xFF2E303A), // color: Color(0xFF2E303A),
fontSize: 11, // fontSize: 11,
), // ),
], // ],
), // ),
SvgPicture.asset('assets/images/svgs/information.svg'), // SvgPicture.asset('assets/images/svgs/information.svg'),
], // ],
), // ),
Container( Container(
margin: EdgeInsets.only(bottom: 12), margin: EdgeInsets.only(bottom: 12),
child: AppText( child: AppText(
@ -190,43 +216,44 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
itemCount: model.conditionTypeList.length, itemCount: model.conditionTypeList.length,
itemBuilder: (context, index) => InkWell( itemBuilder: (context, index) => InkWell(
onTap: () { onTap: () {
setState(() { setState(() {
status = model.conditionTypeList[index]; status = model.conditionTypeList[index];
}); });
}, },
child: Row( child: Row(
children: [ children: [
Container( Container(
padding: EdgeInsets.all(2.0), padding: EdgeInsets.all(2.0),
margin: EdgeInsets.symmetric(horizontal: 6), margin: EdgeInsets.symmetric(horizontal: 6),
width: 20, width: 20,
height: 20, height: 20,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
shape: BoxShape.circle, shape: BoxShape.circle,
border: Border.all( border: Border.all(
color: Colors.grey, width: 1), color: Colors.grey, width: 1),
), ),
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: status == color: status ==
model.conditionTypeList[index] model.conditionTypeList[index]
? HexColor("#D02127") .toLowerCase()
: Colors.white, ? HexColor("#D02127")
shape: BoxShape.circle, : Colors.white,
shape: BoxShape.circle,
),
),
), ),
), AppText(
), model.conditionTypeList[index],
AppText( fontWeight: FontWeight.normal,
model.conditionTypeList[index], fontFamily: 'Poppins',
fontWeight: FontWeight.normal, fontSize: SizeConfig.textMultiplier! * 1.6,
fontFamily: 'Poppins', ),
fontSize: SizeConfig.textMultiplier! * 1.6, ],
), ),
], )),
),
)),
), ),
SizedBox( SizedBox(
height: 8, height: 8,
@ -258,38 +285,38 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
model.diagnosisTypeList.isEmpty model.diagnosisTypeList.isEmpty
? EmptyDropDown() ? EmptyDropDown()
: DropdownButtonHideUnderline( : DropdownButtonHideUnderline(
child: DropdownButton( child: DropdownButton(
dropdownColor: Colors.white, dropdownColor: Colors.white,
iconEnabledColor: Colors.black, iconEnabledColor: Colors.black,
icon: Icon(Icons.keyboard_arrow_down), icon: Icon(Icons.keyboard_arrow_down),
isExpanded: true, isExpanded: true,
value: selectedDiagnosisItem == null value: selectedDiagnosisItem == null
? model.diagnosisTypeList.keys.first ? model.diagnosisTypeList.keys.first
: selectedDiagnosisItem, : selectedDiagnosisItem,
iconSize: 25, iconSize: 25,
elevation: 16, elevation: 16,
onChanged: (newValue) async { onChanged: (newValue) async {
if (newValue != null) if (newValue != null)
setState(() { setState(() {
selectedDiagnosisItem = newValue; selectedDiagnosisItem = newValue;
}); });
}, },
items: items:
model.diagnosisTypeList.keys.map((item) { model.diagnosisTypeList.keys.map((item) {
return DropdownMenuItem( return DropdownMenuItem(
child: AppText( child: AppText(
item ?? '', item ?? '',
fontSize: 14, fontSize: 14,
letterSpacing: -0.96, letterSpacing: -0.96,
color: AppGlobal.appTextColor, color: AppGlobal.appTextColor,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
textAlign: TextAlign.left, textAlign: TextAlign.left,
),
value: item,
);
}).toList(),
), ),
value: item, ),
);
}).toList(),
),
),
], ],
), ),
), ),
@ -310,35 +337,35 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
SizedBox( SizedBox(
height: 16, height: 16,
), ),
InkWell( // InkWell(
onTap: () async { // onTap: () async {
if (selectedDiagnosis != null) { // if (selectedDiagnosis != null) {
SearchDiagnosis? diagnosis = // SearchDiagnosis? diagnosis =
await model.addToFavoriteDiagnosis(widget.patientInfo, // await model.addToFavoriteDiagnosis(widget.patientInfo,
diagnosis: selectedDiagnosis); // diagnosis: selectedDiagnosis);
setState(() { // setState(() {
selectedDiagnosis = diagnosis; // selectedDiagnosis = diagnosis;
}); // });
} // }
}, // },
child: Row( // child: Row(
children: [ // children: [
SvgPicture.asset(selectedDiagnosis?.isFavorite == true // SvgPicture.asset(selectedDiagnosis?.isFavorite == true
? 'assets/images/svgs/favoriteadded.svg' // ? 'assets/images/svgs/favoriteadded.svg'
: 'assets/images/svgs/favorite.svg'), // : 'assets/images/svgs/favorite.svg'),
SizedBox( // SizedBox(
width: 4, // width: 4,
), // ),
AppText( // AppText(
TranslationBase.of(context).addToFavorite, // TranslationBase.of(context).addToFavorite,
textAlign: TextAlign.start, // textAlign: TextAlign.start,
fontWeight: FontWeight.w600, // fontWeight: FontWeight.w600,
fontSize: 10, // fontSize: 10,
color: Color(0xFF449BF1), // color: Color(0xFF449BF1),
), // ),
], // ],
), // ),
) // )
], ],
), ),
), ),
@ -377,37 +404,65 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
), ),
Expanded( Expanded(
child: AppButton( child: AppButton(
title: TranslationBase.of(context).save, title: TranslationBase.of(context).save,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF359846), color: Color(0xFF359846),
onPressed: () async { onPressed: () async {
selectedDiagnosisItem ??= model.diagnosisTypeList.keys.first; selectedDiagnosisItem ??=
if(selectedDiagnosis == null ){ model.diagnosisTypeList.keys.first;
DrAppToastMsg.showErrorToast(TranslationBase.of(context).selectedDiagnosis); if (selectedDiagnosis == null &&
return; filteredSearchController.text.isEmpty) {
} DrAppToastMsg.showErrorToast(
if(status.isEmpty){ TranslationBase.of(context)
DrAppToastMsg.showErrorToast(TranslationBase.of(context).selectConditionFirst); .selectedDiagnosis);
return; return;
} }
if (status.isEmpty) {
DrAppToastMsg.showErrorToast(
TranslationBase.of(context)
.selectConditionFirst);
return;
}
if(remarksController.text.isEmpty){ if (remarksController.text.isEmpty) {
DrAppToastMsg.showErrorToast(TranslationBase.of(context).remarksCanNotBeEmpty); DrAppToastMsg.showErrorToast(
return; TranslationBase.of(context)
} .remarksCanNotBeEmpty);
return;
}
bool result = await model.createDiagnosis( if (filteredSearchController.text ==
widget.patientInfo, widget.diagnosis.selectedDisease &&
selectedDiagnosis, status == widget.diagnosis.condition &&
selectedDiagnosisItem, widget.diagnosis.diagnosisType ==
status, selectedDiagnosisItem &&
remarksController.text, widget.diagnosis.remarks ==
false); filteredSearchController.text) {
if (result) { DrAppToastMsg.showErrorToast(
Navigator.pop(context, result); TranslationBase.of(context)
} .noChangeRecorded);
}, return;
), }
widget.diagnosis.selectedDisease =
filteredSearchController.text;
widget.diagnosis.selectedCategoryCode =
selectedDiagnosis?.selectedCategoryCode ?? '';
widget.diagnosis.selectedIcdCode =
selectedDiagnosis?.selectedIcdCode ?? '';
widget.diagnosis.selectedChapterCode =
selectedDiagnosis?.selectedChapterCode ?? '';
widget.diagnosis.selectedSectionCode =
selectedDiagnosis?.selectedSectionCode ?? '';
widget.diagnosis.condition = status;
widget.diagnosis.diagnosisType =
selectedDiagnosisItem;
bool result =
await model.editDiagnosis(widget.diagnosis);
if (result) {
Navigator.pop(context, result);
}
}),
), ),
], ],
), ),
@ -416,7 +471,7 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
), ),
), ),
), ),
), );
); });
} }
} }

@ -35,6 +35,7 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
bool showAllDiagnosis = true; bool showAllDiagnosis = true;
String status = ''; String status = '';
String? selectedDiagnosisItem; String? selectedDiagnosisItem;
String? selectedDiagnosisItemValue;
TextEditingController remarksController = TextEditingController(); TextEditingController remarksController = TextEditingController();
Timer? _tTimer; Timer? _tTimer;
SOAPViewModel? model; SOAPViewModel? model;
@ -265,6 +266,7 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
if (newValue != null) if (newValue != null)
setState(() { setState(() {
selectedDiagnosisItem = newValue; selectedDiagnosisItem = newValue;
selectedDiagnosisItemValue = model.diagnosisTypeList[newValue];
}); });
}, },
items: items:
@ -375,6 +377,8 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
color: Color(0xFF359846), color: Color(0xFF359846),
onPressed: () async { onPressed: () async {
selectedDiagnosisItem ??= model.diagnosisTypeList.keys.first; selectedDiagnosisItem ??= model.diagnosisTypeList.keys.first;
selectedDiagnosisItemValue = model.diagnosisTypeList[selectedDiagnosisItem];
if(selectedDiagnosis == null ){ if(selectedDiagnosis == null ){
DrAppToastMsg.showErrorToast(TranslationBase.of(context).selectedDiagnosis); DrAppToastMsg.showErrorToast(TranslationBase.of(context).selectedDiagnosis);
return; return;
@ -392,7 +396,7 @@ class _EnterDiagnosisState extends State<EnterDiagnosis> {
bool result = await model.createDiagnosis( bool result = await model.createDiagnosis(
widget.patientInfo, widget.patientInfo,
selectedDiagnosis, selectedDiagnosis,
selectedDiagnosisItem, selectedDiagnosisItemValue,
status, status,
remarksController.text, remarksController.text,
false); false);

@ -1,3 +1,4 @@
import 'package:doctor_app_flutter/core/enum/view_state.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/patient_search/patient_search_header.dart'; import 'package:doctor_app_flutter/screens/patients/patient_search/patient_search_header.dart';
@ -11,7 +12,13 @@ class AddProgressNote extends StatelessWidget{
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<SOAPViewModel>( return BaseView<SOAPViewModel>(
onModelReady: (model){
WidgetsBinding.instance.addPostFrameCallback((_) async {
model.getClinics();
});
},
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
isLoading: model.state == ViewState.BusyLocal,
isShowAppBar: true, isShowAppBar: true,
appBar: PatientSearchHeader( appBar: PatientSearchHeader(
title: TranslationBase.of(context).progressNote title: TranslationBase.of(context).progressNote

@ -1,5 +1,8 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/assessment/widget/empty_dropdown.dart';
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart'; import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
import 'package:doctor_app_flutter/utils/utils.dart'; import 'package:doctor_app_flutter/utils/utils.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
@ -7,8 +10,10 @@ import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-cust
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
List<String> patientState = ["","Stable", "Not Stable", "Not Defined"]; import '../../../../../../core/model/SOAP/progress_note/Clinic.dart';
import '../../../../../base/base_view.dart';
class AddProgressNoteDetails extends StatefulWidget { class AddProgressNoteDetails extends StatefulWidget {
@override @override
@ -16,37 +21,15 @@ class AddProgressNoteDetails extends StatefulWidget {
} }
class _AddProgressNoteDetailsState extends State<AddProgressNoteDetails> { class _AddProgressNoteDetailsState extends State<AddProgressNoteDetails> {
String selectedItem = "Stable"; Clinic? selectedItem ;
int status = 1; int status = 1;
final TextEditingController noteController = TextEditingController(); final TextEditingController noteController = TextEditingController();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Material( ProjectViewModel projectViewModel = Provider.of(context);
shape: RoundedRectangleBorder( return BaseView<SOAPViewModel>(
borderRadius: BorderRadius.circular(10), builder: (_, model, w) => Material(
side: BorderSide(
width: 1,
color: Color(0xFFEFEFEF),
)),
color: Colors.white,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
TranslationBase.of(context).addProgressNote,
fontSize: 16,
fontWeight: FontWeight.w600,
textAlign: TextAlign.start,
color: Colors.black,
),
SizedBox(
height: 16,
),
Material(
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
side: BorderSide( side: BorderSide(
@ -61,236 +44,269 @@ class _AddProgressNoteDetailsState extends State<AddProgressNoteDetails> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
AppText( AppText(
TranslationBase.of(context).patientCondition, TranslationBase.of(context).addProgressNote,
textAlign: TextAlign.start, fontSize: 16,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 11, textAlign: TextAlign.start,
color: Color(0xFF2E303A), color: Colors.black,
), ),
SizedBox( SizedBox(
height: 4, height: 16,
), ),
DropdownButtonHideUnderline( Material(
child: DropdownButton( shape: RoundedRectangleBorder(
dropdownColor: Colors.white, borderRadius: BorderRadius.circular(10),
iconEnabledColor: Colors.black, side: BorderSide(
icon: Icon(Icons.keyboard_arrow_down), width: 1,
isExpanded: true, color: Color(0xFFEFEFEF),
value: selectedItem, )),
iconSize: 25, color: Colors.white,
elevation: 16, child: Padding(
padding: const EdgeInsets.symmetric(
onChanged: (newValue) async { horizontal: 16.0, vertical: 12),
setState(() { child: Column(
selectedItem = newValue ?? ""; crossAxisAlignment: CrossAxisAlignment.start,
}); children: [
}, AppText(
items: patientState.map((item) { TranslationBase.of(context).patientCondition,
return DropdownMenuItem( textAlign: TextAlign.start,
child: AppText( fontWeight: FontWeight.w600,
item, fontSize: 11,
fontSize: 14, color: Color(0xFF2E303A),
letterSpacing: -0.96,
color: AppGlobal.appTextColor,
fontWeight: FontWeight.normal,
textAlign: TextAlign.left,
), ),
value: item, SizedBox(
); height: 4,
}).toList(), ),
), model.clinics.isEmpty
), ? EmptyDropDown()
], : DropdownButtonHideUnderline(
), child: DropdownButton<Clinic>(
), dropdownColor: Colors.white,
), iconEnabledColor: Colors.black,
SizedBox( icon: Icon(Icons.keyboard_arrow_down),
height: 16, isExpanded: true,
), value: selectedItem == null ? model.clinics.first : selectedItem,
AppText( iconSize: 25,
TranslationBase.of(context).progressNoteType, elevation: 16,
fontWeight: FontWeight.bold, onChanged: (newValue) async {
fontFamily: 'Poppins', setState(() {
fontSize: 11, selectedItem = newValue;
), });
SizedBox( },
height: 8, items: model.clinics.map((item) {
), return DropdownMenuItem(
Row( child: AppText(
children: [ projectViewModel.isArabic
Flexible( ? item.clinicNameArabic ?? ''
child: InkWell( : item.clinicNameEnglish ?? '',
onTap: () { fontSize: 14,
setState(() { letterSpacing: -0.96,
status = 1; color: AppGlobal.appTextColor,
}); fontWeight: FontWeight.normal,
}, textAlign: TextAlign.left,
child: Row( ),
children: [ value: item,
Container( );
padding: EdgeInsets.all(2.0), }).toList(),
margin: EdgeInsets.symmetric(horizontal: 6), ),
width: 20, ),
height: 20, ],
decoration: BoxDecoration(
color: Colors.white,
shape: BoxShape.circle,
border: Border.all(color: Colors.grey, width: 1),
),
child: Container(
decoration: BoxDecoration(
color: status == 1
? HexColor("#D02127")
: Colors.white,
shape: BoxShape.circle,
),
), ),
), ),
AppText( ),
TranslationBase.of(context).doctorProgressNote, SizedBox(
fontWeight: FontWeight.w600, height: 16,
fontFamily: 'Poppins', ),
fontSize: 12, AppText(
), TranslationBase.of(context).progressNoteType,
], fontWeight: FontWeight.bold,
), fontFamily: 'Poppins',
)), fontSize: 11,
Flexible( ),
child: InkWell( SizedBox(
onTap: () { height: 8,
setState(() { ),
status = 2; Row(
});
},
child: Row(
children: [ children: [
Container( Flexible(
padding: EdgeInsets.all(2.0), child: InkWell(
margin: EdgeInsets.symmetric(horizontal: 6), onTap: () {
width: 20, setState(() {
height: 20, status = 1;
decoration: BoxDecoration( });
color: Colors.white, },
shape: BoxShape.circle, child: Row(
border: Border.all(color: Colors.grey, width: 1), children: [
Container(
padding: EdgeInsets.all(2.0),
margin: EdgeInsets.symmetric(horizontal: 6),
width: 20,
height: 20,
decoration: BoxDecoration(
color: Colors.white,
shape: BoxShape.circle,
border:
Border.all(color: Colors.grey, width: 1),
),
child: Container(
decoration: BoxDecoration(
color: status == 1
? HexColor("#D02127")
: Colors.white,
shape: BoxShape.circle,
),
),
),
AppText(
TranslationBase.of(context).doctorProgressNote,
fontWeight: FontWeight.w600,
fontFamily: 'Poppins',
fontSize: 12,
),
],
), ),
child: Container( )),
decoration: BoxDecoration( Flexible(
color: status == 2 child: InkWell(
? HexColor("#D02127") onTap: () {
: Colors.white, setState(() {
shape: BoxShape.circle, status = 2;
});
},
child: Row(
children: [
Container(
padding: EdgeInsets.all(2.0),
margin: EdgeInsets.symmetric(horizontal: 6),
width: 20,
height: 20,
decoration: BoxDecoration(
color: Colors.white,
shape: BoxShape.circle,
border: Border.all(
color: Colors.grey, width: 1),
),
child: Container(
decoration: BoxDecoration(
color: status == 2
? HexColor("#D02127")
: Colors.white,
shape: BoxShape.circle,
),
),
),
AppText(
TranslationBase.of(context).nurseNote,
fontWeight: FontWeight.w600,
fontFamily: 'Poppins',
fontSize: 12,
),
],
), ),
), ),
), ),
AppText(
TranslationBase.of(context).nurseNote,
fontWeight: FontWeight.w600,
fontFamily: 'Poppins',
fontSize: 12,
),
], ],
), ),
),
),
],
),
SizedBox(
height: 24,
),
Material(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
side: BorderSide(
width: 1,
color: Color(0xFFEFEFEF),
)),
color: Colors.white,
child: Padding(
padding:
const EdgeInsets.symmetric(horizontal: 16.0, vertical: 12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
TranslationBase.of(context).speciality,
textAlign: TextAlign.start,
fontWeight: FontWeight.w600,
fontSize: 11,
color: Color(0xFF2E303A),
),
SizedBox( SizedBox(
height: 4, height: 24,
), ),
DropdownButtonHideUnderline( Material(
child: DropdownButton( shape: RoundedRectangleBorder(
dropdownColor: Colors.white, borderRadius: BorderRadius.circular(10),
iconEnabledColor: Colors.black, side: BorderSide(
icon: Icon(Icons.keyboard_arrow_down), width: 1,
isExpanded: true, color: Color(0xFFEFEFEF),
value: selectedItem, )),
iconSize: 25, color: Colors.white,
elevation: 16, child: Padding(
padding: const EdgeInsets.symmetric(
onChanged: (newValue) async { horizontal: 16.0, vertical: 12),
setState(() { child: Column(
selectedItem = newValue ?? ""; crossAxisAlignment: CrossAxisAlignment.start,
}); children: [
}, AppText(
items: patientState.map((item) { TranslationBase.of(context).speciality,
return DropdownMenuItem( textAlign: TextAlign.start,
child: AppText( fontWeight: FontWeight.w600,
"item", fontSize: 11,
fontSize: 14, color: Color(0xFF2E303A),
letterSpacing: -0.96, ),
color: AppGlobal.appTextColor, SizedBox(
fontWeight: FontWeight.normal, height: 4,
textAlign: TextAlign.left,
), ),
value: item, model.clinics.isEmpty
); ? EmptyDropDown()
}).toList(), : DropdownButtonHideUnderline(
child: DropdownButton<Clinic>(
dropdownColor: Colors.white,
iconEnabledColor: Colors.black,
icon: Icon(Icons.keyboard_arrow_down),
isExpanded: true,
value: selectedItem == null ? model.clinics.first : selectedItem,
iconSize: 25,
elevation: 16,
onChanged: (newValue) async {
setState(() {
selectedItem = newValue;
});
},
items: model.clinics.map((item) {
return DropdownMenuItem(
child: AppText(
projectViewModel.isArabic
? item.clinicNameArabic ?? ''
: item.clinicNameEnglish ?? '',
fontSize: 14,
letterSpacing: -0.96,
color: AppGlobal.appTextColor,
fontWeight: FontWeight.normal,
textAlign: TextAlign.left,
),
value: item,
);
}).toList(),
),
),
],
),
), ),
), ),
SizedBox(
height: 16,
),
AppTextFieldCustom(
hintText: TranslationBase.of(context).addYourNote,
controller: noteController,
inputType: TextInputType.multiline,
maxLines: 25,
minLines: 4,
hasBorder: true,
onClick: () {},
onChanged: (value) {},
onFieldSubmitted: () {},
),
SizedBox(
height: 16,
),
Row(
children: [
SvgPicture.asset(
'assets/images/svgs/save_as_draft.svg'),
SizedBox(
width: 4,
),
AppText(
TranslationBase.of(context).saveAsDraft,
textAlign: TextAlign.start,
fontWeight: FontWeight.w600,
fontSize: 10,
color: Color(0xFF449BF1),
),
],
)
], ],
), ),
), ),
), ));
SizedBox(
height: 16,
),
AppTextFieldCustom(
hintText: TranslationBase.of(context).addYourNote,
controller: noteController,
inputType: TextInputType.multiline,
maxLines: 25,
minLines: 4,
hasBorder: true,
onClick: () {},
onChanged: (value) {},
onFieldSubmitted: () {},
),
SizedBox(
height: 16,
),
Row(
children: [
SvgPicture.asset('assets/images/svgs/save_as_draft.svg'),
SizedBox(
width: 4,
),
AppText(
TranslationBase.of(context).saveAsDraft,
textAlign: TextAlign.start,
fontWeight: FontWeight.w600,
fontSize: 10,
color: Color(0xFF449BF1),
),
],
)
],
),
),
);
} }
} }

@ -32,7 +32,7 @@ class UpdateSoapIndexVidaPlus extends StatefulWidget {
class _UpdateSoapIndexVidaPlusState extends State<UpdateSoapIndexVidaPlus> class _UpdateSoapIndexVidaPlusState extends State<UpdateSoapIndexVidaPlus>
with TickerProviderStateMixin { with TickerProviderStateMixin {
PageController? _controller; PageController? _controller;
int _currentIndex =2; int _currentIndex = 3;
List<MySelectedAllergy> myAllergiesList = []; List<MySelectedAllergy> myAllergiesList = [];
List<MySelectedHistory> myHistoryList = []; List<MySelectedHistory> myHistoryList = [];
@ -97,19 +97,19 @@ class _UpdateSoapIndexVidaPlusState extends State<UpdateSoapIndexVidaPlus>
}, },
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
children: <Widget>[ children: <Widget>[
UpdateAssessmentPage( UpdatePlanPageVidaPlus(
changePageViewIndex: changePageViewIndex, changePageViewIndex: changePageViewIndex,
currentIndex: _currentIndex, currentIndex: _currentIndex,
patientInfo: patient, patientInfo: patient,
changeLoadingState: changeLoadingState, changeLoadingState: changeLoadingState,
sOAPViewModel: model,
changeStateFun: changeStateFun,
), ),
UpdatePlanPageVidaPlus( UpdateAssessmentPage(
changePageViewIndex: changePageViewIndex, changePageViewIndex: changePageViewIndex,
currentIndex: _currentIndex, currentIndex: _currentIndex,
patientInfo: patient, patientInfo: patient,
changeLoadingState: changeLoadingState, changeLoadingState: changeLoadingState,
sOAPViewModel: model,
changeStateFun: changeStateFun,
), ),
UpdateObjectivePageVidaPlus( UpdateObjectivePageVidaPlus(
changePageViewIndex: changePageViewIndex, changePageViewIndex: changePageViewIndex,

@ -1947,6 +1947,8 @@ class TranslationBase {
String get remarksCanNotBeEmpty => localizedValues['remarksCanNotBeEmpty']![locale.languageCode]!; String get remarksCanNotBeEmpty => localizedValues['remarksCanNotBeEmpty']![locale.languageCode]!;
String get selectedDiagnosis => localizedValues['selectedDiagnosis']![locale.languageCode]!; String get selectedDiagnosis => localizedValues['selectedDiagnosis']![locale.languageCode]!;
String get selectConditionFirst => localizedValues['selectConditionFirst']![locale.languageCode]!; String get selectConditionFirst => localizedValues['selectConditionFirst']![locale.languageCode]!;
String get editDiagnosis => localizedValues['editDiagnosis']![locale.languageCode]!;
String get noChangeRecorded => localizedValues['noChangeRecorded']![locale.languageCode]!;
} }

Loading…
Cancel
Save