assessment work fine now

merge-requests/241/head
Elham Rababah 5 years ago
parent a46a61c5cf
commit 34b7b4564c

@ -6,12 +6,21 @@ class MySelectedAssessment {
MasterKeyModel selectedDiagnosisType; MasterKeyModel selectedDiagnosisType;
String remark; String remark;
int appointmentId; int appointmentId;
int createdBy;
String createdOn;
int doctorID;
String doctorName;
String icdCode10ID;
MySelectedAssessment( MySelectedAssessment(
{this.selectedICD, {this.selectedICD,
this.selectedDiagnosisCondition, this.selectedDiagnosisCondition,
this.selectedDiagnosisType, this.selectedDiagnosisType,
this.remark, this.appointmentId}); this.remark, this.appointmentId, this.createdBy,
this.createdOn,
this.doctorID,
this.doctorName,
this.icdCode10ID});
MySelectedAssessment.fromJson(Map<String, dynamic> json) { MySelectedAssessment.fromJson(Map<String, dynamic> json) {
selectedICD = json['selectedICD'] != null selectedICD = json['selectedICD'] != null
@ -25,6 +34,11 @@ class MySelectedAssessment {
: null; : null;
remark = json['remark']; remark = json['remark'];
appointmentId = json['appointmentId']; appointmentId = json['appointmentId'];
createdBy = json['createdBy'];
createdOn = json['createdOn'];
doctorID = json['doctorID'];
doctorName = json['doctorName'];
icdCode10ID = json['icdCode10ID'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
@ -41,7 +55,11 @@ class MySelectedAssessment {
} }
data['remark'] = this.remark; data['remark'] = this.remark;
data['appointmentId'] = this.appointmentId; data['appointmentId'] = this.appointmentId;
data['createdBy'] = this.createdBy;
data['createdOn'] = this.createdOn;
data['doctorID'] = this.doctorID;
data['doctorName'] = this.doctorName;
data['icdCode10ID'] = this.icdCode10ID;
return data; return data;
} }
} }

