allergies work in progress

update_flutter_3.24_vida_plus_episode_v2
Sultan khan 1 year ago
parent f1b87f2568
commit d44f6f8eb0

@ -4,7 +4,42 @@
# This file should be version controlled and should not be manually edited. # This file should be version controlled and should not be manually edited.
version: version:
revision: 0b8abb4724aa590dd0f429683339b1e045a1594d revision: "54e66469a933b60ddf175f858f82eaeb97e48c8d"
channel: stable channel: "stable"
project_type: app project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
- platform: android
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
- platform: ios
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
- platform: linux
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
- platform: macos
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
- platform: web
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
- platform: windows
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'

@ -290,6 +290,9 @@ const ACKNOWLEDGE_RADIOLOGY_CRITICAL_FINDINGS = "Services/DoctorApplication.svc/
const PATIENT_ALLERGIES = 'Services/DoctorApplication.svc/REST/PatientAllergies'; const PATIENT_ALLERGIES = 'Services/DoctorApplication.svc/REST/PatientAllergies';
const SEARCH_ALLERGIES = 'Services/DoctorApplication.svc/REST/SearchAllergies';
var selectedPatientType = 1; var selectedPatientType = 1;
//*********change value to decode json from Dropdown ************ //*********change value to decode json from Dropdown ************

