development-3.3_voipCall
haroon amjad 3 years ago
parent 2b13d43757
commit c50100613a

@ -126,6 +126,7 @@ class BaseAppClient {
onFailure(Utils.generateContactAdminMsg(), statusCode); onFailure(Utils.generateContactAdminMsg(), statusCode);
} else { } else {
var parsed = json.decode(response.body.toString()); var parsed = json.decode(response.body.toString());
print("Response : $parsed");
if (parsed['ErrorType'] == 4) { if (parsed['ErrorType'] == 4) {
helpers.navigateToUpdatePage(parsed['ErrorEndUserMessage'], parsed['AndroidLink'], parsed['IOSLink']); helpers.navigateToUpdatePage(parsed['ErrorEndUserMessage'], parsed['AndroidLink'], parsed['IOSLink']);
} }

@ -23,6 +23,7 @@ class AdmissionRequest {
bool isDietType; bool isDietType;
int dietType; int dietType;
String dietRemarks; String dietRemarks;
String diagnosis;
bool isPhysicalActivityModification; bool isPhysicalActivityModification;
String physicalActivityModificationComments; String physicalActivityModificationComments;
int orStatus; int orStatus;
@ -66,6 +67,7 @@ class AdmissionRequest {
this.isDietType, this.isDietType,
this.dietType, this.dietType,
this.dietRemarks, this.dietRemarks,
this.diagnosis,
this.isPhysicalActivityModification = false, this.isPhysicalActivityModification = false,
this.physicalActivityModificationComments = "", this.physicalActivityModificationComments = "",
this.orStatus = 1, this.orStatus = 1,
@ -109,9 +111,9 @@ class AdmissionRequest {
isDietType = json['isDietType']; isDietType = json['isDietType'];
dietType = json['dietType']; dietType = json['dietType'];
dietRemarks = json['dietRemarks']; dietRemarks = json['dietRemarks'];
diagnosis = json['diagnosis'];
isPhysicalActivityModification = json['isPhysicalActivityModification']; isPhysicalActivityModification = json['isPhysicalActivityModification'];
physicalActivityModificationComments = physicalActivityModificationComments = json['physicalActivityModificationComments'];
json['physicalActivityModificationComments'];
orStatus = json['orStatus']; orStatus = json['orStatus'];
mainLineOfTreatment = json['mainLineOfTreatment']; mainLineOfTreatment = json['mainLineOfTreatment'];
estimatedCost = json['estimatedCost']; estimatedCost = json['estimatedCost'];
@ -164,16 +166,14 @@ class AdmissionRequest {
data['transportComments'] = this.transportComments; data['transportComments'] = this.transportComments;
data['isPhysioAppointmentNeeded'] = this.isPhysioAppointmentNeeded; data['isPhysioAppointmentNeeded'] = this.isPhysioAppointmentNeeded;
data['physioAppointmentComments'] = this.physioAppointmentComments; data['physioAppointmentComments'] = this.physioAppointmentComments;
data['isOPDFollowupAppointmentNeeded'] = data['isOPDFollowupAppointmentNeeded'] = this.isOPDFollowupAppointmentNeeded;
this.isOPDFollowupAppointmentNeeded;
data['opdFollowUpComments'] = this.opdFollowUpComments; data['opdFollowUpComments'] = this.opdFollowUpComments;
data['isDietType'] = this.isDietType; data['isDietType'] = this.isDietType;
data['dietType'] = this.dietType; data['dietType'] = this.dietType;
data['dietRemarks'] = this.dietRemarks; data['dietRemarks'] = this.dietRemarks;
data['isPhysicalActivityModification'] = data['diagnosis'] = this.diagnosis;
this.isPhysicalActivityModification; data['isPhysicalActivityModification'] = this.isPhysicalActivityModification;
data['physicalActivityModificationComments'] = data['physicalActivityModificationComments'] = this.physicalActivityModificationComments;
this.physicalActivityModificationComments;
data['orStatus'] = this.orStatus; data['orStatus'] = this.orStatus;
data['mainLineOfTreatment'] = this.mainLineOfTreatment; data['mainLineOfTreatment'] = this.mainLineOfTreatment;
data['estimatedCost'] = this.estimatedCost; data['estimatedCost'] = this.estimatedCost;
@ -189,8 +189,7 @@ class AdmissionRequest {
// this.admissionRequestDiagnoses.map((v) => v.toJson()).toList(); // this.admissionRequestDiagnoses.map((v) => v.toJson()).toList();
} }
if (this.admissionRequestProcedures != null) { if (this.admissionRequestProcedures != null) {
data['admissionRequestProcedures'] = data['admissionRequestProcedures'] = this.admissionRequestProcedures.map((v) => v.toJson()).toList();
this.admissionRequestProcedures.map((v) => v.toJson()).toList();
} }
data['appointmentNo'] = this.appointmentNo; data['appointmentNo'] = this.appointmentNo;
data['episodeID'] = this.episodeID; data['episodeID'] = this.episodeID;

@ -72,136 +72,70 @@ class _DischargedPatientState extends State<DischargedPatient> {
model.filterData.length, model.filterData.length,
(index) => InkWell( (index) => InkWell(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(PATIENTS_PROFILE,
PATIENTS_PROFILE, arguments: {"patient": model.filterData[index], "patientType": "1", "isSearch": false, "isInpatient": true, "isDischargedPatient": true});
arguments: {
"patient":
model.filterData[index],
"patientType": "1",
"isSearch": false,
"isInpatient": true,
"isDischargedPatient": true
});
}, },
child: Container( child: Container(
width: double.maxFinite, width: double.maxFinite,
margin: EdgeInsets.all(8), margin: EdgeInsets.all(8),
padding: EdgeInsets.only( padding: EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5),
left: 0,
right: 5,
bottom: 5,
top: 5),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: borderRadius: BorderRadius.circular(15),
BorderRadius.circular(15),
color: Colors.white, color: Colors.white,
), ),
child: Column( child: Column(
children: [ children: [
Padding( Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(left: 12.0),
left: 12.0),
child: Row( child: Row(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.spaceBetween,
MainAxisAlignment
.spaceBetween,
children: [ children: [
Row(children: [ Row(children: [
Container( Container(
width: 170, width: 170,
child: AppText( child: AppText(
(Utils.capitalize(model (Utils.capitalize(model.filterData[index].firstName) + " " + Utils.capitalize(model.filterData[index].lastName)),
.filterData[
index]
.firstName) +
" " +
Utils.capitalize(model
.filterData[
index]
.lastName)),
fontSize: 16, fontSize: 16,
fontWeight: fontWeight: FontWeight.bold,
FontWeight fontFamily: 'Poppins',
.bold, textOverflow: TextOverflow.ellipsis,
fontFamily:
'Poppins',
textOverflow:
TextOverflow
.ellipsis,
), ),
), ),
model.filterData[index] model.filterData[index].gender == 1
.gender ==
1
? Icon( ? Icon(
DoctorApp DoctorApp.male_2,
.male_2, color: Colors.blue,
color: Colors
.blue,
) )
: Icon( : Icon(
DoctorApp DoctorApp.female_1,
.female_1, color: Colors.pink,
color: Colors
.pink,
), ),
]), ]),
Row( Row(
children: [ children: [
AppText( AppText(
model.filterData[index].nationalityName != model.filterData[index].nationalityName != null
null ? model.filterData[index].nationalityName.trim()
? model : model.filterData[index].nationality != null
.filterData[ ? model.filterData[index].nationality.trim()
index] : model.filterData[index].nationalityId != null
.nationalityName
.trim()
: model.filterData[index].nationality !=
null
? model
.filterData[
index]
.nationality
.trim()
: model.filterData[index].nationalityId !=
null
? model.filterData[index].nationalityId ? model.filterData[index].nationalityId
: "", : "",
fontWeight: fontWeight: FontWeight.bold,
FontWeight
.bold,
fontSize: 14, fontSize: 14,
textOverflow: textOverflow: TextOverflow.ellipsis,
TextOverflow
.ellipsis,
), ),
model.filterData[index].nationality != model.filterData[index].nationality != null || model.filterData[index].nationalityId != null
null ||
model.filterData[index].nationalityId !=
null
? ClipRRect( ? ClipRRect(
borderRadius: borderRadius: BorderRadius.circular(20.0),
BorderRadius.circular( child: Image.network(
20.0), model.filterData[index].nationalityFlagURL != null ? model.filterData[index].nationalityFlagURL : '',
child: Image height: 25,
.network( width: 30,
model.filterData[index].nationalityFlagURL != errorBuilder: (BuildContext context, Object exception, StackTrace stackTrace) {
null
? model.filterData[index].nationalityFlagURL
: '',
height:
25,
width:
30,
errorBuilder: (BuildContext context,
Object
exception,
StackTrace
stackTrace) {
return AppText( return AppText(
'', '',
fontSize: fontSize: 10,
10,
); );
}, },
)) ))
@ -213,26 +147,16 @@ class _DischargedPatientState extends State<DischargedPatient> {
Row( Row(
children: <Widget>[ children: <Widget>[
Column( Column(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.start,
MainAxisAlignment
.start,
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: padding: EdgeInsets.only(left: 12.0),
EdgeInsets.only(
left: 12.0),
child: Container( child: Container(
width: 60, width: 60,
height: 60, height: 60,
child: child: Image.asset(
Image.asset( model.filterData[index].gender == 1 ? 'assets/images/male_avatar.png' : 'assets/images/female_avatar.png',
model.filterData[index] fit: BoxFit.cover,
.gender ==
1
? 'assets/images/male_avatar.png'
: 'assets/images/female_avatar.png',
fit: BoxFit
.cover,
), ),
), ),
), ),
@ -243,118 +167,57 @@ class _DischargedPatientState extends State<DischargedPatient> {
), ),
Expanded( Expanded(
child: Column( child: Column(
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment
.start,
children: [ children: [
Container( Container(
child: RichText( child: RichText(
text: text: new TextSpan(
style: new TextStyle(fontSize: 2.0 * SizeConfig.textMultiplier, color: Colors.black),
children: <TextSpan>[
new TextSpan(text: TranslationBase.of(context).fileNumber, style: TextStyle(fontSize: 14, fontFamily: 'Poppins')),
new TextSpan( new TextSpan(
style: new TextStyle( text: model.filterData[index].patientId.toString(),
fontSize: 2.0 * style: TextStyle(fontWeight: FontWeight.w700, fontFamily: 'Poppins', fontSize: 15)),
SizeConfig
.textMultiplier,
color: Colors
.black),
children: <
TextSpan>[
new TextSpan(
text: TranslationBase.of(context)
.fileNumber,
style: TextStyle(
fontSize:
14,
fontFamily:
'Poppins')),
new TextSpan(
text: model
.filterData[
index]
.patientId
.toString(),
style: TextStyle(
fontWeight: FontWeight
.w700,
fontFamily:
'Poppins',
fontSize:
15)),
], ],
), ),
), ),
), ),
Container( Container(
child: RichText( child: RichText(
text: text: new TextSpan(
new TextSpan( style: new TextStyle(
style: fontSize: 2.0 * SizeConfig.textMultiplier,
new TextStyle( color: Colors.black,
fontSize: 2.0 * fontFamily: 'Poppins',
SizeConfig
.textMultiplier,
color: Colors
.black,
fontFamily:
'Poppins',
), ),
children: < children: <TextSpan>[
TextSpan>[
new TextSpan( new TextSpan(
text: model.filterData[index].admissionDate == text: model.filterData[index].admissionDate == null ? "" : TranslationBase.of(context).admissionDate + " : ",
null style: TextStyle(fontSize: 14)),
? ""
: TranslationBase.of(context).admissionDate +
" : ",
style: TextStyle(
fontSize:
14)),
new TextSpan( new TextSpan(
text: model.filterData[index].admissionDate == text: model.filterData[index].admissionDate == null
null
? "" ? ""
: "${AppDateUtils.convertDateFromServerFormat(model.filterData[index].admissionDate.toString(), 'yyyy-MM-dd')}", : "${AppDateUtils.convertDateFromServerFormat(model.filterData[index].admissionDate.toString(), 'yyyy-MM-dd')}",
style: TextStyle( style: TextStyle(fontWeight: FontWeight.w700, fontSize: 15)),
fontWeight:
FontWeight.w700,
fontSize: 15)),
], ],
), ),
), ),
), ),
Container( Container(
child: RichText( child: RichText(
text: text: new TextSpan(
new TextSpan( style: new TextStyle(
style: fontSize: 2.0 * SizeConfig.textMultiplier,
new TextStyle( color: Colors.black,
fontSize: 2.0 * fontFamily: 'Poppins',
SizeConfig
.textMultiplier,
color: Colors
.black,
fontFamily:
'Poppins',
), ),
children: < children: <TextSpan>[
TextSpan>[ new TextSpan(text: model.filterData[index].dischargeDate == null ? "" : "Discharge Date : ", style: TextStyle(fontSize: 14)),
new TextSpan(
text: model.filterData[index].dischargeDate ==
null
? ""
: "Discharge Date : ",
style: TextStyle(
fontSize:
14)),
new TextSpan( new TextSpan(
text: model.filterData[index].dischargeDate == text: model.filterData[index].dischargeDate == null
null
? "" ? ""
: "${AppDateUtils.convertDateFromServerFormat(model.filterData[index].dischargeDate.toString(), 'yyyy-MM-dd')}", : "${AppDateUtils.convertDateFromServerFormat(model.filterData[index].dischargeDate.toString(), 'yyyy-MM-dd')}",
style: TextStyle( style: TextStyle(fontWeight: FontWeight.w700, fontSize: 15)),
fontWeight:
FontWeight.w700,
fontSize: 15)),
], ],
), ),
), ),
@ -364,17 +227,12 @@ class _DischargedPatientState extends State<DischargedPatient> {
AppText( AppText(
"${TranslationBase.of(context).numOfDays}: ", "${TranslationBase.of(context).numOfDays}: ",
fontSize: 14, fontSize: 14,
fontWeight: fontWeight: FontWeight.w300,
FontWeight
.w300,
), ),
AppText( AppText(
"${AppDateUtils.convertStringToDate(model.filterData[index].dischargeDate).difference(AppDateUtils.getDateTimeFromServerFormat(model.filterData[index].admissionDate)).inDays + 1}", "${AppDateUtils.convertStringToDate(model.filterData[index].dischargeDate).difference(AppDateUtils.getDateTimeFromServerFormat(model.filterData[index].admissionDate)).inDays + 1}",
fontSize: fontSize: 15,
15, fontWeight: FontWeight.w700),
fontWeight:
FontWeight
.w700),
], ],
), ),
], ],

@ -26,12 +26,10 @@ import '../../../../routes.dart';
class AdmissionRequestFirstScreen extends StatefulWidget { class AdmissionRequestFirstScreen extends StatefulWidget {
@override @override
_AdmissionRequestThirdScreenState createState() => _AdmissionRequestThirdScreenState createState() => _AdmissionRequestThirdScreenState();
_AdmissionRequestThirdScreenState();
} }
class _AdmissionRequestThirdScreenState class _AdmissionRequestThirdScreenState extends State<AdmissionRequestFirstScreen> {
extends State<AdmissionRequestFirstScreen> {
final _dietTypeRemarksController = TextEditingController(); final _dietTypeRemarksController = TextEditingController();
final _sickLeaveCommentsController = TextEditingController(); final _sickLeaveCommentsController = TextEditingController();
final _postMedicalHistoryController = TextEditingController(); final _postMedicalHistoryController = TextEditingController();
@ -92,8 +90,7 @@ class _AdmissionRequestThirdScreenState
height: 15, height: 15,
), ),
Container( Container(
margin: margin: EdgeInsets.symmetric(vertical: 0, horizontal: 16),
EdgeInsets.symmetric(vertical: 0, horizontal: 16),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -120,45 +117,27 @@ class _AdmissionRequestThirdScreenState
: _selectedClinic['clinicNameEnglish'] : _selectedClinic['clinicNameEnglish']
: null, : null,
enabled: false, enabled: false,
onClick: model.clinicList != null && onClick: model.clinicList != null && model.clinicList.length > 0
model.clinicList.length > 0
? () { ? () {
openListDialogField( openListDialogField(projectViewModel.isArabic ? 'clinicNameArabic' : 'clinicNameEnglish', 'clinicID', model.clinicList, (selectedValue) {
projectViewModel.isArabic
? 'clinicNameArabic'
: 'clinicNameEnglish',
'clinicID',
model.clinicList, (selectedValue) {
setState(() { setState(() {
_selectedClinic = selectedValue; _selectedClinic = selectedValue;
}); });
}); });
} }
: () async { : () async {
GifLoaderDialogUtils.showMyDialog( GifLoaderDialogUtils.showMyDialog(context);
context); await model.getClinics().then((_) => GifLoaderDialogUtils.hideDialog(context));
await model.getClinics().then((_) => if (model.state == ViewState.Idle && model.clinicList.length > 0) {
GifLoaderDialogUtils.hideDialog( openListDialogField(projectViewModel.isArabic ? 'clinicNameArabic' : 'clinicNameEnglish', 'clinicID', model.clinicList, (selectedValue) {
context));
if (model.state == ViewState.Idle &&
model.clinicList.length > 0) {
openListDialogField(
projectViewModel.isArabic
? 'clinicNameArabic'
: 'clinicNameEnglish',
'clinicID',
model.clinicList, (selectedValue) {
setState(() { setState(() {
_selectedClinic = selectedValue; _selectedClinic = selectedValue;
}); });
}); });
} else if (model.state == } else if (model.state == ViewState.ErrorLocal) {
ViewState.ErrorLocal) { DrAppToastMsg.showErrorToast(model.error);
DrAppToastMsg.showErrorToast(
model.error);
} else { } else {
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast("Empty List");
"Empty List");
} }
}, },
), ),
@ -169,47 +148,31 @@ class _AdmissionRequestThirdScreenState
height: screenSize.height * 0.075, height: screenSize.height * 0.075,
hintText: TranslationBase.of(context).doctor, hintText: TranslationBase.of(context).doctor,
isTextFieldHasSuffix: true, isTextFieldHasSuffix: true,
dropDownText: _selectedDoctor != null dropDownText: _selectedDoctor != null ? _selectedDoctor['DoctorName'] : null,
? _selectedDoctor['DoctorName']
: null,
enabled: false, enabled: false,
validationError: doctorError, validationError: doctorError,
onClick: _selectedClinic != null onClick: _selectedClinic != null
? model.doctorsList != null && ? model.doctorsList != null && model.doctorsList.length > 0
model.doctorsList.length > 0
? () { ? () {
openListDialogField('DoctorName', openListDialogField('DoctorName', 'DoctorID', model.doctorsList, (selectedValue) {
'DoctorID', model.doctorsList,
(selectedValue) {
setState(() { setState(() {
_selectedDoctor = selectedValue; _selectedDoctor = selectedValue;
}); });
}); });
} }
: () async { : () async {
GifLoaderDialogUtils.showMyDialog( GifLoaderDialogUtils.showMyDialog(context);
context); await model.getClinicDoctors(_selectedClinic['clinicID']).then((_) => GifLoaderDialogUtils.hideDialog(context));
await model if (model.state == ViewState.Idle && model.doctorsList.length > 0) {
.getClinicDoctors( openListDialogField('DoctorName', 'DoctorID', model.doctorsList, (selectedValue) {
_selectedClinic['clinicID'])
.then((_) => GifLoaderDialogUtils
.hideDialog(context));
if (model.state == ViewState.Idle &&
model.doctorsList.length > 0) {
openListDialogField('DoctorName',
'DoctorID', model.doctorsList,
(selectedValue) {
setState(() { setState(() {
_selectedDoctor = selectedValue; _selectedDoctor = selectedValue;
}); });
}); });
} else if (model.state == } else if (model.state == ViewState.ErrorLocal) {
ViewState.ErrorLocal) { DrAppToastMsg.showErrorToast(model.error);
DrAppToastMsg.showErrorToast(
model.error);
} else { } else {
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast("Empty List");
"Empty List");
} }
} }
: null, : null,
@ -241,8 +204,7 @@ class _AdmissionRequestThirdScreenState
_patientPregnant = newValue; _patientPregnant = newValue;
}); });
}, },
controlAffinity: controlAffinity: ListTileControlAffinity.leading,
ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0), contentPadding: EdgeInsets.all(0),
), ),
CheckboxListTile( CheckboxListTile(
@ -266,8 +228,7 @@ class _AdmissionRequestThirdScreenState
height: 8, height: 8,
), ),
AppTextFieldCustom( AppTextFieldCustom(
hintText: hintText: TranslationBase.of(context).sickLeaveComments,
TranslationBase.of(context).sickLeaveComments,
controller: _sickLeaveCommentsController, controller: _sickLeaveCommentsController,
minLines: 2, minLines: 2,
maxLines: 4, maxLines: 4,
@ -282,45 +243,29 @@ class _AdmissionRequestThirdScreenState
hintText: TranslationBase.of(context).dietType, hintText: TranslationBase.of(context).dietType,
isTextFieldHasSuffix: true, isTextFieldHasSuffix: true,
validationError: dietTypeError, validationError: dietTypeError,
dropDownText: _selectedDietType != null dropDownText: _selectedDietType != null ? _selectedDietType['nameEn'] : null,
? _selectedDietType['nameEn']
: null,
enabled: false, enabled: false,
onClick: model.dietTypesList != null && onClick: model.dietTypesList != null && model.dietTypesList.length > 0
model.dietTypesList.length > 0
? () { ? () {
openListDialogField( openListDialogField('nameEn', 'id', model.dietTypesList, (selectedValue) {
'nameEn', 'id', model.dietTypesList,
(selectedValue) {
setState(() { setState(() {
_selectedDietType = selectedValue; _selectedDietType = selectedValue;
}); });
}); });
} }
: () async { : () async {
GifLoaderDialogUtils.showMyDialog( GifLoaderDialogUtils.showMyDialog(context);
context); await model.getDietTypes(patient.patientId).then((_) => GifLoaderDialogUtils.hideDialog(context));
await model if (model.state == ViewState.Idle && model.dietTypesList.length > 0) {
.getDietTypes(patient.patientId) openListDialogField('nameEn', 'id', model.dietTypesList, (selectedValue) {
.then((_) =>
GifLoaderDialogUtils.hideDialog(
context));
if (model.state == ViewState.Idle &&
model.dietTypesList.length > 0) {
openListDialogField(
'nameEn', 'id', model.dietTypesList,
(selectedValue) {
setState(() { setState(() {
_selectedDietType = selectedValue; _selectedDietType = selectedValue;
}); });
}); });
} else if (model.state == } else if (model.state == ViewState.ErrorLocal) {
ViewState.ErrorLocal) { DrAppToastMsg.showErrorToast(model.error);
DrAppToastMsg.showErrorToast(
model.error);
} else { } else {
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast("Empty List");
"Empty List");
} }
}, },
), ),
@ -328,8 +273,7 @@ class _AdmissionRequestThirdScreenState
height: 10, height: 10,
), ),
AppTextFieldCustom( AppTextFieldCustom(
hintText: hintText: TranslationBase.of(context).dietTypeRemarks,
TranslationBase.of(context).dietTypeRemarks,
controller: _dietTypeRemarksController, controller: _dietTypeRemarksController,
minLines: 4, minLines: 4,
maxLines: 6, maxLines: 6,
@ -339,8 +283,7 @@ class _AdmissionRequestThirdScreenState
height: 10, height: 10,
), ),
AppTextFieldCustom( AppTextFieldCustom(
hintText: TranslationBase.of(context) hintText: TranslationBase.of(context).pastMedicalHistory,
.pastMedicalHistory,
controller: _postMedicalHistoryController, controller: _postMedicalHistoryController,
minLines: 4, minLines: 4,
maxLines: 6, maxLines: 6,
@ -351,8 +294,7 @@ class _AdmissionRequestThirdScreenState
height: 10, height: 10,
), ),
AppTextFieldCustom( AppTextFieldCustom(
hintText: TranslationBase.of(context) hintText: TranslationBase.of(context).pastSurgicalHistory,
.pastSurgicalHistory,
controller: _postSurgicalHistoryController, controller: _postSurgicalHistoryController,
minLines: 2, minLines: 2,
maxLines: 4, maxLines: 4,
@ -385,80 +327,56 @@ class _AdmissionRequestThirdScreenState
_sickLeaveCommentsController.text != "" && _sickLeaveCommentsController.text != "" &&
_postMedicalHistoryController.text != "" && _postMedicalHistoryController.text != "" &&
_postSurgicalHistoryController.text != "") { _postSurgicalHistoryController.text != "") {
model.admissionRequestData.patientMRN = model.admissionRequestData.patientMRN = patient.patientMRN;
patient.patientMRN; model.admissionRequestData.appointmentNo = patient.appointmentNo;
model.admissionRequestData.appointmentNo =
patient.appointmentNo;
model.admissionRequestData.episodeID = patient.episodeNo; model.admissionRequestData.episodeID = patient.episodeNo;
model.admissionRequestData.admissionRequestNo = 0; model.admissionRequestData.admissionRequestNo = 0;
model.admissionRequestData.admitToClinic = model.admissionRequestData.admitToClinic = _selectedClinic['clinicID'];
_selectedClinic['clinicID']; model.admissionRequestData.mrpDoctorID = _selectedDoctor['DoctorID'];
model.admissionRequestData.mrpDoctorID =
_selectedDoctor['DoctorID'];
model.admissionRequestData.isPregnant = _patientPregnant; model.admissionRequestData.isPregnant = _patientPregnant;
model.admissionRequestData.isSickLeaveRequired = model.admissionRequestData.isSickLeaveRequired = _isSickLeaveRequired;
_isSickLeaveRequired; model.admissionRequestData.sickLeaveComments = _sickLeaveCommentsController.text;
model.admissionRequestData.sickLeaveComments = model.admissionRequestData.isDietType = _selectedDietType != null ? true : false;
_sickLeaveCommentsController.text; model.admissionRequestData.dietType = _selectedDietType != null ? _selectedDietType['id'] : 0;
model.admissionRequestData.isDietType = model.admissionRequestData.dietRemarks = _dietTypeRemarksController.text;
_selectedDietType != null ? true : false; model.admissionRequestData.diagnosis = "0";
model.admissionRequestData.dietType = model.admissionRequestData.pastMedicalHistory = _postMedicalHistoryController.text;
_selectedDietType != null model.admissionRequestData.pastSurgicalHistory = _postSurgicalHistoryController.text;
? _selectedDietType['id']
: 0;
model.admissionRequestData.dietRemarks =
_dietTypeRemarksController.text;
model.admissionRequestData.pastMedicalHistory =
_postMedicalHistoryController.text;
model.admissionRequestData.pastSurgicalHistory =
_postSurgicalHistoryController.text;
Navigator.of(context) Navigator.of(context)
.pushNamed(PATIENT_ADMISSION_REQUEST_2, arguments: { .pushNamed(PATIENT_ADMISSION_REQUEST_2, arguments: {'patient': patient, 'patientType': patientType, 'arrivalType': arrivalType, 'admission-data': model.admissionRequestData});
'patient': patient,
'patientType': patientType,
'arrivalType': arrivalType,
'admission-data': model.admissionRequestData
});
} else { } else {
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast(TranslationBase.of(context).pleaseFill);
TranslationBase.of(context).pleaseFill);
setState(() { setState(() {
if (_selectedClinic == null) { if (_selectedClinic == null) {
clinicError = clinicError = TranslationBase.of(context).fieldRequired;
TranslationBase.of(context).fieldRequired;
} else { } else {
clinicError = null; clinicError = null;
} }
if (_selectedDoctor == null) { if (_selectedDoctor == null) {
doctorError = doctorError = TranslationBase.of(context).fieldRequired;
TranslationBase.of(context).fieldRequired;
} else { } else {
doctorError = null; doctorError = null;
} }
if (_sickLeaveCommentsController.text == "") { if (_sickLeaveCommentsController.text == "") {
sickLeaveCommentError = sickLeaveCommentError = TranslationBase.of(context).fieldRequired;
TranslationBase.of(context).fieldRequired;
} else { } else {
sickLeaveCommentError = null; sickLeaveCommentError = null;
} }
if (_selectedDietType == null) { if (_selectedDietType == null) {
dietTypeError = dietTypeError = TranslationBase.of(context).fieldRequired;
TranslationBase.of(context).fieldRequired;
} else { } else {
dietTypeError = null; dietTypeError = null;
} }
if (_postMedicalHistoryController.text == "") { if (_postMedicalHistoryController.text == "") {
medicalHistoryError = medicalHistoryError = TranslationBase.of(context).fieldRequired;
TranslationBase.of(context).fieldRequired;
} else { } else {
medicalHistoryError = null; medicalHistoryError = null;
} }
if (_postSurgicalHistoryController.text == "") { if (_postSurgicalHistoryController.text == "") {
surgicalHistoryError = surgicalHistoryError = TranslationBase.of(context).fieldRequired;
TranslationBase.of(context).fieldRequired;
} else { } else {
surgicalHistoryError = null; surgicalHistoryError = null;
} }
@ -470,8 +388,7 @@ class _AdmissionRequestThirdScreenState
); );
} }
void openListDialogField(String attributeName, String attributeValueId, void openListDialogField(String attributeName, String attributeValueId, List<dynamic> list, Function(dynamic selectedValue) okFunction) {
List<dynamic> list, Function(dynamic selectedValue) okFunction) {
ListSelectDialog dialog = ListSelectDialog( ListSelectDialog dialog = ListSelectDialog(
list: list, list: list,
attributeName: attributeName, attributeName: attributeName,

@ -26,8 +26,7 @@ class AddMedication extends StatefulWidget {
final Function addMedicationFun; final Function addMedicationFun;
TextEditingController medicationController; TextEditingController medicationController;
AddMedication({Key key, this.addMedicationFun, this.medicationController}) AddMedication({Key key, this.addMedicationFun, this.medicationController}) : super(key: key);
: super(key: key);
@override @override
_AddMedicationState createState() => _AddMedicationState(); _AddMedicationState createState() => _AddMedicationState();
@ -45,8 +44,7 @@ class _AddMedicationState extends State<AddMedication> {
TextEditingController frequencyController = TextEditingController(); TextEditingController frequencyController = TextEditingController();
GetMedicationResponseModel _selectedMedication; GetMedicationResponseModel _selectedMedication;
GlobalKey key = GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<GetMedicationResponseModel>>();
new GlobalKey<AutoCompleteTextFieldState<GetMedicationResponseModel>>();
bool isFormSubmitted = false; bool isFormSubmitted = false;
@override @override
@ -65,359 +63,248 @@ class _AddMedicationState extends State<AddMedication> {
), ),
body: Center( body: Center(
child: Container( child: Container(
child: Column( child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
crossAxisAlignment: CrossAxisAlignment.start, SizedBox(
children: [ height: 10,
SizedBox( ),
height: 10, Expanded(
), child: FractionallySizedBox(
Expanded( widthFactor: 0.9,
child: FractionallySizedBox( child: SingleChildScrollView(
widthFactor: 0.9, child: Column(
child: SingleChildScrollView( children: [
child: Column( SizedBox(
children: [ height: SizeConfig.heightMultiplier *
SizedBox( (SizeConfig.isHeightVeryShort
height: SizeConfig.heightMultiplier * ? 2
(SizeConfig.isHeightVeryShort : SizeConfig.isHeightShort
? 2 ? 2
: SizeConfig.isHeightShort : 2),
? 2 ),
: 2), Container(
), // height: screenSize.height * 0.070,
Container( child: InkWell(
// height: screenSize.height * 0.070, onTap: model.allMedicationList != null
child: InkWell( ? () {
onTap: model.allMedicationList != null setState(() {
? () { _selectedMedication = null;
setState(() { });
_selectedMedication = null; }
}); : null,
} child: _selectedMedication == null
: null, ? CustomAutoCompleteTextField(
child: _selectedMedication == null isShowError: isFormSubmitted && _selectedMedication == null,
? CustomAutoCompleteTextField( child: AutoCompleteTextField<GetMedicationResponseModel>(
isShowError: isFormSubmitted && decoration: TextFieldsUtils.textFieldSelectorDecoration(TranslationBase.of(context).searchMedicineNameHere, null, true, suffixIcon: Icons.search),
_selectedMedication == null, itemSubmitted: (item) => setState(() => _selectedMedication = item),
child: AutoCompleteTextField< key: key,
GetMedicationResponseModel>( suggestions: model.allMedicationList,
decoration: TextFieldsUtils itemBuilder: (context, suggestion) => new Padding(child: AppText(suggestion.description + '/' + suggestion.genericName), padding: EdgeInsets.all(8.0)),
.textFieldSelectorDecoration( itemSorter: (a, b) => 1,
TranslationBase.of( itemFilter: (suggestion, input) =>
context) suggestion.genericName.toLowerCase().startsWith(input.toLowerCase()) ||
.searchMedicineNameHere, suggestion.description.toLowerCase().startsWith(input.toLowerCase()) ||
null, suggestion.keywords.toLowerCase().startsWith(input.toLowerCase()),
true,
suffixIcon:
Icons.search),
itemSubmitted: (item) =>
setState(() =>
_selectedMedication =
item),
key: key,
suggestions:
model.allMedicationList,
itemBuilder: (context,
suggestion) =>
new Padding(
child: AppText(suggestion
.description +
'/' +
suggestion
.genericName),
padding: EdgeInsets.all(
8.0)),
itemSorter: (a, b) => 1,
itemFilter: (suggestion,
input) =>
suggestion.genericName.toLowerCase().startsWith(
input.toLowerCase()) ||
suggestion.description
.toLowerCase()
.startsWith(input
.toLowerCase()) ||
suggestion.keywords
.toLowerCase()
.startsWith(input
.toLowerCase()),
),
)
: AppTextFieldCustom(
height:
Utils.getTextFieldHeight(),
hintText: _selectedMedication !=
null
? _selectedMedication
.description +
(' (${_selectedMedication.genericName} )')
: TranslationBase.of(context)
.searchMedicineNameHere,
minLines: 1,
maxLines: 1,
isTextFieldHasSuffix: true,
suffixIcon: IconButton(
icon: Icon(
Icons.search,
color: Colors.grey.shade600,
)),
enabled: false,
),
),
),
if (_selectedMedication != null)
Column(
children: [
SizedBox(
height: 3,
),
Container(
width: MediaQuery.of(context)
.size
.width *
0.7,
child: AppText(
_selectedMedication.description +
(' (${_selectedMedication.genericName} )'),
color: Color(0xFF575757),
fontSize: 10,
fontWeight: FontWeight.w700,
letterSpacing: -0.4,
), ),
)
: AppTextFieldCustom(
height: Utils.getTextFieldHeight(),
hintText: _selectedMedication != null
? _selectedMedication.description + (' (${_selectedMedication.genericName} )')
: TranslationBase.of(context).searchMedicineNameHere,
minLines: 1,
maxLines: 1,
isTextFieldHasSuffix: true,
suffixIcon: IconButton(
icon: Icon(
Icons.search,
color: Colors.grey.shade600,
)),
enabled: false,
), ),
], ),
),
if (_selectedMedication != null)
Column(
children: [
SizedBox(
height: 3,
), ),
SizedBox( Container(
height: 5, width: MediaQuery.of(context).size.width * 0.7,
), child: AppText(
AppTextFieldCustom( _selectedMedication.description + (' (${_selectedMedication.genericName} )'),
height: Utils.getTextFieldHeight(), color: Color(0xFF575757),
enabled: false, fontSize: 10,
onClick: model.medicationDoseTimeList != fontWeight: FontWeight.w700,
null letterSpacing: -0.4,
? () { ),
MasterKeyDailog dialog = ),
MasterKeyDailog( ],
list: ),
model.medicationDoseTimeList, SizedBox(
okText: height: 5,
TranslationBase.of(context) ),
.ok, AppTextFieldCustom(
selectedValue: height: Utils.getTextFieldHeight(),
_selectedMedicationDose, enabled: false,
okFunction: (selectedValue) { onClick: model.medicationDoseTimeList != null
setState(() { ? () {
_selectedMedicationDose = MasterKeyDailog dialog = MasterKeyDailog(
selectedValue; list: model.medicationDoseTimeList,
okText: TranslationBase.of(context).ok,
selectedValue: _selectedMedicationDose,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationDose = selectedValue;
doseController doseController.text = projectViewModel.isArabic ? _selectedMedicationDose.nameAr : _selectedMedicationDose.nameEn;
.text = projectViewModel });
.isArabic },
? _selectedMedicationDose );
.nameAr showDialog(
: _selectedMedicationDose barrierDismissible: false,
.nameEn; context: context,
}); builder: (BuildContext context) {
}, return dialog;
); },
showDialog( );
barrierDismissible: false, }
context: context, : null,
builder: (BuildContext context) { hintText: TranslationBase.of(context).doseTime,
return dialog; maxLines: 1,
}, minLines: 1,
); isTextFieldHasSuffix: true,
} controller: doseController,
: null, validationError: isFormSubmitted && _selectedMedicationDose == null ? TranslationBase.of(context).emptyMessage : null,
hintText: ),
TranslationBase.of(context).doseTime, SizedBox(
maxLines: 1, height: 5,
minLines: 1, ),
isTextFieldHasSuffix: true, AppTextFieldCustom(
controller: doseController, height: Utils.getTextFieldHeight(),
validationError: isFormSubmitted && enabled: false,
_selectedMedicationDose == null isTextFieldHasSuffix: true,
? TranslationBase.of(context) onClick: model.medicationStrengthList != null
.emptyMessage ? () {
: null, MasterKeyDailog dialog = MasterKeyDailog(
), list: model.medicationStrengthList,
SizedBox( okText: TranslationBase.of(context).ok,
height: 5, selectedValue: _selectedMedicationStrength,
), okFunction: (selectedValue) {
AppTextFieldCustom( setState(() {
height: Utils.getTextFieldHeight(), _selectedMedicationStrength = selectedValue;
enabled: false,
isTextFieldHasSuffix: true,
onClick: model.medicationStrengthList !=
null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list:
model.medicationStrengthList,
okText:
TranslationBase.of(context)
.ok,
selectedValue:
_selectedMedicationStrength,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationStrength =
selectedValue;
strengthController strengthController.text = projectViewModel.isArabic ? _selectedMedicationStrength.nameAr : _selectedMedicationStrength.nameEn;
.text = projectViewModel });
.isArabic },
? _selectedMedicationStrength );
.nameAr showDialog(
: _selectedMedicationStrength barrierDismissible: false,
.nameEn; context: context,
}); builder: (BuildContext context) {
}, return dialog;
); },
showDialog( );
barrierDismissible: false, }
context: context, : null,
builder: (BuildContext context) { hintText: TranslationBase.of(context).strength,
return dialog; maxLines: 1,
}, minLines: 1,
); controller: strengthController,
} validationError: isFormSubmitted && _selectedMedicationStrength == null ? TranslationBase.of(context).emptyMessage : null,
: null, ),
hintText: SizedBox(
TranslationBase.of(context).strength, height: 5,
maxLines: 1, ),
minLines: 1, SizedBox(
controller: strengthController, height: 5,
validationError: isFormSubmitted && ),
_selectedMedicationStrength == null AppTextFieldCustom(
? TranslationBase.of(context) height: Utils.getTextFieldHeight(),
.emptyMessage enabled: false,
: null, isTextFieldHasSuffix: true,
), onClick: model.medicationRouteList != null
SizedBox( ? () {
height: 5, MasterKeyDailog dialog = MasterKeyDailog(
), list: model.medicationRouteList,
SizedBox( selectedValue: _selectedMedicationRoute,
height: 5, okText: TranslationBase.of(context).ok,
), okFunction: (selectedValue) {
AppTextFieldCustom( setState(() {
height: Utils.getTextFieldHeight(), _selectedMedicationRoute = selectedValue;
enabled: false,
isTextFieldHasSuffix: true,
onClick: model.medicationRouteList != null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list: model.medicationRouteList,
selectedValue:
_selectedMedicationRoute,
okText:
TranslationBase.of(context)
.ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationRoute =
selectedValue;
routeController routeController.text = projectViewModel.isArabic ? _selectedMedicationRoute.nameAr : _selectedMedicationRoute.nameEn;
.text = projectViewModel });
.isArabic },
? _selectedMedicationRoute );
.nameAr showDialog(
: _selectedMedicationRoute barrierDismissible: false,
.nameEn; context: context,
}); builder: (BuildContext context) {
}, return dialog;
); },
showDialog( );
barrierDismissible: false, }
context: context, : null,
builder: (BuildContext context) { hintText: TranslationBase.of(context).route,
return dialog; maxLines: 1,
}, minLines: 1,
); controller: routeController,
} validationError: isFormSubmitted && _selectedMedicationRoute == null ? TranslationBase.of(context).emptyMessage : null,
: null, ),
hintText: TranslationBase.of(context).route, SizedBox(
maxLines: 1, height: 5,
minLines: 1, ),
controller: routeController, SizedBox(
validationError: isFormSubmitted && height: 5,
_selectedMedicationRoute == null ),
? TranslationBase.of(context) AppTextFieldCustom(
.emptyMessage height: Utils.getTextFieldHeight(),
: null, onClick: model.medicationFrequencyList != null
), ? () {
SizedBox( MasterKeyDailog dialog = MasterKeyDailog(
height: 5, list: model.medicationFrequencyList,
), okText: TranslationBase.of(context).ok,
SizedBox( selectedValue: _selectedMedicationFrequency,
height: 5, okFunction: (selectedValue) {
), setState(() {
AppTextFieldCustom( _selectedMedicationFrequency = selectedValue;
height: Utils.getTextFieldHeight(),
onClick: model.medicationFrequencyList !=
null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list:
model.medicationFrequencyList,
okText:
TranslationBase.of(context)
.ok,
selectedValue:
_selectedMedicationFrequency,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationFrequency =
selectedValue;
frequencyController frequencyController.text = projectViewModel.isArabic ? _selectedMedicationFrequency.nameAr : _selectedMedicationFrequency.nameEn;
.text = projectViewModel });
.isArabic },
? _selectedMedicationFrequency );
.nameAr showDialog(
: _selectedMedicationFrequency barrierDismissible: false,
.nameEn; context: context,
}); builder: (BuildContext context) {
}, return dialog;
); },
showDialog( );
barrierDismissible: false, }
context: context, : null,
builder: (BuildContext context) { hintText: TranslationBase.of(context).frequency,
return dialog; enabled: false,
}, maxLines: 1,
); minLines: 1,
} isTextFieldHasSuffix: true,
: null, controller: frequencyController,
hintText: validationError: isFormSubmitted && _selectedMedicationFrequency == null ? TranslationBase.of(context).emptyMessage : null,
TranslationBase.of(context).frequency, ),
enabled: false, SizedBox(
maxLines: 1, height: SizeConfig.heightMultiplier *
minLines: 1, (SizeConfig.isHeightVeryShort
isTextFieldHasSuffix: true, ? 20
controller: frequencyController, : SizeConfig.isHeightShort
validationError: isFormSubmitted && ? 15
_selectedMedicationFrequency == null : 10),
? TranslationBase.of(context)
.emptyMessage
: null,
),
SizedBox(
height: SizeConfig.heightMultiplier *
(SizeConfig.isHeightVeryShort
? 20
: SizeConfig.isHeightShort
? 15
: 10),
),
],
), ),
)), ],
), ),
]), )),
),
]),
), ),
), ),
bottomSheet: model.state != ViewState.Idle bottomSheet: model.state != ViewState.Idle
@ -435,8 +322,7 @@ class _AddMedicationState extends State<AddMedication> {
_selectedMedicationStrength != null && _selectedMedicationStrength != null &&
_selectedMedicationRoute != null && _selectedMedicationRoute != null &&
_selectedMedicationFrequency != null) { _selectedMedicationFrequency != null) {
widget.medicationController.text = widget widget.medicationController.text = widget.medicationController.text +
.medicationController.text +
'${_selectedMedication.description} (${TranslationBase.of(context).doseTime} ) ${doseController.text} (${TranslationBase.of(context).strength}) ${strengthController.text} (${TranslationBase.of(context).route}) ${routeController.text} (${TranslationBase.of(context).frequency}) ${frequencyController.text} \n \n'; '${_selectedMedication.description} (${TranslationBase.of(context).doseTime} ) ${doseController.text} (${TranslationBase.of(context).strength}) ${strengthController.text} (${TranslationBase.of(context).route}) ${routeController.text} (${TranslationBase.of(context).frequency}) ${frequencyController.text} \n \n';
Navigator.of(context).pop(); Navigator.of(context).pop();
} }

@ -39,7 +39,7 @@ class _MasterKeyDailogState extends State<MasterKeyDailog> {
Widget cancelButton = ElevatedButton( Widget cancelButton = ElevatedButton(
child: AppText( child: AppText(
TranslationBase.of(context).cancel, TranslationBase.of(context).cancel,
color: Colors.grey, color: Colors.white,
fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * (SizeConfig.isWidthLarge ? 3.5 : 5), fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * (SizeConfig.isWidthLarge ? 3.5 : 5),
), ),
onPressed: () { onPressed: () {
@ -48,7 +48,7 @@ class _MasterKeyDailogState extends State<MasterKeyDailog> {
Widget continueButton = ElevatedButton( Widget continueButton = ElevatedButton(
child: AppText( child: AppText(
this.widget.okText, this.widget.okText,
color: Colors.grey, color: Colors.white,
fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * (SizeConfig.isWidthLarge ? 3.5 : 5), fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * (SizeConfig.isWidthLarge ? 3.5 : 5),
), ),
onPressed: () { onPressed: () {

Loading…
Cancel
Save