Merge branch 'development' into feature-ucaf

merge-requests/246/head
mosazaid 5 years ago
commit db502b7f0d

@ -64,10 +64,9 @@ class _LandingPageState extends State<LandingPage> {
ShowCaseWidget( ShowCaseWidget(
builder: Builder(builder: (context) => DashboardScreen()), builder: Builder(builder: (context) => DashboardScreen()),
), ),
MessagesScreen(), // MessagesScreen(),
//MyScheduleScreen(), MyScheduleScreen(),
NewPrescriptionScreen(), // ServicesScreen()
ServicesScreen()
], ],
), ),
bottomNavigationBar: BottomNavBar(changeIndex: _changeCurrentTab), bottomNavigationBar: BottomNavBar(changeIndex: _changeCurrentTab),

@ -0,0 +1,33 @@
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart';
// ignore: must_be_immutable
class CustomValidationError extends StatelessWidget {
String error;
CustomValidationError({
Key key, this.error,
}) : super(key: key);
@override
Widget build(BuildContext context) {
if(error == null )
error = TranslationBase
.of(context)
.emptyMessage;
return Column(
children: [
SizedBox(
height: 2,
),
Container(
margin: EdgeInsets.symmetric(horizontal: 3),
child: AppText(error, color: Theme
.of(context)
.errorColor, fontSize: 14,),
),
],
);
}
}

@ -19,6 +19,8 @@ import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../custom_validation_error.dart';
class UpdateAllergiesWidget extends StatefulWidget { class UpdateAllergiesWidget extends StatefulWidget {
final List<MySelectedAllergy> myAllergiesList; final List<MySelectedAllergy> myAllergiesList;
@ -226,10 +228,11 @@ class _AddAllergiesState extends State<AddAllergies> {
MasterKeyModel _selectedAllergy; MasterKeyModel _selectedAllergy;
TextEditingController remarkController = TextEditingController(); TextEditingController remarkController = TextEditingController();
GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>(); GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>();
bool isFormSubmitted = false;
InputDecoration textFieldSelectorDecoration(
InputDecoration textFieldSelectorDecoration(String hintText, String hintText, String selectedText, bool isDropDown,
String selectedText, bool isDropDown,{IconData icon}) { {IconData icon}) {
return InputDecoration( return InputDecoration(
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0), borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
@ -328,18 +331,24 @@ class _AddAllergiesState extends State<AddAllergies> {
input.toLowerCase()) || input.toLowerCase()) ||
suggestion.nameEn.toLowerCase() suggestion.nameEn.toLowerCase()
.startsWith(input.toLowerCase()), .startsWith(input.toLowerCase()),
):TextField( ) : TextField(
decoration: textFieldSelectorDecoration( decoration: textFieldSelectorDecoration(
TranslationBase TranslationBase
.of(context) .of(context)
.selectAllergy, .selectAllergy,
_selectedAllergy != null _selectedAllergy != null
? projectViewModel.isArabic?_selectedAllergy.nameAr: _selectedAllergy.nameEn ? projectViewModel.isArabic
: null, true, icon: EvaIcons.search), ? _selectedAllergy.nameAr
: _selectedAllergy.nameEn
: null,
true,
icon: EvaIcons.search),
enabled: false, enabled: false,
), ),
), ),
), ),
if(isFormSubmitted && _selectedAllergy == null)
CustomValidationError(),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
@ -382,6 +391,8 @@ class _AddAllergiesState extends State<AddAllergies> {
), ),
), ),
), ),
if(isFormSubmitted && _selectedAllergySeverity == null)
CustomValidationError(),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
@ -410,12 +421,18 @@ class _AddAllergiesState extends State<AddAllergies> {
AppButton( AppButton(
title: TranslationBase.of(context).add.toUpperCase(), title: TranslationBase.of(context).add.toUpperCase(),
onPressed: () { onPressed: () {
setState(() {
isFormSubmitted = true;
});
if(_selectedAllergy !=null && _selectedAllergySeverity !=null) {
MySelectedAllergy mySelectedAllergy = new MySelectedAllergy( MySelectedAllergy mySelectedAllergy = new MySelectedAllergy(
remark: remarkController.text, remark: remarkController.text,
selectedAllergy: _selectedAllergy, selectedAllergy: _selectedAllergy,
isChecked: true, isChecked: true,
selectedAllergySeverity: _selectedAllergySeverity,); selectedAllergySeverity: _selectedAllergySeverity,);
widget.addAllergiesFun(mySelectedAllergy); widget.addAllergiesFun(mySelectedAllergy);
}
}, },
), ),
] ]
@ -433,3 +450,4 @@ class _AddAllergiesState extends State<AddAllergies> {

@ -10,6 +10,7 @@ import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.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/master_key_checkbox_search_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/master_key_checkbox_search_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@ -271,6 +272,9 @@ class _AddHistoryDialogState extends State<AddHistoryDialog> {
onModelReady: (model) async { onModelReady: (model) async {
if (model.historyFamilyList.length == 0) { if (model.historyFamilyList.length == 0) {
await model.getMasterLookup(MasterKeysService.HistoryFamily); await model.getMasterLookup(MasterKeysService.HistoryFamily);
setState(() {
});
} }
}, },
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
@ -313,7 +317,9 @@ class _AddHistoryDialogState extends State<AddHistoryDialog> {
}, },
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
children: <Widget>[ children: <Widget>[
MasterKeyCheckboxSearchWidget( NetworkBaseView(
baseViewModel: model,
child: MasterKeyCheckboxSearchWidget(
model: model, model: model,
masterList: model.historyFamilyList, masterList: model.historyFamilyList,
removeHistory: (history){ removeHistory: (history){
@ -332,7 +338,10 @@ class _AddHistoryDialogState extends State<AddHistoryDialog> {
}, },
isServiceSelected: (master) =>isServiceSelected(master), isServiceSelected: (master) =>isServiceSelected(master),
), ),
MasterKeyCheckboxSearchWidget( ),
NetworkBaseView(
baseViewModel: model,
child: MasterKeyCheckboxSearchWidget(
model: model, model: model,
masterList: model.mergeHistorySurgicalWithHistorySportList, masterList: model.mergeHistorySurgicalWithHistorySportList,
removeHistory: (history){ removeHistory: (history){
@ -351,7 +360,10 @@ class _AddHistoryDialogState extends State<AddHistoryDialog> {
}, },
isServiceSelected: (master) =>isServiceSelected(master), isServiceSelected: (master) =>isServiceSelected(master),
), ),
MasterKeyCheckboxSearchWidget( ),
NetworkBaseView(
baseViewModel: model,
child: MasterKeyCheckboxSearchWidget(
model: model, model: model,
masterList: model.historyMedicalList, masterList: model.historyMedicalList,
removeHistory: (history){ removeHistory: (history){
@ -370,6 +382,7 @@ class _AddHistoryDialogState extends State<AddHistoryDialog> {
}, },
isServiceSelected: (master) =>isServiceSelected(master), isServiceSelected: (master) =>isServiceSelected(master),
), ),
),
], ],
), ),
), ),