@ -0,0 +1,107 @@
class AllergiesListVidaPlus {
int? allergyID;
String? allergyName;
List<AllergyReactionDTOs>? allergyReactionDTOs;
int? allergyRevisionID;
String? allergyTypeCode;
int? allergyTypeID;
String? allergyTypeName;
int? hospitalGroupID;
int? hospitalID;
bool? isActive;
bool? isSnowMedAllergy;
String? snowMedCode;
AllergiesListVidaPlus(
{this.allergyID,
this.allergyName,
this.allergyReactionDTOs,
this.allergyRevisionID,
this.allergyTypeCode,
this.allergyTypeID,
this.allergyTypeName,
this.hospitalGroupID,
this.hospitalID,
this.isActive,
this.isSnowMedAllergy,
this.snowMedCode});
AllergiesListVidaPlus.fromJson(Map<String, dynamic> json) {
allergyID = json['allergyID'];
allergyName = json['allergyName'];
if (json['allergyReactionDTOs'] != null) {
allergyReactionDTOs = <AllergyReactionDTOs>[];
json['allergyReactionDTOs'].forEach((v) {
allergyReactionDTOs!.add(new AllergyReactionDTOs.fromJson(v));
});
}
allergyRevisionID = json['allergyRevisionID'];
allergyTypeCode = json['allergyTypeCode'];
allergyTypeID = json['allergyTypeID'];
allergyTypeName = json['allergyTypeName'];
hospitalGroupID = json['hospitalGroupID'];
hospitalID = json['hospitalID'];
isActive = json['isActive'];
isSnowMedAllergy = json['isSnowMedAllergy'];
snowMedCode = json['snowMedCode'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['allergyID'] = this.allergyID;
data['allergyName'] = this.allergyName;
if (this.allergyReactionDTOs != null) {
data['allergyReactionDTOs'] =
this.allergyReactionDTOs!.map((v) => v.toJson()).toList();
}
data['allergyRevisionID'] = this.allergyRevisionID;
data['allergyTypeCode'] = this.allergyTypeCode;
data['allergyTypeID'] = this.allergyTypeID;
data['allergyTypeName'] = this.allergyTypeName;
data['hospitalGroupID'] = this.hospitalGroupID;
data['hospitalID'] = this.hospitalID;
data['isActive'] = this.isActive;
data['isSnowMedAllergy'] = this.isSnowMedAllergy;
data['snowMedCode'] = this.snowMedCode;
return data;
}
}
class AllergyReactionDTOs {
int? allergyReactionID;
String? allergyReactionName;
int? allergyReactionRevisionID;
int? hospitalGroupID;
int? hospitalID;
bool? isActive;
int? reactionSelection =1;
AllergyReactionDTOs(
{this.allergyReactionID,
this.allergyReactionName,
this.allergyReactionRevisionID,
this.hospitalGroupID,
this.hospitalID,
this.isActive,
this.reactionSelection
});
AllergyReactionDTOs.fromJson(Map<String, dynamic> json) {
allergyReactionID = json['allergyReactionID'];
allergyReactionName = json['allergyReactionName'];
allergyReactionRevisionID = json['allergyReactionRevisionID'];
hospitalGroupID = json['hospitalGroupID'];
hospitalID = json['hospitalID'];
isActive = json['isActive'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['allergyReactionID'] = this.allergyReactionID;
data['allergyReactionName'] = this.allergyReactionName;
data['allergyReactionRevisionID'] = this.allergyReactionRevisionID;
data['hospitalGroupID'] = this.hospitalGroupID;
data['hospitalID'] = this.hospitalID;
data['isActive'] = this.isActive;
return data;
}
}

@ -1,6 +1,7 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/model/SOAP/Allergy/get_allergies_res_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/Allergy/get_allergies_res_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/Assessment/get_assessment_res_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/Assessment/get_assessment_res_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/allergy/get_allergies_list_vida_plus.dart';
import 'package:doctor_app_flutter/core/model/SOAP/general_get_req_for_SOAP.dart'; import 'package:doctor_app_flutter/core/model/SOAP/general_get_req_for_SOAP.dart';
import 'package:doctor_app_flutter/core/model/SOAP/Assessment/get_assessment_req_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/Assessment/get_assessment_req_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/post_episode_req_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/post_episode_req_model.dart';
@ -32,7 +33,7 @@ class SOAPService extends LookupService {
List<GetPhysicalExamResModel> patientPhysicalExamList = []; List<GetPhysicalExamResModel> patientPhysicalExamList = [];
List<GetPatientProgressNoteResModel> patientProgressNoteList = []; List<GetPatientProgressNoteResModel> patientProgressNoteList = [];
List<GetAssessmentResModel> patientAssessmentList = []; List<GetAssessmentResModel> patientAssessmentList = [];
List<AllergiesListVidaPlus> searchAllergiesList =[];
int? episodeID; int? episodeID;
bool isPrescriptionOrder =false; bool isPrescriptionOrder =false;
Future postEpisode(PostEpisodeReqModel postEpisodeReqModel) async { Future postEpisode(PostEpisodeReqModel postEpisodeReqModel) async {
@ -355,4 +356,20 @@ class SOAPService extends LookupService {
}, body: generalGetReqForSOAP.toJson()); }, body: generalGetReqForSOAP.toJson());
} }
Future searchAllergies(String searchKey) async {
hasError = false;
await baseAppClient.post(SEARCH_ALLERGIES,
onSuccess: (dynamic response, int statusCode) {
print("Success");
searchAllergiesList.clear();
response['List_SearchAllergies']['resultData'].forEach((v) {
searchAllergiesList.add(AllergiesListVidaPlus.fromJson(v));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: {"AllergyName": searchKey});
}
} }

@ -5,6 +5,7 @@ import 'package:doctor_app_flutter/core/model/SOAP/Allergy/post_allergy_request_
import 'package:doctor_app_flutter/core/model/SOAP/Assessment/get_assessment_req_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/Assessment/get_assessment_req_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/Assessment/get_assessment_res_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/Assessment/get_assessment_res_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/Assessment/post_assessment_request_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/Assessment/post_assessment_request_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/allergy/get_allergies_list_vida_plus.dart';
import 'package:doctor_app_flutter/core/model/SOAP/chief_complaint/get_chief_complaint_req_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/chief_complaint/get_chief_complaint_req_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/chief_complaint/get_chief_complaint_res_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/chief_complaint/get_chief_complaint_res_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/chief_complaint/post_chief_complaint_request_model.dart'; import 'package:doctor_app_flutter/core/model/SOAP/chief_complaint/post_chief_complaint_request_model.dart';
@ -78,6 +79,12 @@ class SOAPViewModel extends BaseViewModel {
List<GetAssessmentResModel> get patientAssessmentList => _SOAPService.patientAssessmentList; List<GetAssessmentResModel> get patientAssessmentList => _SOAPService.patientAssessmentList;
List<AllergiesListVidaPlus> get searchAllergiesVidaPlus => _SOAPService.searchAllergiesList;
int? get episodeID => _SOAPService.episodeID; int? get episodeID => _SOAPService.episodeID;
bool get isPrescriptionOrder => _SOAPService.isPrescriptionOrder; bool get isPrescriptionOrder => _SOAPService.isPrescriptionOrder;
bool isAddProgress = true; bool isAddProgress = true;
@ -730,4 +737,31 @@ class SOAPViewModel extends BaseViewModel {
return postAllergyRequestModel; return postAllergyRequestModel;
} }
/*vida plus */
getAllergiesVidaPlus(PatiantInformtion patientInfo) async{
GeneralGetReqForSOAP generalGetReqForSOAP =
GeneralGetReqForSOAP(patientMRN: patientInfo.patientMRN, episodeId: patientInfo.episodeNo, appointmentNo: int.parse(patientInfo.appointmentNo.toString()), doctorID: '', editedBy: '');
setState(ViewState.BusyLocal);
await _SOAPService.patientAllergies(generalGetReqForSOAP);
if (_SOAPService.hasError) {
error = _SOAPService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
searchAllergies(String searchKey) async{
setState(ViewState.BusyLocal);
await _SOAPService.searchAllergies(searchKey);
if (_SOAPService.hasError) {
error = _SOAPService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
} }

@ -10,14 +10,15 @@ import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dar
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../../../../../core/model/SOAP/allergy/get_allergies_list_vida_plus.dart';
import '../../shared_soap_widgets/SOAP_open_items.dart'; import '../../shared_soap_widgets/SOAP_open_items.dart';
import 'add_allergies.dart'; import 'add_allergies.dart';
// ignore: must_be_immutable // ignore: must_be_immutable
class UpdateAllergiesWidget extends StatefulWidget { class UpdateAllergiesWidget extends StatefulWidget {
List<MySelectedAllergy>? myAllergiesList; // AllergiesListVidaPlus? selectedAllergy;
UpdateAllergiesWidget({Key? key, this.myAllergiesList}); UpdateAllergiesWidget({Key? key});
@override @override
_UpdateAllergiesWidgetState createState() => _UpdateAllergiesWidgetState(); _UpdateAllergiesWidgetState createState() => _UpdateAllergiesWidgetState();
@ -29,7 +30,7 @@ class _UpdateAllergiesWidgetState extends State<UpdateAllergiesWidget> {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
changeAllState() { changeAllState() {
setState(() { setState(() {
print(widget.myAllergiesList); // print(widget.myAllergiesList);
}); });
} }
@ -44,94 +45,97 @@ class _UpdateAllergiesWidgetState extends State<UpdateAllergiesWidget> {
SizedBox( SizedBox(
height: 20, height: 20,
), ),
Container( // Container(
margin: EdgeInsets.only(left: 15, right: 15, top: 15), // margin: EdgeInsets.only(left: 15, right: 15, top: 15),
child: Column( // child: Column(
children: widget.myAllergiesList!.map((selectedAllergy) { // children: widget.myAllergiesList!.map((selectedAllergy) {
return Column( // return Column(
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, // mainAxisAlignment: MainAxisAlignment.start,
children: [ // children: [
Column( // Column(
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
children: [ // children: [
Row( // Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
children: [ // children: [
Container( // Container(
child: Column( // child: Column(
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
children: [ // children: [
AppText( // AppText(
projectViewModel.isArabic ? selectedAllergy.selectedAllergy!.nameAr! : selectedAllergy.selectedAllergy!.nameEn!.toUpperCase(), // projectViewModel.isArabic ? selectedAllergy.selectedAllergy!.nameAr! : selectedAllergy.selectedAllergy!.nameEn!.toUpperCase(),
textDecoration: selectedAllergy.isChecked! ? TextDecoration.none : TextDecoration.lineThrough, // textDecoration: selectedAllergy.isChecked! ? TextDecoration.none : TextDecoration.lineThrough,
bold: true, // bold: true,
color: Color(0xFF2B353E), // color: Color(0xFF2B353E),
fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3.5, // fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3.5,
fontWeight: FontWeight.w700, // fontWeight: FontWeight.w700,
letterSpacing: -0.48, // letterSpacing: -0.48,
// fontHeight:0.18 , // // fontHeight:0.18 ,
), // ),
AppText( // AppText(
projectViewModel.isArabic ? selectedAllergy.selectedAllergySeverity!.nameAr! : selectedAllergy.selectedAllergySeverity!.nameEn ?? ""!.toUpperCase(), // projectViewModel.isArabic ? selectedAllergy.selectedAllergySeverity!.nameAr! : selectedAllergy.selectedAllergySeverity!.nameEn ?? ""!.toUpperCase(),
textDecoration: selectedAllergy.isChecked! ? TextDecoration.none : TextDecoration.lineThrough, // textDecoration: selectedAllergy.isChecked! ? TextDecoration.none : TextDecoration.lineThrough,
color: Color(0xFFCC9B14), // color: Color(0xFFCC9B14),
fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3, // fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3,
fontWeight: FontWeight.w700, // fontWeight: FontWeight.w700,
letterSpacing: -0.48, // letterSpacing: -0.48,
), // ),
], // ],
), // ),
width: MediaQuery.of(context).size.width * 0.5, // width: MediaQuery.of(context).size.width * 0.5,
), // ),
if (selectedAllergy.isChecked) // if (selectedAllergy.isChecked)
RemoveButton( // RemoveButton(
onTap: () => removeAllergy(selectedAllergy), // onTap: () => removeAllergy(selectedAllergy),
) // )
], // ],
), // ),
Padding( // Padding(
padding: const EdgeInsets.symmetric(vertical: 8), // padding: const EdgeInsets.symmetric(vertical: 8),
child: Row( // child: Row(
children: [ // children: [
RemarkText( // RemarkText(
remark: selectedAllergy.remark ?? "", // remark: selectedAllergy.remark ?? "",
), // ),
], // ],
), // ),
), // ),
DividerWithSpacesAround() // DividerWithSpacesAround()
], // ],
), // ),
SizedBox( // SizedBox(
height: 10, // height: 10,
), // ),
], // ],
); // );
}).toList()), // }).toList()),
) ],
],
); );
} }
removeAllergy(MySelectedAllergy mySelectedAllergy) { removeAllergy(MySelectedAllergy mySelectedAllergy) {
List<MySelectedAllergy> allergy = // List<MySelectedAllergy> allergy =
// ignore: missing_return // // ignore: missing_return
widget.myAllergiesList! // widget.myAllergiesList!
.where((element) => mySelectedAllergy.selectedAllergySeverity!.id == element.selectedAllergySeverity!.id && mySelectedAllergy.selectedAllergy!.id == element.selectedAllergy!.id) // .where((element) => mySelectedAllergy.selectedAllergySeverity!.id == element.selectedAllergySeverity!.id && mySelectedAllergy.selectedAllergy!.id == element.selectedAllergy!.id)
.toList(); // .toList();
//
// if (allergy.length > 0) {
// if (allergy.first.isLocal) {
// setState(() {
// widget.myAllergiesList!.remove(allergy.first);
// });
// }
// setState(() {
// allergy[0].isChecked = false;
// });
// }
}
openReaction(){
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) { openAllergiesList(BuildContext context, Function changeParentState, removeAllergy) {
@ -142,51 +146,53 @@ class _UpdateAllergiesWidgetState extends State<UpdateAllergiesWidget> {
context: context, context: context,
builder: (context) { builder: (context) {
return AddAllergies( return AddAllergies(
myAllergiesList: widget.myAllergiesList, addAllergiesFun: (AllergiesListVidaPlus selectedAllergy) {
addAllergiesFun: (List<MySelectedAllergy> 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. openReaction();
List<MySelectedAllergy> 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) { // bool isAllDataFilled = true;
removeAllergy(element); // mySelectedAllergy.forEach((element) {
}); // if (element.selectedAllergySeverity == null) {
changeParentState(); // 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<MySelectedAllergy> 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(); // Navigator.of(context).pop();
} else { // } else {
Utils.showErrorToast(TranslationBase.of(context).requiredMsg); // Utils.showErrorToast(TranslationBase.of(context).requiredMsg);
} // }
}); });
}); });
} }

