diff --git a/lib/routes.dart b/lib/routes.dart index ca3ae6e4..3e6b2b8c 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -26,6 +26,7 @@ import 'package:doctor_app_flutter/screens/patients/profile/prescriptions/in_pat import 'package:doctor_app_flutter/screens/patients/profile/radiology/radiology_home_page.dart'; import 'package:doctor_app_flutter/screens/patients/profile/referral/refer_details/refer-patient-screen-in-patient.dart'; import 'package:doctor_app_flutter/screens/patients/profile/soap_update/update_soap_index.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/update_soap_index_vida_plus.dart'; import 'package:doctor_app_flutter/screens/patients/profile/vte_assessment/vte_assessment_screen.dart'; import 'package:doctor_app_flutter/screens/prescription/new_prescriptions_page.dart'; import 'package:doctor_app_flutter/screens/prescription/old_prescriptions_page.dart'; @@ -121,6 +122,9 @@ var routes = { UPDATE_EPISODE: (_) => UpdateSoapIndex( isUpdate: true, ), + UPDATE_EPISODE_VIDA_PLUS: (_) => UpdateSoapIndexVidaPlus( + isUpdate: true, + ), IN_PATIENT_PRESCRIPTIONS_DETAILS: (_) => InpatientPrescriptionDetailsScreen(), ADD_SICKLEAVE: (_) => PatientSickLeaveScreen(), ORDER_PRESCRIPTION_OLD: (_) => OldPrescriptionsPage(), diff --git a/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart b/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart index afb3319d..588a9b13 100644 --- a/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart +++ b/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart @@ -292,7 +292,20 @@ class _PatientProfileScreenState extends State with Single ); //todo change the navigator to vida plus screen if ((isFromLiveCare && patient.appointmentNo != null && patient.appointmentNo != 0) || patient.patientStatusType == 43 || isInpatient) { - Navigator.of(context).pushNamed(UPDATE_EPISODE, arguments: {'patient': patient}); + if(Utils.isVidaPlusProject( + projectViewModel, + patient.projectId!, + )){ + Navigator.of(context).pushNamed( + UPDATE_EPISODE_VIDA_PLUS, arguments: { + 'patient': patient + }); + }else { + Navigator.of(context).pushNamed( + UPDATE_EPISODE, arguments: { + 'patient': patient + }); + } } }), ], @@ -408,7 +421,18 @@ class _PatientProfileScreenState extends State with Single Utils.showErrorToast(model.error); } else { patient.episodeNo = model.episodeID; - Navigator.of(context).pushNamed(CREATE_EPISODE, arguments: {'patient': patient}); + if(Utils.isVidaPlusProject( + Provider.of(context), + patient.projectId!, + )){ + Navigator.of(context).pushNamed( + UPDATE_EPISODE_VIDA_PLUS, arguments: { + 'patient': patient + }); + }else { + Navigator.of(context).pushNamed( + CREATE_EPISODE, arguments: {'patient': patient}); + } } } } diff --git a/lib/screens/patients/profile/soap_update_vida_plus/subjective/allergies/add_allergies.dart b/lib/screens/patients/profile/soap_update_vida_plus/subjective/allergies/add_allergies.dart new file mode 100644 index 00000000..bc17b2e4 --- /dev/null +++ b/lib/screens/patients/profile/soap_update_vida_plus/subjective/allergies/add_allergies.dart @@ -0,0 +1,154 @@ +import 'package:autocomplete_textfield/autocomplete_textfield.dart'; +import 'package:doctor_app_flutter/core/model/SOAP/master_key_model.dart'; +import 'package:doctor_app_flutter/core/model/SOAP/selected_items/my_selected_allergy.dart'; +import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; +import 'package:doctor_app_flutter/screens/base/base_view.dart'; +import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart'; +import 'package:doctor_app_flutter/utils/utils.dart'; +import 'package:doctor_app_flutter/widgets/bottom_sheet/custom_bottom_sheet_container.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:flutter/material.dart'; + +import '../../../soap_update/shared_soap_widgets/bottom_sheet_title.dart'; +import 'master_key_checkbox_search_allergies_widget.dart'; + +class AddAllergies extends StatefulWidget { + final Function? addAllergiesFun; + final List? myAllergiesList; + + const AddAllergies({Key? key, this.addAllergiesFun, this.myAllergiesList}) : super(key: key); + + @override + _AddAllergiesState createState() => _AddAllergiesState(); +} + +class _AddAllergiesState extends State { + List allergiesList = []; + List allergySeverityList = []; + List myAllergiesListLocal = []; + + @override + initState() { + super.initState(); + myAllergiesListLocal = [...?widget.myAllergiesList]; + } + + GlobalKey key = new GlobalKey>(); + bool isFormSubmitted = false; + + @override + Widget build(BuildContext context) { + return AppScaffold( + // baseViewModel: model, + isShowAppBar: true, + appBar: BottomSheetTitle( + title: TranslationBase.of(context).addAllergies, + ), + body: Center( + child: Container( + child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + SizedBox( + height: 10, + ), + SizedBox( + height: 16, + ), + Expanded( + child: Center( + child: FractionallySizedBox( + widthFactor: 0.9, + child: Center( + child: BaseView( + onModelReady: (model) async {}, + builder: (_, model, w) { + return MasterKeyCheckboxSearchAllergiesWidget( + model: model, + masterList: model.allergiesList, + removeAllergy: (master) { + // setState(() { + // removeAllergyFromLocalList(master); + // }); + }, + addAllergy: (MySelectedAllergy mySelectedAllergy) { + addAllergyLocally(mySelectedAllergy); + }, + addSelectedAllergy: () { + setState(() { + widget.addAllergiesFun!(myAllergiesListLocal); + }); + }, + isServiceSelected: (master) => isServiceSelected(master), + getServiceSelectedAllergy: (master) => getSelectedAllergy(master), + ); + }), + ), + ), + ), + ), + SizedBox( + height: MediaQuery.of(context).size.height * 0.11, + ), + ]), + ), + ), + bottomSheet: + // model.state != ViewState.Idle + // ? + // Container( + // height: 0, + // ) + // : + CustomBottomSheetContainer( + label: TranslationBase.of(context).addAllergies, + onTap: () { + setState(() { + widget.addAllergiesFun!(myAllergiesListLocal); + }); + }, + ), + ); + } + + isServiceSelected(MasterKeyModel masterKey) { + Iterable allergy = + myAllergiesListLocal.where((element) => masterKey.id == element.selectedAllergy!.id && masterKey.typeId == element.selectedAllergy!.typeId && element.isChecked); + if (allergy.length > 0) { + return true; + } + return false; + } + + removeAllergyFromLocalList(MasterKeyModel masterKey) { + myAllergiesListLocal.removeWhere((element) => element.selectedAllergy!.id == masterKey.id); + } + + MySelectedAllergy getSelectedAllergy(MasterKeyModel masterKey) { + Iterable allergy = + myAllergiesListLocal.where((element) => masterKey.id == element.selectedAllergy!.id && masterKey.typeId == element.selectedAllergy!.typeId && element.isChecked); + if (allergy.length > 0) { + return allergy.first; + } + return MySelectedAllergy(); + } + + addAllergyLocally(MySelectedAllergy mySelectedAllergy) { + if (mySelectedAllergy.selectedAllergy == null) { + Utils.showErrorToast(TranslationBase.of(context).requiredMsg); + } else { + setState(() { + List allergy = + // ignore: missing_return + myAllergiesListLocal.where((element) => mySelectedAllergy.selectedAllergy!.id == element.selectedAllergy!.id).toList(); + + if (allergy.isEmpty) { + myAllergiesListLocal.add(mySelectedAllergy); + } else { + allergy.first.selectedAllergy = mySelectedAllergy.selectedAllergy; + allergy.first.selectedAllergySeverity = mySelectedAllergy.selectedAllergySeverity; + allergy.first.remark = mySelectedAllergy.remark; + allergy.first.isChecked = mySelectedAllergy.isChecked; + } + }); + } + } +} diff --git a/lib/screens/patients/profile/soap_update_vida_plus/subjective/allergies/allergies_item.dart b/lib/screens/patients/profile/soap_update_vida_plus/subjective/allergies/allergies_item.dart new file mode 100644 index 00000000..66c488ac --- /dev/null +++ b/lib/screens/patients/profile/soap_update_vida_plus/subjective/allergies/allergies_item.dart @@ -0,0 +1,180 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/core/model/SOAP/master_key_model.dart'; +import 'package:doctor_app_flutter/core/model/SOAP/selected_items/my_selected_allergy.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/utils/translations_delegate_base_utils.dart'; +import 'package:doctor_app_flutter/utils/utils.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/expandable-widget-header-body.dart'; +import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart'; +import 'package:eva_icons_flutter/eva_icons_flutter.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import '../../../soap_update/soap_utils.dart'; + + +class AddAllergiesItem extends StatefulWidget { + final SOAPViewModel? model; + final Function(MasterKeyModel)? removeAllergy; + final Function(MySelectedAllergy mySelectedAllergy)? addAllergy; + final bool Function(MasterKeyModel)? isServiceSelected; + final MySelectedAllergy Function(MasterKeyModel)? getServiceSelectedAllergy; + final MasterKeyModel? item; + + const AddAllergiesItem({Key? key, this.model, this.removeAllergy, this.addAllergy, this.isServiceSelected, this.getServiceSelectedAllergy, this.item}) : super(key: key); + + @override + _AddAllergiesItemState createState() => _AddAllergiesItemState(); +} + +class _AddAllergiesItemState extends State { + MasterKeyModel _selectedAllergySeverity = MasterKeyModel(); + bool isSubmitted = false; + + @override + Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); + + bool isSelected = widget.isServiceSelected!(widget.item!); + MySelectedAllergy mySelectedAllergy = MySelectedAllergy(); + if (isSelected) { + mySelectedAllergy = widget.getServiceSelectedAllergy!(widget.item!); + } + TextEditingController remarkController = TextEditingController(text: isSelected ? mySelectedAllergy.remark : null); + TextEditingController severityController = TextEditingController( + text: isSelected + ? mySelectedAllergy.selectedAllergySeverity != null + ? projectViewModel.isArabic + ? mySelectedAllergy.selectedAllergySeverity!.nameAr + : mySelectedAllergy.selectedAllergySeverity!.nameEn + : null + : null); + return HeaderBodyExpandableNotifier( + headerWidget: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Checkbox( + value: widget.isServiceSelected!(widget.item!), + activeColor: Colors.red[800], + onChanged: (bool? newValue) { + onTapItem(); + }), + InkWell( + onTap: onTapItem, + child: Container( + child: AppText( + projectViewModel.isArabic + ? widget.item!.nameAr != "" + ? widget.item!.nameAr! + : widget.item!.nameEn! + : widget.item!.nameEn!, + color: Color(0xFF575757), + fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * (SizeConfig.isWidthLarge ? 3 : 3.8), + letterSpacing: -0.56, + ), + width: MediaQuery.of(context).size.width * 0.55, + ), + ), + ], + ), + InkWell( + onTap: () { + if (mySelectedAllergy != null) { + setState(() { + mySelectedAllergy.isExpanded = mySelectedAllergy.isExpanded == null ? false : true; + }); + } + }, + child: Icon( + (mySelectedAllergy != null ? mySelectedAllergy.isExpanded! : false) ? EvaIcons.arrowIosUpwardOutline : EvaIcons.arrowIosDownwardOutline, + color: Color(0xFF575757), + size: 20, + ), + ) + ], + ), + bodyWidget: Center( + child: FractionallySizedBox( + widthFactor: 0.9, + child: Center( + child: Column( + children: [ + AppTextFieldCustom( + onClick: widget.model!.allergySeverityList != null + ? () { + MasterKeyDailog dialog = MasterKeyDailog( + list: widget.model!.allergySeverityList, + selectedValue: mySelectedAllergy.selectedAllergySeverity!, + okText: TranslationBase.of(context).ok, + okFunction: (selectedValue) { + setState(() { + mySelectedAllergy.selectedAllergySeverity = selectedValue; + }); + }, + ); + showDialog( + barrierDismissible: false, + context: context, + builder: (BuildContext context) { + return dialog; + }, + ); + } + : () {}, + isTextFieldHasSuffix: true, + hintText: TranslationBase.of(context).selectSeverity + "*", + enabled: false, + maxLines: 1, + minLines: 1, + height: Utils.getTextFieldHeight(), + validationError: mySelectedAllergy != null && mySelectedAllergy.selectedAllergySeverity == null && mySelectedAllergy.hasValidationError! + ? TranslationBase.of(context).severityValidationError + : "", + controller: severityController, + onChanged: (value) {}, + onFieldSubmitted: () {}, + ), + SizedBox( + height: 10, + ), + AppTextFieldCustom( + hintText: TranslationBase.of(context).remarks, + controller: remarkController, + maxLines: 25, + minLines: 3, + hasBorder: true, + onChanged: (value) { + mySelectedAllergy.remark = value; + }, + inputType: TextInputType.multiline, + onClick: () {}, + onFieldSubmitted: () {}, + ), + SizedBox( + height: 10, + ), + ], + ), + ), + ), + ), + isExpand: mySelectedAllergy != null ? mySelectedAllergy.isExpanded! : false, + ); + } + + onTapItem() { + setState(() { + if (widget.isServiceSelected!(widget.item!)) { + widget.removeAllergy!(widget.item!); + } else { + MySelectedAllergy mySelectedAllergy = SoapUtils.generateMySelectedAllergy(allergy: widget.item, allergySeverity: _selectedAllergySeverity, remark: null, isChecked: true, isExpanded: true); + widget.addAllergy!(mySelectedAllergy); + } + }); + } +} diff --git a/lib/screens/patients/profile/soap_update_vida_plus/subjective/allergies/master_key_checkbox_search_allergies_widget.dart b/lib/screens/patients/profile/soap_update_vida_plus/subjective/allergies/master_key_checkbox_search_allergies_widget.dart new file mode 100644 index 00000000..1f1ef378 --- /dev/null +++ b/lib/screens/patients/profile/soap_update_vida_plus/subjective/allergies/master_key_checkbox_search_allergies_widget.dart @@ -0,0 +1,165 @@ +import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart'; +import 'package:doctor_app_flutter/core/enum/view_state.dart'; +import 'package:doctor_app_flutter/core/model/SOAP/master_key_model.dart'; +import 'package:doctor_app_flutter/core/model/SOAP/selected_items/my_selected_allergy.dart'; +import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; +import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart'; +import 'package:doctor_app_flutter/utils/utils.dart'; +import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart'; +import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart'; +import 'package:flutter/material.dart'; + +import 'allergies_item.dart'; + +class MasterKeyCheckboxSearchAllergiesWidget extends StatefulWidget { + final SOAPViewModel model; + final Function() addSelectedAllergy; + final Function(MasterKeyModel) removeAllergy; + final Function(MySelectedAllergy mySelectedAllergy) addAllergy; + final bool Function(MasterKeyModel) isServiceSelected; + final MySelectedAllergy Function(MasterKeyModel) getServiceSelectedAllergy; + + final List masterList; + final String? buttonName; + final String? hintSearchText; + + MasterKeyCheckboxSearchAllergiesWidget( + {Key? key, + required this.model, + required this.addSelectedAllergy, + required this.removeAllergy, + required this.masterList, + required this.addAllergy, + required this.isServiceSelected, + this.buttonName, + this.hintSearchText, + required this.getServiceSelectedAllergy}) + : super(key: key); + + @override + _MasterKeyCheckboxSearchAllergiesWidgetState createState() => _MasterKeyCheckboxSearchAllergiesWidgetState(); +} + +class _MasterKeyCheckboxSearchAllergiesWidgetState extends State { + List items = []; + + TextEditingController filteredSearchController = TextEditingController(); + + @override + void initState() { + items.addAll(widget.masterList); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Container( + child: Column( + children: [ + Expanded( + child: Container( + height: Utils.getTextFieldHeight(), + child: Center( + child: Container( + decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), + child: Column( + children: [ + AppTextFieldCustom( + hintText: TranslationBase.of(context).selectAllergy, + isTextFieldHasSuffix: true, + hasBorder: false, + controller: filteredSearchController, + onChanged: (value) { + // filterSearchResults(value); + }, + onFieldSubmitted: () { + + // widget.model.getMasterLookup( + // MasterKeysService.Allergies, + // searchKey: filteredSearchController.text); + // widget.model.getMasterLookup( + // MasterKeysService.AllergySeverity, + // searchKey: ""); + }, + // onFieldSubmitted: (value) { + // widget.model.getMasterLookup(MasterKeysService.Allergies!, searchKey: filteredSearchController.text!); + // widget.model.getMasterLookup(MasterKeysService.AllergySeverity, searchKey: ""); + // }, + suffixIcon: IconButton( + icon: Icon( + Icons.search, + color: Colors.black, + ), + onPressed: () { + + widget.model.getMasterLookup(MasterKeysService.Allergies, searchKey: filteredSearchController.text); + widget.model.getMasterLookup(MasterKeysService.AllergySeverity, searchKey: ""); + }, + ), + ), + DividerWithSpacesAround(), + SizedBox( + height: 10, + ), + Expanded( + child: FractionallySizedBox( + widthFactor: 0.9, + child: Container( + height: MediaQuery.of(context).size.height * 0.60, + child: widget.model.state == ViewState.Idle + ? ListView.builder( + itemCount: widget.model.allergiesList.length, + itemBuilder: (context, index) { + return AddAllergiesItem( + item: widget.model.allergiesList[index], + model: widget.model, + removeAllergy: widget.removeAllergy, + addAllergy: widget.addAllergy, + isServiceSelected: widget.isServiceSelected, + getServiceSelectedAllergy: widget.getServiceSelectedAllergy, + ); + }, + ) + : widget.model.state == ViewState.Busy + ? Center(child: CircularProgressIndicator()) + : Container(), + ), + ), + ), + ], + ), + ), + ), + ), + ), + SizedBox( + height: 10, + ), + ], + ), + ); + } + + void filterSearchResults(String query) { + List dummySearchList = []; + dummySearchList.addAll(widget.masterList); + if (query.isNotEmpty) { + List dummyListData = []; + dummySearchList.forEach((items) { + if (items.nameAr!.toLowerCase().contains(query.toLowerCase()) || items.nameEn!.toLowerCase().contains(query.toLowerCase())) { + dummyListData.add(items); + } + }); + setState(() { + items.clear(); + items.addAll(dummyListData); + }); + return; + } else { + setState(() { + items.clear(); + items.addAll(widget.masterList); + }); + } + } +} diff --git a/lib/screens/patients/profile/soap_update_vida_plus/subjective/allergies/update_allergies_widget.dart b/lib/screens/patients/profile/soap_update_vida_plus/subjective/allergies/update_allergies_widget.dart new file mode 100644 index 00000000..1b02197c --- /dev/null +++ b/lib/screens/patients/profile/soap_update_vida_plus/subjective/allergies/update_allergies_widget.dart @@ -0,0 +1,193 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; +import 'package:doctor_app_flutter/core/model/SOAP/selected_items/my_selected_allergy.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/remark_text.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/remove_button.dart'; +import 'package:doctor_app_flutter/utils/utils.dart'; +import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import '../../../soap_update/shared_soap_widgets/SOAP_open_items.dart'; +import 'add_allergies.dart'; + +// ignore: must_be_immutable +class UpdateAllergiesWidget extends StatefulWidget { + List? myAllergiesList; + + UpdateAllergiesWidget({Key? key, this.myAllergiesList}); + + @override + _UpdateAllergiesWidgetState createState() => _UpdateAllergiesWidgetState(); +} + +class _UpdateAllergiesWidgetState extends State { + @override + Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); + changeAllState() { + setState(() { + print(widget.myAllergiesList); + }); + } + + return Column( + children: [ + SOAPOpenItems( + label: "${TranslationBase.of(context).addAllergies}", + onTap: () { + openAllergiesList(context, changeAllState, removeAllergy); + }, + ), + 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: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + projectViewModel.isArabic ? selectedAllergy.selectedAllergy!.nameAr! : selectedAllergy.selectedAllergy!.nameEn!.toUpperCase(), + textDecoration: selectedAllergy.isChecked! ? TextDecoration.none : TextDecoration.lineThrough, + bold: true, + color: Color(0xFF2B353E), + fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3.5, + fontWeight: FontWeight.w700, + letterSpacing: -0.48, + // fontHeight:0.18 , + ), + AppText( + projectViewModel.isArabic ? selectedAllergy.selectedAllergySeverity!.nameAr! : selectedAllergy.selectedAllergySeverity!.nameEn ?? ""!.toUpperCase(), + textDecoration: selectedAllergy.isChecked! ? TextDecoration.none : TextDecoration.lineThrough, + color: Color(0xFFCC9B14), + fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3, + fontWeight: FontWeight.w700, + letterSpacing: -0.48, + ), + ], + ), + width: MediaQuery.of(context).size.width * 0.5, + ), + if (selectedAllergy.isChecked) + RemoveButton( + onTap: () => removeAllergy(selectedAllergy), + ) + ], + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: Row( + children: [ + RemarkText( + remark: selectedAllergy.remark ?? "", + ), + ], + ), + ), + DividerWithSpacesAround() + ], + ), + SizedBox( + height: 10, + ), + ], + ); + }).toList()), + ) + ], + ); + } + + removeAllergy(MySelectedAllergy mySelectedAllergy) { + List 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) { + if (allergy.first.isLocal) { + setState(() { + widget.myAllergiesList!.remove(allergy.first); + }); + } + setState(() { + allergy[0].isChecked = false; + }); + } + } + + openAllergiesList(BuildContext context, Function changeParentState, removeAllergy) { + showModalBottomSheet( + backgroundColor: Colors.white, + isScrollControlled: true, + isDismissible: false, + context: context, + builder: (context) { + return AddAllergies( + myAllergiesList: widget.myAllergiesList, + addAllergiesFun: (List mySelectedAllergy) { + bool isAllDataFilled = true; + mySelectedAllergy.forEach((element) { + if (element.selectedAllergySeverity == null) { + element.hasValidationError = true; + isAllDataFilled = false; + } + }); + if (isAllDataFilled) { + mySelectedAllergy.forEach((element) { + if ( + widget.myAllergiesList!.singleWhere( + (it) => it.selectedAllergy!.id == element.selectedAllergy!.id, + orElse: () => MySelectedAllergy(), + ).selectedAllergySeverity + == + null) { + widget.myAllergiesList!.add(element); + } + }); + + /// remove items. + List removedList = []; + widget.myAllergiesList!.forEach((element) { + if ( + mySelectedAllergy.singleWhere( + (it) => it.selectedAllergy!.id == element.selectedAllergy!.id, + orElse: () => MySelectedAllergy(), + ) + .selectedAllergySeverity == + null) { + removedList.add(element); + } + }); + + removedList.forEach((element) { + removeAllergy(element); + }); + changeParentState(); + + Navigator.of(context).pop(); + } else { + Utils.showErrorToast(TranslationBase.of(context).requiredMsg); + } + }); + }); + } +} diff --git a/lib/screens/patients/profile/soap_update_vida_plus/subjective/chief_complaint/chief_complaints.dart b/lib/screens/patients/profile/soap_update_vida_plus/subjective/chief_complaint/chief_complaints.dart index bdfc0762..c07649a4 100644 --- a/lib/screens/patients/profile/soap_update_vida_plus/subjective/chief_complaint/chief_complaints.dart +++ b/lib/screens/patients/profile/soap_update_vida_plus/subjective/chief_complaint/chief_complaints.dart @@ -22,10 +22,10 @@ class UpdateChiefComplaints extends StatelessWidget { if (complaints.isEmpty) ...{ EmptyComplaints() } else ...{ - ListView.builder( - itemBuilder: (_, index) => ComplaintItems(complaints[index], onCrossClicked:(){ - - })) + // ListView.builder( + // itemBuilder: (_, index) => ComplaintItems(complaints[index], onCrossClicked:(){ + // + // })) } ]), ); diff --git a/lib/screens/patients/profile/soap_update_vida_plus/update_soap_index_vida_plus.dart b/lib/screens/patients/profile/soap_update_vida_plus/update_soap_index_vida_plus.dart index 20b8b5f9..0a3b8ba5 100644 --- a/lib/screens/patients/profile/soap_update_vida_plus/update_soap_index_vida_plus.dart +++ b/lib/screens/patients/profile/soap_update_vida_plus/update_soap_index_vida_plus.dart @@ -14,20 +14,16 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; -import 'assessment/update_assessment_page.dart'; -import 'objective/update_objective_page.dart'; -import 'plan/update_plan_page.dart'; - -class UpdateSoapIndex extends StatefulWidget { +class UpdateSoapIndexVidaPlus extends StatefulWidget { final bool isUpdate; - const UpdateSoapIndex({Key? key, this.isUpdate = false}) : super(key: key); + const UpdateSoapIndexVidaPlus({Key? key, this.isUpdate = false}) : super(key: key); @override _UpdateSoapIndexState createState() => _UpdateSoapIndexState(); } -class _UpdateSoapIndexState extends State with TickerProviderStateMixin { +class _UpdateSoapIndexState extends State with TickerProviderStateMixin { PageController? _controller; int _currentIndex = 0; List myAllergiesList = [];