@ -23,6 +23,8 @@ import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'custom_validation_error.dart';
class UpdateAssessmentPage extends StatefulWidget { class UpdateAssessmentPage extends StatefulWidget {
final Function changePageViewIndex; final Function changePageViewIndex;
List<MySelectedAssessment> mySelectedAssessmentList; List<MySelectedAssessment> mySelectedAssessmentList;
@ -399,6 +401,7 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
addSelectedAssessment: (MySelectedAssessment mySelectedAssessment, addSelectedAssessment: (MySelectedAssessment mySelectedAssessment,
bool isUpdate) async { bool isUpdate) async {
setState(() { setState(() {
widget.mySelectedAssessmentList.add(mySelectedAssessment);
}); });
}); });
@ -413,7 +416,6 @@ class AddAssessmentDetails extends StatefulWidget {
final Function(MySelectedAssessment mySelectedAssessment, bool isUpdate) addSelectedAssessment; final Function(MySelectedAssessment mySelectedAssessment, bool isUpdate) addSelectedAssessment;
final PatiantInformtion patientInfo; final PatiantInformtion patientInfo;
final bool isUpdate; final bool isUpdate;
AddAssessmentDetails( AddAssessmentDetails(
{Key key, this.mySelectedAssessment, this.addSelectedAssessment, this.patientInfo, this.isUpdate = false, this.mySelectedAssessmentList}); {Key key, this.mySelectedAssessment, this.addSelectedAssessment, this.patientInfo, this.isUpdate = false, this.mySelectedAssessmentList});
@ -426,6 +428,7 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
TextEditingController remarkController = TextEditingController(); TextEditingController remarkController = TextEditingController();
TextEditingController appointmentIdController = TextEditingController(); TextEditingController appointmentIdController = TextEditingController();
GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>(); GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>();
bool isFormSubmitted = false;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -549,6 +552,9 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
), ),
), ),
), ),
if(isFormSubmitted && widget.mySelectedAssessment
.selectedICD == null)
CustomValidationError(),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
@ -595,6 +601,9 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
), ),
), ),
), ),
if(isFormSubmitted && widget.mySelectedAssessment
.selectedDiagnosisCondition == null)
CustomValidationError(),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
@ -641,6 +650,9 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
), ),
), ),
), ),
if(isFormSubmitted && widget.mySelectedAssessment
.selectedDiagnosisType == null)
CustomValidationError(),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
@ -671,6 +683,9 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
title: (widget.isUpdate?TranslationBase.of(context).update:TranslationBase.of(context).add).toUpperCase(), title: (widget.isUpdate?TranslationBase.of(context).update:TranslationBase.of(context).add).toUpperCase(),
loading: model.state == ViewState.BusyLocal, loading: model.state == ViewState.BusyLocal,
onPressed: () async { onPressed: () async {
setState(() {
isFormSubmitted = true;
});
widget.mySelectedAssessment.remark = widget.mySelectedAssessment.remark =
remarkController.text; remarkController.text;
widget.mySelectedAssessment widget.mySelectedAssessment
@ -692,10 +707,6 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
model: model, model: model,
mySelectedAssessment: widget mySelectedAssessment: widget
.mySelectedAssessment); .mySelectedAssessment);
} else {
helpers.showErrorToast(TranslationBase
.of(context)
.requiredMsg);
} }
}, },
), ),
@ -752,7 +763,8 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
mySelectedAssessment.icdCode10ID = mySelectedAssessment.selectedICD.code; mySelectedAssessment.icdCode10ID = mySelectedAssessment.selectedICD.code;
if (!isUpdate) { if (!isUpdate) {
widget.mySelectedAssessmentList.add(mySelectedAssessment); // widget.mySelectedAssessmentList.add(mySelectedAssessment);
widget.addSelectedAssessment(mySelectedAssessment,isUpdate);
} }
Navigator.of(context).pop(); Navigator.of(context).pop();
} }