@ -206,9 +206,7 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> implements
}, },
child: Column( child: Column(
children: [ children: [
UpdateAllergiesWidget( UpdateAllergiesWidget(),
myAllergiesList: myAllergiesList,
),
SizedBox( SizedBox(
height: 30, height: 30,
), ),

@ -1,4 +1,5 @@
import 'package:autocomplete_textfield/autocomplete_textfield.dart'; import 'package:autocomplete_textfield/autocomplete_textfield.dart';
import 'package:doctor_app_flutter/core/model/SOAP/allergy/get_allergies_list_vida_plus.dart';
import 'package:doctor_app_flutter/core/model/SOAP/master_key_model.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/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/SOAP_view_model.dart';
@ -14,7 +15,7 @@ import 'master_key_checkbox_search_allergies_widget.dart';
class AddAllergies extends StatefulWidget { class AddAllergies extends StatefulWidget {
final Function? addAllergiesFun; final Function? addAllergiesFun;
final List<MySelectedAllergy>? myAllergiesList; final AllergiesListVidaPlus? myAllergiesList;
const AddAllergies({Key? key, this.addAllergiesFun, this.myAllergiesList}) : super(key: key); const AddAllergies({Key? key, this.addAllergiesFun, this.myAllergiesList}) : super(key: key);
@ -23,17 +24,18 @@ class AddAllergies extends StatefulWidget {
} }
class _AddAllergiesState extends State<AddAllergies> { class _AddAllergiesState extends State<AddAllergies> {
List<MasterKeyModel> allergiesList = []; // List<MasterKeyModel> allergiesList = [];
List<MasterKeyModel> allergySeverityList = []; // List<MasterKeyModel> allergySeverityList = [];
List<MySelectedAllergy> myAllergiesListLocal = []; //
// myAllergiesListLocal = [];
@override @override
initState() { initState() {
super.initState(); super.initState();
myAllergiesListLocal = [...?widget.myAllergiesList]; // myAllergiesListLocal = [...?widget.myAllergiesList];
} }
GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>(); // GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>();
bool isFormSubmitted = false; bool isFormSubmitted = false;
@override @override
@ -62,23 +64,23 @@ class _AddAllergiesState extends State<AddAllergies> {
onModelReady: (model) async {}, onModelReady: (model) async {},
builder: (_, model, w) { builder: (_, model, w) {
return MasterKeyCheckboxSearchAllergiesWidget( return MasterKeyCheckboxSearchAllergiesWidget(
model: model, model: model,
masterList: model.allergiesList, // masterList: model.allergiesList,
removeAllergy: (master) { // removeAllergy: (master) {
// setState(() { // // setState(() {
// removeAllergyFromLocalList(master); // // removeAllergyFromLocalList(master);
// }); // // });
// },
addAllergy: (AllergiesListVidaPlus mySelectedAllergy) {
widget.addAllergiesFun!(mySelectedAllergy);
}, },
addAllergy: (MySelectedAllergy mySelectedAllergy) { // addSelectedAllergy: () {
addAllergyLocally(mySelectedAllergy); // setState(() {
}, // widget.addAllergiesFun!(myAllergiesListLocal);
addSelectedAllergy: () { // });
setState(() { // },
widget.addAllergiesFun!(myAllergiesListLocal); // isServiceSelected: (master) => isServiceSelected(master),
}); // getServiceSelectedAllergy: (master) => getSelectedAllergy(master),
},
isServiceSelected: (master) => isServiceSelected(master),
getServiceSelectedAllergy: (master) => getSelectedAllergy(master),
); );
}), }),
), ),
@ -99,56 +101,56 @@ class _AddAllergiesState extends State<AddAllergies> {
// ) // )
// : // :
CustomBottomSheetContainer( CustomBottomSheetContainer(
label: TranslationBase.of(context).addAllergies, buttonColor: Color(0xffEAEAEA),
fontColor: Colors.black,
label: TranslationBase.of(context).cancel,
onTap: () { onTap: () {
setState(() { Navigator.of(context).pop();
widget.addAllergiesFun!(myAllergiesListLocal);
});
}, },
), ),
); );
} }
//
isServiceSelected(MasterKeyModel masterKey) { // isServiceSelected(MasterKeyModel masterKey) {
Iterable<MySelectedAllergy> allergy = // Iterable<MySelectedAllergy> allergy =
myAllergiesListLocal.where((element) => masterKey.id == element.selectedAllergy!.id && masterKey.typeId == element.selectedAllergy!.typeId && element.isChecked); // myAllergiesListLocal.where((element) => masterKey.id == element.selectedAllergy!.id && masterKey.typeId == element.selectedAllergy!.typeId && element.isChecked);
if (allergy.length > 0) { // if (allergy.length > 0) {
return true; // return true;
} // }
return false; // return false;
} // }
//
removeAllergyFromLocalList(MasterKeyModel masterKey) { // removeAllergyFromLocalList(MasterKeyModel masterKey) {
myAllergiesListLocal.removeWhere((element) => element.selectedAllergy!.id == masterKey.id); // myAllergiesListLocal.removeWhere((element) => element.selectedAllergy!.id == masterKey.id);
} // }
//
MySelectedAllergy getSelectedAllergy(MasterKeyModel masterKey) { // MySelectedAllergy getSelectedAllergy(MasterKeyModel masterKey) {
Iterable<MySelectedAllergy> allergy = // Iterable<MySelectedAllergy> allergy =
myAllergiesListLocal.where((element) => masterKey.id == element.selectedAllergy!.id && masterKey.typeId == element.selectedAllergy!.typeId && element.isChecked); // myAllergiesListLocal.where((element) => masterKey.id == element.selectedAllergy!.id && masterKey.typeId == element.selectedAllergy!.typeId && element.isChecked);
if (allergy.length > 0) { // if (allergy.length > 0) {
return allergy.first; // return allergy.first;
} // }
return MySelectedAllergy(); // return MySelectedAllergy();
} // }
//
addAllergyLocally(MySelectedAllergy mySelectedAllergy) { // addAllergyLocally(AllergiesListVidaPlus mySelectedAllergy) {
if (mySelectedAllergy.selectedAllergy == null) { // if (mySelectedAllergy.selectedAllergy == null) {
Utils.showErrorToast(TranslationBase.of(context).requiredMsg); // Utils.showErrorToast(TranslationBase.of(context).requiredMsg);
} else { // } else {
setState(() { // setState(() {
List<MySelectedAllergy> allergy = // List<MySelectedAllergy> allergy =
// ignore: missing_return // // ignore: missing_return
myAllergiesListLocal.where((element) => mySelectedAllergy.selectedAllergy!.id == element.selectedAllergy!.id).toList(); // myAllergiesListLocal.where((element) => mySelectedAllergy.selectedAllergy!.id == element.selectedAllergy!.id).toList();
//
if (allergy.isEmpty) { // if (allergy.isEmpty) {
myAllergiesListLocal.add(mySelectedAllergy); // myAllergiesListLocal.add(mySelectedAllergy);
} else { // } else {
allergy.first.selectedAllergy = mySelectedAllergy.selectedAllergy; // allergy.first.selectedAllergy = mySelectedAllergy.selectedAllergy;
allergy.first.selectedAllergySeverity = mySelectedAllergy.selectedAllergySeverity; // allergy.first.selectedAllergySeverity = mySelectedAllergy.selectedAllergySeverity;
allergy.first.remark = mySelectedAllergy.remark; // allergy.first.remark = mySelectedAllergy.remark;
allergy.first.isChecked = mySelectedAllergy.isChecked; // allergy.first.isChecked = mySelectedAllergy.isChecked;
} // }
}); // });
} // }
} // }
} }

