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(
{int doctorId, int projectId, int clinicId, String categoryID}) async {
{int doctorId, int projectId, int clinicId, String categoryID, bool isLocalBusy}) async {
_procedureTempleteRequestModel = ProcedureTempleteRequestModel(
// tokenID: "@dm!n",
patientID: 0,
searchType: 1,
);
hasError = false;
await baseAppClient.post(GET_TEMPLETE_LIST /*GET_PROCEDURE_TEMPLETE*/,

@ -68,16 +68,30 @@ class MedicineViewModel extends BaseViewModel {
Future getItem({int itemID}) async {
setState(ViewState.Busy);
Future getItem({int itemID, bool isLocalBusy = false}) async {
if (isLocalBusy) {
setState(ViewState.BusyLocal);
} else {
setState(ViewState.Busy);
}
await _prescriptionService.getItem(itemID: itemID);
if (_prescriptionService.hasError) {
error = _prescriptionService.error;
setState(ViewState.Error);
setState(ViewState.ErrorLocal);
} else
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() {
procedureTemplate.forEach((element) {
List<ProcedureTempleteDetailsModelList> templateListData = templateList
@ -180,10 +194,7 @@ class MedicineViewModel extends BaseViewModel {
Future getAssessmentList ({
PatiantInformtion patientInfo,
bool isLocalBusy = false
}) async {
Future getAssessmentList ({PatiantInformtion patientInfo, bool isLocalBusy = false}) async {
if (isLocalBusy) {
setState(ViewState.BusyLocal);
} else {
@ -196,13 +207,13 @@ class MedicineViewModel extends BaseViewModel {
doctorID: '',
appointmentNo: patientInfo.appointmentNo);
if (medicationStrengthList.length == 0) {
await getMedicationStrength();
await getMedicationStrength(isLocalBusy: true);
}
if (medicationDurationList.length == 0) {
await getMedicationDuration();
await getMedicationDuration(isLocalBusy: true);
}
if (medicationDoseTimeList.length == 0) {
await getMedicationDoseTime();
await getMedicationDoseTime(isLocalBusy: true);
}
await getPatientAssessment(getAssessmentReqModel, isLocalBusy: true);
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 {
//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/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'
as cpe;
import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart' as cpe;
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/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/helpers.dart';
import 'package:flutter/cupertino.dart';
import '../../widgets/shared/loader/gif_loader_dialog_utils.dart';
class ProcedureViewModel extends BaseViewModel {
//TODO Hussam clean it
@ -117,17 +117,19 @@ class ProcedureViewModel extends BaseViewModel {
setState(ViewState.Idle);
}
Future getProcedureTemplate({String categoryID}) async {
hasError = false;
setState(ViewState.Busy);
await _procedureService.getProcedureTemplate(categoryID: categoryID);
Future getProcedureTemplate({String categoryID, bool isLocalBusy = false, BuildContext context}) async {
if (isLocalBusy) {
setState(ViewState.BusyLocal);
} else {
setState(ViewState.Busy);
}
await _procedureService.getProcedureTemplate(categoryID: categoryID, isLocalBusy: false);
if (_procedureService.hasError) {
error = _procedureService.error;
setState(ViewState.ErrorLocal);
} else {
} else
setTemplateListDependOnId();
setState(ViewState.Idle);
}
}
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/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/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/material.dart';
import 'package:speech_to_text/speech_to_text.dart' as stt;
@ -75,12 +76,6 @@ class _AddPrescriptionFormState extends State<AddPrescriptionForm> {
@override
Widget build(BuildContext context) {
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: (
BuildContext context,
MedicineViewModel model,
@ -132,12 +127,16 @@ class _AddPrescriptionFormState extends State<AddPrescriptionForm> {
widget.prescriptionViewModel,
onItemSelected:
(GetMedicationResponseModel
medication) {
medication) async {
setState(() {
visibilitySearch = !visibilitySearch;
_selectedMedication = medication;
});
},
GifLoaderDialogUtils.showMyDialog(context);
await model.getAssessmentList(patientInfo: widget.patient, isLocalBusy: true);
GifLoaderDialogUtils.hideDialog(context);
},
),
),
Visibility(

@ -1,6 +1,7 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:html_editor_enhanced/utils/utils.dart';
import '../../../config/config.dart';
import '../../../core/model/search_drug/get_medication_response_model.dart';
@ -102,10 +103,10 @@ class SearchPrescriptionWidget extends StatelessWidget {
child: MedicineItemWidget(
label:
model.allMedicationList[index].description),
onTap: () {
model.getItem(
itemID:
model.allMedicationList[index].itemId);
onTap: () async {
GifLoaderDialogUtils.showMyDialog(context);
await model.getItem(itemID: model.allMedicationList[index].itemId, isLocalBusy: true);
GifLoaderDialogUtils.hideDialog(context);
onItemSelected(model.allMedicationList[index]);
// 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_texts_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/material.dart';
import '../../config/config.dart';
import '../../widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'ProcedureType.dart';
class AddFavouriteProcedure extends StatefulWidget {
final ProcedureViewModel model;
final ProcedureViewModel previousProcedureViewModel;
final PrescriptionViewModel prescriptionModel;
final PatiantInformtion patient;
final ProcedureType procedureType;
AddFavouriteProcedure({
Key key,
this.model,
this.previousProcedureViewModel,
this.prescriptionModel,
this.patient,
@required this.procedureType,
@ -48,8 +48,8 @@ class _AddFavouriteProcedureState extends State<AddFavouriteProcedure> {
@override
Widget build(BuildContext context) {
return BaseView<ProcedureViewModel>(
onModelReady: (model) => model.getProcedureTemplate(
categoryID: widget.procedureType.getCategoryId()),
onModelReady: (model) async {
},
builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold(
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/model/patient/patiant_info_model.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/widgets/shared/app_scaffold_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;
return BaseView<ProcedureViewModel>(
onModelReady: (model) async {
await model.getProcedureTemplate(categoryID: widget.procedureType.getCategoryId());
},
builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold(
isShowAppBar: false,
body: NetworkBaseView(
baseViewModel: model,
child: DraggableScrollableSheet(
baseViewModel: model,
isShowAppBar: true,
appBar: BottomSheetTitle(title: procedureType.getToolbarLabel(context),),
body: NetworkBaseView(
baseViewModel: model,
child: DraggableScrollableSheet(
minChildSize: 0.90,
initialChildSize: 0.95,
maxChildSize: 1.0,
@ -86,27 +93,6 @@ class _BaseAddProcedureTabPageState extends State<BaseAddProcedureTabPage>
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
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(
child: Scaffold(
extendBodyBehindAppBar: true,
@ -159,7 +145,7 @@ class _BaseAddProcedureTabPageState extends State<BaseAddProcedureTabPage>
controller: _tabController,
children: [
AddFavouriteProcedure(
model: this.model,
previousProcedureViewModel: model,
prescriptionModel:
widget.prescriptionModel,
patient: patient,

Loading…
Cancel
Save