fix DA-350

merge-requests/323/head
Elham Rababah 4 years ago
parent f819e6353e
commit f3220be735

@ -292,4 +292,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 649616dc336b3659ac6b2b25159d8e488e042b69
COCOAPODS: 1.10.1
COCOAPODS: 1.10.0.rc.1

@ -136,6 +136,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
Stack(children: [
Column(
children: <Widget>[
if(false)
ProfileWelcomeWidget(
InkWell(
onTap: () async {

@ -1106,6 +1106,7 @@ class TranslationBase {
String get admissionRequestSuccessMsg => localizedValues['admissionRequestSuccessMsg'][locale.languageCode];
String get infoStatus => localizedValues['infoStatus'][locale.languageCode];
String get doctorResponse => localizedValues['doctorResponse'][locale.languageCode];
}
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -1,6 +1,7 @@
import 'package:autocomplete_textfield/autocomplete_textfield.dart';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/model/get_medication_response_model.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
@ -13,18 +14,19 @@ import 'package:doctor_app_flutter/widgets/shared/app_buttons_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/dialogs/master_key_dailog.dart';
import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import '../custom_validation_error.dart';
class UpdateMedicationWidget extends StatefulWidget {
final List<MySelectedAllergy> myAllergiesList;
final TextEditingController medicationController;
UpdateMedicationWidget({Key key, this.myAllergiesList});
UpdateMedicationWidget({
Key key,
this.medicationController,
});
@override
_UpdateMedicationWidgetState createState() => _UpdateMedicationWidgetState();
@ -43,7 +45,7 @@ class _UpdateMedicationWidgetState extends State<UpdateMedicationWidget> {
hintText: TranslationBase.of(context).addMedication,
fontSize: 13.5,
onTapTextFields: () {
openAllergiesList(context);
openMedicationList(context);
},
readOnly: true,
// hintColor: Colors.black,
@ -62,195 +64,57 @@ class _UpdateMedicationWidgetState extends State<UpdateMedicationWidget> {
),
SizedBox(
height: 20,
),
Container(
margin:
EdgeInsets.only(left: 15, right: 15, top: 15),
child: Column(
children: widget.myAllergiesList.map((selectedAllergy) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
child: Texts(
projectViewModel.isArabic
? selectedAllergy.selectedAllergy.nameAr
: selectedAllergy.selectedAllergy.nameEn
.toUpperCase(),
variant: "bodyText",
textDecoration: selectedAllergy.isChecked
? null
: TextDecoration.lineThrough,
bold: true,
color: Colors.black),
width: MediaQuery
.of(context)
.size
.width * 0.5,
),
Texts(
projectViewModel.isArabic
? selectedAllergy.selectedAllergySeverity
.nameAr
: selectedAllergy.selectedAllergySeverity
.nameEn
.toUpperCase(),
variant: "bodyText",
textDecoration: selectedAllergy.isChecked
? null
: TextDecoration.lineThrough,
bold: true,
color: AppGlobal.appPrimaryColor),
if (selectedAllergy.isChecked)
InkWell(
child: Icon(
FontAwesomeIcons.trash,
color: Colors.grey,
size: 20,
),
onTap: () => removeAllergy(selectedAllergy),
)
],
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: Row(
children: [
AppText(
selectedAllergy.remark != null &&
selectedAllergy.remark != ''
? TranslationBase
.of(context)
.remarks + " : "
: '',
fontWeight: FontWeight.bold,
fontSize: 13,
),
Container(
width: MediaQuery
.of(context)
.size
.width * 0.55,
child: AppText(
selectedAllergy.remark ?? '',
fontSize: 10,
color: Colors.grey,
),
),
],
),
),
DividerWithSpacesAround()
],
),
SizedBox(
height: 10,
),
],
);
}).toList()),
)
],
);
}
removeAllergy(MySelectedAllergy mySelectedAllergy) {
List<MySelectedAllergy> allergy =
// ignore: missing_return
widget.myAllergiesList.where((element) =>
mySelectedAllergy.selectedAllergySeverity.id ==
element.selectedAllergySeverity.id &&
mySelectedAllergy.selectedAllergy.id == element.selectedAllergy.id
).toList();
if (allergy.length > 0) {
setState(() {
allergy[0].isChecked = false;
});
}
print(allergy);
}
openAllergiesList(BuildContext context) {
openMedicationList(BuildContext context) {
showModalBottomSheet(
backgroundColor: Colors.white,
isScrollControlled: true,
context: context,
builder: (context) {
return AddAllergies(
addAllergiesFun: (MySelectedAllergy mySelectedAllergy) {
if (mySelectedAllergy.selectedAllergySeverity == null ||
mySelectedAllergy.selectedAllergy == null) {
helpers.showErrorToast(TranslationBase
.of(context)
.requiredMsg);
} else {
setState(() {
List<MySelectedAllergy> allergy =
// ignore: missing_return
widget.myAllergiesList
.where((element) =>
mySelectedAllergy.selectedAllergy.id ==
element.selectedAllergy.id)
.toList();
if (allergy.isEmpty) {
widget.myAllergiesList.add(mySelectedAllergy);
Navigator.of(context).pop();
} else {
allergy.first.selectedAllergy =
mySelectedAllergy.selectedAllergy;
allergy.first.selectedAllergySeverity =
mySelectedAllergy.selectedAllergySeverity;
allergy.first.remark = mySelectedAllergy.remark;
allergy.first.isChecked = mySelectedAllergy.isChecked;
Navigator.of(context).pop();
// helpers.showErrorToast(TranslationBase
// .of(context)
// .itemExist);
}
});
}
},);
return AddMedication(
addMedicationFun: (MySelectedAllergy mySelectedAllergy) {},
medicationController: widget.medicationController,
);
});
}
}
class AddAllergies extends StatefulWidget {
final Function addAllergiesFun;
// ignore: must_be_immutable
class AddMedication extends StatefulWidget {
final Function addMedicationFun;
TextEditingController medicationController;
const AddAllergies({Key key, this.addAllergiesFun}) : super(key: key);
AddMedication({Key key, this.addMedicationFun, this.medicationController})
: super(key: key);
@override
_AddAllergiesState createState() => _AddAllergiesState();
_AddMedicationState createState() => _AddMedicationState();
}
class _AddAllergiesState extends State<AddAllergies> {
List<MasterKeyModel> allergiesList;
List<MasterKeyModel> allergySeverityList;
MasterKeyModel _selectedMedicationStrengthSeverity;
MasterKeyModel _selectedAllergy;
TextEditingController remarkController = TextEditingController();
TextEditingController severityController = TextEditingController();
TextEditingController allergyController = TextEditingController();
class _AddMedicationState extends State<AddMedication> {
MasterKeyModel _selectedMedicationDose;
MasterKeyModel _selectedMedicationStrength;
MasterKeyModel _selectedMedicationRoute;
MasterKeyModel _selectedMedicationFrequency;
GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>();
MasterKeyModel _selectedAllergy;
TextEditingController doseController = TextEditingController();
TextEditingController strengthController = TextEditingController();
TextEditingController routeController = TextEditingController();
TextEditingController frequencyController = TextEditingController();
GetMedicationResponseModel _selectedMedication;
GlobalKey key =
new GlobalKey<AutoCompleteTextFieldState<GetMedicationResponseModel>>();
bool isFormSubmitted = false;
InputDecoration textFieldSelectorDecoration(String hintText,
String selectedText, bool isDropDown,
InputDecoration textFieldSelectorDecoration(
String hintText, String selectedText, bool isDropDown,
{IconData icon}) {
return InputDecoration(
contentPadding: EdgeInsets.symmetric(vertical: 10, horizontal: 10),
@ -321,7 +185,7 @@ class _AddAllergiesState extends State<AddAllergies> {
AppText(
TranslationBase
.of(context)
.addAllergies,
.addMedication,
fontWeight: FontWeight.bold,
fontSize: 16,
),
@ -331,109 +195,90 @@ class _AddAllergiesState extends State<AddAllergies> {
Container(
height: screenSize.height * 0.070,
child: InkWell(
onTap: model.allergiesList != null
? () {
setState(() {
_selectedAllergy = null;
allergyController.text = null;
});
}
: null,
child: _selectedAllergy == null
? AutoCompleteTextField<MasterKeyModel>(
decoration: textFieldSelectorDecoration(
TranslationBase
.of(context)
.selectAllergy,
_selectedAllergy != null
? _selectedAllergy.nameEn
: null, true,
icon: EvaIcons.search),
itemSubmitted: (item) =>
setState(() {
_selectedAllergy = item;
allergyController.text =
projectViewModel.isArabic
? _selectedAllergy
.nameAr
: _selectedAllergy
.nameEn;
}),
key: key,
suggestions: model.allergiesList,
itemBuilder: (context, suggestion) =>
new Padding(
child: Texts(
projectViewModel.isArabic
? suggestion
.nameAr
: suggestion.nameEn),
padding: EdgeInsets.all(2.0)),
itemSorter: (a, b) => 1,
itemFilter: (suggestion, input) =>
suggestion.nameAr.toLowerCase().startsWith(
input.toLowerCase()) ||
suggestion.nameEn.toLowerCase()
.startsWith(input.toLowerCase()),
)
:
TextFields(
onTapTextFields: model.allergiesList !=
null
? () {
setState(() {
_selectedAllergy = null;
allergyController.text = null;
});
}
onTap: model.allMedicationList != null
? () {
setState(() {
_selectedMedication = null;
});
}
: null,
child: _selectedMedication == null
? AutoCompleteTextField<
GetMedicationResponseModel>(
decoration: textFieldSelectorDecoration(
TranslationBase
.of(context)
.searchMedicineNameHere,
_selectedMedication != null
? _selectedMedication.genericName
: null,
hasLabelText: allergyController.text !=
'' ? true : false,
showLabelText: true,
hintText: TranslationBase
true,
icon: EvaIcons.search),
itemSubmitted: (item) =>
setState(
() => _selectedMedication = item),
key: key,
suggestions: model.allMedicationList,
itemBuilder: (context, suggestion) =>
new Padding(
child: Texts(
suggestion.description + '/' +
suggestion.genericName),
padding: EdgeInsets.all(8.0)),
itemSorter: (a, b) => 1,
itemFilter: (suggestion, input) =>
suggestion.genericName
.toLowerCase()
.startsWith(input.toLowerCase()) ||
suggestion.description
.toLowerCase()
.startsWith(input.toLowerCase()) ||
suggestion.keywords
.toLowerCase()
.startsWith(input.toLowerCase()),
)
: TextField(
minLines: 2,
maxLines: 2,
decoration: textFieldSelectorDecoration(
TranslationBase
.of(context)
.selectAllergy,
fontSize: 13.5,
readOnly: true,
fontWeight: FontWeight.w600,
maxLines: 2,
minLines: 1,
controller: allergyController,
suffixIcon: EvaIcons.search,
validator: (value) {
if (value == null)
return TranslationBase
.of(context)
.emptyMessage;
else
return null;
})
.searchMedicineNameHere,
_selectedMedication != null
? _selectedMedication.description +
(' (${_selectedMedication
.genericName} )')
: null,
true,
icon: EvaIcons.search),
enabled: false,
),
),
),
if(isFormSubmitted && _selectedAllergy == null)
if(isFormSubmitted && _selectedMedication == null)
CustomValidationError(),
SizedBox(
height: 10,
height: 5,
),
TextFields(
onTapTextFields: model
.medicationStrengthList != null
onTapTextFields: model.medicationDoseTimeList !=
null
? () {
MasterKeyDailog dialog = MasterKeyDailog(
list: model.medicationStrengthList,
list: model.medicationDoseTimeList,
okText: TranslationBase
.of(context)
.ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationStrengthSeverity =
_selectedMedicationDose =
selectedValue;
severityController.text =
doseController.text =
projectViewModel.isArabic
? _selectedMedicationStrengthSeverity
? _selectedMedicationDose
.nameAr
: _selectedMedicationStrengthSeverity
: _selectedMedicationDose
.nameEn;
});
},
@ -447,10 +292,12 @@ class _AddAllergiesState extends State<AddAllergies> {
);
}
: null,
hasLabelText: severityController.text !=
hasLabelText: doseController.text !=
'' ? true : false,
showLabelText: true,
hintText: "Strength",
hintText: TranslationBase
.of(context)
.doseTime,
//TODO add translation
fontSize: 13.5,
readOnly: true,
@ -458,7 +305,7 @@ class _AddAllergiesState extends State<AddAllergies> {
fontWeight: FontWeight.w600,
maxLines: 2,
minLines: 1,
controller: severityController,
controller: doseController,
validator: (value) {
if (value == null)
return TranslationBase
@ -471,26 +318,29 @@ class _AddAllergiesState extends State<AddAllergies> {
height: 5,
),
if(isFormSubmitted &&
_selectedMedicationStrengthSeverity == null)
CustomValidationError(), TextFields(
onTapTextFields: model.medicationDoseTimeList !=
null
_selectedMedicationDose == null)
CustomValidationError(), SizedBox(
height: 5,
),
TextFields(
onTapTextFields: model
.medicationStrengthList != null
? () {
MasterKeyDailog dialog = MasterKeyDailog(
list: model.medicationDoseTimeList,
list: model.medicationStrengthList,
okText: TranslationBase
.of(context)
.ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationStrengthSeverity =
_selectedMedicationStrength =
selectedValue;
severityController.text =
strengthController.text =
projectViewModel.isArabic
? _selectedMedicationStrengthSeverity
? _selectedMedicationStrength
.nameAr
: _selectedMedicationStrengthSeverity
: _selectedMedicationStrength
.nameEn;
});
},
@ -504,18 +354,19 @@ class _AddAllergiesState extends State<AddAllergies> {
);
}
: null,
hasLabelText: severityController.text !=
hasLabelText: strengthController.text !=
'' ? true : false,
showLabelText: true,
hintText: "Dose Time",
//TODO add translation
hintText: TranslationBase
.of(context)
.strength,
fontSize: 13.5,
readOnly: true,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 2,
minLines: 1,
controller: severityController,
controller: strengthController,
validator: (value) {
if (value == null)
return TranslationBase
@ -527,35 +378,94 @@ class _AddAllergiesState extends State<AddAllergies> {
height: 5,
),
if(isFormSubmitted &&
_selectedMedicationStrengthSeverity == null)
_selectedMedicationStrength == null)
CustomValidationError(),
SizedBox(
height: 10,
height: 5,
),
TextFields(
onTapTextFields: model
.medicationRouteList != null
? () {
MasterKeyDailog dialog = MasterKeyDailog(
list: model.medicationRouteList,
okText: TranslationBase
.of(context)
.ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationRoute =
selectedValue;
routeController.text =
projectViewModel.isArabic
? _selectedMedicationRoute
.nameAr
: _selectedMedicationRoute
.nameEn;
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
hasLabelText: routeController.text !=
'' ? true : false,
showLabelText: true,
hintText: TranslationBase
.of(context)
.route,
fontSize: 13.5,
readOnly: true,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 2,
minLines: 1,
controller: routeController,
validator: (value) {
if (value == null)
return TranslationBase
.of(context)
.emptyMessage;
else
return null;
}),
SizedBox(
height: 10,
height: 5,
),
if(isFormSubmitted &&
_selectedMedicationRoute == null)
CustomValidationError(),
SizedBox(
height: 5,
),
TextFields(
onTapTextFields: model
.medicationStrengthList != null
.medicationFrequencyList != null
? () {
MasterKeyDailog dialog = MasterKeyDailog(
list: model.medicationStrengthList,
list: model.medicationFrequencyList,
okText: TranslationBase
.of(context)
.ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationStrengthSeverity =
_selectedMedicationFrequency =
selectedValue;
severityController.text =
frequencyController.text =
projectViewModel.isArabic
? _selectedMedicationStrengthSeverity
? _selectedMedicationFrequency
.nameAr
: _selectedMedicationStrengthSeverity
: _selectedMedicationFrequency
.nameEn;
});
},
@ -569,10 +479,12 @@ class _AddAllergiesState extends State<AddAllergies> {
);
}
: null,
hasLabelText: severityController.text !=
hasLabelText: frequencyController.text !=
'' ? true : false,
showLabelText: true,
hintText: "Strength",
hintText: TranslationBase
.of(context)
.frequency,
//TODO add translation
fontSize: 13.5,
readOnly: true,
@ -580,7 +492,7 @@ class _AddAllergiesState extends State<AddAllergies> {
fontWeight: FontWeight.w600,
maxLines: 2,
minLines: 1,
controller: severityController,
controller: frequencyController,
validator: (value) {
if (value == null)
return TranslationBase
@ -593,8 +505,11 @@ class _AddAllergiesState extends State<AddAllergies> {
height: 5,
),
if(isFormSubmitted &&
_selectedMedicationStrengthSeverity == null)
_selectedMedicationFrequency == null)
CustomValidationError(),
SizedBox(
height: 30,
),
AppButton(
title: TranslationBase
.of(context)
@ -604,15 +519,29 @@ class _AddAllergiesState extends State<AddAllergies> {
setState(() {
isFormSubmitted = true;
});
if (_selectedAllergy != null &&
_selectedMedicationStrengthSeverity !=
null) {
MySelectedAllergy mySelectedAllergy = new MySelectedAllergy(
remark: remarkController.text,
selectedAllergy: _selectedAllergy,
isChecked: true,
selectedAllergySeverity: _selectedMedicationStrengthSeverity,);
widget.addAllergiesFun(mySelectedAllergy);
if (_selectedMedication != null &&
_selectedMedicationDose !=
null &&
_selectedMedicationStrength != null &&
_selectedMedicationRoute != null &&
_selectedMedicationFrequency != null) {
widget.medicationController.text =
widget.medicationController.text +
'${_selectedMedication
.description } (${TranslationBase
.of(context)
.doseTime} ) ${doseController
.text} (${TranslationBase
.of(context)
.strength}) ${strengthController
.text} (${TranslationBase
.of(context)
.route }) ${routeController
.text} (${TranslationBase
.of(context)
.frequency }) ${frequencyController
.text} \n \n';
Navigator.of(context).pop();
}
},
),
@ -621,7 +550,7 @@ class _AddAllergiesState extends State<AddAllergies> {
),
),
),
)),
),),
),
);
}

@ -209,7 +209,7 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
complaintsController.text = helpers.parseHtmlString(
model.patientChiefComplaintList[0].chiefComplaint);
illnessController.text = model.patientChiefComplaintList[0].hopi;
medicationController.text = model.patientChiefComplaintList[0].currentMedication;
medicationController.text = model.patientChiefComplaintList[0].currentMedication + '\n \n';
}
await getHistory(model);
@ -326,6 +326,10 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
SizedBox(
height: 10,
),
UpdateMedicationWidget(medicationController: medicationController,),
SizedBox(
height: 10,
),
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
@ -340,7 +344,7 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 23,
minLines: 1,
minLines: 10,
controller: medicationController,
validator: (value) {
if (value == null || value == "")
@ -354,10 +358,7 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
SizedBox(
height: 10,
),
UpdateMedicationWidget(myAllergiesList: widget.myAllergiesList,),
SizedBox(
height: 10,
),
]),
),
isExpand: isChiefExpand,

Loading…
Cancel
Save