@ -1,39 +1,44 @@
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart'; 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/enum/view_state.dart';
import 'package:doctor_app_flutter/core/model/SOAP/allergy/get_allergies_list_vida_plus.dart';
import 'package:doctor_app_flutter/core/model/SOAP/master_key_model.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/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/SOAP_view_model.dart';
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.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/utils/utils.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/divider_with_spaces_around.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:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'allergies_item.dart'; import 'allergies_item.dart';
class MasterKeyCheckboxSearchAllergiesWidget extends StatefulWidget { class MasterKeyCheckboxSearchAllergiesWidget extends StatefulWidget {
final SOAPViewModel model; final SOAPViewModel model;
final Function() addSelectedAllergy; // final Function() addSelectedAllergy;
final Function(MasterKeyModel) removeAllergy; // final Function(MasterKeyModel) removeAllergy;
final Function(MySelectedAllergy mySelectedAllergy) addAllergy; final Function(AllergiesListVidaPlus mySelectedAllergy) addAllergy;
final bool Function(MasterKeyModel) isServiceSelected; // final bool Function(MasterKeyModel) isServiceSelected;
final MySelectedAllergy Function(MasterKeyModel) getServiceSelectedAllergy; // final MySelectedAllergy Function(MasterKeyModel) getServiceSelectedAllergy;
final List<MasterKeyModel> masterList; // final List<MasterKeyModel> masterList;
final String? buttonName; final String? buttonName;
final String? hintSearchText; final String? hintSearchText;
MasterKeyCheckboxSearchAllergiesWidget( MasterKeyCheckboxSearchAllergiesWidget(
{Key? key, {Key? key,
required this.model, required this.model,
required this.addSelectedAllergy, // required this.addSelectedAllergy,
required this.removeAllergy, // required this.removeAllergy,
required this.masterList, // required this.masterList,
required this.addAllergy, required this.addAllergy,
required this.isServiceSelected, // required this.isServiceSelected,
this.buttonName, this.buttonName,
this.hintSearchText, this.hintSearchText,
required this.getServiceSelectedAllergy}) // required this.getServiceSelectedAllergy
})
: super(key: key); : super(key: key);
@override @override
@ -41,13 +46,13 @@ class MasterKeyCheckboxSearchAllergiesWidget extends StatefulWidget {
} }
class _MasterKeyCheckboxSearchAllergiesWidgetState extends State<MasterKeyCheckboxSearchAllergiesWidget> { class _MasterKeyCheckboxSearchAllergiesWidgetState extends State<MasterKeyCheckboxSearchAllergiesWidget> {
List<MasterKeyModel> items = []; // List<MasterKeyModel> items = [];
bool loading =false;
TextEditingController filteredSearchController = TextEditingController(); TextEditingController filteredSearchController = TextEditingController();
@override @override
void initState() { void initState() {
items.addAll(widget.masterList); // items.addAll(widget.masterList);
super.initState(); super.initState();
} }
@ -65,9 +70,10 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState extends State<MasterKeyCheckb
child: Column( child: Column(
children: [ children: [
AppTextFieldCustom( AppTextFieldCustom(
hintText: TranslationBase.of(context).selectAllergy, hintText: TranslationBase.of(context).selectAllergy,
isTextFieldHasSuffix: true, isTextFieldHasSuffix: true,
hasBorder: false, hasBorder: true,
controller: filteredSearchController, controller: filteredSearchController,
onChanged: (value) { onChanged: (value) {
// filterSearchResults(value); // filterSearchResults(value);
@ -88,16 +94,18 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState extends State<MasterKeyCheckb
suffixIcon: IconButton( suffixIcon: IconButton(
icon: Icon( icon: Icon(
Icons.search, Icons.search,
color: Colors.black, color: Color(0xff2B353E
),
size: 30,
), ),
onPressed: () { onPressed: () {
loading =true;
widget.model.searchAllergies(filteredSearchController.text);
widget.model.getMasterLookup(MasterKeysService.Allergies, searchKey: filteredSearchController.text);
widget.model.getMasterLookup(MasterKeysService.AllergySeverity, searchKey: "");
}, },
), ),
), ),
DividerWithSpacesAround(), // DividerWithSpacesAround(),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
@ -108,21 +116,30 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState extends State<MasterKeyCheckb
height: MediaQuery.of(context).size.height * 0.60, height: MediaQuery.of(context).size.height * 0.60,
child: widget.model.state == ViewState.Idle child: widget.model.state == ViewState.Idle
? ListView.builder( ? ListView.builder(
itemCount: widget.model.allergiesList.length, itemCount: widget.model.searchAllergiesVidaPlus.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
return AddAllergiesItem( loading =false;
item: widget.model.allergiesList[index], return ListTile(title: AppText(widget.model.searchAllergiesVidaPlus[index].allergyName!), trailing: TextButton.icon(icon: SvgPicture.asset("assets/images/svgs/add-square.svg", color: Color(0xffD02127),), style: ButtonStyle(iconColor: WidgetStateProperty.all<Color>(Color(0xffD02127)), ), onPressed: (){
model: widget.model, widget.addAllergy(widget.model.searchAllergiesVidaPlus[index]);
removeAllergy: widget.removeAllergy,
addAllergy: widget.addAllergy, }, label: AppText(TranslationBase.of(context).add, fontSize:12, color:Color(0xffD02127) ,),
isServiceSelected: widget.isServiceSelected, ),
getServiceSelectedAllergy: widget.getServiceSelectedAllergy,
); );
// 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 : loading ? Center(child: CircularProgressIndicator()) :SizedBox()
? Center(child: CircularProgressIndicator())
: Container(),
), ),
), ),
), ),
@ -139,27 +156,27 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState extends State<MasterKeyCheckb
), ),
); );
} }
//
void filterSearchResults(String query) { // void filterSearchResults(String query) {
List<MasterKeyModel> dummySearchList = []; // List<MasterKeyModel> dummySearchList = [];
dummySearchList.addAll(widget.masterList); // dummySearchList.addAll(widget.masterList);
if (query.isNotEmpty) { // if (query.isNotEmpty) {
List<MasterKeyModel> dummyListData = []; // List<MasterKeyModel> dummyListData = [];
dummySearchList.forEach((items) { // dummySearchList.forEach((items) {
if (items.nameAr!.toLowerCase().contains(query.toLowerCase()) || items.nameEn!.toLowerCase().contains(query.toLowerCase())) { // if (items.nameAr!.toLowerCase().contains(query.toLowerCase()) || items.nameEn!.toLowerCase().contains(query.toLowerCase())) {
dummyListData.add(items); // dummyListData.add(items);
} // }
}); // });
setState(() { // setState(() {
items.clear(); // items.clear();
items.addAll(dummyListData); // items.addAll(dummyListData);
}); // });
return; // return;
} else { // } else {
setState(() { // setState(() {
items.clear(); // items.clear();
items.addAll(widget.masterList); // items.addAll(widget.masterList);
}); // });
} // }
} // }
} }