@ -315,7 +315,7 @@ class _UpdateObjectivePageState extends State<UpdateObjectivePage> {
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
maxLines: 25, maxLines: 25,
minLines: 4, minLines: 4,
controller: remarksController, // controller: remarksController,
validator: (value) { validator: (value) {
if (value == null) if (value == null)
return TranslationBase.of(context) return TranslationBase.of(context)

@ -113,7 +113,7 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
), ),
Column( Column(
children: [ children: [
if(model.patientProgressNoteList.isEmpty) if(model.patientProgressNoteList.isEmpty || progressNoteController.text !='')
Container( Container(
margin: margin:
EdgeInsets.only(left: 10, right: 10, top: 15), EdgeInsets.only(left: 10, right: 10, top: 15),
@ -140,7 +140,7 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
SizedBox( SizedBox(
height: 20, height: 20,
), ),
if (progressNoteController.text.isNotEmpty) if (progressNoteController.text !='')
Container( Container(
margin: margin:
EdgeInsets.only(left: 5, right: 5, top: 15), EdgeInsets.only(left: 5, right: 5, top: 15),
@ -350,6 +350,9 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
AppButton( AppButton(
title: "Add".toUpperCase(), title: "Add".toUpperCase(),
onPressed: () { onPressed: () {
setState(() {
print(progressNoteController.text);
});
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
), ),

@ -53,9 +53,7 @@ class _MasterKeyCheckboxSearchWidgetState extends State<MasterKeyCheckboxSearchW
return Container( return Container(
child: Column( child: Column(
children: [ children: [
NetworkBaseView( Container(
baseViewModel: widget.model,
child: Container(
height: MediaQuery.of(context).size.height * 0.5, height: MediaQuery.of(context).size.height * 0.5,
child: Center( child: Center(
child: Container( child: Container(
@ -118,7 +116,6 @@ class _MasterKeyCheckboxSearchWidgetState extends State<MasterKeyCheckboxSearchW
), ),
)), )),
), ),
),
SizedBox( SizedBox(
height: 10, height: 10,
), ),

Loading…
Cancel
Save