You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
172 lines
6.9 KiB
Dart
172 lines
6.9 KiB
Dart
import 'package:autocomplete_textfield/autocomplete_textfield.dart';
|
|
import 'package:doctor_app_flutter/core/model/Prescriptions/prescription_model.dart';
|
|
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
|
|
import 'package:doctor_app_flutter/core/model/search_drug/get_medication_response_model.dart';
|
|
import 'package:doctor_app_flutter/core/provider/robot_provider.dart';
|
|
import 'package:doctor_app_flutter/core/viewModel/medicine_view_model.dart';
|
|
import 'package:doctor_app_flutter/core/viewModel/prescription/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;
|
|
|
|
class AddPrescription extends StatefulWidget {
|
|
final PrescriptionViewModel prescriptionViewModel;
|
|
final PatiantInformtion patient;
|
|
final List<PrescriptionModel> prescriptionList;
|
|
|
|
AddPrescription(
|
|
this.prescriptionViewModel, this.patient, this.prescriptionList);
|
|
|
|
@override
|
|
_AddPrescriptionState createState() => _AddPrescriptionState();
|
|
}
|
|
|
|
class _AddPrescriptionState extends State<AddPrescription> {
|
|
String routeError;
|
|
String frequencyError;
|
|
String doseTimeError;
|
|
String durationError;
|
|
String unitError;
|
|
String strengthError;
|
|
int selectedType;
|
|
|
|
bool visibilitySearch = true;
|
|
|
|
TextEditingController strengthController = TextEditingController();
|
|
TextEditingController unitController = TextEditingController();
|
|
TextEditingController indicationController = TextEditingController();
|
|
TextEditingController instructionController = TextEditingController();
|
|
|
|
bool visibilityPrescriptionForm = false;
|
|
|
|
final myController = TextEditingController();
|
|
DateTime selectedDate;
|
|
int strengthChar;
|
|
GetMedicationResponseModel _selectedMedication;
|
|
MedicineViewModel medicineViewModel;
|
|
|
|
GlobalKey key =
|
|
new GlobalKey<AutoCompleteTextFieldState<GetMedicationResponseModel>>();
|
|
|
|
TextEditingController drugIdController = TextEditingController();
|
|
TextEditingController doseController = TextEditingController();
|
|
final searchController = TextEditingController();
|
|
stt.SpeechToText speech = stt.SpeechToText();
|
|
var event = RobotProvider();
|
|
var recognizedWord;
|
|
|
|
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
|
|
final double spaceBetweenTextFields = 12;
|
|
dynamic route;
|
|
dynamic frequency;
|
|
dynamic duration;
|
|
dynamic doseTime;
|
|
dynamic indication;
|
|
dynamic units;
|
|
dynamic uom;
|
|
dynamic box;
|
|
dynamic x;
|
|
|
|
PatiantInformtion patient;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return BaseView<MedicineViewModel>(
|
|
builder: (
|
|
BuildContext context,
|
|
MedicineViewModel model,
|
|
Widget child,
|
|
) =>
|
|
NetworkBaseView(
|
|
baseViewModel: model,
|
|
child: GestureDetector(
|
|
onTap: () {
|
|
FocusScope.of(context).requestFocus(new FocusNode());
|
|
},
|
|
child: DraggableScrollableSheet(
|
|
initialChildSize: 0.98,
|
|
maxChildSize: 0.98,
|
|
minChildSize: 0.9,
|
|
builder:
|
|
(BuildContext context, ScrollController scrollController) {
|
|
return SingleChildScrollView(
|
|
child: Container(
|
|
height: MediaQuery.of(context).size.height * 1.65,
|
|
color: Color(0xffF8F8F8),
|
|
child: Padding(
|
|
padding: EdgeInsets.symmetric(
|
|
horizontal: 12.0, vertical: 10.0),
|
|
child: Column(
|
|
children: [
|
|
Column(
|
|
children: [
|
|
SizedBox(
|
|
height: 60,
|
|
),
|
|
],
|
|
),
|
|
SizedBox(
|
|
height: spaceBetweenTextFields,
|
|
),
|
|
Container(
|
|
child: Column(
|
|
children: [
|
|
Visibility(
|
|
visible: visibilitySearch,
|
|
child: SearchPrescriptionWidget(
|
|
spaceBetweenTextFields:
|
|
spaceBetweenTextFields,
|
|
medicineViewModel: model,
|
|
prescriptionViewModel:
|
|
widget.prescriptionViewModel,
|
|
onItemSelected:
|
|
(GetMedicationResponseModel
|
|
medication) async {
|
|
setState(() {
|
|
visibilitySearch = !visibilitySearch;
|
|
_selectedMedication = medication;
|
|
});
|
|
GifLoaderDialogUtils.showMyDialog(context);
|
|
await model.getAssessmentList(patientInfo: widget.patient, isLocalBusy: true);
|
|
GifLoaderDialogUtils.hideDialog(context);
|
|
},
|
|
|
|
),
|
|
),
|
|
Visibility(
|
|
visible: !visibilitySearch,
|
|
child: Container(
|
|
child: Column(
|
|
children: [
|
|
PrescriptionFormWidget(
|
|
patient: widget.patient,
|
|
prescriptionViewModel:
|
|
widget.prescriptionViewModel,
|
|
medicineViewModel: model,
|
|
prescriptionList:
|
|
widget.prescriptionList,
|
|
selectedMedication: _selectedMedication,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|