@ -0,0 +1,165 @@
import 'package:doctor_app_flutter/core/enum/view_state.dart';
import 'package:doctor_app_flutter/core/model/SOAP/allergy/get_allergies_list_vida_plus.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/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import '../../../../../../widgets/shared/app_scaffold_widget.dart';
import '../../../soap_update/shared_soap_widgets/bottom_sheet_title.dart';
class ReactionsSelectionAllergiesWidget extends StatefulWidget {
final SOAPViewModel? model;
final AllergiesListVidaPlus mySelectedAllergy;
final Function(AllergiesListVidaPlus mySelectedAllergy) addReactionFun;
final String? buttonName;
ReactionsSelectionAllergiesWidget({
Key? key,
required this.model,
required this.addReactionFun,
required this.mySelectedAllergy,
this.buttonName,
}) : super(key: key);
@override
_ReactionsSelectionAllergiesWidgetState createState() =>
_ReactionsSelectionAllergiesWidgetState();
}
class _ReactionsSelectionAllergiesWidgetState
extends State<ReactionsSelectionAllergiesWidget> {
// List<MasterKeyModel> items = [];
bool loading = false;
// TextEditingController filteredSearchController = TextEditingController();
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return AppScaffold(
// baseViewModel: model,
isShowAppBar: true,
appBar: BottomSheetTitle(
title: "Reactive" // TranslationBase.of(context).reac,
),
backgroundColor: Color(0xffbacF7F7F7),
body: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: RoundedContainer(
margin: EdgeInsets.all(15),
child: ListView.builder(
itemCount:
widget.mySelectedAllergy.allergyReactionDTOs!.length,
itemBuilder: (context, index) {
loading = false;
return Column(children: [ ExpansionTile(
dense: false,
enableFeedback: false,
showTrailingIcon: false,
leading: Checkbox(value: false, onChanged: (bool) {}),
title: AppText(widget.mySelectedAllergy
.allergyReactionDTOs![index].allergyReactionName!),
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: ListTile(
title: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Radio(
activeColor: Color(0xffD02127),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, // Reduces padding around checkbox
visualDensity: VisualDensity.compact,
value: widget
.mySelectedAllergy
.allergyReactionDTOs![index]
.reactionSelection,
groupValue: widget
.mySelectedAllergy
.allergyReactionDTOs![index]
.allergyReactionID,
onChanged: (value) {
print(value);
},
),
AppText('Mild', fontSize: 10,),
],
))),
Expanded(
child: ListTile(
title: Row(
children: <Widget>[
Radio(
activeColor: Color(0xffD02127),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, // Reduces padding around checkbox
visualDensity: VisualDensity.compact,
value: widget
.mySelectedAllergy
.allergyReactionDTOs![index]
.reactionSelection,
groupValue: widget
.mySelectedAllergy
.allergyReactionDTOs![index]
.allergyReactionID,
onChanged: (value) {
print(value);
},
),
AppText('Moderate', fontSize: 10,),
],
))),
Expanded(
child: ListTile(
title: Row(
children: <Widget>[
Radio(
activeColor: Color(0xffD02127),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, // Reduces padding around checkbox
visualDensity: VisualDensity.compact,
value: widget
.mySelectedAllergy
.allergyReactionDTOs![index]
.reactionSelection,
groupValue: widget
.mySelectedAllergy
.allergyReactionDTOs![index]
.allergyReactionID,
onChanged: (value) {
print(value);
},
),
AppText('Severe', fontSize: 10,),
],
)))
],
)
],
),
Divider(),
]);
},
)))
],
),
);
}
}

