Merge branch 'update_flutter_3.24_vida_plus_episode' of http://34.17.52.180/Haroon6138/doctor_app_flutter into update_flutter_3.24_vida_plus_episode
commit
c040927e67
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M2.45416 1.79596C4.93831 0.272187 7.16683 0.879476 8.51311 1.89051C8.73459 2.05683 8.8866 2.17067 8.99975 2.24754C9.11292 2.17067 9.26492 2.05683 9.4864 1.89051C10.8327 0.879476 13.0612 0.272187 15.5454 1.79596C17.2631 2.8496 18.2296 5.0505 17.8904 7.57926C17.5496 10.1202 15.905 12.9941 12.422 15.5721C11.2125 16.4678 10.3248 17.1253 8.99976 17.1253C7.67471 17.1253 6.78702 16.4678 5.57754 15.5721C2.09453 12.9941 0.449878 10.1202 0.109088 7.57926C-0.230066 5.0505 0.73646 2.8496 2.45416 1.79596Z" fill="#459BF1"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 628 B |
@ -0,0 +1,92 @@
|
|||||||
|
class FavoriteDiseaseDetails {
|
||||||
|
String? categoryCode;
|
||||||
|
int? categoryId;
|
||||||
|
String? chapterCode;
|
||||||
|
String? codeRange;
|
||||||
|
String? createdBy;
|
||||||
|
String? diseaseType;
|
||||||
|
String? diseases;
|
||||||
|
String? diseasesCode;
|
||||||
|
int? diseasesId;
|
||||||
|
int? favoritesId;
|
||||||
|
int? hospitalGroupId;
|
||||||
|
int? hospitalId;
|
||||||
|
int? icdId;
|
||||||
|
String? icdSubVersion;
|
||||||
|
String? icdType;
|
||||||
|
String? icdVersion;
|
||||||
|
bool? isDeleted;
|
||||||
|
String? parentDiseasesCode;
|
||||||
|
String? problemCode;
|
||||||
|
String? problemDescription;
|
||||||
|
int? problemMasterId;
|
||||||
|
int? problemMasterRevisionId;
|
||||||
|
String? problemName;
|
||||||
|
String? problemType;
|
||||||
|
String? rowVersion;
|
||||||
|
String? sectionCode;
|
||||||
|
int? specificationId;
|
||||||
|
|
||||||
|
FavoriteDiseaseDetails.fromJson(Map<String, dynamic> json) {
|
||||||
|
categoryCode = json['CategoryCode'];
|
||||||
|
categoryId = json['CategoryId'];
|
||||||
|
chapterCode = json['ChapterCode'];
|
||||||
|
codeRange = json['CodeRange'];
|
||||||
|
createdBy = json['CreatedBy'];
|
||||||
|
diseaseType = json['DiseaseType'];
|
||||||
|
diseases = json['Diseases'];
|
||||||
|
diseasesCode = json['DiseasesCode'];
|
||||||
|
diseasesId = json['DiseasesId'];
|
||||||
|
favoritesId = json['FavoritesId'];
|
||||||
|
hospitalGroupId = json['HospitalGroupID'];
|
||||||
|
hospitalId = json['HospitalID'];
|
||||||
|
icdId = json['IcdId'];
|
||||||
|
icdSubVersion = json['IcdSubVersion'];
|
||||||
|
icdType = json['IcdType'];
|
||||||
|
icdVersion = json['IcdVersion'];
|
||||||
|
isDeleted = json['IsDeleted'];
|
||||||
|
parentDiseasesCode = json['ParentDiseasesCode'];
|
||||||
|
problemCode = json['ProblemCode'];
|
||||||
|
problemDescription = json['ProblemDescription'];
|
||||||
|
problemMasterId = json['ProblemMasterID'];
|
||||||
|
problemMasterRevisionId = json['ProblemMasterRevisionID'];
|
||||||
|
problemName = json['ProblemName'];
|
||||||
|
problemType = json['ProblemType'];
|
||||||
|
rowVersion = json['RowVersion'];
|
||||||
|
sectionCode = json['SectionCode'];
|
||||||
|
specificationId = json['SpecificationId'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// toJson method
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
return {
|
||||||
|
'CategoryCode': categoryCode,
|
||||||
|
'CategoryId': categoryId,
|
||||||
|
'ChapterCode': chapterCode,
|
||||||
|
'CodeRange': codeRange,
|
||||||
|
'CreatedBy': createdBy,
|
||||||
|
'DiseaseType': diseaseType,
|
||||||
|
'Diseases': diseases,
|
||||||
|
'DiseasesCode': diseasesCode,
|
||||||
|
'DiseasesId': diseasesId,
|
||||||
|
'FavoritesId': favoritesId,
|
||||||
|
'HospitalGroupID': hospitalGroupId,
|
||||||
|
'HospitalID': hospitalId,
|
||||||
|
'IcdId': icdId,
|
||||||
|
'IcdSubVersion': icdSubVersion,
|
||||||
|
'IcdType': icdType,
|
||||||
|
'IcdVersion': icdVersion,
|
||||||
|
'IsDeleted': isDeleted,
|
||||||
|
'ParentDiseasesCode': parentDiseasesCode,
|
||||||
|
'ProblemCode': problemCode,
|
||||||
|
'ProblemDescription': problemDescription,
|
||||||
|
'ProblemMasterID': problemMasterId,
|
||||||
|
'ProblemMasterRevisionID': problemMasterRevisionId,
|
||||||
|
'ProblemName': problemName,
|
||||||
|
'ProblemType': problemType,
|
||||||
|
'RowVersion': rowVersion,
|
||||||
|
'SectionCode': sectionCode,
|
||||||
|
'SpecificationId': specificationId,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
class AuditDiagnosis {
|
||||||
|
String? approvedBy;
|
||||||
|
String? approvedOn;
|
||||||
|
String? createdBy;
|
||||||
|
String? createdOn;
|
||||||
|
String? deletedBy;
|
||||||
|
String? deletedOn;
|
||||||
|
String? deletedRemarks;
|
||||||
|
String? diagnosisType;
|
||||||
|
bool? isEventIdentifiedExternally;
|
||||||
|
bool? isResolved;
|
||||||
|
String? modifiedBy;
|
||||||
|
String? modifiedOn;
|
||||||
|
int? patientId;
|
||||||
|
int? patientProblemRevisionId;
|
||||||
|
String? remarks;
|
||||||
|
String? status;
|
||||||
|
|
||||||
|
AuditDiagnosis.fromJson(Map<String, dynamic> json) {
|
||||||
|
approvedBy = json['approvedBy'];
|
||||||
|
approvedOn = json['approvedOn'];
|
||||||
|
createdBy = json['createdBy'];
|
||||||
|
createdOn = json['createdOn'];
|
||||||
|
deletedBy = json['deletedBy'];
|
||||||
|
deletedOn = json['deletedOn'];
|
||||||
|
deletedRemarks = json['deletedRemarks'];
|
||||||
|
diagnosisType = json['diagnosisType'];
|
||||||
|
isEventIdentifiedExternally = json['isEventIdentifiedExternally'];
|
||||||
|
isResolved = json['isResolved'];
|
||||||
|
modifiedBy = json['modifiedBy'];
|
||||||
|
modifiedOn = json['modifiedOn'];
|
||||||
|
patientId = json['patientId'];
|
||||||
|
patientProblemRevisionId = json['patientProblemRevisionId'];
|
||||||
|
remarks = json['remarks'];
|
||||||
|
status = json['status'];
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
class DiagnosisType {
|
||||||
|
String? diagnosisType;
|
||||||
|
String? name;
|
||||||
|
|
||||||
|
|
||||||
|
DiagnosisType.fromJson(Map<String, dynamic> json) {
|
||||||
|
diagnosisType = json['diagnosisType'] ?? '';
|
||||||
|
name = json['name'] ?? '';
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,287 @@
|
|||||||
|
class PatientPreviousDiagnosis {
|
||||||
|
bool? active;
|
||||||
|
int? admissionId;
|
||||||
|
int? admissionRequestId;
|
||||||
|
int? appointmentId;
|
||||||
|
String? approvedBy;
|
||||||
|
String? approvedOn;
|
||||||
|
int? assessmentId;
|
||||||
|
int? chiefComplainId;
|
||||||
|
int? clinicGroupId;
|
||||||
|
int? clinicId;
|
||||||
|
String? condition;
|
||||||
|
String? createdBy;
|
||||||
|
String? createdOn;
|
||||||
|
String? deletedBy;
|
||||||
|
String? deletedByDoctorName;
|
||||||
|
String? deletedOn;
|
||||||
|
String? deletedRemarks;
|
||||||
|
String? diagnosisType;
|
||||||
|
int? doctorId;
|
||||||
|
int? episodeId;
|
||||||
|
int? hospitalGroupId;
|
||||||
|
int? hospitalId;
|
||||||
|
dynamic icdCodeDetailsDto;
|
||||||
|
String? icdSubVersion;
|
||||||
|
String? icdType;
|
||||||
|
dynamic icdVersion;
|
||||||
|
String? location;
|
||||||
|
String? loginUserId;
|
||||||
|
String? modifiedBy;
|
||||||
|
String? modifiedOn;
|
||||||
|
String? module;
|
||||||
|
String? parentLocation;
|
||||||
|
int? patientId;
|
||||||
|
dynamic patientProblemChangeHistories;
|
||||||
|
int? patientProblemId;
|
||||||
|
int? patientProblemRevisionId;
|
||||||
|
int? pomrId;
|
||||||
|
bool? previousProblem;
|
||||||
|
int? problemId;
|
||||||
|
String? problemName;
|
||||||
|
String? remarks;
|
||||||
|
bool? resolved;
|
||||||
|
String? selectedCategoryCode;
|
||||||
|
String? selectedChapterCode;
|
||||||
|
String? selectedDisease;
|
||||||
|
String? selectedIcdCode;
|
||||||
|
String? selectedSectionCode;
|
||||||
|
String? status;
|
||||||
|
List<VisitWisePatientDiagnosis>? visitWisePatientDiagnoses;
|
||||||
|
bool? visitWiseSelected;
|
||||||
|
|
||||||
|
PatientPreviousDiagnosis.fromJson(Map<String, dynamic> json) {
|
||||||
|
active = json['active'];
|
||||||
|
admissionId = json['admissionId'];
|
||||||
|
admissionRequestId = json['admissionRequestId'];
|
||||||
|
appointmentId = json['appointmentId'];
|
||||||
|
approvedBy = json['approvedBy'];
|
||||||
|
approvedOn = json['approvedOn'];
|
||||||
|
assessmentId = json['assessmentId'];
|
||||||
|
chiefComplainId = json['chiefComplainId'];
|
||||||
|
clinicGroupId = json['clinicGroupId'];
|
||||||
|
clinicId = json['clinicId'];
|
||||||
|
condition = json['condition'];
|
||||||
|
createdBy = json['createdBy'];
|
||||||
|
createdOn = json['createdOn'];
|
||||||
|
deletedBy = json['deletedBy'];
|
||||||
|
deletedByDoctorName = json['deletedByDoctorName'];
|
||||||
|
deletedOn = json['deletedOn'];
|
||||||
|
deletedRemarks = json['deletedRemarks'];
|
||||||
|
diagnosisType = json['diagnosisType'];
|
||||||
|
doctorId = json['doctorId'];
|
||||||
|
episodeId = json['episodeId'];
|
||||||
|
hospitalGroupId = json['hospitalGroupId'];
|
||||||
|
hospitalId = json['hospitalId'];
|
||||||
|
icdCodeDetailsDto = json['icdCodeDetailsDto'];
|
||||||
|
icdSubVersion = json['icdSubVersion'];
|
||||||
|
icdType = json['icdType'];
|
||||||
|
icdVersion = json['icdVersion'];
|
||||||
|
location = json['location'];
|
||||||
|
loginUserId = json['loginUserId'];
|
||||||
|
modifiedBy = json['modifiedBy'];
|
||||||
|
modifiedOn = json['modifiedOn'];
|
||||||
|
module = json['module'];
|
||||||
|
parentLocation = json['parentLocation'];
|
||||||
|
patientId = json['patientId'];
|
||||||
|
patientProblemChangeHistories = json['patientProblemChangeHistories'];
|
||||||
|
patientProblemId = json['patientProblemId'];
|
||||||
|
patientProblemRevisionId = json['patientProblemRevisionId'];
|
||||||
|
pomrId = json['pomrId'];
|
||||||
|
previousProblem = json['previousProblem'];
|
||||||
|
problemId = json['problemId'];
|
||||||
|
problemName = json['problemName'];
|
||||||
|
remarks = json['remarks'];
|
||||||
|
resolved = json['resolved'];
|
||||||
|
selectedCategoryCode = json['selectedCategoryCode'];
|
||||||
|
selectedChapterCode = json['selectedChapterCode'];
|
||||||
|
selectedDisease = json['selectedDisease'];
|
||||||
|
selectedIcdCode = json['selectedIcdCode'];
|
||||||
|
selectedSectionCode = json['selectedSectionCode'];
|
||||||
|
status = json['status'];
|
||||||
|
visitWiseSelected = json['visitWiseSelected'];
|
||||||
|
if (json['visitWisePatientDiagnoses'] != null) {
|
||||||
|
visitWisePatientDiagnoses = [];
|
||||||
|
json['visitWisePatientDiagnoses'].forEach((v) {
|
||||||
|
visitWisePatientDiagnoses!.add(VisitWisePatientDiagnosis.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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 {
|
||||||
|
bool? active;
|
||||||
|
int? admissionId;
|
||||||
|
int? appointmentId;
|
||||||
|
String? approvedBy;
|
||||||
|
String? approvedOn;
|
||||||
|
int? assessmentId;
|
||||||
|
int? clinicId;
|
||||||
|
String? condition;
|
||||||
|
String? createdBy;
|
||||||
|
String? createdOn;
|
||||||
|
String? deletedBy;
|
||||||
|
String? deletedOn;
|
||||||
|
String? deletedRemarks;
|
||||||
|
String? diagnosisType;
|
||||||
|
int? doctorId;
|
||||||
|
int? episodeId;
|
||||||
|
int? hospitalGroupId;
|
||||||
|
int? hospitalId;
|
||||||
|
String? icdSubVersion;
|
||||||
|
String? icdType;
|
||||||
|
dynamic icdVersion;
|
||||||
|
bool? isPreviousProblem;
|
||||||
|
String? location;
|
||||||
|
String? loginUserId;
|
||||||
|
String? modifiedBy;
|
||||||
|
String? modifiedOn;
|
||||||
|
int? patientDiagnosisId;
|
||||||
|
int? patientId;
|
||||||
|
int? patientProblemRevisionId;
|
||||||
|
int? pomrId;
|
||||||
|
String? problemName;
|
||||||
|
String? remarks;
|
||||||
|
bool? resolved;
|
||||||
|
bool? selected;
|
||||||
|
String? selectedDisease;
|
||||||
|
int? selectedDoctorId;
|
||||||
|
String? selectedIcdCode;
|
||||||
|
|
||||||
|
VisitWisePatientDiagnosis.fromJson(Map<String, dynamic> json) {
|
||||||
|
active = json['active'];
|
||||||
|
admissionId = json['admissionId'];
|
||||||
|
appointmentId = json['appointmentId'];
|
||||||
|
approvedBy = json['approvedBy'];
|
||||||
|
approvedOn = json['approvedOn'];
|
||||||
|
assessmentId = json['assessmentId'];
|
||||||
|
clinicId = json['clinicId'];
|
||||||
|
condition = json['condition'];
|
||||||
|
createdBy = json['createdBy'];
|
||||||
|
createdOn = json['createdOn'];
|
||||||
|
deletedBy = json['deletedBy'];
|
||||||
|
deletedOn = json['deletedOn'];
|
||||||
|
deletedRemarks = json['deletedRemarks'];
|
||||||
|
diagnosisType = json['diagnosisType'];
|
||||||
|
doctorId = json['doctorId'];
|
||||||
|
episodeId = json['episodeId'];
|
||||||
|
hospitalGroupId = json['hospitalGroupId'];
|
||||||
|
hospitalId = json['hospitalId'];
|
||||||
|
icdSubVersion = json['icdSubVersion'];
|
||||||
|
icdType = json['icdType'];
|
||||||
|
icdVersion = json['icdVersion'];
|
||||||
|
isPreviousProblem = json['isPreviousProblem'];
|
||||||
|
location = json['location'];
|
||||||
|
loginUserId = json['loginUserId'];
|
||||||
|
modifiedBy = json['modifiedBy'];
|
||||||
|
modifiedOn = json['modifiedOn'];
|
||||||
|
patientDiagnosisId = json['patientDiagnosisId'];
|
||||||
|
patientId = json['patientId'];
|
||||||
|
patientProblemRevisionId = json['patientProblemRevisionId'];
|
||||||
|
pomrId = json['pomrId'];
|
||||||
|
problemName = json['problemName'];
|
||||||
|
remarks = json['remarks'];
|
||||||
|
resolved = json['resolved'];
|
||||||
|
selected = json['selected'];
|
||||||
|
selectedDisease = json['selectedDisease'];
|
||||||
|
selectedDoctorId = json['selectedDoctorId'];
|
||||||
|
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,99 @@
|
|||||||
|
class SearchDiagnosis {
|
||||||
|
String? category;
|
||||||
|
String? categoryId;
|
||||||
|
String? codeRange;
|
||||||
|
String? diseaseType;
|
||||||
|
String? diseases;
|
||||||
|
String? diseasesBCode;
|
||||||
|
String? diseasesCode;
|
||||||
|
String? diseasesDataId;
|
||||||
|
String? diseasesId;
|
||||||
|
String? diseasesName;
|
||||||
|
int? hospitalGroupId;
|
||||||
|
int? hospitalId;
|
||||||
|
String? icdSubVersion;
|
||||||
|
String? icdType;
|
||||||
|
List<String>? icdVersion;
|
||||||
|
String? icdVersionDisplay;
|
||||||
|
bool? isDeleted;
|
||||||
|
String? layerID;
|
||||||
|
String? parentDiseasesCode;
|
||||||
|
String? specification;
|
||||||
|
int? specificationId;
|
||||||
|
String? specificationNo;
|
||||||
|
String? selectedIcdCode;
|
||||||
|
String? selectedCategoryCode;
|
||||||
|
String? selectedSectionCode;
|
||||||
|
String? selectedChapterCode;
|
||||||
|
String? selectedNandaCode;
|
||||||
|
bool isFavorite = false;
|
||||||
|
|
||||||
|
// Default constructor
|
||||||
|
SearchDiagnosis();
|
||||||
|
|
||||||
|
// fromJson constructor
|
||||||
|
SearchDiagnosis.fromJson(Map<String, dynamic> json) {
|
||||||
|
category = json['category'];
|
||||||
|
categoryId = json['categoryId'];
|
||||||
|
codeRange = json['codeRange'];
|
||||||
|
diseaseType = json['diseaseType'];
|
||||||
|
diseases = json['diseases'];
|
||||||
|
diseasesBCode = json['diseasesBCode'];
|
||||||
|
diseasesCode = json['diseasesCode'];
|
||||||
|
diseasesDataId = json['diseasesDataId'];
|
||||||
|
diseasesId = json['diseasesId'];
|
||||||
|
diseasesName = json['diseasesName'];
|
||||||
|
hospitalGroupId = json['hospitalGroupId'];
|
||||||
|
hospitalId = json['hospitalId'];
|
||||||
|
icdSubVersion = json['icdSubVersion'];
|
||||||
|
icdType = json['icdType'];
|
||||||
|
icdVersion = json['icdVersion'] != null
|
||||||
|
? List<String>.from(json['icdVersion'])
|
||||||
|
: null;
|
||||||
|
icdVersionDisplay = json['icdVersionDisplay'];
|
||||||
|
isDeleted = json['isDeleted'] == "True";
|
||||||
|
layerID = json['layerID'];
|
||||||
|
parentDiseasesCode = json['parentDiseasesCode'];
|
||||||
|
specification = json['specification'];
|
||||||
|
specificationId = json['specificationId'];
|
||||||
|
specificationNo = json['specificationNo'];
|
||||||
|
selectedIcdCode = json['selectedIcdCode'];
|
||||||
|
selectedCategoryCode = json['selectedCategoryCode'];
|
||||||
|
selectedSectionCode = json['selectedSectionCode'];
|
||||||
|
selectedChapterCode = json['selectedChapterCode'];
|
||||||
|
selectedNandaCode = json['selectedNandaCode'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// toJson method
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
return {
|
||||||
|
'category': category,
|
||||||
|
'categoryId': categoryId,
|
||||||
|
'codeRange': codeRange,
|
||||||
|
'diseaseType': diseaseType,
|
||||||
|
'diseases': diseases,
|
||||||
|
'diseasesBCode': diseasesBCode,
|
||||||
|
'diseasesCode': diseasesCode,
|
||||||
|
'diseasesDataId': diseasesDataId,
|
||||||
|
'diseasesId': diseasesId,
|
||||||
|
'diseasesName': diseasesName,
|
||||||
|
'hospitalGroupId': hospitalGroupId,
|
||||||
|
'hospitalId': hospitalId,
|
||||||
|
'icdSubVersion': icdSubVersion,
|
||||||
|
'icdType': icdType,
|
||||||
|
'icdVersion': icdVersion,
|
||||||
|
'icdVersionDisplay': icdVersionDisplay,
|
||||||
|
'isDeleted': isDeleted.toString(),
|
||||||
|
'layerID': layerID,
|
||||||
|
'parentDiseasesCode': parentDiseasesCode,
|
||||||
|
'specification': specification,
|
||||||
|
'specificationId': specificationId,
|
||||||
|
'specificationNo': specificationNo,
|
||||||
|
'selectedIcdCode': selectedIcdCode,
|
||||||
|
'selectedCategoryCode': selectedCategoryCode,
|
||||||
|
'selectedSectionCode': selectedSectionCode,
|
||||||
|
'selectedChapterCode': selectedChapterCode,
|
||||||
|
'selectedNandaCode': selectedNandaCode,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,95 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class Condition {
|
||||||
|
String? conditionCode;
|
||||||
|
String? conditionName;
|
||||||
|
|
||||||
|
Condition();
|
||||||
|
|
||||||
|
Condition.fromJson(Map<String, dynamic> json) {
|
||||||
|
conditionCode = json['conditionCode'];
|
||||||
|
conditionName = json['conditionName'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
return {
|
||||||
|
'conditionCode': conditionCode,
|
||||||
|
'conditionName': conditionName,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Category {
|
||||||
|
int? categoryId;
|
||||||
|
String? code;
|
||||||
|
String? codeAlias;
|
||||||
|
List<Condition>? conditionsList;
|
||||||
|
String? description;
|
||||||
|
String? descriptionAlias;
|
||||||
|
int? id;
|
||||||
|
bool? isActive;
|
||||||
|
bool? isBuiltin;
|
||||||
|
String? languageCode;
|
||||||
|
String? name;
|
||||||
|
String? nameAlias;
|
||||||
|
int? rowVersion;
|
||||||
|
int? specialityId;
|
||||||
|
String? specialityName;
|
||||||
|
List<dynamic>? translationValues;
|
||||||
|
bool isSelected = false;
|
||||||
|
TextEditingController remarksController = TextEditingController();
|
||||||
|
int selectedCondition = -1;
|
||||||
|
String? pomrId;
|
||||||
|
int? paitientId;
|
||||||
|
int? userID;
|
||||||
|
bool isExpanded = false;
|
||||||
|
|
||||||
|
Category();
|
||||||
|
|
||||||
|
Category.fromJson(Map<String, dynamic> json,int? specialityId, String specialityName, String? pomrId, int paitientId, int userID) {
|
||||||
|
categoryId = json['categoryId'];
|
||||||
|
code = json['code'];
|
||||||
|
codeAlias = json['codeAlias'];
|
||||||
|
if (json['conditionsList'] != null) {
|
||||||
|
conditionsList = <Condition>[];
|
||||||
|
json['conditionsList'].forEach((v) {
|
||||||
|
conditionsList!.add(Condition.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if(conditionsList?.isNotEmpty == true) selectedCondition = int.parse(conditionsList?.first.conditionName ??'-1');
|
||||||
|
description = json['description'];
|
||||||
|
descriptionAlias = json['descriptionAlias'];
|
||||||
|
id = json['id'];
|
||||||
|
isActive = json['isActive'];
|
||||||
|
isBuiltin = json['isBuiltin'];
|
||||||
|
languageCode = json['languageCode'];
|
||||||
|
name = json['name'];
|
||||||
|
nameAlias = json['nameAlias'];
|
||||||
|
rowVersion = json['rowVersion'];
|
||||||
|
translationValues = json['translationValues'];
|
||||||
|
this.specialityName = specialityName;
|
||||||
|
this.specialityId = specialityId;
|
||||||
|
this.pomrId = pomrId;
|
||||||
|
this.paitientId = paitientId;
|
||||||
|
this.userID = userID;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
return {
|
||||||
|
'categoryId': categoryId,
|
||||||
|
'code': code,
|
||||||
|
'codeAlias': codeAlias,
|
||||||
|
'conditionsList': conditionsList?.map((v) => v.toJson()).toList(),
|
||||||
|
'description': description,
|
||||||
|
'descriptionAlias': descriptionAlias,
|
||||||
|
'id': id,
|
||||||
|
'isActive': isActive,
|
||||||
|
'isBuiltin': isBuiltin,
|
||||||
|
'languageCode': languageCode,
|
||||||
|
'name': name,
|
||||||
|
'nameAlias': nameAlias,
|
||||||
|
'rowVersion': rowVersion,
|
||||||
|
'translationValues': translationValues,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,74 @@
|
|||||||
|
import 'package:doctor_app_flutter/core/model/SOAP/physical_exam/Category.dart';
|
||||||
|
|
||||||
|
class CreatePhysicalExamination {
|
||||||
|
bool? isChecked; // it will be told
|
||||||
|
bool? selected; // same as above
|
||||||
|
String? pomrid; // paitient
|
||||||
|
int? patientID; // paitint
|
||||||
|
bool? isClinicPhysicalExamination; // it will be told
|
||||||
|
int? physicalExaminationSystemID; // category id
|
||||||
|
String? physicalExaminationDescription; // name of the category
|
||||||
|
int? specialityID; // id of the specialitiy id
|
||||||
|
dynamic selectedOptions; // it will also be told but it could be sent as null
|
||||||
|
bool? isMandatory; // it will also be checked default value is false
|
||||||
|
String? specialityDescription; // name of the speciality
|
||||||
|
int? physicalExaminationCondition; // condition selected
|
||||||
|
String? loginUserId; // doctor id
|
||||||
|
String? remark;
|
||||||
|
|
||||||
|
CreatePhysicalExamination();
|
||||||
|
|
||||||
|
CreatePhysicalExamination.fromJson(Map<String, dynamic> json) {
|
||||||
|
isChecked = json['isChecked'];
|
||||||
|
selected = json['selected'];
|
||||||
|
pomrid = json['pomrid'];
|
||||||
|
patientID = json['patientID'];
|
||||||
|
isClinicPhysicalExamination = json['isClinicPhysicalExamination'];
|
||||||
|
physicalExaminationSystemID = json['physicalExaminationSystemID'];
|
||||||
|
physicalExaminationDescription = json['physicalExaminationDescription'];
|
||||||
|
specialityID = json['specialityID'];
|
||||||
|
selectedOptions = json['selectedOptions'];
|
||||||
|
isMandatory = json['isMandatory'];
|
||||||
|
specialityDescription = json['specialityDescription'];
|
||||||
|
physicalExaminationCondition = json['physicalExaminationCondition'];
|
||||||
|
loginUserId = json['loginUserId'];
|
||||||
|
remark = json['remark'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
return {
|
||||||
|
'isChecked': isChecked,
|
||||||
|
'selected': selected,
|
||||||
|
'pomrid': pomrid,
|
||||||
|
'patientID': patientID,
|
||||||
|
'isClinicPhysicalExamination': isClinicPhysicalExamination,
|
||||||
|
'physicalExaminationSystemID': physicalExaminationSystemID,
|
||||||
|
'physicalExaminationDescription': physicalExaminationDescription,
|
||||||
|
'specialityID': specialityID,
|
||||||
|
'selectedOptions': selectedOptions,
|
||||||
|
'isMandatory': isMandatory,
|
||||||
|
'specialityDescription': specialityDescription,
|
||||||
|
'physicalExaminationCondition': physicalExaminationCondition,
|
||||||
|
'loginUserId': loginUserId,
|
||||||
|
'remark': remark,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension ConvertCategoryToCreatePhysicalExamination on Category {
|
||||||
|
CreatePhysicalExamination createPhysicalExaminationFromCategory() =>
|
||||||
|
CreatePhysicalExamination()
|
||||||
|
..physicalExaminationDescription = this.name
|
||||||
|
..physicalExaminationSystemID = this.categoryId
|
||||||
|
..physicalExaminationCondition = this.selectedCondition
|
||||||
|
..remark = this.remarksController.text
|
||||||
|
..selected = false
|
||||||
|
..isChecked = false
|
||||||
|
..specialityID = this.specialityId
|
||||||
|
..patientID = this.paitientId
|
||||||
|
..pomrid = this.pomrId
|
||||||
|
..loginUserId = this.userID?.toString()
|
||||||
|
..isMandatory = false
|
||||||
|
..specialityDescription = this.specialityName
|
||||||
|
..isClinicPhysicalExamination = true;
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
class GeneralSpeciality {
|
||||||
|
int? id;
|
||||||
|
bool? isActive;
|
||||||
|
String? name;
|
||||||
|
int? rowVersion;
|
||||||
|
bool isSelected = false;
|
||||||
|
|
||||||
|
GeneralSpeciality();
|
||||||
|
|
||||||
|
GeneralSpeciality.fromJson(Map<String, dynamic> json) {
|
||||||
|
id = json['id'];
|
||||||
|
isActive = json['isActive'];
|
||||||
|
name = json['name'];
|
||||||
|
rowVersion = json['rowVersion'];
|
||||||
|
}
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
return {
|
||||||
|
'id': id,
|
||||||
|
'isActive': isActive,
|
||||||
|
'name': name,
|
||||||
|
'rowVersion': rowVersion,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,97 @@
|
|||||||
|
class PatientPhysicalExamination {
|
||||||
|
int? patientPhysicalExaminationRevisionID;
|
||||||
|
int? patientPhysicalExaminationID;
|
||||||
|
int? patientID;
|
||||||
|
int? physicalExaminationSystemID;
|
||||||
|
String? physicalExaminationDescription;
|
||||||
|
int? physicalExaminationCondition;
|
||||||
|
String? remark;
|
||||||
|
int? assessmentId;
|
||||||
|
String? userType;
|
||||||
|
int? specialtyID;
|
||||||
|
String? specialityDescription;
|
||||||
|
String? loginUserId;
|
||||||
|
bool? isMandatory;
|
||||||
|
String? examinationType;
|
||||||
|
dynamic additionalParams; // Use dynamic for null or varied types
|
||||||
|
int? hospitalGroupID;
|
||||||
|
int? hospitalID;
|
||||||
|
int? dbCRUDOperation;
|
||||||
|
bool? isActive;
|
||||||
|
int? createdBy;
|
||||||
|
String? createdOn;
|
||||||
|
int? modifiedBy;
|
||||||
|
String? modifiedOn;
|
||||||
|
int? approvedBy;
|
||||||
|
String? approvedOn;
|
||||||
|
String? rowVersion;
|
||||||
|
String? pomrid;
|
||||||
|
|
||||||
|
// Default constructor
|
||||||
|
PatientPhysicalExamination();
|
||||||
|
|
||||||
|
// fromJson constructor
|
||||||
|
PatientPhysicalExamination.fromJson(Map<String, dynamic> json) {
|
||||||
|
patientPhysicalExaminationRevisionID =
|
||||||
|
json['patientPhysicalExaminationRevisionID'];
|
||||||
|
patientPhysicalExaminationID = json['patientPhysicalExaminationID'];
|
||||||
|
patientID = json['patientID'];
|
||||||
|
physicalExaminationSystemID = json['physicalExaminationSystemID'];
|
||||||
|
physicalExaminationDescription = json['physicalExaminationDescription'];
|
||||||
|
physicalExaminationCondition = json['physicalExaminationCondition'];
|
||||||
|
remark = json['remark'];
|
||||||
|
assessmentId = json['assessmentId'];
|
||||||
|
userType = json['userType'];
|
||||||
|
specialtyID = json['specialtyID'];
|
||||||
|
specialityDescription = json['specialityDescription'];
|
||||||
|
loginUserId = json['loginUserId'];
|
||||||
|
isMandatory = json['isMandatory'];
|
||||||
|
examinationType = json['examinationType'];
|
||||||
|
additionalParams = json['additionalParams'];
|
||||||
|
hospitalGroupID = json['hospitalGroupID'];
|
||||||
|
hospitalID = json['hospitalID'];
|
||||||
|
dbCRUDOperation = json['dbCRUDOperation'];
|
||||||
|
isActive = json['isActive'];
|
||||||
|
createdBy = json['createdBy'];
|
||||||
|
createdOn = json['createdOn'];
|
||||||
|
modifiedBy = json['modifiedBy'];
|
||||||
|
modifiedOn = json['modifiedOn'];
|
||||||
|
approvedBy = json['approvedBy'];
|
||||||
|
approvedOn = json['approvedOn'];
|
||||||
|
rowVersion = json['rowVersion'];
|
||||||
|
pomrid = json['pomrid'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// toJson method
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
return {
|
||||||
|
'patientPhysicalExaminationRevisionID': patientPhysicalExaminationRevisionID,
|
||||||
|
'patientPhysicalExaminationID': patientPhysicalExaminationID,
|
||||||
|
'patientID': patientID,
|
||||||
|
'physicalExaminationSystemID': physicalExaminationSystemID,
|
||||||
|
'physicalExaminationDescription': physicalExaminationDescription,
|
||||||
|
'physicalExaminationCondition': physicalExaminationCondition,
|
||||||
|
'remark': remark,
|
||||||
|
'assessmentId': assessmentId,
|
||||||
|
'userType': userType,
|
||||||
|
'specialtyID': specialtyID,
|
||||||
|
'specialityDescription': specialityDescription,
|
||||||
|
'loginUserId': loginUserId,
|
||||||
|
'isMandatory': isMandatory,
|
||||||
|
'examinationType': examinationType,
|
||||||
|
'additionalParams': additionalParams,
|
||||||
|
'hospitalGroupID': hospitalGroupID,
|
||||||
|
'hospitalID': hospitalID,
|
||||||
|
'dbCRUDOperation': dbCRUDOperation,
|
||||||
|
'isActive': isActive,
|
||||||
|
'createdBy': createdBy,
|
||||||
|
'createdOn': createdOn,
|
||||||
|
'modifiedBy': modifiedBy,
|
||||||
|
'modifiedOn': modifiedOn,
|
||||||
|
'approvedBy': approvedBy,
|
||||||
|
'approvedOn': approvedOn,
|
||||||
|
'rowVersion': rowVersion,
|
||||||
|
'pomrid': pomrid,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
@deprecated
|
||||||
|
class PostPhysicalExaminationModel {
|
||||||
|
bool? isChecked;
|
||||||
|
bool? selected;
|
||||||
|
int? pomrid;
|
||||||
|
int? patientID;
|
||||||
|
bool? isClinicPhysicalExamination;
|
||||||
|
int? physicalExaminationSystemID;
|
||||||
|
String? physicalExaminationDescription;
|
||||||
|
int? specialityID;
|
||||||
|
dynamic selectedOptions;
|
||||||
|
bool? isMandatory;
|
||||||
|
String? specialityDescription;
|
||||||
|
int? physicalExaminationCondition;
|
||||||
|
String? loginUserId;
|
||||||
|
String? remark;
|
||||||
|
|
||||||
|
PostPhysicalExaminationModel();
|
||||||
|
|
||||||
|
PostPhysicalExaminationModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
isChecked = json['isChecked'];
|
||||||
|
selected = json['selected'];
|
||||||
|
pomrid = json['pomrid'];
|
||||||
|
patientID = json['patientID'];
|
||||||
|
isClinicPhysicalExamination = json['isClinicPhysicalExamination'];
|
||||||
|
physicalExaminationSystemID = json['physicalExaminationSystemID'];
|
||||||
|
physicalExaminationDescription = json['physicalExaminationDescription'];
|
||||||
|
specialityID = json['specialityID'];
|
||||||
|
selectedOptions = json['selectedOptions'];
|
||||||
|
isMandatory = json['isMandatory'];
|
||||||
|
specialityDescription = json['specialityDescription'];
|
||||||
|
physicalExaminationCondition = json['physicalExaminationCondition'];
|
||||||
|
loginUserId = json['loginUserId'];
|
||||||
|
remark = json['remark'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
return {
|
||||||
|
'isChecked': isChecked,
|
||||||
|
'selected': selected,
|
||||||
|
'pomrid': pomrid,
|
||||||
|
'patientID': patientID,
|
||||||
|
'isClinicPhysicalExamination': isClinicPhysicalExamination,
|
||||||
|
'physicalExaminationSystemID': physicalExaminationSystemID,
|
||||||
|
'physicalExaminationDescription': physicalExaminationDescription,
|
||||||
|
'specialityID': specialityID,
|
||||||
|
'selectedOptions': selectedOptions,
|
||||||
|
'isMandatory': isMandatory,
|
||||||
|
'specialityDescription': specialityDescription,
|
||||||
|
'physicalExaminationCondition': physicalExaminationCondition,
|
||||||
|
'loginUserId': loginUserId,
|
||||||
|
'remark': remark,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,85 @@
|
|||||||
|
class ProgressNote {
|
||||||
|
int? clinicGroupId;
|
||||||
|
int? clinicId;
|
||||||
|
int? createdById;
|
||||||
|
String? createdOn;
|
||||||
|
int? employeeId;
|
||||||
|
int? hospitalGroupId;
|
||||||
|
int? hospitalId;
|
||||||
|
String? loginUserId;
|
||||||
|
String? manualDate;
|
||||||
|
String? modifiedOn;
|
||||||
|
String? patientCondition;
|
||||||
|
String? patientConditionName;
|
||||||
|
int? patientId;
|
||||||
|
int? patientPomrId;
|
||||||
|
String? progressNote;
|
||||||
|
int? progressNoteId;
|
||||||
|
String? progressNotesTypes;
|
||||||
|
String? progressNotesTypesName;
|
||||||
|
String? speciality;
|
||||||
|
String? specialityName;
|
||||||
|
int? subCategoryId;
|
||||||
|
String? userFullName;
|
||||||
|
int? userId;
|
||||||
|
String? userType;
|
||||||
|
|
||||||
|
ProgressNote();
|
||||||
|
|
||||||
|
ProgressNote.fromJson(Map<String, dynamic> json) {
|
||||||
|
clinicGroupId = json['clinicGroupId'];
|
||||||
|
clinicId = json['clinicId'];
|
||||||
|
createdById = json['createdById'];
|
||||||
|
createdOn = json['createdOn'];
|
||||||
|
employeeId = json['employeeId'];
|
||||||
|
hospitalGroupId = json['hospitalGroupId'];
|
||||||
|
hospitalId = json['hospitalId'];
|
||||||
|
loginUserId = json['loginUserId'];
|
||||||
|
manualDate = json['manualDate'];
|
||||||
|
modifiedOn = json['modifiedOn'];
|
||||||
|
patientCondition = json['patientCondition'];
|
||||||
|
patientConditionName = json['patientConditionName'];
|
||||||
|
patientId = json['patientId'];
|
||||||
|
patientPomrId = json['patientPomrId'];
|
||||||
|
progressNote = json['progressNote'];
|
||||||
|
progressNoteId = json['progressNoteId'];
|
||||||
|
progressNotesTypes = json['progressNotesTypes'];
|
||||||
|
progressNotesTypesName = json['progressNotesTypesName'];
|
||||||
|
speciality = json['speciality'];
|
||||||
|
specialityName = json['specialityName'];
|
||||||
|
subCategoryId = json['subCategoryId'];
|
||||||
|
userFullName = json['userFullName'];
|
||||||
|
userId = json['userId'];
|
||||||
|
userType = json['userType'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// toJson method
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
return {
|
||||||
|
'clinicGroupId': clinicGroupId,
|
||||||
|
'clinicId': clinicId,
|
||||||
|
'createdById': createdById,
|
||||||
|
'createdOn': createdOn,
|
||||||
|
'employeeId': employeeId,
|
||||||
|
'hospitalGroupId': hospitalGroupId,
|
||||||
|
'hospitalId': hospitalId,
|
||||||
|
'loginUserId': loginUserId,
|
||||||
|
'manualDate': manualDate,
|
||||||
|
'modifiedOn': modifiedOn,
|
||||||
|
'patientCondition': patientCondition,
|
||||||
|
'patientConditionName': patientConditionName,
|
||||||
|
'patientId': patientId,
|
||||||
|
'patientPomrId': patientPomrId,
|
||||||
|
'progressNote': progressNote,
|
||||||
|
'progressNoteId': progressNoteId,
|
||||||
|
'progressNotesTypes': progressNotesTypes,
|
||||||
|
'progressNotesTypesName': progressNotesTypesName,
|
||||||
|
'speciality': speciality,
|
||||||
|
'specialityName': specialityName,
|
||||||
|
'subCategoryId': subCategoryId,
|
||||||
|
'userFullName': userFullName,
|
||||||
|
'userId': userId,
|
||||||
|
'userType': userType,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,94 @@
|
|||||||
|
import 'package:doctor_app_flutter/core/model/SOAP/assessment/audit_diagnosis.dart';
|
||||||
|
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
|
||||||
|
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
|
class AuditItem extends StatelessWidget {
|
||||||
|
final AuditDiagnosis auditDiagnosis;
|
||||||
|
|
||||||
|
const AuditItem({super.key, required this.auditDiagnosis});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
AppText(
|
||||||
|
auditDiagnosis.createdBy ?? '',
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 12,
|
||||||
|
color: Color(0xFF2B353E),
|
||||||
|
),
|
||||||
|
AppText(
|
||||||
|
getDate(auditDiagnosis.createdOn?.isNotEmpty== true ? auditDiagnosis.createdOn ?? '' : auditDiagnosis.modifiedOn??''),
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 10,
|
||||||
|
color: Color(0xFF2B353E),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(height: 4,),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
AppText(
|
||||||
|
"${TranslationBase.of(context).diagnosis}: ${auditDiagnosis.diagnosisType}",
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 12,
|
||||||
|
color: Color(0xFF2B353E),
|
||||||
|
),
|
||||||
|
AppText(
|
||||||
|
getTime(auditDiagnosis.createdOn?.isNotEmpty== true ? auditDiagnosis.createdOn ?? '' : auditDiagnosis.modifiedOn??''),
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 10,
|
||||||
|
color: Color(0xFF2B353E),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
|
||||||
|
Visibility(
|
||||||
|
visible: auditDiagnosis.deletedRemarks?.isEmpty == true,
|
||||||
|
child: AppText(
|
||||||
|
//todo handle the item after the discussion from the vidapro team this is temporary
|
||||||
|
"${TranslationBase.of(context).remarks}: ${auditDiagnosis.remarks?.isNotEmpty == true? auditDiagnosis.remarks : TranslationBase.of(context).noRemarks}",
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 12,
|
||||||
|
color: Color(0xFF2B353E),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Visibility(
|
||||||
|
visible: auditDiagnosis.deletedRemarks?.isNotEmpty == true,
|
||||||
|
child: AppText(
|
||||||
|
//todo handle the item after the discussion from the vidapro team this is temporary
|
||||||
|
"${TranslationBase.of(context).deletedRemarks}${auditDiagnosis.deletedRemarks}",
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 12,
|
||||||
|
color: Color(0xFF2B353E),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
String getDate(String dateTime) {
|
||||||
|
if (dateTime.isEmpty) return '';
|
||||||
|
DateTime now = DateTime.now();
|
||||||
|
return DateFormat('dd MMM yyyy').format(now);
|
||||||
|
}
|
||||||
|
|
||||||
|
String getTime(String dateTime) {
|
||||||
|
if (dateTime.isEmpty) return '';
|
||||||
|
DateTime now = DateTime.now();
|
||||||
|
return DateFormat('hh:mm a').format(now);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,62 @@
|
|||||||
|
import 'package:doctor_app_flutter/core/model/SOAP/assessment/audit_diagnosis.dart';
|
||||||
|
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/assessment/widget/audit_item.dart';
|
||||||
|
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
|
||||||
|
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class AuditListBottomSheet extends StatelessWidget {
|
||||||
|
final List<AuditDiagnosis> auditList;
|
||||||
|
|
||||||
|
const AuditListBottomSheet({super.key, required this.auditList});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return SizedBox(
|
||||||
|
height: (auditList.length>1)?MediaQuery.sizeOf(context).height*.41:MediaQuery.sizeOf(context).height*.28,
|
||||||
|
child: Material(
|
||||||
|
color: Color(0xFFF7F7F7),
|
||||||
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.only(topLeft: Radius.circular(20), topRight: Radius.circular(20))),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 32),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
AppText(
|
||||||
|
TranslationBase.of(context).audit,
|
||||||
|
fontWeight: FontWeight.w700,
|
||||||
|
fontSize: 24,
|
||||||
|
color: Color(0xFF2B353E),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 16,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: (auditList.length>1)?MediaQuery.sizeOf(context).height*.25:MediaQuery.sizeOf(context).height*.12,
|
||||||
|
child: Material(
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(10)),
|
||||||
|
color: Colors.white,
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: ListView.separated(
|
||||||
|
|
||||||
|
itemCount: auditList.length,
|
||||||
|
itemBuilder: (context, index) => AuditItem(
|
||||||
|
auditDiagnosis: auditList[index],
|
||||||
|
),
|
||||||
|
separatorBuilder: (_, __) => Divider(),
|
||||||
|
))
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,61 +1,250 @@
|
|||||||
|
import 'package:doctor_app_flutter/config/config.dart';
|
||||||
|
import 'package:doctor_app_flutter/core/model/SOAP/assessment/audit_diagnosis.dart';
|
||||||
|
import 'package:doctor_app_flutter/core/model/SOAP/assessment/patient_previous_diagnosis.dart';
|
||||||
|
import 'package:doctor_app_flutter/core/model/patient/patiant_info_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/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/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';
|
||||||
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/widgets/shared/app_texts_widget.dart';
|
||||||
|
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
|
||||||
import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart';
|
import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class CurrentDiagnosis extends StatelessWidget {
|
import '../../../../../../widgets/shared/text_fields/app-textfield-custom.dart';
|
||||||
final List<dynamic> currentDiagnosisItems;
|
|
||||||
|
|
||||||
const CurrentDiagnosis({super.key, required this.currentDiagnosisItems});
|
class CurrentDiagnosis extends StatefulWidget {
|
||||||
|
final PatiantInformtion patientInfo;
|
||||||
|
final List<PatientPreviousDiagnosis> currentDiagnosisItems;
|
||||||
|
final SOAPViewModel model;
|
||||||
|
|
||||||
|
const CurrentDiagnosis(
|
||||||
|
{super.key,
|
||||||
|
required this.currentDiagnosisItems,
|
||||||
|
required this.patientInfo,
|
||||||
|
required this.model});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<CurrentDiagnosis> createState() => _CurrentDiagnosisState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _CurrentDiagnosisState extends State<CurrentDiagnosis> {
|
||||||
|
TextEditingController deleteController = TextEditingController();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Padding(
|
return BaseView<SOAPViewModel>(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
|
onModelReady: (model) async {},
|
||||||
child: Column(
|
builder: (_, model, w) {
|
||||||
mainAxisSize: MainAxisSize.max,
|
if (model.showAudit) {
|
||||||
children: [
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
SizedBox(
|
showAuditBottomSheet(context, model.auditDiagnosislist,
|
||||||
height: 10,
|
model.toggleShowBottomSheetValue);
|
||||||
),
|
model.toggleShowBottomSheetValue(false);
|
||||||
AddSoapItem(
|
});
|
||||||
title: TranslationBase.of(context).addNewDiagnosis,
|
|
||||||
onAddSoapItemClicked: () {
|
|
||||||
Navigator.push(context, FadePage(page: AddDiagnosis()));
|
|
||||||
}),
|
|
||||||
SizedBox(
|
|
||||||
height: 16,
|
|
||||||
),
|
|
||||||
Divider(),
|
|
||||||
SizedBox(
|
|
||||||
height: 16,
|
|
||||||
),
|
|
||||||
if (currentDiagnosisItems.isEmpty) ...{
|
|
||||||
Center(
|
|
||||||
child: EmptyDiagnosis(),
|
|
||||||
),
|
|
||||||
} else ...{
|
|
||||||
Flexible(
|
|
||||||
|
|
||||||
child:
|
|
||||||
ListView.separated(
|
|
||||||
itemBuilder: (_, index) {
|
|
||||||
return SoapDetailItem(
|
|
||||||
title: 'lorem ipsum',
|
|
||||||
status: 'active',
|
|
||||||
condition: 'acute',
|
|
||||||
remarks: 'initial',
|
|
||||||
onSoapDetailActionClicked: (action) {},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
separatorBuilder: (_, index) => Divider(),
|
|
||||||
itemCount: currentDiagnosisItems.length))
|
|
||||||
}
|
}
|
||||||
],
|
|
||||||
),
|
return Padding(
|
||||||
);
|
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 10,
|
||||||
|
),
|
||||||
|
AddSoapItem(
|
||||||
|
title: TranslationBase.of(context).addNewDiagnosis,
|
||||||
|
onAddSoapItemClicked: () async {
|
||||||
|
bool result = await Navigator.push(
|
||||||
|
context,
|
||||||
|
FadePage(
|
||||||
|
page: AddDiagnosis(
|
||||||
|
patientInfo: widget.patientInfo,
|
||||||
|
)));
|
||||||
|
if (result) {
|
||||||
|
model.getCurrentDiagnosisList(widget.patientInfo);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
SizedBox(
|
||||||
|
height: 16,
|
||||||
|
),
|
||||||
|
Divider(),
|
||||||
|
SizedBox(
|
||||||
|
height: 16,
|
||||||
|
),
|
||||||
|
if (widget.currentDiagnosisItems.isEmpty) ...{
|
||||||
|
Center(
|
||||||
|
child: EmptyDiagnosis(),
|
||||||
|
),
|
||||||
|
} else ...{
|
||||||
|
Flexible(
|
||||||
|
child: ListView.separated(
|
||||||
|
itemBuilder: (_, index) {
|
||||||
|
return SoapDetailItem(
|
||||||
|
title: widget.currentDiagnosisItems[index]
|
||||||
|
.selectedDisease ??
|
||||||
|
'',
|
||||||
|
status:
|
||||||
|
widget.currentDiagnosisItems[index].status ??
|
||||||
|
'',
|
||||||
|
condition: widget
|
||||||
|
.currentDiagnosisItems[index].condition ??
|
||||||
|
'',
|
||||||
|
remarks:
|
||||||
|
widget.currentDiagnosisItems[index].remarks ??
|
||||||
|
'',
|
||||||
|
onSoapDetailActionClicked: (action) async{
|
||||||
|
switch (action) {
|
||||||
|
case SoapDetailItemActions.AUDIT:
|
||||||
|
model.getAuditOfDiagnosis(
|
||||||
|
widget.patientInfo,
|
||||||
|
widget.currentDiagnosisItems[index]
|
||||||
|
.patientProblemRevisionId
|
||||||
|
?.toString() ??
|
||||||
|
'');
|
||||||
|
break;
|
||||||
|
case SoapDetailItemActions.EDIT:
|
||||||
|
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:
|
||||||
|
bool result = await model.resolveDiagnosis(widget.currentDiagnosisItems[index]);
|
||||||
|
if (result) {
|
||||||
|
model.getCurrentDiagnosisList(widget.patientInfo);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SoapDetailItemActions.REMOVE:
|
||||||
|
showConfirmationDialog(context,
|
||||||
|
"${TranslationBase.of(context).delete} ${TranslationBase.of(context).diagnosis}",
|
||||||
|
() {
|
||||||
|
widget.model
|
||||||
|
.removeDiagnosis(widget.patientInfo);
|
||||||
|
});
|
||||||
|
case SoapDetailItemActions.CHANGE_STATUS:
|
||||||
|
// TODO: Handle this case.
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
separatorBuilder: (_, index) => Divider(),
|
||||||
|
itemCount: widget.currentDiagnosisItems.length))
|
||||||
|
}
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
showConfirmationDialog(
|
||||||
|
BuildContext context, String message, Function okFunction) {
|
||||||
|
return showDialog(
|
||||||
|
context: context,
|
||||||
|
barrierDismissible: true, // user must tap button!
|
||||||
|
builder: (_) {
|
||||||
|
return Container(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
AlertDialog(
|
||||||
|
title: null,
|
||||||
|
content: Container(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
AppText(message),
|
||||||
|
SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
AppText(
|
||||||
|
TranslationBase.of(context)
|
||||||
|
.areYouSureYouWantToDeleteDiagnosis,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
AppTextFieldCustom(
|
||||||
|
hintText: TranslationBase.of(context).remarks,
|
||||||
|
controller: deleteController,
|
||||||
|
maxLines: 25,
|
||||||
|
minLines: 3,
|
||||||
|
hasBorder: true,
|
||||||
|
onChanged: (value) {},
|
||||||
|
inputType: TextInputType.multiline,
|
||||||
|
onClick: () {},
|
||||||
|
onFieldSubmitted: () {},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
actions: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: AppButton(
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
title: TranslationBase.of(context).cancel,
|
||||||
|
fontColor: Colors.black,
|
||||||
|
color: Color(0xffEAEAEA),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 8,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: AppButton(
|
||||||
|
onPressed: () {
|
||||||
|
okFunction();
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
title: TranslationBase.of(context).delete,
|
||||||
|
fontColor: Colors.white,
|
||||||
|
color: Colors.red[600],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}).then((value) {
|
||||||
|
deleteController.clear();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void showAuditBottomSheet(
|
||||||
|
BuildContext context,
|
||||||
|
List<AuditDiagnosis> diagnosis,
|
||||||
|
void Function(bool status) toggleShowBottomSheetValue,
|
||||||
|
) {
|
||||||
|
showModalBottomSheet(
|
||||||
|
isDismissible: true,
|
||||||
|
context: context,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.only(
|
||||||
|
topLeft: Radius.circular(20), topRight: Radius.circular(20))),
|
||||||
|
builder: (_) {
|
||||||
|
return AuditListBottomSheet(
|
||||||
|
auditList: diagnosis,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
).then((value) => toggleShowBottomSheetValue(false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,477 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:doctor_app_flutter/config/config.dart';
|
||||||
|
import 'package:doctor_app_flutter/config/size_config.dart';
|
||||||
|
import 'package:doctor_app_flutter/core/enum/view_state.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/search_diagnosis.dart';
|
||||||
|
import 'package:doctor_app_flutter/core/model/patient/patiant_info_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/patients/patient_search/patient_search_header.dart';
|
||||||
|
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/assessment/widget/empty_dropdown.dart';
|
||||||
|
import 'package:doctor_app_flutter/utils/dr_app_toast_msg.dart';
|
||||||
|
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
|
||||||
|
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
|
||||||
|
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
|
||||||
|
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
|
||||||
|
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
|
import 'package:get_it/get_it.dart';
|
||||||
|
import 'package:hexcolor/hexcolor.dart';
|
||||||
|
|
||||||
|
class EditDiagnosis extends StatefulWidget {
|
||||||
|
final PatiantInformtion patientInfo;
|
||||||
|
final PatientPreviousDiagnosis diagnosis;
|
||||||
|
|
||||||
|
const EditDiagnosis(
|
||||||
|
{super.key, required this.patientInfo, required this.diagnosis});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<EditDiagnosis> createState() => _EditDiagnosisState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _EditDiagnosisState extends State<EditDiagnosis> {
|
||||||
|
final TextEditingController filteredSearchController =
|
||||||
|
TextEditingController();
|
||||||
|
bool showAllDiagnosis = true;
|
||||||
|
String status = '';
|
||||||
|
String? selectedDiagnosisItem;
|
||||||
|
String? selectedDiagnosisItemValue;
|
||||||
|
TextEditingController remarksController = TextEditingController();
|
||||||
|
Timer? _tTimer;
|
||||||
|
SOAPViewModel? model;
|
||||||
|
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) {
|
||||||
|
if (_tTimer != null) {
|
||||||
|
_tTimer!.cancel();
|
||||||
|
}
|
||||||
|
_tTimer = Timer(Duration(milliseconds: 500), () {
|
||||||
|
_onStopped(text);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void _onStopped(String searchText) async {
|
||||||
|
await model?.searchDiagnosis(widget.patientInfo, searchText);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BaseView<SOAPViewModel>(onModelReady: (model) {
|
||||||
|
this.model = model;
|
||||||
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
|
model.getConditionAndType(widget.patientInfo);
|
||||||
|
});
|
||||||
|
}, 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,
|
||||||
|
appBar: PatientSearchHeader(
|
||||||
|
title: TranslationBase.of(context).editDiagnosis),
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
AppText(
|
||||||
|
TranslationBase.of(context).editDiagnosis,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
color: Color(0xFF2E303A),
|
||||||
|
fontSize: 16,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 16,
|
||||||
|
),
|
||||||
|
AppTextFieldCustom(
|
||||||
|
hintText: TranslationBase.of(context).diagnosis,
|
||||||
|
isTextFieldHasSuffix: true,
|
||||||
|
hasBorder: true,
|
||||||
|
controller: filteredSearchController,
|
||||||
|
onClick: () {
|
||||||
|
setState(
|
||||||
|
() {
|
||||||
|
selectedDiagnosis = null;
|
||||||
|
filteredSearchController.text = '';
|
||||||
|
model.selectedIcd = '';
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
onChanged: (value) {
|
||||||
|
if (value != null) _onTextChanged(value);
|
||||||
|
},
|
||||||
|
onFieldSubmitted: () {},
|
||||||
|
suffixIcon: IconButton(
|
||||||
|
icon: Icon(
|
||||||
|
Icons.search,
|
||||||
|
color: Color(0xff2B353E),
|
||||||
|
size: 30,
|
||||||
|
),
|
||||||
|
onPressed: () {},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Positioned(
|
||||||
|
child: Material(
|
||||||
|
elevation: 4.0, // Optional: for shadow effect
|
||||||
|
child: ConstrainedBox(
|
||||||
|
constraints: BoxConstraints(minHeight: 0, maxHeight: 300),
|
||||||
|
child: ListView.builder(
|
||||||
|
shrinkWrap: true,
|
||||||
|
itemCount: model.icdVersionList.length,
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
return ListTile(
|
||||||
|
title: InkWell(
|
||||||
|
child: AppText(model.icdVersionList[index]),
|
||||||
|
onTap: () {
|
||||||
|
setState(
|
||||||
|
() {
|
||||||
|
selectedDiagnosis =
|
||||||
|
model.findTheDiagnosisItem(
|
||||||
|
model.icdVersionList[index]);
|
||||||
|
filteredSearchController.text =
|
||||||
|
model.icdVersionList[index];
|
||||||
|
model.searchDiagnosisList.clear();
|
||||||
|
model.icdVersionList.clear();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
// Row(
|
||||||
|
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
// children: [
|
||||||
|
// Row(
|
||||||
|
// children: [
|
||||||
|
// Switch(
|
||||||
|
// value: showAllDiagnosis,
|
||||||
|
// activeColor: Colors.red,
|
||||||
|
// onChanged: (bool value) {
|
||||||
|
// setState(() {
|
||||||
|
// showAllDiagnosis = value;
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
// ),
|
||||||
|
// SizedBox(
|
||||||
|
// width: 8,
|
||||||
|
// ),
|
||||||
|
// AppText(
|
||||||
|
// TranslationBase.of(context).showAllDiagnosis,
|
||||||
|
// fontWeight: FontWeight.w500,
|
||||||
|
// color: Color(0xFF2E303A),
|
||||||
|
// fontSize: 11,
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// SvgPicture.asset('assets/images/svgs/information.svg'),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(bottom: 12),
|
||||||
|
child: AppText(
|
||||||
|
TranslationBase.of(context).condition,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
fontFamily: 'Poppins',
|
||||||
|
fontSize: 11,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: MediaQuery.sizeOf(context).width,
|
||||||
|
height: 24,
|
||||||
|
child: ListView.builder(
|
||||||
|
shrinkWrap: true,
|
||||||
|
scrollDirection: Axis.horizontal,
|
||||||
|
itemCount: model.conditionTypeList.length,
|
||||||
|
itemBuilder: (context, index) => InkWell(
|
||||||
|
onTap: () {
|
||||||
|
setState(() {
|
||||||
|
status = model.conditionTypeList[index];
|
||||||
|
});
|
||||||
|
},
|
||||||
|
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 ==
|
||||||
|
model.conditionTypeList[index]
|
||||||
|
.toLowerCase()
|
||||||
|
? HexColor("#D02127")
|
||||||
|
: Colors.white,
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
AppText(
|
||||||
|
model.conditionTypeList[index],
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
fontFamily: 'Poppins',
|
||||||
|
fontSize: SizeConfig.textMultiplier! * 1.6,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
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).diagnoseType,
|
||||||
|
textAlign: TextAlign.start,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 11,
|
||||||
|
color: Color(0xFF2E303A),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
model.diagnosisTypeList.isEmpty
|
||||||
|
? EmptyDropDown()
|
||||||
|
: DropdownButtonHideUnderline(
|
||||||
|
child: DropdownButton(
|
||||||
|
dropdownColor: Colors.white,
|
||||||
|
iconEnabledColor: Colors.black,
|
||||||
|
icon: Icon(Icons.keyboard_arrow_down),
|
||||||
|
isExpanded: true,
|
||||||
|
value: selectedDiagnosisItem == null
|
||||||
|
? model.diagnosisTypeList.keys.first
|
||||||
|
: selectedDiagnosisItem,
|
||||||
|
iconSize: 25,
|
||||||
|
elevation: 16,
|
||||||
|
onChanged: (newValue) async {
|
||||||
|
if (newValue != null)
|
||||||
|
setState(() {
|
||||||
|
selectedDiagnosisItem = newValue;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
items:
|
||||||
|
model.diagnosisTypeList.keys.map((item) {
|
||||||
|
return DropdownMenuItem(
|
||||||
|
child: AppText(
|
||||||
|
item ?? '',
|
||||||
|
fontSize: 14,
|
||||||
|
letterSpacing: -0.96,
|
||||||
|
color: AppGlobal.appTextColor,
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
textAlign: TextAlign.left,
|
||||||
|
),
|
||||||
|
value: item,
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(top: 8),
|
||||||
|
child: AppTextFieldCustom(
|
||||||
|
hintText: TranslationBase.of(context).remarks,
|
||||||
|
controller: remarksController,
|
||||||
|
minLines: 2,
|
||||||
|
maxLines: 4,
|
||||||
|
inputType: TextInputType.multiline,
|
||||||
|
onChanged: (value) {},
|
||||||
|
onClick: () {},
|
||||||
|
onFieldSubmitted: () {},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 16,
|
||||||
|
),
|
||||||
|
// InkWell(
|
||||||
|
// onTap: () async {
|
||||||
|
// if (selectedDiagnosis != null) {
|
||||||
|
// SearchDiagnosis? diagnosis =
|
||||||
|
// await model.addToFavoriteDiagnosis(widget.patientInfo,
|
||||||
|
// diagnosis: selectedDiagnosis);
|
||||||
|
// setState(() {
|
||||||
|
// selectedDiagnosis = diagnosis;
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// child: Row(
|
||||||
|
// children: [
|
||||||
|
// SvgPicture.asset(selectedDiagnosis?.isFavorite == true
|
||||||
|
// ? 'assets/images/svgs/favoriteadded.svg'
|
||||||
|
// : 'assets/images/svgs/favorite.svg'),
|
||||||
|
// SizedBox(
|
||||||
|
// width: 4,
|
||||||
|
// ),
|
||||||
|
// AppText(
|
||||||
|
// TranslationBase.of(context).addToFavorite,
|
||||||
|
// textAlign: TextAlign.start,
|
||||||
|
// fontWeight: FontWeight.w600,
|
||||||
|
// fontSize: 10,
|
||||||
|
// color: Color(0xFF449BF1),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// )
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
bottomNavigationBar: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
borderRadius: BorderRadius.all(
|
||||||
|
Radius.circular(0.0),
|
||||||
|
),
|
||||||
|
border: Border.all(color: HexColor('#707070'), width: 0),
|
||||||
|
),
|
||||||
|
height: SizeConfig.heightMultiplier! *
|
||||||
|
(SizeConfig.isHeightVeryShort ? 12 : 10),
|
||||||
|
width: double.infinity,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(10),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Center(
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: AppButton(
|
||||||
|
title: TranslationBase.of(context).previous,
|
||||||
|
color: Colors.grey[300]!,
|
||||||
|
fontColor: Colors.black,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 5,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: AppButton(
|
||||||
|
title: TranslationBase.of(context).save,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
color: Color(0xFF359846),
|
||||||
|
onPressed: () async {
|
||||||
|
selectedDiagnosisItem ??=
|
||||||
|
model.diagnosisTypeList.keys.first;
|
||||||
|
if (selectedDiagnosis == null &&
|
||||||
|
filteredSearchController.text.isEmpty) {
|
||||||
|
DrAppToastMsg.showErrorToast(
|
||||||
|
TranslationBase.of(context)
|
||||||
|
.selectedDiagnosis);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (status.isEmpty) {
|
||||||
|
DrAppToastMsg.showErrorToast(
|
||||||
|
TranslationBase.of(context)
|
||||||
|
.selectConditionFirst);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (remarksController.text.isEmpty) {
|
||||||
|
DrAppToastMsg.showErrorToast(
|
||||||
|
TranslationBase.of(context)
|
||||||
|
.remarksCanNotBeEmpty);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filteredSearchController.text ==
|
||||||
|
widget.diagnosis.selectedDisease &&
|
||||||
|
status == widget.diagnosis.condition &&
|
||||||
|
widget.diagnosis.diagnosisType ==
|
||||||
|
selectedDiagnosisItem &&
|
||||||
|
widget.diagnosis.remarks ==
|
||||||
|
filteredSearchController.text) {
|
||||||
|
DrAppToastMsg.showErrorToast(
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class EmptyDropDown extends StatelessWidget{
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.all(12.0),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(child: SizedBox.shrink()),
|
||||||
|
Align(
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Icon(Icons.keyboard_arrow_down),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,467 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:doctor_app_flutter/config/config.dart';
|
||||||
|
import 'package:doctor_app_flutter/config/size_config.dart';
|
||||||
|
import 'package:doctor_app_flutter/core/model/SOAP/assessment/diagnosis_type.dart';
|
||||||
|
import 'package:doctor_app_flutter/core/model/SOAP/assessment/search_diagnosis.dart';
|
||||||
|
import 'package:doctor_app_flutter/core/model/patient/patiant_info_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/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/widgets/shared/app_scaffold_widget.dart';
|
||||||
|
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
|
||||||
|
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
|
||||||
|
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
|
import 'package:hexcolor/hexcolor.dart';
|
||||||
|
|
||||||
|
List<String> patientState = ["", "Stable", "Not Stable", "Not Defined"];
|
||||||
|
|
||||||
|
class FavoriteDiagnosis extends StatefulWidget {
|
||||||
|
final PatiantInformtion patientInfo;
|
||||||
|
|
||||||
|
const FavoriteDiagnosis({super.key, required this.patientInfo});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<FavoriteDiagnosis> createState() => _FavoriteDiagnosisState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _FavoriteDiagnosisState extends State<FavoriteDiagnosis> {
|
||||||
|
final TextEditingController filteredSearchController =
|
||||||
|
TextEditingController();
|
||||||
|
bool showAllDiagnosis = true;
|
||||||
|
String status = '';
|
||||||
|
String? selectedItem;
|
||||||
|
String? selectedFavorite;
|
||||||
|
TextEditingController remarksController = TextEditingController();
|
||||||
|
Timer? _tTimer;
|
||||||
|
SOAPViewModel? model;
|
||||||
|
SearchDiagnosis? selectedDiagnosis;
|
||||||
|
|
||||||
|
void _onTextChanged(String text) {
|
||||||
|
if (_tTimer != null) {
|
||||||
|
_tTimer!.cancel();
|
||||||
|
}
|
||||||
|
_tTimer = Timer(Duration(milliseconds: 500), () {
|
||||||
|
_onStopped(text);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void _onStopped(String searchText) async {
|
||||||
|
await model?.searchDiagnosis(widget.patientInfo, searchText);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BaseView<SOAPViewModel>(
|
||||||
|
onModelReady: (model) {
|
||||||
|
this.model = model;
|
||||||
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
|
model.favoriteDiagnosis(widget.patientInfo);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
builder: (_, model, w) => AppScaffold(
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
child: Padding(
|
||||||
|
padding:
|
||||||
|
const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
AppText(
|
||||||
|
TranslationBase.of(context).addDiagnosis,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
color: Color(0xFF2E303A),
|
||||||
|
fontSize: 16,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 16,
|
||||||
|
),
|
||||||
|
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).diagnosis,
|
||||||
|
textAlign: TextAlign.start,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 11,
|
||||||
|
color: Color(0xFF2E303A),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
model.favoriteDiagnosisDetails.isEmpty
|
||||||
|
? EmptyDropDown()
|
||||||
|
: DropdownButtonHideUnderline(
|
||||||
|
child: DropdownButton(
|
||||||
|
dropdownColor: Colors.white,
|
||||||
|
iconEnabledColor: Colors.black,
|
||||||
|
icon: Icon(Icons.keyboard_arrow_down),
|
||||||
|
isExpanded: true,
|
||||||
|
itemHeight: null,
|
||||||
|
value: selectedFavorite == null
|
||||||
|
? model.favoriteDiagnosisDetails.first
|
||||||
|
.diseases
|
||||||
|
: selectedFavorite,
|
||||||
|
iconSize: 25,
|
||||||
|
elevation: 16,
|
||||||
|
onChanged: (newValue) async {
|
||||||
|
if (newValue != null)
|
||||||
|
setState(() {
|
||||||
|
selectedFavorite = newValue;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
items: model.favoriteDiagnosisDetails
|
||||||
|
.map((item) {
|
||||||
|
return DropdownMenuItem(
|
||||||
|
child: AppText(
|
||||||
|
item.diseases ?? '',
|
||||||
|
fontSize: 14,
|
||||||
|
letterSpacing: -0.96,
|
||||||
|
color: AppGlobal.appTextColor,
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
textAlign: TextAlign.left,
|
||||||
|
),
|
||||||
|
value: item.diseases,
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(bottom: 12),
|
||||||
|
child: AppText(
|
||||||
|
TranslationBase.of(context).condition,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
fontFamily: 'Poppins',
|
||||||
|
fontSize: 11,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Row(
|
||||||
|
// children: [
|
||||||
|
// Expanded(
|
||||||
|
// child: InkWell(
|
||||||
|
// onTap: () {
|
||||||
|
// setState(() {
|
||||||
|
// status = "";
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
// 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 == 1
|
||||||
|
// ? HexColor("#D02127")
|
||||||
|
// : Colors.white,
|
||||||
|
// shape: BoxShape.circle,
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// AppText(
|
||||||
|
// TranslationBase.of(context).acute,
|
||||||
|
// fontWeight: FontWeight.normal,
|
||||||
|
// fontFamily: 'Poppins',
|
||||||
|
// fontSize: SizeConfig.textMultiplier! * 1.6,
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// )),
|
||||||
|
// Expanded(
|
||||||
|
// child: InkWell(
|
||||||
|
// onTap: () {
|
||||||
|
// setState(() {
|
||||||
|
// 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).subAcute,
|
||||||
|
// fontWeight: FontWeight.normal,
|
||||||
|
// fontFamily: 'Poppins',
|
||||||
|
// fontSize: SizeConfig.textMultiplier! * 1.6,
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// Expanded(
|
||||||
|
// child: InkWell(
|
||||||
|
// onTap: () {
|
||||||
|
// setState(() {
|
||||||
|
// status = "3";
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
// 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 == 3
|
||||||
|
// ? HexColor("#D02127")
|
||||||
|
// : Colors.white,
|
||||||
|
// shape: BoxShape.circle,
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// AppText(
|
||||||
|
// TranslationBase.of(context).chronic,
|
||||||
|
// fontWeight: FontWeight.normal,
|
||||||
|
// fontFamily: 'Poppins',
|
||||||
|
// fontSize: SizeConfig.textMultiplier! * 1.6,
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
SizedBox(
|
||||||
|
width: MediaQuery.sizeOf(context).width,
|
||||||
|
height: 24,
|
||||||
|
child: ListView.builder(
|
||||||
|
shrinkWrap: true,
|
||||||
|
scrollDirection: Axis.horizontal,
|
||||||
|
itemCount: model.conditionTypeList.length,
|
||||||
|
itemBuilder: (context, index) => InkWell(
|
||||||
|
onTap: () {
|
||||||
|
setState(() {
|
||||||
|
status = model.conditionTypeList[index];
|
||||||
|
});
|
||||||
|
},
|
||||||
|
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 ==
|
||||||
|
model.conditionTypeList[index]
|
||||||
|
? HexColor("#D02127")
|
||||||
|
: Colors.white,
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
AppText(
|
||||||
|
model.conditionTypeList[index],
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
fontFamily: 'Poppins',
|
||||||
|
fontSize:
|
||||||
|
SizeConfig.textMultiplier! * 1.6,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
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).diagnoseType,
|
||||||
|
textAlign: TextAlign.start,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 11,
|
||||||
|
color: Color(0xFF2E303A),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
model.diagnosisTypeList.isEmpty
|
||||||
|
? EmptyDropDown()
|
||||||
|
: DropdownButtonHideUnderline(
|
||||||
|
child: DropdownButton(
|
||||||
|
itemHeight: null,
|
||||||
|
dropdownColor: Colors.white,
|
||||||
|
iconEnabledColor: Colors.black,
|
||||||
|
icon: Icon(Icons.keyboard_arrow_down),
|
||||||
|
isExpanded: true,
|
||||||
|
value: selectedItem == null
|
||||||
|
? model.diagnosisTypeList.keys.first
|
||||||
|
: selectedItem,
|
||||||
|
iconSize: 25,
|
||||||
|
elevation: 16,
|
||||||
|
onChanged: (newValue) async {
|
||||||
|
if (newValue != null)
|
||||||
|
setState(() {
|
||||||
|
selectedItem = newValue;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
items: model.diagnosisTypeList.keys
|
||||||
|
.map((item) {
|
||||||
|
return DropdownMenuItem(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: AppText(
|
||||||
|
item ?? '',
|
||||||
|
fontSize: 14,
|
||||||
|
letterSpacing: -0.96,
|
||||||
|
color: AppGlobal.appTextColor,
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
textAlign: TextAlign.left,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
value: item,
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(top: 8),
|
||||||
|
child: AppTextFieldCustom(
|
||||||
|
hintText: TranslationBase.of(context).remarks,
|
||||||
|
controller: remarksController,
|
||||||
|
minLines: 2,
|
||||||
|
maxLines: 4,
|
||||||
|
inputType: TextInputType.multiline,
|
||||||
|
onChanged: (value) {},
|
||||||
|
onClick: () {},
|
||||||
|
onFieldSubmitted: () {},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 16,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
bottomNavigationBar: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
borderRadius: BorderRadius.all(
|
||||||
|
Radius.circular(0.0),
|
||||||
|
),
|
||||||
|
border: Border.all(color: HexColor('#707070'), width: 0),
|
||||||
|
),
|
||||||
|
height: SizeConfig.heightMultiplier! *
|
||||||
|
(SizeConfig.isHeightVeryShort ? 12 : 10),
|
||||||
|
width: double.infinity,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(10),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Center(
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: AppButton(
|
||||||
|
title: TranslationBase.of(context).previous,
|
||||||
|
color: Colors.grey[300]!,
|
||||||
|
fontColor: Colors.black,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 5,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: AppButton(
|
||||||
|
title: TranslationBase.of(context).save,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
color: Color(0xFF359846),
|
||||||
|
onPressed: () async {},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue