assessment work fine now

merge-requests/241/head
Elham Rababah 6 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( MasterKeyModel selectedICD = model.getOneMasterKey(
masterKeys: MasterKeysService.ICD10, masterKeys: MasterKeysService.ICD10,
id: model.patientAssessmentList[0].icdCode10ID, id: element.icdCode10ID,
); );
widget.mySelectedAssessment.selectedICD= selectedICD;
MasterKeyModel diagnosisCondition = model.getOneMasterKey( MasterKeyModel diagnosisCondition = model.getOneMasterKey(
masterKeys: MasterKeysService.DiagnosisCondition, masterKeys: MasterKeysService.DiagnosisCondition,
id: model.patientAssessmentList[0].conditionID, id: element.conditionID,
); );
MySelectedAssessment temMySelectedAssessment = MySelectedAssessment(
widget.mySelectedAssessment.selectedDiagnosisCondition = diagnosisCondition; appointmentId: element.appointmentNo,
MasterKeyModel diagnosisType = model.getOneMasterKey( remark: element.remarks,
masterKeys: MasterKeysService.DiagnosisType, selectedDiagnosisType: diagnosisType,
id: model.patientAssessmentList[0].diagnosisTypeID, selectedDiagnosisCondition: diagnosisCondition,
selectedICD: selectedICD,
doctorID: element.doctorID,
doctorName: element.doctorName,
createdBy: element.createdBy,
icdCode10ID: element.icdCode10ID
); );
widget.mySelectedAssessment.selectedDiagnosisType = diagnosisType; widget.mySelectedAssessmentList.add(temMySelectedAssessment);
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,14 +168,11 @@ 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
.selectedDiagnosisCondition != null)
Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(
left: 5, right: 5, top: 15), left: 5, right: 5, top: 15),
child: Row( child: Row(
@ -187,7 +193,8 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
children: [ children: [
AppText( AppText(
"12".toUpperCase(), "12".toUpperCase(),
fontWeight: FontWeight.bold, fontWeight: FontWeight
.bold,
fontSize: 16, fontSize: 16,
), ),
AppText( AppText(
@ -209,11 +216,12 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
children: [ children: [
AppText( AppText(
"Appointment #: ", "Appointment #: ",
fontWeight: FontWeight.bold, fontWeight: FontWeight
.bold,
fontSize: 16, fontSize: 16,
), ),
AppText( AppText(
widget.mySelectedAssessment assessment
.appointmentId .appointmentId
.toString(), .toString(),
fontSize: 10, fontSize: 10,
@ -226,10 +234,11 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
MainAxisAlignment.start, MainAxisAlignment.start,
children: [ children: [
AppText( AppText(
widget.mySelectedAssessment assessment
.selectedDiagnosisCondition .selectedDiagnosisCondition
.nameEn, .nameEn,
fontWeight: FontWeight.bold, fontWeight: FontWeight
.bold,
fontSize: 16, fontSize: 16,
), ),
], ],
@ -240,11 +249,12 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
children: [ children: [
AppText( AppText(
"Type : ", "Type : ",
fontWeight: FontWeight.bold, fontWeight: FontWeight
.bold,
fontSize: 16, fontSize: 16,
), ),
AppText( AppText(
widget.mySelectedAssessment assessment
.selectedDiagnosisType .selectedDiagnosisType
.nameEn, .nameEn,
fontSize: 10, fontSize: 10,
@ -252,17 +262,19 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
), ),
], ],
), ),
if(assessment.doctorName != null)
Row( Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.start, MainAxisAlignment.start,
children: [ children: [
AppText( AppText(
"Doc : ", "Doc : ",
fontWeight: FontWeight.bold, fontWeight: FontWeight
.bold,
fontSize: 16, fontSize: 16,
), ),
AppText( AppText(
"Anas Abdullah", assessment.doctorName??'',
fontSize: 10, fontSize: 10,
color: Colors.grey, color: Colors.grey,
), ),
@ -279,9 +291,12 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
height: 6, height: 6,
), ),
Container( Container(
width: MediaQuery.of(context).size.width * 0.5, width: MediaQuery
.of(context)
.size
.width * 0.5,
child: AppText( child: AppText(
widget.mySelectedAssessment.remark??"", assessment.remark ?? "",
fontSize: 10, fontSize: 10,
color: Colors.grey, color: Colors.grey,
), ),
@ -299,12 +314,16 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
children: [ children: [
AppText( AppText(
"ICD: ".toUpperCase(), "ICD: ".toUpperCase(),
fontWeight: FontWeight.bold, fontWeight: FontWeight
.bold,
fontSize: 16, fontSize: 16,
), ),
Container( Container(
child: AppText( child: AppText(
widget.mySelectedAssessment.selectedICD.code.trim().toUpperCase()??"", assessment.selectedICD
.code.trim()
.toUpperCase() ??
"",
fontSize: 10, fontSize: 10,
color: Colors.grey, color: Colors.grey,
), ),
@ -317,7 +336,10 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
children: [ children: [
InkWell( InkWell(
onTap: () { onTap: () {
openAssessmentDialog(context); openAssessmentDialog(
context, isUpdate: true,
assessment: assessment,
model: model);
}, },
child: Icon(EvaIcons child: Icon(EvaIcons
.edit2Outline), .edit2Outline),
@ -326,7 +348,8 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
), ),
], ],
), ),
) );
}).toList(),)
], ],
) )
]), ]),
@ -341,7 +364,7 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
.next, .next,
loading: model.state == ViewState.BusyLocal, loading: model.state == ViewState.BusyLocal,
onPressed: () async { onPressed: () async {
await submitAssessment(model); widget.changePageViewIndex(3);
}, },
), ),
SizedBox( SizedBox(
@ -354,71 +377,30 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
))); )));
} }
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);
}
if (model.state == ViewState.ErrorLocal) { openAssessmentDialog(BuildContext context,
helpers.showErrorToast(model.error); {
} else { MySelectedAssessment assessment, bool isUpdate,
widget.changePageViewIndex(3); SOAPViewModel model
}) {
if (assessment == null) {
assessment = MySelectedAssessment(
remark: '', appointmentId: widget.patientInfo.appointmentNo);
} }
} else {
helpers.showErrorToast(TranslationBase.of(context).requiredMsg);
}
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