@ -1,19 +1,14 @@
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/model/SOAP/allergy/get_allergies_list_vida_plus.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.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/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_vida_plus/subjective/allergies/reactions_selection.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/utils/translations_delegate_base_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.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:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../../soap_update/shared_soap_widgets/SOAP_open_items.dart';
import '../chief_complaint/widgets/add_chief_complaint.dart'; import '../chief_complaint/widgets/add_chief_complaint.dart';
import 'add_allergies.dart'; import 'add_allergies.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
// ignore: must_be_immutable // ignore: must_be_immutable
class UpdateAllergiesWidgetVidaPlus extends StatefulWidget { class UpdateAllergiesWidgetVidaPlus extends StatefulWidget {
List<MySelectedAllergy>? myAllergiesList; List<MySelectedAllergy>? myAllergiesList;
@ -25,6 +20,7 @@ class UpdateAllergiesWidgetVidaPlus extends StatefulWidget {
} }
bool noKnownAllergies = false; bool noKnownAllergies = false;
class _UpdateAllergiesWidgetState extends State<UpdateAllergiesWidgetVidaPlus> { class _UpdateAllergiesWidgetState extends State<UpdateAllergiesWidgetVidaPlus> {
SOAPViewModel? model;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
@ -42,7 +38,7 @@ class _UpdateAllergiesWidgetState extends State<UpdateAllergiesWidgetVidaPlus> {
AddSoapItem( AddSoapItem(
title: "${TranslationBase.of(context).addAllergies}", title: "${TranslationBase.of(context).addAllergies}",
onAddSoapItemClicked: (){ onAddSoapItemClicked: (){
openAllergiesList(context, changeAllState, removeAllergy); openAllergiesList(context, changeAllState);
}, },
), ),
@ -69,97 +65,97 @@ class _UpdateAllergiesWidgetState extends State<UpdateAllergiesWidgetVidaPlus> {
), ),
Container( // Container(
margin: EdgeInsets.only(left: 15, right: 15, top: 15), // margin: EdgeInsets.only(left: 15, right: 15, top: 15),
child: Column( // child: Column(
children: widget.myAllergiesList!.map((selectedAllergy) { // children: widget.myAllergiesList!.map((selectedAllergy) {
return Column( // return Column(
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, // mainAxisAlignment: MainAxisAlignment.start,
children: [ // children: [
Column( // Column(
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
children: [ // children: [
Row( // Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
children: [ // children: [
Container( // Container(
child: Column( // child: Column(
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
children: [ // children: [
AppText( // AppText(
projectViewModel.isArabic ? selectedAllergy.selectedAllergy!.nameAr! : selectedAllergy.selectedAllergy!.nameEn!.toUpperCase(), // projectViewModel.isArabic ? selectedAllergy.selectedAllergy!.nameAr! : selectedAllergy.selectedAllergy!.nameEn!.toUpperCase(),
textDecoration: selectedAllergy.isChecked! ? TextDecoration.none : TextDecoration.lineThrough, // textDecoration: selectedAllergy.isChecked! ? TextDecoration.none : TextDecoration.lineThrough,
bold: true, // bold: true,
color: Color(0xFF2B353E), // color: Color(0xFF2B353E),
fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3.5, // fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3.5,
fontWeight: FontWeight.w700, // fontWeight: FontWeight.w700,
letterSpacing: -0.48, // letterSpacing: -0.48,
// fontHeight:0.18 , // // fontHeight:0.18 ,
), // ),
AppText( // AppText(
projectViewModel.isArabic ? selectedAllergy.selectedAllergySeverity!.nameAr! : selectedAllergy.selectedAllergySeverity!.nameEn ?? ""!.toUpperCase(), // projectViewModel.isArabic ? selectedAllergy.selectedAllergySeverity!.nameAr! : selectedAllergy.selectedAllergySeverity!.nameEn ?? ""!.toUpperCase(),
textDecoration: selectedAllergy.isChecked! ? TextDecoration.none : TextDecoration.lineThrough, // textDecoration: selectedAllergy.isChecked! ? TextDecoration.none : TextDecoration.lineThrough,
color: Color(0xFFCC9B14), // color: Color(0xFFCC9B14),
fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3, // fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3,
fontWeight: FontWeight.w700, // fontWeight: FontWeight.w700,
letterSpacing: -0.48, // letterSpacing: -0.48,
), // ),
], // ],
), // ),
width: MediaQuery.of(context).size.width * 0.5, // width: MediaQuery.of(context).size.width * 0.5,
), // ),
if (selectedAllergy.isChecked) // if (selectedAllergy.isChecked)
RemoveButton( // RemoveButton(
onTap: () => removeAllergy(selectedAllergy), // onTap: () => removeAllergy(selectedAllergy),
) // )
], // ],
), // ),
Padding( // Padding(
padding: const EdgeInsets.symmetric(vertical: 8), // padding: const EdgeInsets.symmetric(vertical: 8),
child: Row( // child: Row(
children: [ // children: [
RemarkText( // RemarkText(
remark: selectedAllergy.remark ?? "", // remark: selectedAllergy.remark ?? "",
), // ),
], // ],
), // ),
), // ),
DividerWithSpacesAround() // DividerWithSpacesAround()
], // ],
), // ),
SizedBox( // SizedBox(
height: 10, // height: 10,
), // ),
], // ],
); // );
}).toList()), // }).toList()),
) // )
], ],
); );
} }
//
removeAllergy(MySelectedAllergy mySelectedAllergy) { // removeAllergy(MySelectedAllergy mySelectedAllergy) {
List<MySelectedAllergy> allergy = // List<MySelectedAllergy> allergy =
// ignore: missing_return // // ignore: missing_return
widget.myAllergiesList! // widget.myAllergiesList!
.where((element) => mySelectedAllergy.selectedAllergySeverity!.id == element.selectedAllergySeverity!.id && mySelectedAllergy.selectedAllergy!.id == element.selectedAllergy!.id) // .where((element) => mySelectedAllergy.selectedAllergySeverity!.id == element.selectedAllergySeverity!.id && mySelectedAllergy.selectedAllergy!.id == element.selectedAllergy!.id)
.toList(); // .toList();
//
if (allergy.length > 0) { // if (allergy.length > 0) {
if (allergy.first.isLocal) { // if (allergy.first.isLocal) {
setState(() { // setState(() {
widget.myAllergiesList!.remove(allergy.first); // widget.myAllergiesList!.remove(allergy.first);
}); // });
} // }
setState(() { // setState(() {
allergy[0].isChecked = false; // allergy[0].isChecked = false;
}); // });
} // }
} // }
openAllergiesList(BuildContext context, Function changeParentState, removeAllergy) { openAllergiesList(BuildContext context, Function changeParentState) {
showModalBottomSheet( showModalBottomSheet(
backgroundColor: Colors.white, backgroundColor: Colors.white,
isScrollControlled: true, isScrollControlled: true,
@ -167,56 +163,34 @@ class _UpdateAllergiesWidgetState extends State<UpdateAllergiesWidgetVidaPlus> {
context: context, context: context,
builder: (context) { builder: (context) {
return AddAllergies( return AddAllergies(
myAllergiesList: widget.myAllergiesList, addAllergiesFun: (AllergiesListVidaPlus mySelectedAllergy) {
addAllergiesFun: (List<MySelectedAllergy> mySelectedAllergy) { Navigator.of(context).pop();
bool isAllDataFilled = true; openReactionScreen(mySelectedAllergy);
mySelectedAllergy.forEach((element) { print(mySelectedAllergy);
if (element.selectedAllergySeverity == null) {
element.hasValidationError = true; // } else {
isAllDataFilled = false; // Utils.showErrorToast(TranslationBase.of(context).requiredMsg);
} // }
});
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<MySelectedAllergy> 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);
}
}); });
}); });
} }
openReactionScreen(AllergiesListVidaPlus mySelectedAllergy){
loadPatientAllergies(){ showModalBottomSheet(
backgroundColor: Colors.white,
} isScrollControlled: true,
isDismissible: false,
context: context,
builder: (context) {
return ReactionsSelectionAllergiesWidget(
model:model,
mySelectedAllergy: mySelectedAllergy,
addReactionFun: (AllergiesListVidaPlus mySelectedAllergy) {
Navigator.of(context).pop();
// } else {
// Utils.showErrorToast(TranslationBase.of(context).requiredMsg);
// }
});
});
}
} }

