Refactor add_prescription_form

merge-requests/967/head
RoaaGhali98 4 years ago
parent c1956aee9b
commit 5b8211eec4

@ -67,12 +67,13 @@ class ProcedureService extends BaseService {
); );
Future getProcedureTemplate( Future getProcedureTemplate(
{int doctorId, int projectId, int clinicId, String categoryID}) async { {int doctorId, int projectId, int clinicId, String categoryID, bool isLocalBusy}) async {
_procedureTempleteRequestModel = ProcedureTempleteRequestModel( _procedureTempleteRequestModel = ProcedureTempleteRequestModel(
// tokenID: "@dm!n", // tokenID: "@dm!n",
patientID: 0, patientID: 0,
searchType: 1, searchType: 1,
); );
hasError = false; hasError = false;
await baseAppClient.post(GET_TEMPLETE_LIST /*GET_PROCEDURE_TEMPLETE*/, await baseAppClient.post(GET_TEMPLETE_LIST /*GET_PROCEDURE_TEMPLETE*/,

@ -68,16 +68,30 @@ class MedicineViewModel extends BaseViewModel {
Future getItem({int itemID}) async { Future getItem({int itemID, bool isLocalBusy = false}) async {
setState(ViewState.Busy); if (isLocalBusy) {
setState(ViewState.BusyLocal);
} else {
setState(ViewState.Busy);
}
await _prescriptionService.getItem(itemID: itemID); await _prescriptionService.getItem(itemID: itemID);
if (_prescriptionService.hasError) { if (_prescriptionService.hasError) {
error = _prescriptionService.error; error = _prescriptionService.error;
setState(ViewState.Error); setState(ViewState.ErrorLocal);
} else } else
setState(ViewState.Idle); setState(ViewState.Idle);
} }
// async {
// setState(ViewState.BusyLocal);
// await _prescriptionService.getItem(itemID: itemID);
// if (_prescriptionService.hasError) {
// error = _prescriptionService.error;
// setState(ViewState.ErrorLocal);
// } else
// setState(ViewState.Idle);
// }
setTemplateListDependOnId() { setTemplateListDependOnId() {
procedureTemplate.forEach((element) { procedureTemplate.forEach((element) {
List<ProcedureTempleteDetailsModelList> templateListData = templateList List<ProcedureTempleteDetailsModelList> templateListData = templateList
@ -180,10 +194,7 @@ class MedicineViewModel extends BaseViewModel {
Future getAssessmentList ({ Future getAssessmentList ({PatiantInformtion patientInfo, bool isLocalBusy = false}) async {
PatiantInformtion patientInfo,
bool isLocalBusy = false
}) async {
if (isLocalBusy) { if (isLocalBusy) {
setState(ViewState.BusyLocal); setState(ViewState.BusyLocal);
} else { } else {
@ -196,13 +207,13 @@ class MedicineViewModel extends BaseViewModel {
doctorID: '', doctorID: '',
appointmentNo: patientInfo.appointmentNo); appointmentNo: patientInfo.appointmentNo);
if (medicationStrengthList.length == 0) { if (medicationStrengthList.length == 0) {
await getMedicationStrength(); await getMedicationStrength(isLocalBusy: true);
} }
if (medicationDurationList.length == 0) { if (medicationDurationList.length == 0) {
await getMedicationDuration(); await getMedicationDuration(isLocalBusy: true);
} }
if (medicationDoseTimeList.length == 0) { if (medicationDoseTimeList.length == 0) {
await getMedicationDoseTime(); await getMedicationDoseTime(isLocalBusy: true);
} }
await getPatientAssessment(getAssessmentReqModel, isLocalBusy: true); await getPatientAssessment(getAssessmentReqModel, isLocalBusy: true);
if (_prescriptionService.hasError) { if (_prescriptionService.hasError) {
@ -217,18 +228,7 @@ class MedicineViewModel extends BaseViewModel {
} }
} }
Future getProcedureTemplate({String categoryID}) async {
hasError = false;
setState(ViewState.Busy);
await _procedureService.getProcedureTemplate(categoryID: categoryID);
if (_procedureService.hasError) {
error = _procedureService.error;
setState(ViewState.ErrorLocal);
} else {
setTemplateListDependOnId();
setState(ViewState.Idle);
}
}
Future getPrescription({int mrn}) async { Future getPrescription({int mrn}) async {
//hasError = false; //hasError = false;

@ -6,8 +6,7 @@ import 'package:doctor_app_flutter/core/model/labs/patient_lab_orders.dart';
import 'package:doctor_app_flutter/core/model/labs/patient_lab_special_result.dart'; import 'package:doctor_app_flutter/core/model/labs/patient_lab_special_result.dart';
import 'package:doctor_app_flutter/core/model/procedure/ControlsModel.dart'; import 'package:doctor_app_flutter/core/model/procedure/ControlsModel.dart';
import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart'; import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart';
import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart' import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart' as cpe;
as cpe;
import 'package:doctor_app_flutter/core/model/procedure/get_ordered_procedure_model.dart'; import 'package:doctor_app_flutter/core/model/procedure/get_ordered_procedure_model.dart';
import 'package:doctor_app_flutter/core/model/procedure/post_procedure_req_model.dart'; import 'package:doctor_app_flutter/core/model/procedure/post_procedure_req_model.dart';
import 'package:doctor_app_flutter/core/model/procedure/procedure_template_details_model.dart'; import 'package:doctor_app_flutter/core/model/procedure/procedure_template_details_model.dart';
@ -25,6 +24,7 @@ import 'package:doctor_app_flutter/screens/procedures/ProcedureType.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import '../../widgets/shared/loader/gif_loader_dialog_utils.dart';
class ProcedureViewModel extends BaseViewModel { class ProcedureViewModel extends BaseViewModel {
//TODO Hussam clean it //TODO Hussam clean it
@ -117,17 +117,19 @@ class ProcedureViewModel extends BaseViewModel {
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future getProcedureTemplate({String categoryID}) async { Future getProcedureTemplate({String categoryID, bool isLocalBusy = false, BuildContext context}) async {
hasError = false; if (isLocalBusy) {
setState(ViewState.Busy); setState(ViewState.BusyLocal);
await _procedureService.getProcedureTemplate(categoryID: categoryID); } else {
setState(ViewState.Busy);
}
await _procedureService.getProcedureTemplate(categoryID: categoryID, isLocalBusy: false);
if (_procedureService.hasError) { if (_procedureService.hasError) {
error = _procedureService.error; error = _procedureService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);
} else { } else
setTemplateListDependOnId(); setTemplateListDependOnId();
setState(ViewState.Idle); setState(ViewState.Idle);
}
} }
setTemplateListDependOnId() { setTemplateListDependOnId() {

@ -8,6 +8,7 @@ import 'package:doctor_app_flutter/core/viewModel/prescription_view_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/prescription/add_prescription/prescription_form_widget.dart'; import 'package:doctor_app_flutter/screens/prescription/add_prescription/prescription_form_widget.dart';
import 'package:doctor_app_flutter/screens/prescription/add_prescription/search_preescription_widget.dart'; import 'package:doctor_app_flutter/screens/prescription/add_prescription/search_preescription_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:speech_to_text/speech_to_text.dart' as stt; import 'package:speech_to_text/speech_to_text.dart' as stt;
@ -75,12 +76,6 @@ class _AddPrescriptionFormState extends State<AddPrescriptionForm> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<MedicineViewModel>( return BaseView<MedicineViewModel>(
onModelReady: (model) async {
// // await getPatientAssessment(getAssessmentReqModel);
// model.onInitiateAllPrescription(groupProcedures: widget.groupProcedures, patient: widget.patient);
await model.getAssessmentList(
patientInfo: widget.patient, isLocalBusy: true);
},
builder: ( builder: (
BuildContext context, BuildContext context,
MedicineViewModel model, MedicineViewModel model,
@ -132,12 +127,16 @@ class _AddPrescriptionFormState extends State<AddPrescriptionForm> {
widget.prescriptionViewModel, widget.prescriptionViewModel,
onItemSelected: onItemSelected:
(GetMedicationResponseModel (GetMedicationResponseModel
medication) { medication) async {
setState(() { setState(() {
visibilitySearch = !visibilitySearch; visibilitySearch = !visibilitySearch;
_selectedMedication = medication; _selectedMedication = medication;
}); });
}, GifLoaderDialogUtils.showMyDialog(context);
await model.getAssessmentList(patientInfo: widget.patient, isLocalBusy: true);
GifLoaderDialogUtils.hideDialog(context);
},
), ),
), ),
Visibility( Visibility(

@ -1,6 +1,7 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:html_editor_enhanced/utils/utils.dart';
import '../../../config/config.dart'; import '../../../config/config.dart';
import '../../../core/model/search_drug/get_medication_response_model.dart'; import '../../../core/model/search_drug/get_medication_response_model.dart';
@ -102,10 +103,10 @@ class SearchPrescriptionWidget extends StatelessWidget {
child: MedicineItemWidget( child: MedicineItemWidget(
label: label:
model.allMedicationList[index].description), model.allMedicationList[index].description),
onTap: () { onTap: () async {
model.getItem( GifLoaderDialogUtils.showMyDialog(context);
itemID: await model.getItem(itemID: model.allMedicationList[index].itemId, isLocalBusy: true);
model.allMedicationList[index].itemId); GifLoaderDialogUtils.hideDialog(context);
onItemSelected(model.allMedicationList[index]); onItemSelected(model.allMedicationList[index]);
// uom = _selectedMedication.uom; // uom = _selectedMedication.uom;
}, },

@ -12,22 +12,22 @@ import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.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/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../config/config.dart'; import '../../config/config.dart';
import '../../widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'ProcedureType.dart'; import 'ProcedureType.dart';
class AddFavouriteProcedure extends StatefulWidget { class AddFavouriteProcedure extends StatefulWidget {
final ProcedureViewModel model; final ProcedureViewModel previousProcedureViewModel;
final PrescriptionViewModel prescriptionModel; final PrescriptionViewModel prescriptionModel;
final PatiantInformtion patient; final PatiantInformtion patient;
final ProcedureType procedureType; final ProcedureType procedureType;
AddFavouriteProcedure({ AddFavouriteProcedure({
Key key, Key key,
this.model, this.previousProcedureViewModel,
this.prescriptionModel, this.prescriptionModel,
this.patient, this.patient,
@required this.procedureType, @required this.procedureType,
@ -48,8 +48,8 @@ class _AddFavouriteProcedureState extends State<AddFavouriteProcedure> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<ProcedureViewModel>( return BaseView<ProcedureViewModel>(
onModelReady: (model) => model.getProcedureTemplate( onModelReady: (model) async {
categoryID: widget.procedureType.getCategoryId()), },
builder: (BuildContext context, ProcedureViewModel model, Widget child) => builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold( AppScaffold(
isShowAppBar: false, isShowAppBar: false,

@ -3,6 +3,7 @@ import 'package:doctor_app_flutter/core/viewModel/prescription_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart'; import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/bottom_sheet_title.dart';
import 'package:doctor_app_flutter/screens/prescription/add_prescription/add_prescription_form.dart'; import 'package:doctor_app_flutter/screens/prescription/add_prescription/add_prescription_form.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.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/app_texts_widget.dart';
@ -68,12 +69,18 @@ class _BaseAddProcedureTabPageState extends State<BaseAddProcedureTabPage>
final screenSize = MediaQuery.of(context).size; final screenSize = MediaQuery.of(context).size;
return BaseView<ProcedureViewModel>( return BaseView<ProcedureViewModel>(
onModelReady: (model) async {
await model.getProcedureTemplate(categoryID: widget.procedureType.getCategoryId());
},
builder: (BuildContext context, ProcedureViewModel model, Widget child) => builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold( AppScaffold(
isShowAppBar: false, baseViewModel: model,
body: NetworkBaseView( isShowAppBar: true,
baseViewModel: model, appBar: BottomSheetTitle(title: procedureType.getToolbarLabel(context),),
child: DraggableScrollableSheet( body: NetworkBaseView(
baseViewModel: model,
child: DraggableScrollableSheet(
minChildSize: 0.90, minChildSize: 0.90,
initialChildSize: 0.95, initialChildSize: 0.95,
maxChildSize: 1.0, maxChildSize: 1.0,
@ -86,27 +93,6 @@ class _BaseAddProcedureTabPageState extends State<BaseAddProcedureTabPage>
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
AppText(
procedureType.getToolbarLabel(context),
fontWeight: FontWeight.w700,
fontSize: 20,
),
InkWell(
child: Icon(
Icons.close,
size: 24.0,
),
onTap: () {
Navigator.pop(context);
},
)
]),
SizedBox(
height: MediaQuery.of(context).size.height * 0.04,
),
Expanded( Expanded(
child: Scaffold( child: Scaffold(
extendBodyBehindAppBar: true, extendBodyBehindAppBar: true,
@ -159,7 +145,7 @@ class _BaseAddProcedureTabPageState extends State<BaseAddProcedureTabPage>
controller: _tabController, controller: _tabController,
children: [ children: [
AddFavouriteProcedure( AddFavouriteProcedure(
model: this.model, previousProcedureViewModel: model,
prescriptionModel: prescriptionModel:
widget.prescriptionModel, widget.prescriptionModel,
patient: patient, patient: patient,

Loading…
Cancel
Save