@ -25,11 +25,13 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
class UpdateAssessmentPage extends StatefulWidget { class UpdateAssessmentPage extends StatefulWidget {
final Function changePageViewIndex; final Function changePageViewIndex;
final MySelectedAssessment mySelectedAssessment; List<MySelectedAssessment> mySelectedAssessmentList;
final PatiantInformtion patientInfo; final PatiantInformtion patientInfo;
UpdateAssessmentPage( UpdateAssessmentPage({Key key,
{Key key, this.changePageViewIndex, this.mySelectedAssessment, this.patientInfo}); this.changePageViewIndex,
this.mySelectedAssessmentList,
this.patientInfo});
@override @override
_UpdateAssessmentPageState createState() => _UpdateAssessmentPageState(); _UpdateAssessmentPageState createState() => _UpdateAssessmentPageState();
@ -43,8 +45,7 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
return BaseView<SOAPViewModel>( return BaseView<SOAPViewModel>(
onModelReady: (model) async{ onModelReady: (model) async{
widget.mySelectedAssessmentList.clear();
widget.mySelectedAssessment.appointmentId =widget.patientInfo.appointmentNo;
GetAssessmentReqModel getAssessmentReqModel = GetAssessmentReqModel( GetAssessmentReqModel getAssessmentReqModel = GetAssessmentReqModel(
patientMRN: widget.patientInfo.patientMRN, patientMRN: widget.patientInfo.patientMRN,
episodeID: widget.patientInfo.episodeNo.toString(), episodeID: widget.patientInfo.episodeNo.toString(),
@ -60,25 +61,33 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
if (model.listOfICD10.length == 0) { if (model.listOfICD10.length == 0) {
await model.getMasterLookup(MasterKeysService.ICD10); await model.getMasterLookup(MasterKeysService.ICD10);
} }
model.patientAssessmentList.forEach((element) {
MasterKeyModel diagnosisType = model.getOneMasterKey(
masterKeys: MasterKeysService.DiagnosisType,
id: element.diagnosisTypeID,
);
MasterKeyModel selectedICD = model.getOneMasterKey(
masterKeys: MasterKeysService.ICD10,
id: element.icdCode10ID,
);
MasterKeyModel diagnosisCondition = model.getOneMasterKey(
masterKeys: MasterKeysService.DiagnosisCondition,
id: element.conditionID,
);
MySelectedAssessment temMySelectedAssessment = MySelectedAssessment(
appointmentId: element.appointmentNo,
remark: element.remarks,
selectedDiagnosisType: diagnosisType,
selectedDiagnosisCondition: diagnosisCondition,
selectedICD: selectedICD,
doctorID: element.doctorID,
doctorName: element.doctorName,
createdBy: element.createdBy,
icdCode10ID: element.icdCode10ID
);
MasterKeyModel selectedICD = model.getOneMasterKey( widget.mySelectedAssessmentList.add(temMySelectedAssessment);
masterKeys: MasterKeysService.ICD10, });
id: model.patientAssessmentList[0].icdCode10ID,
);
widget.mySelectedAssessment.selectedICD= selectedICD;
MasterKeyModel diagnosisCondition = model.getOneMasterKey(
masterKeys: MasterKeysService.DiagnosisCondition,
id: model.patientAssessmentList[0].conditionID,
);
widget.mySelectedAssessment.selectedDiagnosisCondition = diagnosisCondition;
MasterKeyModel diagnosisType = model.getOneMasterKey(
masterKeys: MasterKeysService.DiagnosisType,
id: model.patientAssessmentList[0].diagnosisTypeID,
);
widget.mySelectedAssessment.selectedDiagnosisType = diagnosisType;
widget.mySelectedAssessment.remark = model.patientAssessmentList[0].remarks;
} }
}, },
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
@ -130,7 +139,6 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
), ),
Column( Column(
children: [ children: [
if(model.patientAssessmentList.isEmpty)
Container( Container(
margin: margin:
EdgeInsets.only(left: 5, right: 5, top: 15), EdgeInsets.only(left: 5, right: 5, top: 15),
@ -138,7 +146,8 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
hintText: TranslationBase.of(context).addAssessment, hintText: TranslationBase.of(context).addAssessment,
fontSize: 13.5, fontSize: 13.5,
onTapTextFields: () { onTapTextFields: () {
openAssessmentDialog(context); openAssessmentDialog(context,isUpdate: false,
model: model);
}, },
readOnly: true, readOnly: true,
// hintColor: Colors.black, // hintColor: Colors.black,
@ -159,266 +168,239 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
SizedBox( SizedBox(
height: 20, height: 20,
), ),
if(widget.mySelectedAssessment != null &&
widget.mySelectedAssessment Column(
.appointmentId != children: widget.mySelectedAssessmentList.map((
null && widget.mySelectedAssessment assessment) {
.selectedDiagnosisType != null && return Container(
widget.mySelectedAssessment margin: EdgeInsets.only(
.selectedDiagnosisCondition != null) left: 5, right: 5, top: 15),
Container( child: Row(
margin: EdgeInsets.only( mainAxisAlignment: MainAxisAlignment
left: 5, right: 5, top: 15), .spaceBetween,
child: Row( crossAxisAlignment: CrossAxisAlignment
mainAxisAlignment: MainAxisAlignment .start,
.spaceBetween, children: [
crossAxisAlignment: CrossAxisAlignment Column(
.start, mainAxisAlignment: MainAxisAlignment
children: [ .start,
Column( children: [
mainAxisAlignment: MainAxisAlignment Column(
.start, mainAxisAlignment:
children: [ MainAxisAlignment.start,
Column( crossAxisAlignment:
mainAxisAlignment: CrossAxisAlignment.start,
MainAxisAlignment.start, children: [
crossAxisAlignment: AppText(
CrossAxisAlignment.start, "12".toUpperCase(),
children: [ fontWeight: FontWeight
AppText( .bold,
"12".toUpperCase(), fontSize: 16,
fontWeight: FontWeight.bold, ),
fontSize: 16, AppText(
), "DEC".toUpperCase(),
AppText(
"DEC".toUpperCase(),
fontSize: 10,
color: Colors.grey,
),
],
)
],
),
Column(
crossAxisAlignment: CrossAxisAlignment
.start,
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
"Appointment #: ",
fontWeight: FontWeight.bold,
fontSize: 16,
),
AppText(
widget.mySelectedAssessment
.appointmentId
.toString(),
fontSize: 10,
color: Colors.grey,
),
],
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
widget.mySelectedAssessment
.selectedDiagnosisCondition
.nameEn,
fontWeight: FontWeight.bold,
fontSize: 16,
),
],
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
"Type : ",
fontWeight: FontWeight.bold,
fontSize: 16,
),
AppText(
widget.mySelectedAssessment
.selectedDiagnosisType
.nameEn,
fontSize: 10,
color: Colors.grey,
),
],
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
"Doc : ",
fontWeight: FontWeight.bold,
fontSize: 16,
),
AppText(
"Anas Abdullah",
fontSize: 10,
color: Colors.grey,
),
],
),
SizedBox(
height: 6,
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
SizedBox(
height: 6,
),
Container(
width: MediaQuery.of(context).size.width * 0.5,
child: AppText(
widget.mySelectedAssessment.remark??"",
fontSize: 10, fontSize: 10,
color: Colors.grey, color: Colors.grey,
), ),
), ],
], )
), ],
], ),
), Column(
Column( crossAxisAlignment: CrossAxisAlignment
crossAxisAlignment: CrossAxisAlignment .start,
.start, children: [
children: [ Row(
Row( mainAxisAlignment:
MainAxisAlignment.start,
children: [ children: [
AppText( AppText(
"ICD: ".toUpperCase(), "Appointment #: ",
fontWeight: FontWeight.bold, fontWeight: FontWeight
fontSize: 16, .bold,
), fontSize: 16,
Container( ),
child: AppText( AppText(
widget.mySelectedAssessment.selectedICD.code.trim().toUpperCase()??"", assessment
.appointmentId
.toString(),
fontSize: 10, fontSize: 10,
color: Colors.grey, color: Colors.grey,
), ),
), ],
], ),
) Row(
], mainAxisAlignment:
), MainAxisAlignment.start,
Column( children: [
children: [ AppText(
InkWell( assessment
onTap: () { .selectedDiagnosisCondition
openAssessmentDialog(context); .nameEn,
}, fontWeight: FontWeight
child: Icon(EvaIcons .bold,
.edit2Outline), fontSize: 16,
) ),
], ],
), ),
], Row(
), mainAxisAlignment:
) MainAxisAlignment.start,
children: [
AppText(
"Type : ",
fontWeight: FontWeight
.bold,
fontSize: 16,
),
AppText(
assessment
.selectedDiagnosisType
.nameEn,
fontSize: 10,
color: Colors.grey,
),
],
),
if(assessment.doctorName != null)
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
"Doc : ",
fontWeight: FontWeight
.bold,
fontSize: 16,
),
AppText(
assessment.doctorName??'',
fontSize: 10,
color: Colors.grey,
),
],
),
SizedBox(
height: 6,
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
SizedBox(
height: 6,
),
Container(
width: MediaQuery
.of(context)
.size
.width * 0.5,
child: AppText(
assessment.remark ?? "",
fontSize: 10,
color: Colors.grey,
),
),
],
),
],
),
Column(
crossAxisAlignment: CrossAxisAlignment
.start,
children: [
Row(
children: [
AppText(
"ICD: ".toUpperCase(),
fontWeight: FontWeight
.bold,
fontSize: 16,
),
Container(
child: AppText(
assessment.selectedICD
.code.trim()
.toUpperCase() ??
"",
fontSize: 10,
color: Colors.grey,
),
),
],
)
],
),
Column(
children: [
InkWell(
onTap: () {
openAssessmentDialog(
context, isUpdate: true,
assessment: assessment,
model: model);
},
child: Icon(EvaIcons
.edit2Outline),
)
],
),
],
),
);
}).toList(),)
], ],
) )
]), ]),
isExpand: isAssessmentExpand, isExpand: isAssessmentExpand,
), ),
DividerWithSpacesAround( DividerWithSpacesAround(
height: 30, height: 30,
),
AppButton(
title: TranslationBase
.of(context)
.next,
loading: model.state == ViewState.BusyLocal,
onPressed: () async {
await submitAssessment(model);
},
),
SizedBox(
height: 30,
),
],
), ),
), AppButton(
title: TranslationBase
.of(context)
.next,
loading: model.state == ViewState.BusyLocal,
onPressed: () async {
widget.changePageViewIndex(3);
},
),
SizedBox(
height: 30,
),
],
), ),
))); ),
),
)));
} }
submitAssessment(SOAPViewModel model) async {
if (widget.mySelectedAssessment.selectedDiagnosisCondition != null &&
widget.mySelectedAssessment.selectedDiagnosisType != null && widget.mySelectedAssessment.selectedICD !=null ) {
if(model.patientAssessmentList.isEmpty){
PostAssessmentRequestModel postAssessmentRequestModel =
new PostAssessmentRequestModel(
patientMRN: widget.patientInfo.patientMRN,
episodeId: widget.patientInfo.episodeNo,
appointmentNo: widget.patientInfo.appointmentNo,
icdCodeDetails: [
new IcdCodeDetails(
remarks: widget.mySelectedAssessment.remark,
complexDiagnosis: true,
conditionId:
widget.mySelectedAssessment.selectedDiagnosisCondition.id,
diagnosisTypeId:
widget.mySelectedAssessment.selectedDiagnosisType.id,
icdcode10Id: widget.mySelectedAssessment.selectedICD.code)
]);
await model.postAssessment(postAssessmentRequestModel);
} else {
PatchAssessmentReqModel patchAssessmentReqModel =
PatchAssessmentReqModel(
patientMRN: widget.patientInfo.patientMRN,
episodeID: widget.patientInfo.episodeNo,
appointmentNo: widget.patientInfo.appointmentNo,
remarks: widget.mySelectedAssessment.remark,
complexDiagnosis: true,
conditionId:
widget.mySelectedAssessment.selectedDiagnosisCondition.id,
diagnosisTypeId:
widget.mySelectedAssessment.selectedDiagnosisType.id,
icdcode10Id: widget.mySelectedAssessment.selectedICD.code,
prevIcdCode10ID: model.patientAssessmentList[0].icdCode10ID
);
await model.patchAssessment(patchAssessmentReqModel);
}
openAssessmentDialog(BuildContext context,
if (model.state == ViewState.ErrorLocal) { {
helpers.showErrorToast(model.error); MySelectedAssessment assessment, bool isUpdate,
} else { SOAPViewModel model
widget.changePageViewIndex(3); }) {
} if (assessment == null) {
} else { assessment = MySelectedAssessment(
helpers.showErrorToast(TranslationBase.of(context).requiredMsg); remark: '', appointmentId: widget.patientInfo.appointmentNo);
} }
widget.changePageViewIndex(3);
}
openAssessmentDialog(BuildContext context) {
showModalBottomSheet( showModalBottomSheet(
backgroundColor: Colors.white, backgroundColor: Colors.white,
isScrollControlled: true, isScrollControlled: true,
context: context, context: context,
builder: (context) { builder: (context) {
return AddAssessmentDetails( return AddAssessmentDetails(
mySelectedAssessment: widget.mySelectedAssessment, mySelectedAssessment: assessment,
addSelectedAssessment: () { patientInfo: widget.patientInfo,
isUpdate: isUpdate,
mySelectedAssessmentList: widget.mySelectedAssessmentList,
addSelectedAssessment: (MySelectedAssessment mySelectedAssessment,
bool isUpdate) async {
setState(() { setState(() {
Navigator.of(context).pop();
}); });
}); });
}); });
@ -428,32 +410,34 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
class AddAssessmentDetails extends StatefulWidget { class AddAssessmentDetails extends StatefulWidget {
final MySelectedAssessment mySelectedAssessment; final MySelectedAssessment mySelectedAssessment;
final Function() addSelectedAssessment; final List<MySelectedAssessment> mySelectedAssessmentList;
final Function(MySelectedAssessment mySelectedAssessment, bool isUpdate) addSelectedAssessment;
final PatiantInformtion patientInfo; final PatiantInformtion patientInfo;
const AddAssessmentDetails( final bool isUpdate;
{Key key, this.mySelectedAssessment, this.addSelectedAssessment, this.patientInfo})
: super(key: key); AddAssessmentDetails(
{Key key, this.mySelectedAssessment, this.addSelectedAssessment, this.patientInfo, this.isUpdate = false, this.mySelectedAssessmentList});
@override @override
_AddAssessmentDetailsState createState() => _AddAssessmentDetailsState(); _AddAssessmentDetailsState createState() => _AddAssessmentDetailsState();
} }
class _AddAssessmentDetailsState extends State<AddAssessmentDetails> { class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
// MasterKeyModel _selectedDiagnosisCondition;
// MasterKeyModel _selectedDiagnosisType;
TextEditingController remarkController = TextEditingController(); TextEditingController remarkController = TextEditingController();
TextEditingController appointmentIdController = TextEditingController(); TextEditingController appointmentIdController = TextEditingController();
GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>(); GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
remarkController.text = widget.mySelectedAssessment.remark??""; remarkController.text = widget.mySelectedAssessment.remark ?? "";
appointmentIdController.text = widget.mySelectedAssessment.appointmentId.toString(); appointmentIdController.text =
widget.mySelectedAssessment.appointmentId.toString();
final screenSize = MediaQuery final screenSize = MediaQuery
.of(context) .of(context)
.size; .size;
InputDecoration textFieldSelectorDecoration(String hintText, InputDecoration textFieldSelectorDecoration(String hintText,
String selectedText, bool isDropDown,{IconData icon}) { String selectedText, bool isDropDown, {IconData icon}) {
//TODO: make one Input InputDecoration for all //TODO: make one Input InputDecoration for all
return InputDecoration( return InputDecoration(
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
@ -686,16 +670,34 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
), ),
AppButton( AppButton(
title: "Add".toUpperCase(), title: "Add".toUpperCase(),
onPressed: () { loading: model.state == ViewState.BusyLocal,
setState(() { onPressed: () async {
widget.mySelectedAssessment.remark = widget.mySelectedAssessment.remark =
remarkController.text; remarkController.text;
widget.mySelectedAssessment widget.mySelectedAssessment
.appointmentId = int.parse( .appointmentId = int.parse(
appointmentIdController.text); appointmentIdController.text);
if (widget.mySelectedAssessment
widget.addSelectedAssessment(); .selectedDiagnosisCondition !=
}); null &&
widget.mySelectedAssessment
.selectedDiagnosisType !=
null &&
widget.mySelectedAssessment
.selectedICD != null) {
widget.addSelectedAssessment(
widget.mySelectedAssessment,
widget.isUpdate);
await submitAssessment(
isUpdate: widget.isUpdate,
model: model,
mySelectedAssessment: widget
.mySelectedAssessment);
} else {
helpers.showErrorToast(TranslationBase
.of(context)
.requiredMsg);
}
}, },
), ),
])), ])),
@ -704,6 +706,61 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
))), ))),
); );
} }
submitAssessment(
{SOAPViewModel model, MySelectedAssessment mySelectedAssessment, bool isUpdate = false}) async {
if (isUpdate) {
PatchAssessmentReqModel patchAssessmentReqModel =
PatchAssessmentReqModel(
patientMRN: widget.patientInfo.patientMRN,
episodeID: widget.patientInfo.episodeNo,
appointmentNo: widget.patientInfo.appointmentNo,
remarks: mySelectedAssessment.remark,
complexDiagnosis: true,
conditionId:
mySelectedAssessment.selectedDiagnosisCondition.id,
diagnosisTypeId:
mySelectedAssessment.selectedDiagnosisType.id,
icdcode10Id: mySelectedAssessment.selectedICD.code,
prevIcdCode10ID: mySelectedAssessment.icdCode10ID
);
await model.patchAssessment(patchAssessmentReqModel);
} else {
PostAssessmentRequestModel postAssessmentRequestModel =
new PostAssessmentRequestModel(
patientMRN: widget.patientInfo.patientMRN,
episodeId: widget.patientInfo.episodeNo,
appointmentNo: widget.patientInfo.appointmentNo,
icdCodeDetails: [
new IcdCodeDetails(
remarks: mySelectedAssessment.remark,
complexDiagnosis: true,
conditionId:
mySelectedAssessment.selectedDiagnosisCondition.id,
diagnosisTypeId:
mySelectedAssessment.selectedDiagnosisType.id,
icdcode10Id: mySelectedAssessment.selectedICD.code)
]);
await model.postAssessment(postAssessmentRequestModel);
}
if (model.state == ViewState.ErrorLocal) {
helpers.showErrorToast(model.error);
} else {
mySelectedAssessment.icdCode10ID = mySelectedAssessment.selectedICD.code;
if (!isUpdate) {
widget.mySelectedAssessmentList.add(mySelectedAssessment);
}
Navigator.of(context).pop();
}
// widget.changePageViewIndex(3);
}
} }

@ -33,7 +33,7 @@ class _UpdateSoapIndexState extends State<UpdateSoapIndex>
List<MySelectedAllergy> myAllergiesList= List(); List<MySelectedAllergy> myAllergiesList= List();
List<MySelectedHistory> myHistoryList = List(); List<MySelectedHistory> myHistoryList = List();
List<MySelectedExamination> mySelectedExamination = List(); List<MySelectedExamination> mySelectedExamination = List();
MySelectedAssessment mySelectedAssessment = MySelectedAssessment(); List<MySelectedAssessment> mySelectedAssessment = List();
changePageViewIndex(pageIndex) { changePageViewIndex(pageIndex) {
_controller.jumpToPage(pageIndex); _controller.jumpToPage(pageIndex);
} }
@ -106,7 +106,7 @@ class _UpdateSoapIndexState extends State<UpdateSoapIndex>
), ),
UpdateAssessmentPage( UpdateAssessmentPage(
changePageViewIndex: changePageViewIndex, changePageViewIndex: changePageViewIndex,
mySelectedAssessment: mySelectedAssessmentList:
mySelectedAssessment, mySelectedAssessment,
patientInfo: patient, patientInfo: patient,
), ),

Loading…
Cancel
Save