@ -14,6 +14,9 @@ class AddSoapItem extends StatelessWidget{
children: [ children: [
Expanded( Expanded(
child: AppButton( child: AppButton(
elevation:0,
icon: SvgPicture.asset('assets/images/svgs/add-square.svg'), icon: SvgPicture.asset('assets/images/svgs/add-square.svg'),
title:this.title, title:this.title,
color: Color(0xffEAEAEA), color: Color(0xffEAEAEA),

@ -274,6 +274,7 @@ class SMSOTP {
onTokenReceived: (token) { onTokenReceived: (token) {
setState(() { setState(() {
print("Cloudflare token: $token"); print("Cloudflare token: $token");
//todo pass this token to checkActivcationCode
_token = token; _token = token;
checkValue(); checkValue();
}); });

@ -8,10 +8,11 @@ import '../../config/config.dart';
class CustomBottomSheetContainer extends StatelessWidget { class CustomBottomSheetContainer extends StatelessWidget {
final Function() onTap; final Function() onTap;
final String label; final String label;
final Color? buttonColor;
final Color? fontColor;
double headerHeight = SizeConfig.heightMultiplier! * 12; double headerHeight = SizeConfig.heightMultiplier! * 12;
CustomBottomSheetContainer({Key? key, required this.onTap, required this.label}) : super(key: key); CustomBottomSheetContainer({Key? key, required this.onTap, required this.label, this.buttonColor = const Color(0xFF359846) , this.fontColor = Colors.white }) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -33,8 +34,9 @@ class CustomBottomSheetContainer extends StatelessWidget {
widthFactor: .80, widthFactor: .80,
child: Center( child: Center(
child: AppButton( child: AppButton(
fontColor: fontColor!,
title: label, title: label,
color: AppGlobal.appGreenColor, color: this.buttonColor ,
onPressed: onTap, onPressed: onTap,
), ),
), ),

@ -22,7 +22,7 @@ class AppButton extends StatefulWidget {
final double vPadding; final double vPadding;
final double hPadding; final double hPadding;
final double height; final double height;
final double elevation;
AppButton({ AppButton({
required this.onPressed, required this.onPressed,
this.title = '', this.title = '',
@ -41,6 +41,7 @@ class AppButton extends StatefulWidget {
this.hasBorder = false, this.hasBorder = false,
this.borderColor = Colors.white, this.borderColor = Colors.white,
this.height = 50, this.height = 50,
this.elevation =2.0
}); });
_AppButtonState createState() => _AppButtonState(); _AppButtonState createState() => _AppButtonState();
@ -69,6 +70,7 @@ class _AppButtonState extends State<AppButton> {
child: IgnorePointer( child: IgnorePointer(
ignoring: widget.loading || widget.disabled, ignoring: widget.loading || widget.disabled,
child: RawMaterialButton( child: RawMaterialButton(
elevation: widget.elevation,
fillColor: widget.disabled fillColor: widget.disabled
? Colors.grey ? Colors.grey
: widget.color != null : widget.color != null

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save