merge-requests/487/head
Sultan Khan 5 years ago
commit 49a28c302a

@ -58,6 +58,7 @@ class InsuranceApprovalModel {
String approvalStatusDescption;
int unUsedCount;
String doctorImage;
String projectName;
//String companyName;
String expiryDate;
@ -91,7 +92,8 @@ class InsuranceApprovalModel {
this.rceiptOn,
this.apporvalDetails,
this.appointmentNo,
this.doctorImage});
this.doctorImage,
this.projectName});
//InsuranceApprovalDetails x = InsuranceApprovalDetails();
@ -115,6 +117,7 @@ class InsuranceApprovalModel {
deviceTypeID = json['DeviceTypeID'];
patientID = json['PatientID'];
tokenID = json['TokenID'];
projectName = json['ProjectName'];
patientTypeID = json['PatientTypeID'];
patientType = json['PatientType'];
eXuldAPPNO = json['EXuldAPPNO'];
@ -148,6 +151,7 @@ class InsuranceApprovalModel {
data['PatientID'] = this.patientID;
data['TokenID'] = this.tokenID;
data['DoctorImageURL'] = this.doctorImage;
data['ProjectName'] = this.projectName;
data['PatientTypeID'] = this.patientTypeID;
data['PatientType'] = this.patientType;

@ -23,8 +23,8 @@ class InsuranceViewModel extends BaseViewModel{
else
await _insuranceCardService.getInsuranceApproval(patient);
if (_insuranceCardService.hasError) {
error = _insuranceCardService.error;
setState(ViewState.ErrorLocal);
error = "No Insurance Approval Found";
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}

@ -244,12 +244,15 @@ class PrescriptionViewModel extends BaseViewModel {
}
}
getPrescriptions(PatiantInformtion patient) async {
getPrescriptions(PatiantInformtion patient, {String patientType}) async {
setState(ViewState.Busy);
await _prescriptionsService.getPrescriptions(patient);
if (_prescriptionsService.hasError) {
error = _prescriptionsService.error;
setState(ViewState.Error);
if(patientType=="7")
setState(ViewState.ErrorLocal);
else
setState(ViewState.Error);
} else {
_filterList();
await _getPrescriptionsOrders();

@ -55,14 +55,17 @@ class ProcedureViewModel extends BaseViewModel {
? _patientLabOrdersListClinic
: _patientLabOrdersListHospital;
Future getProcedure({int mrn}) async {
Future getProcedure({int mrn,String patientType}) async {
hasError = false;
//_insuranceCardService.clearInsuranceCard();
setState(ViewState.Busy);
await _procedureService.getProcedure(mrn: mrn);
if (_procedureService.hasError) {
error = _procedureService.error;
setState(ViewState.Error);
if(patientType=="7")
setState(ViewState.ErrorLocal);
else
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
@ -136,12 +139,15 @@ class ProcedureViewModel extends BaseViewModel {
//await getProcedure(mrn: mrn);
}
void getPatientRadOrders(PatiantInformtion patient) async {
void getPatientRadOrders(PatiantInformtion patient,{String patientType}) async {
setState(ViewState.Busy);
await _radiologyService.getPatientRadOrders(patient);
if (_radiologyService.hasError) {
error = _radiologyService.error;
setState(ViewState.Error);
if(patientType=="7")
setState(ViewState.ErrorLocal);
else
setState(ViewState.Error);
} else {
_radiologyService.finalRadiologyList.forEach((element) {
List<FinalRadiologyList> finalRadiologyListClinic =
@ -220,12 +226,15 @@ class ProcedureViewModel extends BaseViewModel {
return labResultLists;
}
void getLabs(PatiantInformtion patient) async {
void getLabs(PatiantInformtion patient,{bool isArrived}) async {
setState(ViewState.Busy);
await _labsService.getPatientLabOrdersList(patient);
if (_labsService.hasError) {
error = _labsService.error;
if(isArrived)
setState(ViewState.ErrorLocal);
else
setState(ViewState.Error);
} else {
_labsService.patientLabOrdersList.forEach((element) {
List<PatientLabOrdersList> patientLabOrdersClinic =

@ -2355,6 +2355,34 @@
"search": [
"verify-sms"
]
},
{
"uid": "efc8c6ed2dab146bc55ca80fdd9bc511",
"css": "124",
"code": 59555,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M315.2 3.2L315.2 3.2A45.2 45.2 0 0 1 322.4 3.2S326 3.2 328.4 3.2H328.4A42.4 42.4 0 0 1 336 3.2H336A26.4 26.4 0 0 1 342 3.2H342A37.6 37.6 0 0 1 346.8 6.8 40 40 0 0 1 353.6 11.6L353.6 11.6 600.8 278.8A40 40 0 0 1 604.4 335.2 40 40 0 0 1 547.6 335.2L370 142.8V920H1250A40 40 0 0 1 1250 1000H330A40 40 0 0 1 290 960V129.2L66.4 329.2A40 40 0 0 1 10 325.6 40 40 0 0 1 0 299.2 40 40 0 0 1 13.2 269.2L304.8 10.4A36.4 36.4 0 0 1 310 7.2 40 40 0 0 1 315.2 3.2Z",
"width": 1290
},
"search": [
"124"
]
},
{
"uid": "2251120e332d8914aca7fb2d3fbe00f2",
"css": "123",
"code": 59556,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M773 755.3S773 755.3 773 755.3A38.8 38.8 0 0 0 773 749.5 21.7 21.7 0 0 0 773 745.1V745.1A55.8 55.8 0 0 0 773 739.2H773A25.7 25.7 0 0 0 773 734.6V734.6S770.9 732.1 769.9 730.5A31 31 0 0 0 766.2 725.3H766.2L558.1 529.6A31 31 0 0 0 514.1 531.5 31 31 0 0 0 516 575.2L665.1 713.2H62V31A31 31 0 0 0 0 31V744.2A31 31 0 0 0 31 775.2H675.3L520.3 948.5A31 31 0 1 0 566.8 989.5L766.2 764.7S766.2 762.2 768.4 760.9A33.5 33.5 0 0 0 773 755.3Z",
"width": 775
},
"search": [
"123"
]
}
]
]
}

@ -9,6 +9,7 @@ import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
@ -26,6 +27,11 @@ class MedicalFileDetails extends StatefulWidget {
int encounterNumber;
int pp;
PatiantInformtion patient;
String clinicName;
String episode;
String doctorName;
String vistDate;
String doctorImage;
MedicalFileDetails(
{this.age,
@ -34,7 +40,12 @@ class MedicalFileDetails extends StatefulWidget {
this.gender,
this.encounterNumber,
this.pp,
this.patient});
this.patient,
this.doctorName,
this.vistDate,
this.clinicName,
this.episode,
this.doctorImage});
@override
_MedicalFileDetailsState createState() => _MedicalFileDetailsState(
@ -45,6 +56,11 @@ class MedicalFileDetails extends StatefulWidget {
encounterNumber: encounterNumber,
pp: pp,
patient: patient,
clinicName: clinicName,
doctorName: doctorName,
episode: episode,
vistDate: vistDate,
doctorImage: doctorImage,
);
}
@ -56,6 +72,11 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
String gender;
int pp;
PatiantInformtion patient;
String clinicName;
String episode;
String doctorName;
String vistDate;
String doctorImage;
_MedicalFileDetailsState(
{this.age,
@ -64,7 +85,12 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
this.gender,
this.encounterNumber,
this.pp,
this.patient});
this.patient,
this.doctorName,
this.vistDate,
this.clinicName,
this.episode,
this.doctorImage});
bool isPhysicalExam = true;
bool isProcedureExpand = true;
bool isHistoryExpand = true;
@ -78,8 +104,21 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
builder:
(BuildContext context, MedicalFileViewModel model, Widget child) =>
AppScaffold(
appBar: PatientProfileHeaderNewDesignAppBar(
patient, patient.patientType.toString(), patient.arrivedOn),
appBar: PatientProfileHeaderWhitAppointmentAppBar(
patient: patient,
patientType: patient.patientType.toString() ?? "0",
arrivalType: patient.arrivedOn.toString() ?? 0,
doctorName: doctorName,
profileUrl: doctorImage,
clinic: clinicName,
isPrescriptions: true,
isMedicalFile: true,
episode: episode,
vistDate:
'${DateUtils.getDayMonthYearDateFormatted(DateUtils.getDateTimeFromServerFormat(
vistDate,
), isArabic: projectViewModel.isArabic)}',
),
isShowAppBar: true,
appBarTitle: TranslationBase.of(context).medicalReport.toUpperCase(),
body: NetworkBaseView(
@ -105,160 +144,160 @@ class _MedicalFileDetailsState extends State<MedicalFileDetails> {
child: Container(
child: Column(
children: [
Container(
width: double.infinity,
margin: EdgeInsets.only(
top: 10, left: 10, right: 10),
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
border: Border.all(
color: Colors.grey[200], width: 0.5),
),
child: Column(
children: [
Row(
children: [
if (model.medicalFileList.length !=
0 &&
model
.medicalFileList[0]
.entityList[0]
.timelines[
encounterNumber]
.timeLineEvents[0]
.consulations
.length !=
0)
Expanded(
child: AppText(
model
.medicalFileList[0]
.entityList[0]
.timelines[
encounterNumber]
.timeLineEvents[0]
.consulations[0]
.doctorName
.toUpperCase(),
fontWeight: FontWeight.w700,
),
),
],
),
if (model.medicalFileList.length != 0)
Row(
children: [
AppText(
TranslationBase.of(context)
.clinic +
": ",
),
if (model.medicalFileList
.length !=
0 &&
model
.medicalFileList[0]
.entityList[0]
.timelines[
encounterNumber]
.timeLineEvents[0]
.consulations
.length !=
0)
AppText(
model
.medicalFileList[0]
.entityList[0]
.timelines[
encounterNumber]
.timeLineEvents[0]
.consulations[0]
.clinicName,
fontWeight: FontWeight.w700,
),
],
),
Row(
children: [
AppText(
TranslationBase.of(context)
.episode +
": ",
//fontWeight: FontWeight.w700,
),
if (model.medicalFileList.length !=
0 &&
model
.medicalFileList[0]
.entityList[0]
.timelines[
encounterNumber]
.timeLineEvents[0]
.consulations
.length !=
0)
AppText(
model
.medicalFileList[0]
.entityList[0]
.timelines[encounterNumber]
.timeLineEvents[0]
.consulations[0]
.episodeID
.toString(),
fontWeight: FontWeight.w700,
),
],
),
Row(
children: [
AppText(
TranslationBase.of(context)
.visitDate +
": ",
//fontWeight: FontWeight.w700,
),
if (model.medicalFileList.length !=
0 &&
model
.medicalFileList[0]
.entityList[0]
.timelines[
encounterNumber]
.timeLineEvents[0]
.consulations
.length !=
0)
AppText(
'${DateUtils.getDayMonthYearDateFormatted(DateUtils.getDateTimeFromServerFormat(
model
.medicalFileList[0]
.entityList[0]
.timelines[
encounterNumber]
.date,
), isArabic: projectViewModel.isArabic)}',
color: Colors.black,
fontWeight: FontWeight.w700,
fontSize: 14,
),
SizedBox(width: 35.0),
// AppText(
// 'Appt Date : ',
// fontWeight: FontWeight.w700,
// ),
// AppText(
// '23/12/2020',
// ),
],
),
],
),
),
// Container(
// width: double.infinity,
// margin: EdgeInsets.only(
// top: 10, left: 10, right: 10),
// padding: EdgeInsets.all(8.0),
// decoration: BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.all(
// Radius.circular(10.0),
// ),
// border: Border.all(
// color: Colors.grey[200], width: 0.5),
// ),
// child: Column(
// children: [
// Row(
// children: [
// if (model.medicalFileList.length !=
// 0 &&
// model
// .medicalFileList[0]
// .entityList[0]
// .timelines[
// encounterNumber]
// .timeLineEvents[0]
// .consulations
// .length !=
// 0)
// Expanded(
// child: AppText(
// model
// .medicalFileList[0]
// .entityList[0]
// .timelines[
// encounterNumber]
// .timeLineEvents[0]
// .consulations[0]
// .doctorName
// .toUpperCase(),
// fontWeight: FontWeight.w700,
// ),
// ),
// ],
// ),
// if (model.medicalFileList.length != 0)
// Row(
// children: [
// AppText(
// TranslationBase.of(context)
// .clinic +
// ": ",
// ),
// if (model.medicalFileList
// .length !=
// 0 &&
// model
// .medicalFileList[0]
// .entityList[0]
// .timelines[
// encounterNumber]
// .timeLineEvents[0]
// .consulations
// .length !=
// 0)
// AppText(
// model
// .medicalFileList[0]
// .entityList[0]
// .timelines[
// encounterNumber]
// .timeLineEvents[0]
// .consulations[0]
// .clinicName,
// fontWeight: FontWeight.w700,
// ),
// ],
// ),
// Row(
// children: [
// AppText(
// TranslationBase.of(context)
// .episode +
// ": ",
// //fontWeight: FontWeight.w700,
// ),
// if (model.medicalFileList.length !=
// 0 &&
// model
// .medicalFileList[0]
// .entityList[0]
// .timelines[
// encounterNumber]
// .timeLineEvents[0]
// .consulations
// .length !=
// 0)
// AppText(
// model
// .medicalFileList[0]
// .entityList[0]
// .timelines[encounterNumber]
// .timeLineEvents[0]
// .consulations[0]
// .episodeID
// .toString(),
// fontWeight: FontWeight.w700,
// ),
// ],
// ),
// Row(
// children: [
// AppText(
// TranslationBase.of(context)
// .visitDate +
// ": ",
// //fontWeight: FontWeight.w700,
// ),
// if (model.medicalFileList.length !=
// 0 &&
// model
// .medicalFileList[0]
// .entityList[0]
// .timelines[
// encounterNumber]
// .timeLineEvents[0]
// .consulations
// .length !=
// 0)
// AppText(
// '${DateUtils.getDayMonthYearDateFormatted(DateUtils.getDateTimeFromServerFormat(
// model
// .medicalFileList[0]
// .entityList[0]
// .timelines[
// encounterNumber]
// .date,
// ), isArabic: projectViewModel.isArabic)}',
// color: Colors.black,
// fontWeight: FontWeight.w700,
// fontSize: 14,
// ),
// SizedBox(width: 35.0),
// // AppText(
// // 'Appt Date : ',
// // fontWeight: FontWeight.w700,
// // ),
// // AppText(
// // '23/12/2020',
// // ),
// ],
// ),
// ],
// ),
// ),
SizedBox(height: 25.0),
if (model.medicalFileList.length != 0 &&

@ -110,6 +110,36 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
encounterNumber: index,
pp: patient.patientId,
patient: patient,
doctorName: model
.medicalFileList[0]
.entityList[0]
.timelines[index]
.doctorName,
clinicName: model
.medicalFileList[0]
.entityList[0]
.timelines[index]
.clinicName,
doctorImage: model
.medicalFileList[0]
.entityList[0]
.timelines[index]
.doctorImage,
episode: model
.medicalFileList[0]
.entityList[0]
.timelines[index]
.timeLineEvents[0]
.consulations[0]
.episodeID
.toString(),
vistDate: model
.medicalFileList[0]
.entityList[0]
.timelines[index]
.date
.toString()
.toString(),
)),
);
},

@ -54,628 +54,89 @@ class _InsuranceApprovalScreenNewState
appBarTitle: TranslationBase.of(context).approvals,
body: SingleChildScrollView(
child: Container(
margin: EdgeInsets.only(
left: SizeConfig.screenWidth * 0.004,
right: SizeConfig.screenWidth * 0.004,
top: SizeConfig.screenWidth * 0.04,
),
child: model.insuranceApproval.length != 0
? Column(
children: <Widget>[
// Container(
// width: double.infinity,
// height: SizeConfig.screenHeight * 0.09,
// color: Color(0xffEEEEEE),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceAround,
// children: <Widget>[
// Texts(
// TranslationBase.of(context).totalApproval,
// color: Color(0xff60688B),
// fontSize: 19.0,
// fontWeight: FontWeight.w600,
// ),
// if (model.insuranceApproval.length > 0)
// Container(
// width: 60,
// height: 40,
// decoration: BoxDecoration(
// color: Theme.of(context).primaryColor,
// borderRadius: BorderRadius.circular(19.0)),
// child: Center(
// child: Texts(
// model.insuranceApproval[0].unUsedCount
// .toString(),
// color: Colors.white,
// fontSize: 17.0,
// ),
// ))
// ],
// )),
Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Row(
children: [
AppText(
'Insurance',
fontSize: 15.0,
fontWeight: FontWeight.w600,
fontFamily: 'Poppins',
),
],
),
Row(
children: [
AppText(
'Approvals',
fontSize: 30.0,
fontWeight: FontWeight.w700,
),
],
),
],
),
margin: EdgeInsets.only(
left: SizeConfig.screenWidth * 0.004,
right: SizeConfig.screenWidth * 0.004,
top: SizeConfig.screenWidth * 0.04,
),
child: model.insuranceApproval.length != 0
? Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Row(
children: [
AppText(
'Insurance',
fontSize: 15.0,
fontWeight: FontWeight.w600,
fontFamily: 'Poppins',
),
],
),
Row(
children: [
AppText(
'Approvals',
fontSize: 30.0,
fontWeight: FontWeight.w700,
),
],
),
],
),
...List.generate(
model.insuranceApproval.length,
(index) => Container(
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
InsuranceApprovalsDetails(
patient: patient,
indexInsurance: index,
)),
);
},
child: DoctorCardInsurance(
patientOut: model.insuranceApproval[index]
.patientDescription,
profileUrl:
model.insuranceApproval[index].doctorImage,
clinic:
model.insuranceApproval[index].clinicName,
doctorName:
model.insuranceApproval[index].doctorName,
branch: model
.insuranceApproval[index].approvalNo
.toString(),
isPrescriptions: true,
approvalStatus: model.insuranceApproval[index]
.approvalStatusDescption ??
'',
),
),
...List.generate(
model.insuranceApproval.length,
(index) => Container(
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
InsuranceApprovalsDetails(
patient: patient,
indexInsurance: index,
)),
);
},
child: DoctorCardInsurance(
patientOut: model
.insuranceApproval[index].patientDescription,
profileUrl:
model.insuranceApproval[index].doctorImage,
clinic: model.insuranceApproval[index].clinicName,
doctorName:
model.insuranceApproval[index].doctorName,
branch: model.insuranceApproval[index].approvalNo
.toString(),
isPrescriptions: true,
approvalStatus: model.insuranceApproval[index]
.approvalStatusDescption ??
'',
branch2:
model.insuranceApproval[index].projectName,
),
),
// (index) => Container(
// width: double.maxFinite,
// height: MediaQuery.of(context).size.height * .20,
// margin: EdgeInsets.all(10),
// padding:
// EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5),
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(15),
// color: Colors.white,
// ),
// child: Padding(
// padding: const EdgeInsets.all(8.0),
// child: Container(
// child: Row(
// mainAxisAlignment: MainAxisAlignment.start,
// children: [
// Container(
// height: MediaQuery.of(context).size.height * .20,
// width: 5,
// decoration: BoxDecoration(
// borderRadius: BorderRadius.only(
// topLeft: Radius.circular(10),
// bottomLeft: Radius.circular(10),
// ),
// color: model.insuranceApproval[index]
// .approvalStatusDescption !=
// "Approved"
// ? Colors.red[500]
// : Colors.green,
// ),
// ),
// Expanded(
// child: Container(
// padding: EdgeInsets.only(
// left: projectViewModel.isArabic ? 0 : 15,
// right: projectViewModel.isArabic ? 15 : 0),
// child: InkWell(
// child: Column(
// crossAxisAlignment:
// CrossAxisAlignment.start,
// children: [
// Row(
// // mainAxisAlignment:
// // MainAxisAlignment.spaceBetween,
// children: [
// Column(
// crossAxisAlignment:
// CrossAxisAlignment.start,
// children: [
// Texts(
// model.insuranceApproval[index]
// .approvalDetails.status,
// color: model
// .insuranceApproval[
// index]
// .approvalStatusDescption ==
// "Approved"
// ? Colors.green
// : Colors.red[800],
// fontWeight: FontWeight.w600,
// ),
// SizedBox(
// height: 5,
// ),
// AppText(model
// .insuranceApproval[index]
// .doctorName),
// Container(
// child: LargeAvatar(
// url: model
// .insuranceApproval[index]
// .doctorImage,
// ),
// width: 55,
// height: 55,
// ),
// ],
// ),
// Column(
// crossAxisAlignment:
// CrossAxisAlignment.start,
// children: [
// Row(
// children: <Widget>[
// Texts(
// 'Clinic: ',
// color: Colors.grey[500],
// ),
// Texts(
// model
// .insuranceApproval[
// index]
// .clinicName,
// ),
// ],
// ),
// Row(
// children: <Widget>[
// Texts(
// 'Approval No',
// color: Colors.grey[500],
// ),
// Texts(
// model
// .insuranceApproval[
// index]
// .approvalNo
// .toString(),
// ),
// ],
// ),
// ],
// ),
// SizedBox(
// width: 5,
// ),
// ],
// ),
// Column(
// crossAxisAlignment:
// CrossAxisAlignment.start,
// children: [
// Row(
// children: <Widget>[
// Texts(
// 'Clinic: ',
// color: Colors.grey[500],
// ),
// Texts(
// model
// .insuranceApproval[
// index]
// .clinicName,
// ),
// ],
// ),
// Row(
// children: <Widget>[
// Texts(
// 'Approval No',
// color: Colors.grey[500],
// ),
// Texts(
// model
// .insuranceApproval[
// index]
// .approvalNo
// .toString(),
// ),
// ],
// ),
// ],
// ),
// Row(
// mainAxisAlignment:
// MainAxisAlignment.end,
// children: [
// Icon(Icons.remove_red_eye_outlined)
// ],
// )
// ],
// ),
// ),
// ),
// ),
// ],
// ),
// ),
// ),
// ),
// RoundedContainer(
// backgroundColor: Colors.white,
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: <Widget>[
// ExpansionTile(
// title: Container(
// //height: 120.0,
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: <Widget>[
// model.insuranceApproval[index]
// .patientDescription ==
// "In Patient"
// ? Container(
// decoration: BoxDecoration(
// color:
// Theme.of(context).primaryColor,
// borderRadius:
// BorderRadius.circular(16.0)),
// width: 115.0,
// padding: EdgeInsets.only(left: 11.5),
// child: Center(
// child: Texts(
// TranslationBase.of(context)
// .inPatient,
// color: Colors.white,
// ),
// ),
// )
// : Container(
// decoration: BoxDecoration(
// color: Color(0xff505A5D),
// borderRadius:
// BorderRadius.circular(16.0)),
// width: 115.0,
// padding: EdgeInsets.only(left: 11.5),
// child: Center(
// child: Texts(
// TranslationBase.of(context)
// .outpatient,
// color: Colors.white,
// ),
// ),
// ),
// Padding(
// padding: EdgeInsets.symmetric(vertical: 10.0),
// child: Texts(
// model.insuranceApproval[index].clinicName,
// fontSize: 20.0,
// color: Color(0xff60686B),
// fontWeight: FontWeight.w600,
// ),
// ),
// Texts(
// model.insuranceApproval[index].doctorName,
// fontSize: 17.0,
// ),
// ],
// ),
// ),
// children: <Widget>[
// Padding(
// padding: EdgeInsets.symmetric(
// vertical: 12.0, horizontal: 12.0),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: <Widget>[
// Row(
// children: [
// Texts(
// TranslationBase.of(context).approvalNo,
// fontSize: 18.0,
// ),
// Texts(
// model
// .insuranceApproval[index].approvalNo
// .toString(),
// fontSize: 18.0,
// fontWeight: FontWeight.w600,
// ),
// ],
// ),
// Divider(
// color: Colors.black,
// height: 25.0,
// thickness: 1.0,
// ),
// Row(
// children: [
// Texts(
// TranslationBase.of(context)
// .procedureStatus,
// fontSize: 17.5,
// ),
// SizedBox(
// width: 12,
// ),
// Expanded(
// child: Texts(
// model.insuranceApproval[index]
// .approvalStatusDescption,
// fontWeight: FontWeight.w600,
// fontSize: 17.5,
// ),
// ),
// ],
// ),
// Divider(
// color: Colors.black,
// height: 25.0,
// thickness: 1.0,
// ),
// Row(
// children: [
// Texts(
// TranslationBase.of(context).unusedCount,
// fontSize: 17.5,
// ),
// Texts(
// model.insuranceApproval[index]
// .unUsedCount
// .toString(),
// fontSize: 17.5,
// fontWeight: FontWeight.w600,
// ),
// ],
// ),
// Divider(
// color: Colors.black,
// height: 25.0,
// thickness: 1.0,
// ),
// // Text(
// // 'Company Name: ' +
// // model.insuranceApproval[index]
// // .companyName ==
// // null
// // ? '000'
// // : model
// // .insuranceApproval[index].companyName,
// // style: TextStyle(
// // fontSize: 17.5,
// // fontWeight: FontWeight.w600),
// // ),
// Texts(
// TranslationBase.of(context).companyName,
// fontWeight: FontWeight.w600,
// fontSize: 17.5,
// ),
//
// Divider(
// color: Colors.black,
// height: 25.0,
// thickness: 1.0,
// ),
// Row(
// children: [
// Texts(
// TranslationBase.of(context).receiptOn,
// fontSize: 17.5,
// fontWeight: FontWeight.w600,
// ),
// Texts(
// DateUtils.getDateTimeFromServerFormat(
// model.insuranceApproval[index]
// .rceiptOn)
// .toString(),
// fontSize: 17.5,
// fontWeight: FontWeight.w600,
// ),
// ],
// ),
// Divider(
// color: Colors.black,
// height: 25.0,
// thickness: 1.0,
// ),
// Row(
// children: [
// Texts(
// TranslationBase.of(context).expiryDate,
// fontSize: 17.5,
// fontWeight: FontWeight.w600,
// ),
// Texts(
// DateUtils.getDateTimeFromServerFormat(
// model.insuranceApproval[index]
// .expiryDate)
// .toString(),
// fontSize: 17.5,
// fontWeight: FontWeight.w600,
// ),
// ],
// ),
// Divider(
// color: Colors.black,
// height: 55.0,
// thickness: 1.2,
// ),
// IntrinsicHeight(
// child: Row(
// crossAxisAlignment:
// CrossAxisAlignment.center,
// children: <Widget>[
// Expanded(
// flex: 1,
// child: Column(
// children: <Widget>[
// Text(TranslationBase.of(context)
// .procedureName),
// Padding(
// padding: EdgeInsets.only(
// top: SizeConfig
// .heightMultiplier *
// 3.0),
// child: Text(
// model.insuranceApproval[index]
// .approvalDetails ==
// null
// ? ''
// : model
// .insuranceApproval[
// index]
// .approvalDetails
// .procedureName,
// style: TextStyle(
// fontWeight:
// FontWeight.w600,
// fontSize: 15.5),
// ),
// ),
// ],
// ),
// ),
// VerticalDivider(
// width: 10.0,
// thickness: 1.2,
// color: Colors.black,
// ),
// Expanded(
// flex: 1,
// child: Column(
// children: <Widget>[
// Text(TranslationBase.of(context)
// .procedureStatus),
// Padding(
// padding: EdgeInsets.only(
// top: SizeConfig
// .heightMultiplier *
// 3.0),
// child: Text(
// model.insuranceApproval[index]
// .approvalDetails ==
// null
// ? ''
// : model
// .insuranceApproval[
// index]
// .approvalDetails
// .status,
// style: TextStyle(
// fontSize: 17.5,
// fontWeight:
// FontWeight.w600),
// ),
// ),
// ],
// ),
// ),
// VerticalDivider(
// width: 2.3,
// thickness: 1.2,
// color: Colors.black,
// ),
// Expanded(
// flex: 1,
// child: Column(
// children: <Widget>[
// Text(TranslationBase.of(context)
// .usageStatus),
// Padding(
// padding: EdgeInsets.only(
// top: SizeConfig
// .heightMultiplier *
// 3.0),
// child: Text(
// model.insuranceApproval[index]
// .approvalDetails ==
// null
// ? ''
// : model
// .insuranceApproval[
// index]
// .approvalDetails
// .isInvoicedDesc,
// style: TextStyle(
// fontWeight:
// FontWeight.w600,
// fontSize: 17.5),
// ),
// ),
// ],
// ),
// ),
// ],
// ),
// ),
// Divider(
// color: Colors.black,
// height: 25.0,
// thickness: 1.0,
// ),
// ],
// ),
// ),
// ],
// ),
// ],
// ),
// ),
),
],
)
: Column(
children: [
Container(
height: 200,
width: double.infinity,
child: Center(
child: Text("No Insurance Approvals Found")))
],
)),
),
],
)
: Column(
children: [
Container(
height: 200,
width: double.infinity,
child: Center(
child: Text("No Insurance Approvals Found")))
],
),
),
),
),
);
}
convertDateFormat(String Date) {
const start = "/Date(";
const end = "+0300)";
final startIndex = Date.indexOf(start);
final endIndex = Date.indexOf(end, startIndex + start.length);
var date = new DateTime.fromMillisecondsSinceEpoch(
int.parse(Date.substring(startIndex + start.length, endIndex)));
String newDate = date.year.toString() +
"-" +
date.month.toString().padLeft(2, '0') +
"-" +
date.day.toString().padLeft(2, '0');
return newDate.toString();
}
}

@ -44,6 +44,12 @@ class _AdmissionRequestThirdScreenState
bool _isSickLeaveRequired = false;
bool _patientPregnant = false;
String clinicError;
String doctorError;
String sickLeaveCommentError;
String medicalHistoryError;
String surgicalHistoryError;
@override
Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
@ -117,6 +123,7 @@ class _AdmissionRequestThirdScreenState
height: screenSize.height * 0.075,
hintText: TranslationBase.of(context).clinic,
isDropDown: true,
validationError: clinicError,
dropDownText: _selectedClinic != null
? projectViewModel.isArabic? _selectedClinic['clinicNameArabic'] : _selectedClinic['clinicNameEnglish']
: null,
@ -170,6 +177,7 @@ class _AdmissionRequestThirdScreenState
? _selectedDoctor['DoctorName']
: null,
enabled: false,
validationError: doctorError,
onClick: _selectedClinic != null
? model.doctorsList != null &&
model.doctorsList.length > 0
@ -263,6 +271,7 @@ class _AdmissionRequestThirdScreenState
controller: _sickLeaveCommentsController,
minLines: 2,
maxLines: 4,
validationError: sickLeaveCommentError,
inputType: TextInputType.multiline,
),
SizedBox(
@ -331,6 +340,7 @@ class _AdmissionRequestThirdScreenState
controller: _postMedicalHistoryController,
minLines: 4,
maxLines: 6,
validationError: medicalHistoryError,
inputType: TextInputType.multiline,
),
SizedBox(
@ -341,6 +351,7 @@ class _AdmissionRequestThirdScreenState
controller: _postSurgicalHistoryController,
minLines: 2,
maxLines: 4,
validationError: surgicalHistoryError,
inputType: TextInputType.multiline,
),
],
@ -401,6 +412,34 @@ class _AdmissionRequestThirdScreenState
} else {
DrAppToastMsg.showErrorToast(
TranslationBase.of(context).pleaseFill);
setState(() {
if(_selectedClinic == null){
clinicError = TranslationBase.of(context).fieldRequired;
}else {
clinicError = null;
}
if(_selectedDoctor == null){
doctorError = TranslationBase.of(context).fieldRequired;
}else {
doctorError = null;
}
if(_sickLeaveCommentsController.text == ""){
sickLeaveCommentError = TranslationBase.of(context).fieldRequired;
}else {
sickLeaveCommentError = null;
}
if(_postMedicalHistoryController.text == ""){
medicalHistoryError = TranslationBase.of(context).fieldRequired;
}else {
medicalHistoryError = null;
}
if(_postSurgicalHistoryController.text == ""){
surgicalHistoryError = TranslationBase.of(context).fieldRequired;
}else {
surgicalHistoryError = null;
}
});
}
},
),

@ -38,6 +38,10 @@ class _AdmissionRequestThirdScreenState
dynamic _selectedIcd;
dynamic _selectedDiagnosisType;
String diagnosisError;
String icdError;
String diagnosisTypeError;
@override
Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
@ -112,6 +116,7 @@ class _AdmissionRequestThirdScreenState
: null,
enabled: false,
isDropDown: true,
validationError: diagnosisError,
onClick: model.diagnosisTypesList != null &&
model.diagnosisTypesList.length > 0
? () {
@ -157,6 +162,7 @@ class _AdmissionRequestThirdScreenState
: null,
enabled: false,
isDropDown: true,
validationError: icdError,
onClick: model.icdCodes != null &&
model.icdCodes.length > 0
? () {
@ -204,6 +210,7 @@ class _AdmissionRequestThirdScreenState
: null,
enabled: false,
isDropDown: true,
validationError: diagnosisTypeError,
onClick: model.listOfDiagnosisSelectionTypes !=
null &&
model.listOfDiagnosisSelectionTypes.length >
@ -312,6 +319,26 @@ class _AdmissionRequestThirdScreenState
} else {
DrAppToastMsg.showErrorToast(
TranslationBase.of(context).pleaseFill);
setState(() {
if(_selectedDiagnosis == null){
diagnosisError = TranslationBase.of(context).fieldRequired;
}else {
diagnosisError = null;
}
if(_selectedIcd == null){
icdError = TranslationBase.of(context).fieldRequired;
}else {
icdError = null;
}
if(_selectedDiagnosisType == null){
diagnosisTypeError = TranslationBase.of(context).fieldRequired;
}else {
diagnosisTypeError = null;
}
});
}
},
),

@ -50,6 +50,18 @@ class _AdmissionRequestSecondScreenState
dynamic _selectedRoomCategory;
dynamic _selectedAdmissionType;
String costError;
String plansError;
String otherInterventionsError;
String expectedDaysError;
String expectedDatesError;
String floorError;
String roomError;
String treatmentsError;
String complicationsError;
String proceduresError;
String admissionTypeError;
@override
Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
@ -125,6 +137,7 @@ class _AdmissionRequestSecondScreenState
hintText:
TranslationBase.of(context).estimatedCost,
controller: _estimatedCostController,
validationError: costError,
inputType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.allow(
@ -138,6 +151,7 @@ class _AdmissionRequestSecondScreenState
hintText: TranslationBase.of(context).postPlans,
controller: _postPlansEstimatedCostController,
inputType: TextInputType.multiline,
validationError: plansError,
minLines: 4,
maxLines: 6,
),
@ -150,6 +164,7 @@ class _AdmissionRequestSecondScreenState
controller:
_otherDepartmentsInterventionsController,
inputType: TextInputType.multiline,
validationError: otherInterventionsError,
minLines: 2,
maxLines: 4,
),
@ -170,6 +185,7 @@ class _AdmissionRequestSecondScreenState
hintText:
TranslationBase.of(context).expectedDays,
controller: _expectedDaysController,
validationError: expectedDaysError,
inputType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.allow(
@ -188,6 +204,7 @@ class _AdmissionRequestSecondScreenState
: null,
enabled: false,
isDropDown: true,
validationError: expectedDatesError,
suffixIcon: Icon(
Icons.calendar_today,
color: Colors.black,
@ -215,6 +232,7 @@ class _AdmissionRequestSecondScreenState
: null,
enabled: false,
isDropDown: true,
validationError: floorError,
onClick: model.floorList != null &&
model.floorList.length > 0
? () {
@ -314,6 +332,7 @@ class _AdmissionRequestSecondScreenState
: null,
enabled: false,
isDropDown: true,
validationError: roomError,
onClick: model.roomCategoryList != null &&
model.roomCategoryList.length > 0
? () {
@ -365,6 +384,7 @@ class _AdmissionRequestSecondScreenState
TranslationBase.of(context).treatmentLine,
controller: _treatmentLineController,
inputType: TextInputType.multiline,
validationError: treatmentsError,
minLines: 3,
maxLines: 5,
),
@ -376,6 +396,7 @@ class _AdmissionRequestSecondScreenState
TranslationBase.of(context).complications,
controller: _complicationsController,
inputType: TextInputType.multiline,
validationError: complicationsError,
minLines: 3,
maxLines: 5,
),
@ -387,6 +408,7 @@ class _AdmissionRequestSecondScreenState
TranslationBase.of(context).otherProcedure,
controller: _otherProceduresController,
inputType: TextInputType.multiline,
validationError: proceduresError,
minLines: 3,
maxLines: 5,
),
@ -402,6 +424,7 @@ class _AdmissionRequestSecondScreenState
: null,
enabled: false,
isDropDown: true,
validationError: admissionTypeError,
onClick: model.admissionTypeList != null &&
model.admissionTypeList.length > 0
? () {
@ -533,6 +556,75 @@ class _AdmissionRequestSecondScreenState
} else {
DrAppToastMsg.showErrorToast(
TranslationBase.of(context).pleaseFill);
setState(() {
if (_estimatedCostController.text == "") {
costError = TranslationBase.of(context).fieldRequired;
} else {
costError = null;
}
if (_postPlansEstimatedCostController.text == "") {
plansError = TranslationBase.of(context).fieldRequired;
} else {
plansError = null;
}
if (_expectedDaysController.text == "") {
expectedDaysError = TranslationBase.of(context).fieldRequired;
} else {
expectedDaysError = null;
}
if (_expectedAdmissionDate == null) {
expectedDatesError = TranslationBase.of(context).fieldRequired;
} else {
expectedDatesError = null;
}
if (_otherDepartmentsInterventionsController.text == "") {
otherInterventionsError = TranslationBase.of(context).fieldRequired;
} else {
otherInterventionsError = null;
}
if (_selectedFloor == null) {
floorError = TranslationBase.of(context).fieldRequired;
} else {
floorError = null;
}
if (_selectedRoomCategory == null) {
roomError = TranslationBase.of(context).fieldRequired;
} else {
roomError = null;
}
if (_treatmentLineController.text == "") {
treatmentsError = TranslationBase.of(context).fieldRequired;
} else {
treatmentsError = null;
}
if (_complicationsController.text == "") {
complicationsError = TranslationBase.of(context).fieldRequired;
} else {
complicationsError = null;
}
if (_otherProceduresController.text == "") {
proceduresError = TranslationBase.of(context).fieldRequired;
} else {
proceduresError = null;
}
if (_selectedAdmissionType == null) {
admissionTypeError = TranslationBase.of(context).fieldRequired;
} else {
admissionTypeError = null;
}
});
}
},
),

@ -32,9 +32,10 @@ class LabsHomePage extends StatelessWidget {
arrivalType = routeArgs['arrivalType'];
print(arrivalType);
return BaseView<ProcedureViewModel>(
onModelReady: (model) => model.getLabs(patient),
onModelReady: (model) => model.getLabs(patient,isArrived: (patientType != null && patientType == '7' && patient.patientStatusType == 43)),
builder: (context, ProcedureViewModel model, widget) => AppScaffold(
baseViewModel: model,
backgroundColor: Colors.grey[100],
isShowAppBar: true,
appBar: PatientProfileHeaderNewDesignAppBar(
patient, patient.patientType.toString() ?? '0', patientType),
@ -48,6 +49,7 @@ class LabsHomePage extends StatelessWidget {
SizedBox(
height: 12,
),
if(model.patientLabOrdersList.isNotEmpty && patient.patientStatusType != 43)
Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
@ -67,9 +69,27 @@ class LabsHomePage extends StatelessWidget {
],
),
),
if (patientType != null &&
patientType == '7' &&
patient.patientStatusType == 43)
if(patient.patientStatusType == 43)
Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Texts(
'Lab',
style: "caption2",
color: Colors.black,
fontSize: 13,
),
Texts(
'Result',
bold: true,
fontSize: 22,
),
],
),
),
if (patientType != null && patientType == '7' && patient.patientStatusType == 43)
InkWell(
onTap: () {
Navigator.push(
@ -156,7 +176,22 @@ class LabsHomePage extends StatelessWidget {
);
}).toList(),
),
)
),
if(model.patientLabOrdersList.isEmpty && patient.patientStatusType != 43)
Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(height: 100,),
Image.asset('assets/images/no-data.png'),
Padding(
padding: const EdgeInsets.all(8.0),
child: Texts('No Lab Result Found'),
)
],
),
)
],
),
),

@ -29,9 +29,10 @@ class RadiologyHomePage extends StatelessWidget {
String arrivalType = routeArgs['arrivalType'];
return BaseView<ProcedureViewModel>(
onModelReady: (model) => model.getPatientRadOrders(patient),
onModelReady: (model) => model.getPatientRadOrders(patient,patientType: patientType),
builder: (_, model, widget) => AppScaffold(
isShowAppBar: true,
backgroundColor: Colors.grey[100],
// appBarTitle: TranslationBase.of(context).radiology,
appBar: PatientProfileHeaderNewDesignAppBar(
patient, patient.patientType.toString() ?? '0', arrivalType),
@ -44,7 +45,8 @@ class RadiologyHomePage extends StatelessWidget {
SizedBox(
height: 12,
),
Padding(
if(model.radiologyList.isNotEmpty && patient.patientStatusType != 43)
Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -63,6 +65,26 @@ class RadiologyHomePage extends StatelessWidget {
],
),
),
if(patient.patientStatusType == 43)
Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Texts(
'Radiology',
style: "caption2",
color: Colors.black,
fontSize: 13,
),
Texts(
'Result',
bold: true,
fontSize: 22,
),
],
),
),
if (patientType != null &&
patientType == '7' &&
patient.patientStatusType == 43)
@ -142,6 +164,21 @@ class RadiologyHomePage extends StatelessWidget {
appointmentDate: model.radiologyList[index].orderDate,
),
)),
if(model.radiologyList.isEmpty && patient.patientStatusType != 43)
Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(height: 100,),
Image.asset('assets/images/no-data.png'),
Padding(
padding: const EdgeInsets.all(8.0),
child: Texts('No Radiology Found'),
)
],
),
)
],
),
),

@ -49,7 +49,7 @@ postProcedure(
DateTime doseTime,
String doseUnit,
String icdCode,
PatiantInformtion patient}) async {
PatiantInformtion patient,String patientType}) async {
PostPrescriptionReqModel postProcedureReqModel =
new PostPrescriptionReqModel();
List<PrescriptionRequestModel> sss = List();
@ -236,8 +236,15 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
children: [
Column(
children: [
SizedBox(height: 15,),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
AppText(
'New Prescription Order',
fontWeight: FontWeight.w700,
fontSize: 20,
),
InkWell(
child: Icon(
Icons.close,
@ -246,16 +253,7 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
onTap: () {
Navigator.pop(context);
},
),
],
),
Row(
children: [
AppText(
'New Prescription Order',
fontWeight: FontWeight.w700,
fontSize: 20,
),
)
],
),
],

@ -28,10 +28,11 @@ class PrescriptionsPage extends StatelessWidget {
String arrivalType = routeArgs['arrivalType'];
ProjectViewModel projectViewModel = Provider.of(context);
return BaseView<PrescriptionViewModel>(
onModelReady: (model) => model.getPrescriptions(patient),
onModelReady: (model) => model.getPrescriptions(patient,patientType:patientType),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
isShowAppBar: true,
backgroundColor: Colors.grey[100],
appBar: PatientProfileHeaderNewDesignAppBar(
patient, patientType ?? '0', arrivalType),
body: FractionallySizedBox(
@ -42,7 +43,8 @@ class PrescriptionsPage extends StatelessWidget {
SizedBox(
height: 12,
),
Padding(
if(model.prescriptionsList.isNotEmpty && patient.patientStatusType != 43)
Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -61,6 +63,26 @@ class PrescriptionsPage extends StatelessWidget {
],
),
),
if(patient.patientStatusType == 43)
Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Texts(
'Order',
style: "caption2",
color: Colors.black,
fontSize: 13,
),
Texts(
'Prescriptions',
bold: true,
fontSize: 22,
),
],
),
),
if (patientType != null &&
patientType == '7' &&
patient.patientStatusType == 43)
@ -138,7 +160,22 @@ class PrescriptionsPage extends StatelessWidget {
DateUtils.getDateTimeFromServerFormat(
model.prescriptionsList[index].appointmentDate,
),
)))
))),
if(model.prescriptionsList.isEmpty && patient.patientStatusType != 43)
Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(height: 100,),
Image.asset('assets/images/no-data.png'),
Padding(
padding: const EdgeInsets.all(8.0),
child: Texts('No Lab Result Found'),
)
],
),
)
],
),
),

@ -148,27 +148,27 @@ class ProcedureCard extends StatelessWidget {
color: Colors.grey,
),
Texts(
entityList.clinicDescription??"",
entityList.clinicDescription ?? "",
bold: true,
fontSize: 12,
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Texts(
entityList.remarks.toString() ?? '',
fontSize: 12,
),
if (entityList.categoryID == 2 ||
entityList.categoryID == 4)
InkWell(
child: Icon(DoctorApp.edit),
onTap: onTap,
)
],
)
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Texts(
// entityList.remarks.toString() ?? '',
// fontSize: 12,
// ),
// if (entityList.categoryID == 2 ||
// entityList.categoryID == 4)
// InkWell(
// child: Icon(DoctorApp.edit),
// onTap: onTap,
// )
// ],
// )
],
),
//onTap: onTap,

@ -155,7 +155,7 @@ class _AddSelectedLabOrderState extends State<AddSelectedLabOrder> {
(BuildContext context, ScrollController scrollController) {
return SingleChildScrollView(
child: Container(
height: MediaQuery.of(context).size.height * 1.0,
height: MediaQuery.of(context).size.height * .90,
child: Padding(
padding: EdgeInsets.all(12.0),
child: Column(
@ -209,85 +209,39 @@ class _AddSelectedLabOrderState extends State<AddSelectedLabOrder> {
isEntityListSelected: (master) =>
isEntityListSelected(master),
)),
SizedBox(
height: 15.0,
),
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
// Container(
// child: Row(
// children: [
// AppText(
// TranslationBase.of(context).orderType),
// Radio(
// activeColor: Color(0xFFB9382C),
// value: 1,
// groupValue: selectedType,
// onChanged: (value) {
// setSelectedType(value);
// },
// ),
// Text('routine'),
// Radio(
// activeColor: Color(0xFFB9382C),
// groupValue: selectedType,
// value: 0,
// onChanged: (value) {
// setSelectedType(value);
// },
// ),
// Text(TranslationBase.of(context).urgent),
// ],
// ),
// ),
// SizedBox(
// height: 15.0,
// ),
// TextFields(
// hintText: TranslationBase.of(context).remarks,
// controller: remarksController,
// minLines: 3,
// maxLines: 5,
// ),
SizedBox(
height: 100.0,
),
Container(
margin: EdgeInsets.all(
SizeConfig.widthMultiplier * 5),
child: Wrap(
alignment: WrapAlignment.center,
children: <Widget>[
AppButton(
title:
"Add Lab Order", //TranslationBase.of(context)
fontWeight: FontWeight.w700,
//.addSelectedProcedures,
color: Color(0xff359846),
onPressed: () {
//print(entityList.toString());
onPressed:
if (entityList.isEmpty == true) {
DrAppToastMsg.showErrorToast(
"Fill the mandatory procedure details");
return;
}
Container(
margin: EdgeInsets.all(
SizeConfig.widthMultiplier * 5),
child: Wrap(
alignment: WrapAlignment.center,
children: <Widget>[
AppButton(
title:
"Add Lab Order", //TranslationBase.of(context)
fontWeight: FontWeight.w700,
//.addSelectedProcedures,
color: Color(0xff359846),
onPressed: () {
//print(entityList.toString());
onPressed:
if (entityList.isEmpty == true) {
DrAppToastMsg.showErrorToast(
"Fill the mandatory procedure details");
return;
}
Navigator.pop(context);
postProcedure(
orderType: selectedType.toString(),
entityList: entityList,
patient: patient,
model: widget.model,
remarks: remarksController.text);
},
),
],
Navigator.pop(context);
postProcedure(
orderType: selectedType.toString(),
entityList: entityList,
patient: patient,
model: widget.model,
remarks: remarksController.text);
},
),
),
],
)
],
),
),
],
),
),

@ -162,15 +162,14 @@ class _AddSelectedRadiologyOrderState extends State<AddSelectedRadiologyOrder> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
AppText(
'New Radiology Order',
fontWeight: FontWeight.w700,
fontSize: 20,
),
SizedBox(
width: MediaQuery.of(context).size.width * 0.48,
),
InkWell(
child: Icon(
Icons.close,
@ -209,82 +208,36 @@ class _AddSelectedRadiologyOrderState extends State<AddSelectedRadiologyOrder> {
isEntityListSelected: (master) =>
isEntityListSelected(master),
)),
SizedBox(
height: 15.0,
),
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
// Container(
// child: Row(
// children: [
// AppText(
// TranslationBase.of(context).orderType),
// Radio(
// activeColor: Color(0xFFB9382C),
// value: 1,
// groupValue: selectedType,
// onChanged: (value) {
// setSelectedType(value);
// },
// ),
// Text('routine'),
// Radio(
// activeColor: Color(0xFFB9382C),
// groupValue: selectedType,
// value: 0,
// onChanged: (value) {
// setSelectedType(value);
// },
// ),
// Text(TranslationBase.of(context).urgent),
// ],
// ),
// ),
// SizedBox(
// height: 15.0,
// ),
// TextFields(
// hintText: TranslationBase.of(context).remarks,
// controller: remarksController,
// minLines: 3,
// maxLines: 5,
// ),
SizedBox(
height: 100.0,
),
Container(
margin: EdgeInsets.all(
SizeConfig.widthMultiplier * 5),
child: Wrap(
alignment: WrapAlignment.center,
children: <Widget>[
AppButton(
title: 'Add Radiology Order',
color: Color(0xff359846),
fontWeight: FontWeight.w700,
onPressed: () {
//print(entityList.toString());
onPressed:
if (entityList.isEmpty == true) {
DrAppToastMsg.showErrorToast(
"Fill the mandatory procedure details");
return;
}
Container(
margin: EdgeInsets.all(
SizeConfig.widthMultiplier * 5),
child: Wrap(
alignment: WrapAlignment.center,
children: <Widget>[
AppButton(
title: 'Add Radiology Order',
color: Color(0xff359846),
fontWeight: FontWeight.w700,
onPressed: () {
//print(entityList.toString());
onPressed:
if (entityList.isEmpty == true) {
DrAppToastMsg.showErrorToast(
"Fill the mandatory procedure details");
return;
}
Navigator.pop(context);
postProcedure(
orderType: selectedType.toString(),
entityList: entityList,
patient: patient,
model: widget.model,
remarks: remarksController.text);
},
),
],
Navigator.pop(context);
postProcedure(
orderType: selectedType.toString(),
entityList: entityList,
patient: patient,
model: widget.model,
remarks: remarksController.text);
},
),
),
],
],
),
)
],
),

@ -69,7 +69,7 @@ class _EntityListCheckboxSearchWidgetState
NetworkBaseView(
baseViewModel: widget.model,
child: Container(
height: MediaQuery.of(context).size.height * 0.55,
height: MediaQuery.of(context).size.height * 0.65,
child: Center(
child: Container(
margin: EdgeInsets.only(top: 15),

@ -25,10 +25,11 @@ class ProcedureScreen extends StatelessWidget {
String patientType = routeArgs['patientType'];
String arrivalType = routeArgs['arrivalType'];
return BaseView<ProcedureViewModel>(
onModelReady: (model) => model.getProcedure(mrn: patient.patientId),
onModelReady: (model) => model.getProcedure(mrn: patient.patientId,patientType: patientType),
builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold(
isShowAppBar: true,
backgroundColor: Colors.grey[100],
baseViewModel: model,
appBar: PatientProfileHeaderNewDesignAppBar(
patient, arrivalType ?? '0', patientType),
@ -40,7 +41,8 @@ class ProcedureScreen extends StatelessWidget {
SizedBox(
height: 12,
),
Padding(
if(model.procedureList.length==0 && patient.patientStatusType != 43)
Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -59,6 +61,26 @@ class ProcedureScreen extends StatelessWidget {
],
),
),
if( patient.patientStatusType == 43)
Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Texts(
'Order Test or',
style: "caption2",
color: Colors.black,
fontSize: 13,
),
Texts(
'Procedure',
bold: true,
fontSize: 22,
),
],
),
),
if (patientType != null && patientType == '7' && patient.patientStatusType == 43)
InkWell(
onTap: () {
@ -141,6 +163,21 @@ class ProcedureScreen extends StatelessWidget {
},
),
),
if (model.procedureList.length!=0 && patient.patientStatusType != 43)
Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(height: 100,),
Image.asset('assets/images/no-data.png'),
Padding(
padding: const EdgeInsets.all(8.0),
child: Texts('No Procedure Found'),
)
],
),
)
],
),
),

@ -13,6 +13,7 @@ import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
@ -32,6 +33,7 @@ class AddSickLeavScreen extends StatelessWidget {
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
isShowAppBar: true,
backgroundColor: Colors.grey[100],
appBar: PatientProfileHeaderNewDesignAppBar(
patient,
routeArgs['patientType'] ?? "0",
@ -197,33 +199,33 @@ class AddSickLeavScreen extends StatelessWidget {
AppText(
item.remarks ?? "",
),
(item.status == 1 ||
item.status == 2)
? IconButton(
icon: Image.asset(
'assets/images/edit.png'),
// color: Colors.green, //Colors.black,
onPressed: () => {
if (item.status ==
1)
{
DrAppToastMsg.showErrorToast(
TranslationBase.of(
context)
.sickleaveonhold)
}
else
{
openSickLeave(
context,
true,
extendedData:
item)
}
},
)
: SizedBox()
// (item.status == 1 ||
// item.status == 2)
// ? IconButton(
// icon: Image.asset(
// 'assets/images/edit.png'),
//
// // color: Colors.green, //Colors.black,
// onPressed: () => {
// if (item.status ==
// 1)
// {
// DrAppToastMsg.showErrorToast(
// TranslationBase.of(
// context)
// .sickleaveonhold)
// }
// else
// {
// openSickLeave(
// context,
// true,
// extendedData:
// item)
// }
// },
// )
// : SizedBox()
]),
],
),
@ -240,90 +242,22 @@ class AddSickLeavScreen extends StatelessWidget {
}).toList(),
)
: patient.patientStatusType != 43
? Container(
height: 200,
width: SizeConfig.screenWidth,
color: Colors.white,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
AppText(
TranslationBase.of(context).noSickLeave,
color: Colors.red,
)
]),
)
? Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(height: 100,),
Image.asset('assets/images/no-data.png'),
Padding(
padding: const EdgeInsets.all(8.0),
child: Texts('No Sick Leave Found'),
)
],
),
)
: SizedBox()
// : new Builder(builder: (context) {
// return Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Padding(
// padding: EdgeInsets.all(10),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// AppText(
// TranslationBase.of(context).patient,
// fontWeight: FontWeight.bold,
// ),
// AppText(
// TranslationBase.of(context).sickLeave,
// fontSize: 24,
// fontWeight: FontWeight.bold,
// ),
// ],
// )),
// Container(
// width: SizeConfig.screenWidth,
// margin: EdgeInsets.only(
// left: 20, right: 20, top: 20, bottom: 20),
// padding: EdgeInsets.all(20),
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10),
// color: HexColor('#EAEAEA')),
// child: Column(
// mainAxisAlignment: MainAxisAlignment.start,
// children: [
// Container(
// child: Container(
// decoration: BoxDecoration(
// color: Colors.grey,
// borderRadius:
// BorderRadius.circular(10)),
// padding: EdgeInsets.all(3),
// child: IconButton(
// icon: Icon(
// Icons.add,
// size: 35,
// color: Colors.white,
// ),
// onPressed: () {
// openSickLeave(
// context,
// false,
// );
// }),
// )),
// Padding(
// child: AppText(
// TranslationBase.of(context)
// .noSickLeaveApplied,
// fontWeight: FontWeight.bold,
// fontFamily: 'Poppins',
// fontSize: 16,
// textAlign: TextAlign.center,
// color: HexColor('#7E7E7E')),
// padding: EdgeInsets.all(10),
// ),
// ],
// )),
// SizedBox(
// height: SizeConfig.screenHeight * .6,
// )
// ],
// );
// }),
]))));
}

@ -150,6 +150,7 @@ class _SickLeaveScreenState extends State<SickLeaveScreen> {
// validator: (value) {
// return TextValidator().validateName(value);
// },
textInputType:TextInputType.number,
inputFormatter: ONLY_NUMBERS)
]),
),

@ -15,8 +15,8 @@ import 'package:provider/provider.dart';
import 'large_avatar.dart';
class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with PreferredSizeWidget {
class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget
with PreferredSizeWidget {
final PatiantInformtion patient;
final String patientType;
final String arrivalType;
@ -27,6 +27,9 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
final String invoiceNO;
final String orderNo;
final bool isPrescriptions;
final bool isMedicalFile;
final String episode;
final String vistDate;
final String clinic;
PatientProfileHeaderWhitAppointmentAppBar(
@ -38,7 +41,12 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
this.appointmentDate,
this.profileUrl,
this.invoiceNO,
this.orderNo, this.isPrescriptions = false, this.clinic});
this.orderNo,
this.isPrescriptions = false,
this.clinic,
this.isMedicalFile = false,
this.episode,
this.vistDate});
@override
Widget build(BuildContext context) {
@ -51,8 +59,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
}
return Container(
padding: EdgeInsets.only(
left: 0, right: 5, bottom: 5, top: 5),
padding: EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5),
decoration: BoxDecoration(
color: Colors.white,
),
@ -73,12 +80,12 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
),
Expanded(
child: AppText(
patient.firstName != null ?
(Helpers.capitalize(patient.firstName) +
" " +
Helpers.capitalize(
patient.lastName)) : Helpers.capitalize(patient.patientDetails.fullName),
fontSize: SizeConfig.textMultiplier *2.2,
patient.firstName != null
? (Helpers.capitalize(patient.firstName) +
" " +
Helpers.capitalize(patient.lastName))
: Helpers.capitalize(patient.patientDetails.fullName),
fontSize: SizeConfig.textMultiplier * 2.2,
fontWeight: FontWeight.bold,
backGroundcolor: Colors.white,
fontFamily: 'Poppins',
@ -86,13 +93,13 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
),
gender == 1
? Icon(
DoctorApp.male_2,
color: Colors.blue,
)
DoctorApp.male_2,
color: Colors.blue,
)
: Icon(
DoctorApp.female_1,
color: Colors.pink,
),
DoctorApp.female_1,
color: Colors.pink,
),
]),
),
Row(children: [
@ -114,119 +121,84 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
),
Expanded(
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SERVICES_PATIANT2[
int.parse(patientType)] ==
"patientArrivalList"
SERVICES_PATIANT2[int.parse(patientType)] ==
"patientArrivalList"
? Container(
child: Row(
mainAxisAlignment:
MainAxisAlignment
.spaceBetween,
children: [
patient.patientStatusType ==
43
? AppText(
TranslationBase.of(
context)
.arrivedP,
color: Colors.green,
fontWeight:
FontWeight.bold,
fontFamily:
'Poppins',
fontSize: 12,
)
: AppText(
TranslationBase.of(
context)
.notArrived,
color:
Colors.red[800],
fontWeight:
FontWeight.bold,
fontFamily:
'Poppins',
fontSize: 12,
),
arrivalType == '1' || patient.arrivedOn == null
? AppText(
patient.startTime !=
null
? patient
.startTime
: '',
fontFamily:
'Poppins',
fontWeight:
FontWeight.w600,
)
: AppText(
DateUtils.convertStringToDateFormat(
patient
.arrivedOn,
'MM-dd-yyyy HH:mm'),
fontFamily:
'Poppins',
fontWeight:
FontWeight.w600,
)
],
))
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
patient.patientStatusType == 43
? AppText(
TranslationBase.of(context).arrivedP,
color: Colors.green,
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
fontSize: 12,
)
: AppText(
TranslationBase.of(context).notArrived,
color: Colors.red[800],
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
fontSize: 12,
),
arrivalType == '1' || patient.arrivedOn == null
? AppText(
patient.startTime != null
? patient.startTime
: '',
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
)
: AppText(
DateUtils.convertStringToDateFormat(
patient.arrivedOn,
'MM-dd-yyyy HH:mm'),
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
)
],
))
: SizedBox(),
if (SERVICES_PATIANT2[
int.parse(patientType)] ==
if (SERVICES_PATIANT2[int.parse(patientType)] ==
"List_MyOutPatient")
Container(
child: Row(
mainAxisAlignment:
MainAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
AppText(
TranslationBase.of(context)
.appointmentDate +
TranslationBase.of(context).appointmentDate +
" : ",
fontSize: 14,
),
patient.startTime != null
? Container(
height: 15,
width: 60,
decoration:
BoxDecoration(
borderRadius:
BorderRadius
.circular(
25),
color: HexColor(
"#20A169"),
),
child: AppText(
patient.startTime,
color: Colors.white,
fontSize: 1.5 *
SizeConfig
.textMultiplier,
textAlign: TextAlign
.center,
fontWeight:
FontWeight.bold,
),
)
height: 15,
width: 60,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(25),
color: HexColor("#20A169"),
),
child: AppText(
patient.startTime,
color: Colors.white,
fontSize: 1.5 * SizeConfig.textMultiplier,
textAlign: TextAlign.center,
fontWeight: FontWeight.bold,
),
)
: SizedBox(),
SizedBox(
width: 3.5,
),
Container(
child: AppText(
convertDateFormat2(patient.appointmentDate.toString()?? ''),
fontSize: 1.5 *
SizeConfig
.textMultiplier,
fontWeight:
FontWeight.bold,
convertDateFormat2(
patient.appointmentDate.toString() ?? ''),
fontSize: 1.5 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
),
SizedBox(
@ -239,34 +211,23 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
),
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
RichText(
text: TextSpan(
style: TextStyle(
fontSize: 1.6 *
SizeConfig
.textMultiplier,
fontSize: 1.6 * SizeConfig.textMultiplier,
color: Colors.black),
children: <TextSpan>[
new TextSpan(
text:
TranslationBase.of(
context)
.fileNumber,
text: TranslationBase.of(context).fileNumber,
style: TextStyle(
fontSize: 12,
fontFamily:
'Poppins')),
fontSize: 12, fontFamily: 'Poppins')),
new TextSpan(
text: patient.patientId
.toString(),
text: patient.patientId.toString(),
style: TextStyle(
fontWeight:
FontWeight.w700,
fontFamily:
'Poppins',
fontWeight: FontWeight.w700,
fontFamily: 'Poppins',
fontSize: 14)),
],
),
@ -274,32 +235,23 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
Row(
children: [
AppText(
patient.nationalityName ??
patient.nationality,
patient.nationalityName ?? patient.nationality,
fontWeight: FontWeight.bold,
fontSize: 12,
),
patient.nationality != null
? ClipRRect(
borderRadius:
BorderRadius
.circular(
20.0),
child: Image.network(
patient.nationalityFlagURL,
height: 25,
width: 30,
errorBuilder:
(BuildContext
context,
Object
exception,
StackTrace
stackTrace) {
return Text(
'No Image');
},
))
borderRadius: BorderRadius.circular(20.0),
child: Image.network(
patient.nationalityFlagURL,
height: 25,
width: 30,
errorBuilder: (BuildContext context,
Object exception,
StackTrace stackTrace) {
return Text('No Image');
},
))
: SizedBox()
],
)
@ -309,26 +261,19 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
child: RichText(
text: new TextSpan(
style: new TextStyle(
fontSize: 1.6 *
SizeConfig.textMultiplier,
fontSize: 1.6 * SizeConfig.textMultiplier,
color: Colors.black,
fontFamily: 'Poppins',
),
children: <TextSpan>[
new TextSpan(
text: TranslationBase.of(
context)
.age +
" : ",
style: TextStyle(
fontSize: 14)),
text: TranslationBase.of(context).age + " : ",
style: TextStyle(fontSize: 14)),
new TextSpan(
text:
"${DateUtils.getAgeByBirthday(patient.patientDetails != null ? patient.patientDetails.dateofBirth : patient.dateofBirth, context)}",
"${DateUtils.getAgeByBirthday(patient.patientDetails != null ? patient.patientDetails.dateofBirth : patient.dateofBirth, context)}",
style: TextStyle(
fontWeight:
FontWeight.w700,
fontSize: 14)),
fontWeight: FontWeight.w700, fontSize: 14)),
],
),
),
@ -343,14 +288,16 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
Container(
width: 30,
height: 30,
margin: EdgeInsets.only(left: projectViewModel.isArabic?10:85, right: projectViewModel.isArabic?85:10,top: 5),
margin: EdgeInsets.only(
left: projectViewModel.isArabic ? 10 : 85,
right: projectViewModel.isArabic ? 85 : 10,
top: 5),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
border: Border(
bottom:BorderSide(color: Colors.grey[400],width: 2.5),
left: BorderSide(color: Colors.grey[400],width: 2.5),
)
),
shape: BoxShape.rectangle,
border: Border(
bottom: BorderSide(color: Colors.grey[400], width: 2.5),
left: BorderSide(color: Colors.grey[400], width: 2.5),
)),
),
Expanded(
child: Container(
@ -380,79 +327,81 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
fontWeight: FontWeight.w600,
fontSize: 12,
),
if (orderNo != null )
if (orderNo != null && !isPrescriptions)
Row(
children: <Widget>[
Texts(
'Order No: ',
color: Colors.grey[800],
fontSize: 12
),
Texts(
orderNo ?? '',fontSize: 12
)
Texts('Order No: ',
color: Colors.grey[800],
fontSize: 12),
Texts(orderNo ?? '', fontSize: 12)
],
),
if (invoiceNO != null )
if (invoiceNO != null && !isPrescriptions)
Row(
children: <Widget>[
Texts(
'Invoice: ',
color: Colors.grey[800],
fontSize: 12
),
Texts(
invoiceNO,
fontSize: 12
)
Texts('Invoice: ',
color: Colors.grey[800],
fontSize: 12),
Texts(invoiceNO, fontSize: 12)
],
),
if( branch!=null)
if (branch != null)
Row(
children: [
Texts(
'Branch: ',
color: Colors.grey[800],
fontSize: 12
),
Texts(
branch?? '',
fontSize: 12
)
Texts('Branch: ',
color: Colors.grey[800],
fontSize: 12),
Texts(branch ?? '', fontSize: 12)
],
),
if(clinic!=null)
if (isPrescriptions)
if (clinic != null)
Row(
children: [
Texts('Clinic: ',
color: Colors.grey[800],
fontSize: 12),
Texts(clinic ?? '', fontSize: 12)
],
),
if (isMedicalFile && episode != null)
Row(
children: [
Texts(
'Clinic: ',
color: Colors.grey[800],
fontSize: 12
),
Texts(
clinic?? '',
fontSize: 12
)
Texts('Episode: ',
color: Colors.grey[800],
fontSize: 12),
Texts(episode ?? '', fontSize: 12)
],
),
if (isMedicalFile && vistDate != null)
Row(
children: [
Texts('Visit Date: ',
color: Colors.grey[800],
fontSize: 12),
Texts(vistDate ?? '', fontSize: 12)
],
),
Row(
children: <Widget>[
Expanded(
child: Texts(
!isPrescriptions? 'Result Date: ': 'Prescriptions Date ',
!isPrescriptions
? 'Result Date: '
: 'Prescriptions Date ',
color: Colors.grey[800],
fontSize: 12,
),
),
Texts(
'${DateUtils.getDayMonthYearDateFormatted(appointmentDate, isArabic: projectViewModel.isArabic)}',fontSize: 14,
'${DateUtils.getDayMonthYearDateFormatted(appointmentDate, isArabic: projectViewModel.isArabic)}',
fontSize: 14,
)
],
)
]),
),
),
],
),
),
@ -466,7 +415,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
}
convertDateFormat2(String str) {
String newDate ="";
String newDate = "";
const start = "/Date(";
const end = "+0300)";
@ -477,10 +426,10 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
var date = new DateTime.fromMillisecondsSinceEpoch(
int.parse(str.substring(startIndex + start.length, endIndex)));
newDate = date.year.toString() +
"/" +
date.month.toString().padLeft(2, '0') +
"/" +
date.day.toString().padLeft(2, '0');
"/" +
date.month.toString().padLeft(2, '0') +
"/" +
date.day.toString().padLeft(2, '0');
}
return newDate.toString();
@ -504,5 +453,5 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
}
@override
Size get preferredSize => Size(double.maxFinite,290);
Size get preferredSize => Size(double.maxFinite, 290);
}

@ -66,7 +66,7 @@ class _PriorityBarState extends State<PriorityBar> {
? _prioritiesAr[index]
: item,
style: TextStyle(
fontSize: 15,
fontSize: 14,
color: Colors.black, //Colors.black,
fontWeight: FontWeight.bold,
),

@ -0,0 +1,203 @@
import 'package:autocomplete_textfield/autocomplete_textfield.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/models/SOAP/my_selected_allergy.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/master_key_checkbox_search_allergies_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../bottom_sheet_title.dart';
class AddAllergies extends StatefulWidget {
final Function addAllergiesFun;
final List<MySelectedAllergy> myAllergiesList;
const AddAllergies({Key key, this.addAllergiesFun, this.myAllergiesList})
: super(key: key);
@override
_AddAllergiesState createState() => _AddAllergiesState();
}
class _AddAllergiesState extends State<AddAllergies> {
List<MasterKeyModel> allergiesList;
List<MasterKeyModel> allergySeverityList;
MasterKeyModel _selectedAllergySeverity;
MasterKeyModel _selectedAllergy;
TextEditingController remarkController = TextEditingController();
TextEditingController severityController = TextEditingController();
TextEditingController allergyController = TextEditingController();
List<MySelectedAllergy> myAllergiesListLocal;
@override
initState() {
super.initState();
myAllergiesListLocal = [...widget.myAllergiesList];
}
GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>();
bool isFormSubmitted = false;
InputDecoration textFieldSelectorDecoration(
String hintText, String selectedText, bool isDropDown,
{IconData icon}) {
return InputDecoration(
contentPadding: EdgeInsets.symmetric(vertical: 10, horizontal: 10),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 1.0),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 1.0),
borderRadius: BorderRadius.circular(8),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 1.0),
borderRadius: BorderRadius.circular(8),
),
hintText: selectedText != null ? selectedText : hintText,
suffixIcon: isDropDown ? Icon(icon ?? Icons.arrow_drop_down) : null,
hintStyle: TextStyle(
fontSize: 10,
color: Theme.of(context).hintColor,
fontWeight: FontWeight.w700),
);
}
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
final screenSize = MediaQuery.of(context).size;
return FractionallySizedBox(
heightFactor: 1,
child: BaseView<SOAPViewModel>(
onModelReady: (model) async {
if (model.allergiesList.length == 0) {
await model.getMasterLookup(MasterKeysService.Allergies);
}
if (model.allergySeverityList.length == 0) {
await model.getMasterLookup(MasterKeysService.AllergySeverity);
}
},
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
isShowAppBar: false,
body: Center(
child: Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BottomSheetTitle(
title: TranslationBase.of(context).addAllergies,
),
SizedBox(
height: 10,
),
SizedBox(
height: 16,
),
Expanded(
child: Center(
child: FractionallySizedBox(
widthFactor: 0.9,
child: Center(
child: NetworkBaseView(
baseViewModel: model,
child: MasterKeyCheckboxSearchAllergiesWidget(
model: model,
masterList: model.allergiesList,
removeAllergy: (master) {
setState(() {
removeAllergyFromLocalList(master);
});
},
addAllergy:
(MySelectedAllergy mySelectedAllergy) {
AddAllergyLocally(mySelectedAllergy);
},
addSelectedAllergy: () => widget
.addAllergiesFun(myAllergiesListLocal),
isServiceSelected: (master) =>
isServiceSelected(master),
getServiceSelectedAllergy: (master) =>
getSelectedAllergy(master),
),
),
),
),
),
),
]),
),
)),
),
);
}
isServiceSelected(MasterKeyModel masterKey) {
Iterable<MySelectedAllergy> allergy = myAllergiesListLocal.where(
(element) =>
masterKey.id == element.selectedAllergy.id &&
masterKey.typeId == element.selectedAllergy.typeId &&
element.isChecked);
if (allergy.length > 0) {
return true;
}
return false;
}
removeAllergyFromLocalList(MasterKeyModel masterKey) {
myAllergiesListLocal
.removeWhere((element) => element.selectedAllergy.id == masterKey.id);
}
MySelectedAllergy getSelectedAllergy(MasterKeyModel masterKey) {
Iterable<MySelectedAllergy> allergy = myAllergiesListLocal.where(
(element) =>
masterKey.id == element.selectedAllergy.id &&
masterKey.typeId == element.selectedAllergy.typeId &&
element.isChecked);
if (allergy.length > 0) {
return allergy.first;
}
return null;
}
AddAllergyLocally(MySelectedAllergy mySelectedAllergy) {
if (mySelectedAllergy.selectedAllergy == null) {
helpers.showErrorToast(TranslationBase.of(context).requiredMsg);
} else {
setState(() {
List<MySelectedAllergy> allergy =
// ignore: missing_return
myAllergiesListLocal
.where((element) =>
mySelectedAllergy.selectedAllergy.id ==
element.selectedAllergy.id)
.toList();
if (allergy.isEmpty) {
myAllergiesListLocal.add(mySelectedAllergy);
// Navigator.of(context).pop();
} else {
allergy.first.selectedAllergy = mySelectedAllergy.selectedAllergy;
allergy.first.selectedAllergySeverity =
mySelectedAllergy.selectedAllergySeverity;
allergy.first.remark = mySelectedAllergy.remark;
allergy.first.isChecked = mySelectedAllergy.isChecked;
// Navigator.of(context).pop();
// helpers.showErrorToast(TranslationBase
// .of(context)
// .itemExist);
}
});
}
}
}

@ -20,6 +20,8 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
import 'add_allergies.dart';
class UpdateAllergiesWidget extends StatefulWidget {
List<MySelectedAllergy> myAllergiesList;
@ -244,7 +246,7 @@ class _UpdateAllergiesWidgetState extends State<UpdateAllergiesWidget> {
widget.myAllergiesList.add(element);
}
});
changeParentState();
// changeParentState();
Navigator.of(context).pop();
} else {
helpers.showErrorToast(TranslationBase
@ -257,250 +259,6 @@ class _UpdateAllergiesWidgetState extends State<UpdateAllergiesWidget> {
}
class AddAllergies extends StatefulWidget {
final Function addAllergiesFun;
final List<MySelectedAllergy> myAllergiesList;
const AddAllergies({Key key, this.addAllergiesFun, this.myAllergiesList}) : super(key: key);
@override
_AddAllergiesState createState() => _AddAllergiesState();
}
class _AddAllergiesState extends State<AddAllergies> {
List<MasterKeyModel> allergiesList;
List<MasterKeyModel> allergySeverityList;
MasterKeyModel _selectedAllergySeverity;
MasterKeyModel _selectedAllergy;
TextEditingController remarkController = TextEditingController();
TextEditingController severityController = TextEditingController();
TextEditingController allergyController = TextEditingController();
List<MySelectedAllergy> myAllergiesListLocal;
@override
initState(){
super.initState();
myAllergiesListLocal = [...widget.myAllergiesList];
}
GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>();
bool isFormSubmitted = false;
InputDecoration textFieldSelectorDecoration(
String hintText, String selectedText, bool isDropDown,
{IconData icon}) {
return InputDecoration(
contentPadding: EdgeInsets.symmetric(vertical: 10, horizontal: 10),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 1.0),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 1.0),
borderRadius: BorderRadius.circular(8),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 1.0),
borderRadius: BorderRadius.circular(8),
),
hintText: selectedText != null ? selectedText : hintText,
suffixIcon: isDropDown ? Icon(icon ?? Icons.arrow_drop_down) : null,
hintStyle: TextStyle(
fontSize: 10,
color: Theme
.of(context)
.hintColor,
fontWeight: FontWeight.w700
),
);
}
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
final screenSize = MediaQuery
.of(context)
.size;
return FractionallySizedBox(
heightFactor: 1,
child: BaseView<SOAPViewModel>(
onModelReady: (model) async {
if (model.allergiesList.length == 0) {
await model.getMasterLookup(MasterKeysService.Allergies);
}
if (model.allergySeverityList.length == 0) {
await model.getMasterLookup(MasterKeysService.AllergySeverity);
}
},
builder: (_, model, w) =>
AppScaffold(
baseViewModel: model,
isShowAppBar: false,
body: Center(
child: Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
padding: EdgeInsets.only(
left: 0, right: 5, bottom: 5, top: 5),
decoration: BoxDecoration(
color: Colors.white,
),
height: 115,
child: Container(
padding: EdgeInsets.only(
left: 10, right: 10),
margin: EdgeInsets.only(top: 40),
child: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
RichText(
text: TextSpan(
style: TextStyle(
fontSize:20,
color: Colors.black),
children: <TextSpan>[
new TextSpan(
text: TranslationBase.of(context).
addAllergies,
style: TextStyle(
color: Color(0xFF2B353E),
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
fontSize: 20)),
],
),
),
InkWell(
onTap: () {
Navigator.pop(context);
},
child: Icon(FontAwesomeIcons.times,
size: 30,
color: Color(0xFF2B353E)))
],
),
],
),
),
),
SizedBox(
height: 10,
),
SizedBox(
height: 16,
),
Expanded(
child: Center(
child: FractionallySizedBox(
widthFactor: 0.9,
child: Center(
child: NetworkBaseView(
baseViewModel: model,
child: MasterKeyCheckboxSearchAllergiesWidget(
model: model,
masterList: model.allergiesList,
removeAllergy: (master) {
setState(() {
removeAllergyFromLocalList(master);
});
},
addAllergy: (MySelectedAllergy mySelectedAllergy){
AddAllergyLocally(mySelectedAllergy);
},
addSelectedAllergy: ()=>
widget.addAllergiesFun(myAllergiesListLocal)
,
isServiceSelected: (master) =>isServiceSelected(master),
getServiceSelectedAllergy: (master)=>getSelectedAllergy(master),
),
),
),
),
),
),
]
),
),
)
),
),
);
}
isServiceSelected(MasterKeyModel masterKey) {
Iterable<MySelectedAllergy> allergy =
myAllergiesListLocal.where((element) =>
masterKey.id == element.selectedAllergy.id &&
masterKey.typeId == element.selectedAllergy.typeId &&
element.isChecked);
if (allergy.length > 0) {
return true;
}
return false;
}
removeAllergyFromLocalList(MasterKeyModel masterKey) {
myAllergiesListLocal.removeWhere((element) =>
element.selectedAllergy.id == masterKey.id);
}
MySelectedAllergy getSelectedAllergy(MasterKeyModel masterKey) {
Iterable<MySelectedAllergy> allergy =
myAllergiesListLocal.where((element) =>
masterKey.id == element.selectedAllergy.id &&
masterKey.typeId == element.selectedAllergy.typeId &&
element.isChecked);
if (allergy.length > 0) {
return allergy.first;
}
return null;
}
AddAllergyLocally(MySelectedAllergy mySelectedAllergy) {
if (
mySelectedAllergy.selectedAllergy == null) {
helpers.showErrorToast(TranslationBase
.of(context)
.requiredMsg);
} else {
setState(() {
List<MySelectedAllergy> allergy =
// ignore: missing_return
myAllergiesListLocal
.where((element) =>
mySelectedAllergy.selectedAllergy.id ==
element.selectedAllergy.id)
.toList();
if (allergy.isEmpty) {
myAllergiesListLocal.add(mySelectedAllergy);
// Navigator.of(context).pop();
} else {
allergy.first.selectedAllergy =
mySelectedAllergy.selectedAllergy;
allergy.first.selectedAllergySeverity =
mySelectedAllergy.selectedAllergySeverity;
allergy.first.remark = mySelectedAllergy.remark;
allergy.first.isChecked = mySelectedAllergy.isChecked;
// Navigator.of(context).pop();
// helpers.showErrorToast(TranslationBase
// .of(context)
// .itemExist);
}
});
}}
}

@ -0,0 +1,61 @@
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
class BottomSheetTitle extends StatelessWidget {
const BottomSheetTitle({
Key key, this.title,
}) : super(key: key);
final String title;
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.only(
left: 0, right: 5, bottom: 5, top: 5),
decoration: BoxDecoration(
color: Colors.white,
),
height: 115,
child: Container(
padding: EdgeInsets.only(
left: 10, right: 10),
margin: EdgeInsets.only(top: 60),
child: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
RichText(
text: TextSpan(
style: TextStyle(
fontSize:20,
color: Colors.black),
children: <TextSpan>[
new TextSpan(
text: title,
style: TextStyle(
color: Color(0xFF2B353E),
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
fontSize: 20)),
],
),
),
InkWell(
onTap: () {
Navigator.pop(context);
},
child: Icon(DoctorApp.close_1,
size:20,
color: Color(0xFF2B353E)))
],
),
],
),
),
);
}
}

@ -0,0 +1,193 @@
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/master_key_checkbox_search_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/material.dart';
import '../PriorityBar.dart';
import '../bottom_sheet_title.dart';
class AddHistoryDialog extends StatefulWidget {
final Function changePageViewIndex;
final PageController controller;
final List<MySelectedHistory> myHistoryList;
final Function addSelectedHistories;
final Function (MasterKeyModel) removeHistory;
const AddHistoryDialog(
{Key key, this.changePageViewIndex, this.controller, this.myHistoryList, this.addSelectedHistories, this.removeHistory})
: super(key: key);
@override
_AddHistoryDialogState createState() => _AddHistoryDialogState();
}
class _AddHistoryDialogState extends State<AddHistoryDialog> {
@override
Widget build(BuildContext context) {
return FractionallySizedBox(
heightFactor: 1,
child: BaseView<SOAPViewModel>(
onModelReady: (model) async {
if (model.historyFamilyList.length == 0) {
await model.getMasterLookup(MasterKeysService.HistoryFamily);
}
if (model.historySurgicalList.length == 0) {
await model.getMasterLookup(MasterKeysService.HistorySurgical);
await model.getMasterLookup(MasterKeysService.HistorySports);
}
if (model.historyMedicalList.length == 0) {
await model.getMasterLookup(MasterKeysService.HistoryMedical);
}
},
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
isShowAppBar: false,
body: Center(
child: Container(
child: Column(
children: [
BottomSheetTitle(title:TranslationBase.of(context).addHistory),
SizedBox(
height: 10,
),
PriorityBar(onTap: (activePriority) async {
widget.changePageViewIndex(activePriority);
}),
SizedBox(
height: 20,
),
Expanded(
child: FractionallySizedBox(
widthFactor: 0.9,
child: PageView(
physics: NeverScrollableScrollPhysics(),
controller: widget.controller,
onPageChanged: (index) {
setState(() {
// currentIndex = index;
});
},
scrollDirection: Axis.horizontal,
children: <Widget>[
NetworkBaseView(
baseViewModel: model,
child: MasterKeyCheckboxSearchWidget(
model: model,
masterList: model.historyFamilyList,
removeHistory: (history){
setState(() {
widget.removeHistory(history);
});
},
addHistory: (history){
setState(() {
createAndAddHistory(
history);
});
},
addSelectedHistories: (){
widget.addSelectedHistories();
},
isServiceSelected: (master) =>isServiceSelected(master),
),
),
NetworkBaseView(
baseViewModel: model,
child: MasterKeyCheckboxSearchWidget(
model: model,
masterList: model.mergeHistorySurgicalWithHistorySportList,
removeHistory: (history){
setState(() {
widget.removeHistory(history);
});
},
addHistory: (history){
setState(() {
createAndAddHistory(
history);
});
},
addSelectedHistories: (){
widget.addSelectedHistories();
},
isServiceSelected: (master) =>isServiceSelected(master),
),
),
NetworkBaseView(
baseViewModel: model,
child: MasterKeyCheckboxSearchWidget(
model: model,
masterList: model.historyMedicalList,
removeHistory: (history){
setState(() {
widget.removeHistory(history);
});
},
addHistory: (history){
setState(() {
createAndAddHistory(
history);
});
},
addSelectedHistories: (){
widget.addSelectedHistories();
},
isServiceSelected: (master) =>isServiceSelected(master),
),
),
],
),
),
),
],
)),
),
),
));
}
createAndAddHistory(MasterKeyModel history) {
List<MySelectedHistory> myhistory = widget.myHistoryList.where((element) =>
history.id ==
element.selectedHistory.id &&
history.typeId ==
element.selectedHistory.typeId
).toList();
if (myhistory.isEmpty) {
setState(() {
MySelectedHistory mySelectedHistory = MySelectedHistory(
remark: history.remarks ?? "",
selectedHistory: history,
isChecked: true);
widget.myHistoryList.add(mySelectedHistory);
});
} else {
myhistory.first.isChecked = true;
}
}
isServiceSelected(MasterKeyModel masterKey) {
Iterable<MySelectedHistory> history =
widget
.myHistoryList
.where((element) =>
masterKey.id == element.selectedHistory.id &&
masterKey.typeId == element.selectedHistory.typeId &&
element.isChecked);
if (history.length > 0) {
return true;
}
return false;
}
}

@ -0,0 +1,223 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/master_key_checkbox_search_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
import '../PriorityBar.dart';
import '../bottom_sheet_title.dart';
import 'add_history_dialog.dart';
class UpdateHistoryWidget extends StatefulWidget {
final List<MySelectedHistory> myHistoryList;
const UpdateHistoryWidget({Key key, this.myHistoryList}) : super(key: key);
@override
_UpdateHistoryWidgetState createState() => _UpdateHistoryWidgetState();
}
class _UpdateHistoryWidgetState extends State<UpdateHistoryWidget>
with TickerProviderStateMixin {
PageController _controller;
int _currentIndex = 0;
changePageViewIndex(pageIndex) {
_controller.jumpToPage(pageIndex);
}
@override
void initState() {
_controller = new PageController();
super.initState();
}
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return Column(
children: [
InkWell(
onTap: () {
openHistoryList(context);
},
child: Container(
padding: EdgeInsets.symmetric(
vertical: 8, horizontal: 8.0),
margin:
EdgeInsets.symmetric(vertical: 8),
decoration: BoxDecoration(
border: Border.all(
color: Colors.grey.shade400,
width: 0.5),
borderRadius: BorderRadius.all(
Radius.circular(8),
),
color: Colors.white,
),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
Expanded(
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
AppText(
"${TranslationBase.of(context).addHistory}",
fontSize: SizeConfig
.textMultiplier *
1.8,
color: Colors.black,
fontWeight: FontWeight.bold,
),
AppText(
"${TranslationBase.of(context).searchHere}",
fontSize: SizeConfig
.textMultiplier *
1.8,
color: Colors.grey.shade700,
fontWeight: FontWeight.bold,
),
],
)),
Icon(
Icons.add_box_rounded,
size: 25,
)
],
),
),
),
SizedBox(
height: 20,
),
Container(
margin:
EdgeInsets.only(left: 15, right: 15, top: 15),
child: Column(
children: widget.myHistoryList.map((myHistory) {
return Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
child: Texts(
projectViewModel.isArabic
? myHistory.selectedHistory.nameAr
: myHistory.selectedHistory.nameEn,
fontSize: 15,
textDecoration: myHistory.isChecked
? null
: TextDecoration.lineThrough,
// bold: true,
color: Colors.black),
width: MediaQuery
.of(context)
.size
.width * 0.5,
),
if (myHistory.isChecked)
InkWell(
child: Row(
children: [
Container(
child: Texts(
TranslationBase
.of(context)
.remove,
fontSize: 15,
variant: "bodyText",
textDecoration: myHistory.isChecked
? null
: TextDecoration.lineThrough,
// bold: true,
color: HexColor("#B8382C"),),
// width: MediaQuery.of(context).size.width * 0.3,
),
Icon(
FontAwesomeIcons.times,
color: HexColor("#B8382C"),
size: 17,
),
],
),
onTap: () => removeHistory(myHistory.selectedHistory),
)
],
),
SizedBox(
height: 20,
),
],
);
}).toList(),
),
)
],
);
}
removeHistory(MasterKeyModel historyKey) {
List<MySelectedHistory> history =
// ignore: missing_return
widget.myHistoryList.where((element) =>
historyKey.id ==
element.selectedHistory.id &&
historyKey.typeId ==
element.selectedHistory.typeId
).toList();
if (history.length > 0)
setState(() {
history[0].isChecked = false;
});
}
openHistoryList(BuildContext context) {
showModalBottomSheet(
backgroundColor: Colors.white,
isDismissible: false,
isScrollControlled: true,
context: context,
builder: (context) {
return FractionallySizedBox(
heightFactor: 1,
child: AddHistoryDialog(
changePageViewIndex: changePageViewIndex,
controller: _controller,
myHistoryList: widget.myHistoryList,
addSelectedHistories: () {
setState(() {
Navigator.of(context).pop();
});
},
removeHistory: (masterKey) => removeHistory(masterKey),
),
);
});
}
}

@ -0,0 +1,472 @@
// ignore: must_be_immutable
import 'package:autocomplete_textfield/autocomplete_textfield.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/model/get_medication_response_model.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/app-textfield-custom.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
import '../../custom_validation_error.dart';
import '../bottom_sheet_title.dart';
class AddMedication extends StatefulWidget {
final Function addMedicationFun;
TextEditingController medicationController;
AddMedication({Key key, this.addMedicationFun, this.medicationController})
: super(key: key);
@override
_AddMedicationState createState() => _AddMedicationState();
}
class _AddMedicationState extends State<AddMedication> {
MasterKeyModel _selectedMedicationDose;
MasterKeyModel _selectedMedicationStrength;
MasterKeyModel _selectedMedicationRoute;
MasterKeyModel _selectedMedicationFrequency;
MasterKeyModel _selectedAllergy;
TextEditingController doseController = TextEditingController();
TextEditingController strengthController = TextEditingController();
TextEditingController routeController = TextEditingController();
TextEditingController frequencyController = TextEditingController();
GetMedicationResponseModel _selectedMedication;
GlobalKey key =
new GlobalKey<AutoCompleteTextFieldState<GetMedicationResponseModel>>();
bool isFormSubmitted = false;
InputDecoration textFieldSelectorDecoration(
String hintText, String selectedText, bool isDropDown,
{IconData icon}) {
return InputDecoration(
filled: true,
fillColor: Colors.white,
contentPadding: EdgeInsets.symmetric(vertical: 10, horizontal: 10),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 0.00),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 0.00),
borderRadius: BorderRadius.circular(8),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 0.00),
borderRadius: BorderRadius.circular(8),
),
hintText: selectedText != null ? selectedText : hintText,
suffixIcon: isDropDown ? Icon(icon ?? Icons.arrow_drop_down) : null,
hintStyle: TextStyle(
fontSize: 10,
color: Theme
.of(context)
.hintColor,
fontWeight: FontWeight.w700
),
);
}
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
final screenSize = MediaQuery
.of(context)
.size;
return FractionallySizedBox(
child: BaseView<SOAPViewModel>(
onModelReady: (model) async {
if (model.medicationStrengthList.length == 0) {
await model.getMasterLookup(MasterKeysService.MedicationStrength,);
}
if (model.medicationFrequencyList.length == 0) {
await model.getMasterLookup(MasterKeysService.MedicationFrequency);
}
if (model.medicationDoseTimeList.length == 0) {
await model.getMasterLookup(MasterKeysService.MedicationDoseTime);
}
if (model.medicationRouteList.length == 0) {
await model.getMasterLookup(MasterKeysService.MedicationRoute);
}
if (model.allMedicationList.length == 0)
await model.getMedicationList();
},
builder: (_, model, w) =>
AppScaffold(
baseViewModel: model,
isShowAppBar: false,
body: Center(
child: Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BottomSheetTitle(
title: TranslationBase.of(context).addMedication,
),
SizedBox(
height: 10,
),
SizedBox(
height: 16,
),
Expanded(
child: Center(
child: FractionallySizedBox(
widthFactor: 0.9,
child: Column(
children: [
SizedBox(
height: 16,
),
SizedBox(
height: 16,
),
Container(
height: screenSize.height * 0.070,
child: InkWell(
onTap: model.allMedicationList != null
? () {
setState(() {
_selectedMedication = null;
});
}
: null,
child: _selectedMedication == null
? AutoCompleteTextField<
GetMedicationResponseModel>(
decoration:
textFieldSelectorDecoration(
TranslationBase.of(context)
.searchMedicineNameHere,
_selectedMedication != null
? _selectedMedication
.genericName
: null,
true,
icon: EvaIcons.search),
itemSubmitted: (item) => setState(
() =>
_selectedMedication = item),
key: key,
suggestions:
model.allMedicationList,
itemBuilder: (context,
suggestion) =>
new Padding(
child: Texts(suggestion
.description +
'/' +
suggestion.genericName),
padding:
EdgeInsets.all(8.0)),
itemSorter: (a, b) => 1,
itemFilter: (suggestion, input) =>
suggestion.genericName
.toLowerCase()
.startsWith(
input.toLowerCase()) ||
suggestion.description
.toLowerCase()
.startsWith(
input.toLowerCase()) ||
suggestion.keywords
.toLowerCase()
.startsWith(
input.toLowerCase()),
)
: AppTextFieldCustom(
hintText: _selectedMedication != null
? _selectedMedication
.description +
(' (${_selectedMedication.genericName} )')
: TranslationBase.of(context)
.searchMedicineNameHere,
minLines: 2,
maxLines: 2,
enabled: false,
),
),
),
if (isFormSubmitted &&
_selectedMedication == null)
CustomValidationError(),
SizedBox(
height: 5,
),
AppTextFieldCustom(
enabled: false,
onClick: model.medicationDoseTimeList != null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list: model.medicationDoseTimeList,
okText:
TranslationBase.of(context).ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationDose =
selectedValue;
doseController
.text = projectViewModel
.isArabic
? _selectedMedicationDose
.nameAr
: _selectedMedicationDose
.nameEn;
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
hintText:
TranslationBase.of(context).doseTime,
//TODO add translation
maxLines: 2,
minLines: 2,
isDropDown: true,
controller: doseController,
),
SizedBox(
height: 5,
),
if (isFormSubmitted &&
_selectedMedicationDose == null)
CustomValidationError(),
SizedBox(
height: 5,
),
AppTextFieldCustom(
enabled: false,
isDropDown: true,
onClick: model.medicationStrengthList != null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list: model.medicationStrengthList,
okText:
TranslationBase.of(context).ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationStrength =
selectedValue;
strengthController
.text = projectViewModel
.isArabic
? _selectedMedicationStrength
.nameAr
: _selectedMedicationStrength
.nameEn;
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
hintText:
TranslationBase.of(context).strength,
// hintColor: Colors.black,
// fontWeight: FontWeight.w600,
maxLines: 2,
minLines: 2,
controller: strengthController,
),
SizedBox(
height: 5,
),
if (isFormSubmitted &&
_selectedMedicationStrength == null)
CustomValidationError(),
SizedBox(
height: 5,
),
AppTextFieldCustom(
enabled: false,
isDropDown: true,
onClick: model.medicationRouteList != null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list: model.medicationRouteList,
okText:
TranslationBase.of(context).ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationRoute =
selectedValue;
routeController
.text = projectViewModel
.isArabic
? _selectedMedicationRoute
.nameAr
: _selectedMedicationRoute
.nameEn;
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
hintText: TranslationBase.of(context).route,
maxLines: 2,
minLines: 2,
controller: routeController,
),
SizedBox(
height: 5,
),
if (isFormSubmitted &&
_selectedMedicationRoute == null)
CustomValidationError(),
SizedBox(
height: 5,
),
AppTextFieldCustom(
onClick: model.medicationFrequencyList != null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list: model.medicationFrequencyList,
okText:
TranslationBase.of(context).ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationFrequency =
selectedValue;
frequencyController
.text = projectViewModel
.isArabic
? _selectedMedicationFrequency
.nameAr
: _selectedMedicationFrequency
.nameEn;
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
hintText:
TranslationBase.of(context).frequency,
//TODO add translation
enabled: false,
// hintColor: Colors.black,
maxLines: 2,
minLines: 2,
isDropDown: true,
controller: frequencyController,
),
SizedBox(
height: 5,
),
if (isFormSubmitted &&
_selectedMedicationFrequency == null)
CustomValidationError(),
SizedBox(
height: 30,
),
],
)),
),
),
]),
),
),
bottomSheet: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
border: Border.all(color: HexColor('#707070'), width: 0.30),
),
height: MediaQuery.of(context).size.height * 0.1,
width: double.infinity,
child: Column(
children: [
SizedBox(
height: 10,
),
Container(
child: FractionallySizedBox(
widthFactor: .80,
child: Center(
child: AppButton(
title: TranslationBase.of(context).addMedication.toUpperCase(),
color: Color(0xFF359846),
onPressed: () {
setState(() {
isFormSubmitted = true;
});
if (_selectedMedication != null &&
_selectedMedicationDose != null &&
_selectedMedicationStrength != null &&
_selectedMedicationRoute != null &&
_selectedMedicationFrequency != null) {
widget.medicationController.text = widget
.medicationController.text +
'${_selectedMedication.description} (${TranslationBase.of(context).doseTime} ) ${doseController.text} (${TranslationBase.of(context).strength}) ${strengthController.text} (${TranslationBase.of(context).route}) ${routeController.text} (${TranslationBase.of(context).frequency}) ${frequencyController.text} \n \n';
Navigator.of(context).pop();
}
},
),
),
),
),
SizedBox(
height: 5,
),
],
),
),
),
),
);
}
}

@ -0,0 +1,118 @@
import 'package:autocomplete_textfield/autocomplete_textfield.dart';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/model/get_medication_response_model.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/models/SOAP/my_selected_allergy.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app-textfield-custom.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
import '../../custom_validation_error.dart';
import '../bottom_sheet_title.dart';
import 'add_medication.dart';
class UpdateMedicationWidget extends StatefulWidget {
final TextEditingController medicationController;
UpdateMedicationWidget({
Key key,
this.medicationController,
});
@override
_UpdateMedicationWidgetState createState() => _UpdateMedicationWidgetState();
}
class _UpdateMedicationWidgetState extends State<UpdateMedicationWidget> {
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return Column(
children: [
InkWell(
onTap: () {
openMedicationList(context);
},
child: Container(
padding: EdgeInsets.symmetric(
vertical: 8, horizontal: 8.0),
margin:
EdgeInsets.symmetric(vertical: 8),
decoration: BoxDecoration(
border: Border.all(
color: Colors.grey.shade400,
width: 0.5),
borderRadius: BorderRadius.all(
Radius.circular(8),
),
color: Colors.white,
),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
Expanded(
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
AppText(
"${TranslationBase.of(context).addMedication}",
fontSize: SizeConfig
.textMultiplier *
1.8,
color: Colors.black,
fontWeight: FontWeight.bold,
),
],
)),
Icon(
Icons.add_box_rounded,
size: 25,
)
],
),
),
),
SizedBox(
height: 20,
)
],
);
}
openMedicationList(BuildContext context) {
showModalBottomSheet(
backgroundColor: Colors.white,
isScrollControlled: true,
isDismissible: false,
context: context,
builder: (context) {
return AddMedication(
addMedicationFun: (MySelectedAllergy mySelectedAllergy) {},
medicationController: widget.medicationController,
);
});
}
}

@ -1,5 +1,5 @@
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_medication_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/medication/update_medication_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/new_text_Field.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

@ -1,444 +0,0 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/master_key_checkbox_search_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
import 'PriorityBar.dart';
class UpdateHistoryWidget extends StatefulWidget {
final List<MySelectedHistory> myHistoryList;
const UpdateHistoryWidget({Key key, this.myHistoryList}) : super(key: key);
@override
_UpdateHistoryWidgetState createState() => _UpdateHistoryWidgetState();
}
class _UpdateHistoryWidgetState extends State<UpdateHistoryWidget>
with TickerProviderStateMixin {
PageController _controller;
int _currentIndex = 0;
changePageViewIndex(pageIndex) {
_controller.jumpToPage(pageIndex);
}
@override
void initState() {
_controller = new PageController();
super.initState();
}
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return Column(
children: [
InkWell(
onTap: () {
openHistoryList(context);
},
child: Container(
padding: EdgeInsets.symmetric(
vertical: 8, horizontal: 8.0),
margin:
EdgeInsets.symmetric(vertical: 8),
decoration: BoxDecoration(
border: Border.all(
color: Colors.grey.shade400,
width: 0.5),
borderRadius: BorderRadius.all(
Radius.circular(8),
),
color: Colors.white,
),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
Expanded(
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
AppText(
"${TranslationBase.of(context).addHistory}",
fontSize: SizeConfig
.textMultiplier *
1.8,
color: Colors.black,
fontWeight: FontWeight.bold,
),
AppText(
"${TranslationBase.of(context).searchHere}",
fontSize: SizeConfig
.textMultiplier *
1.8,
color: Colors.grey.shade700,
fontWeight: FontWeight.bold,
),
],
)),
Icon(
Icons.add_box_rounded,
size: 25,
)
],
),
),
),
SizedBox(
height: 20,
),
Container(
margin:
EdgeInsets.only(left: 15, right: 15, top: 15),
child: Column(
children: widget.myHistoryList.map((myHistory) {
return Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
child: Texts(
projectViewModel.isArabic
? myHistory.selectedHistory.nameAr
: myHistory.selectedHistory.nameEn,
fontSize: 15,
textDecoration: myHistory.isChecked
? null
: TextDecoration.lineThrough,
// bold: true,
color: Colors.black),
width: MediaQuery
.of(context)
.size
.width * 0.5,
),
if (myHistory.isChecked)
InkWell(
child: Row(
children: [
Container(
child: Texts(
TranslationBase
.of(context)
.remove,
fontSize: 15,
variant: "bodyText",
textDecoration: myHistory.isChecked
? null
: TextDecoration.lineThrough,
// bold: true,
color: HexColor("#B8382C"),),
// width: MediaQuery.of(context).size.width * 0.3,
),
Icon(
FontAwesomeIcons.times,
color: HexColor("#B8382C"),
size: 17,
),
],
),
onTap: () => removeHistory(myHistory.selectedHistory),
)
],
),
SizedBox(
height: 20,
),
],
);
}).toList(),
),
)
],
);
}
removeHistory(MasterKeyModel historyKey) {
List<MySelectedHistory> history =
// ignore: missing_return
widget.myHistoryList.where((element) =>
historyKey.id ==
element.selectedHistory.id &&
historyKey.typeId ==
element.selectedHistory.typeId
).toList();
if (history.length > 0)
setState(() {
history[0].isChecked = false;
});
}
openHistoryList(BuildContext context) {
showModalBottomSheet(
backgroundColor: Colors.white,
isDismissible: false,
isScrollControlled: true,
context: context,
builder: (context) {
return FractionallySizedBox(
heightFactor: 1,
child: AddHistoryDialog(
changePageViewIndex: changePageViewIndex,
controller: _controller,
myHistoryList: widget.myHistoryList,
addSelectedHistories: () {
setState(() {
Navigator.of(context).pop();
});
},
removeHistory: (masterKey) => removeHistory(masterKey),
),
);
});
}
}
class AddHistoryDialog extends StatefulWidget {
final Function changePageViewIndex;
final PageController controller;
final List<MySelectedHistory> myHistoryList;
final Function addSelectedHistories;
final Function (MasterKeyModel) removeHistory;
const AddHistoryDialog(
{Key key, this.changePageViewIndex, this.controller, this.myHistoryList, this.addSelectedHistories, this.removeHistory})
: super(key: key);
@override
_AddHistoryDialogState createState() => _AddHistoryDialogState();
}
class _AddHistoryDialogState extends State<AddHistoryDialog> {
@override
Widget build(BuildContext context) {
return FractionallySizedBox(
heightFactor: 1,
child: BaseView<SOAPViewModel>(
onModelReady: (model) async {
if (model.historyFamilyList.length == 0) {
await model.getMasterLookup(MasterKeysService.HistoryFamily);
}
if (model.historySurgicalList.length == 0) {
await model.getMasterLookup(MasterKeysService.HistorySurgical);
await model.getMasterLookup(MasterKeysService.HistorySports);
}
if (model.historyMedicalList.length == 0) {
await model.getMasterLookup(MasterKeysService.HistoryMedical);
}
},
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
isShowAppBar: false,
body: Center(
child: Container(
child: Column(
children: [
Container(
padding: EdgeInsets.only(
left: 0, right: 5, bottom: 5, top: 5),
decoration: BoxDecoration(
color: Colors.white,
),
height: 115,
child: Container(
padding: EdgeInsets.only(
left: 10, right: 10),
margin: EdgeInsets.only(top: 40),
child: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
RichText(
text: TextSpan(
style: TextStyle(
fontSize:20,
color: Colors.black),
children: <TextSpan>[
new TextSpan(
text: TranslationBase.of(context).addHistory,
style: TextStyle(
color: Color(0xFF2B353E),
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
fontSize: 20)),
],
),
),
InkWell(
onTap: () {
Navigator.pop(context);
},
child: Icon(FontAwesomeIcons.times,
size: 30,
color: Color(0xFF2B353E)))
],
),
],
),
),
),
SizedBox(
height: 10,
),
PriorityBar(onTap: (activePriority) async {
widget.changePageViewIndex(activePriority);
}),
SizedBox(
height: 20,
),
Expanded(
child: FractionallySizedBox(
widthFactor: 0.9,
child: PageView(
physics: NeverScrollableScrollPhysics(),
controller: widget.controller,
onPageChanged: (index) {
setState(() {
// currentIndex = index;
});
},
scrollDirection: Axis.horizontal,
children: <Widget>[
NetworkBaseView(
baseViewModel: model,
child: MasterKeyCheckboxSearchWidget(
model: model,
masterList: model.historyFamilyList,
removeHistory: (history){
setState(() {
widget.removeHistory(history);
});
},
addHistory: (history){
setState(() {
createAndAddHistory(
history);
});
},
addSelectedHistories: (){
widget.addSelectedHistories();
},
isServiceSelected: (master) =>isServiceSelected(master),
),
),
NetworkBaseView(
baseViewModel: model,
child: MasterKeyCheckboxSearchWidget(
model: model,
masterList: model.mergeHistorySurgicalWithHistorySportList,
removeHistory: (history){
setState(() {
widget.removeHistory(history);
});
},
addHistory: (history){
setState(() {
createAndAddHistory(
history);
});
},
addSelectedHistories: (){
widget.addSelectedHistories();
},
isServiceSelected: (master) =>isServiceSelected(master),
),
),
NetworkBaseView(
baseViewModel: model,
child: MasterKeyCheckboxSearchWidget(
model: model,
masterList: model.historyMedicalList,
removeHistory: (history){
setState(() {
widget.removeHistory(history);
});
},
addHistory: (history){
setState(() {
createAndAddHistory(
history);
});
},
addSelectedHistories: (){
widget.addSelectedHistories();
},
isServiceSelected: (master) =>isServiceSelected(master),
),
),
],
),
),
),
],
)),
),
),
));
}
createAndAddHistory(MasterKeyModel history) {
List<MySelectedHistory> myhistory = widget.myHistoryList.where((element) =>
history.id ==
element.selectedHistory.id &&
history.typeId ==
element.selectedHistory.typeId
).toList();
if (myhistory.isEmpty) {
setState(() {
MySelectedHistory mySelectedHistory = MySelectedHistory(
remark: history.remarks ?? "",
selectedHistory: history,
isChecked: true);
widget.myHistoryList.add(mySelectedHistory);
});
} else {
myhistory.first.isChecked = true;
}
}
isServiceSelected(MasterKeyModel masterKey) {
Iterable<MySelectedHistory> history =
widget
.myHistoryList
.where((element) =>
masterKey.id == element.selectedHistory.id &&
masterKey.typeId == element.selectedHistory.typeId &&
element.isChecked);
if (history.length > 0) {
return true;
}
return false;
}
}

@ -1,607 +0,0 @@
import 'package:autocomplete_textfield/autocomplete_textfield.dart';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/model/get_medication_response_model.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/models/SOAP/my_selected_allergy.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app-textfield-custom.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
import '../custom_validation_error.dart';
class UpdateMedicationWidget extends StatefulWidget {
final TextEditingController medicationController;
UpdateMedicationWidget({
Key key,
this.medicationController,
});
@override
_UpdateMedicationWidgetState createState() => _UpdateMedicationWidgetState();
}
class _UpdateMedicationWidgetState extends State<UpdateMedicationWidget> {
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return Column(
children: [
InkWell(
onTap: () {
openMedicationList(context);
},
child: Container(
padding: EdgeInsets.symmetric(
vertical: 8, horizontal: 8.0),
margin:
EdgeInsets.symmetric(vertical: 8),
decoration: BoxDecoration(
border: Border.all(
color: Colors.grey.shade400,
width: 0.5),
borderRadius: BorderRadius.all(
Radius.circular(8),
),
color: Colors.white,
),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
Expanded(
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
AppText(
"${TranslationBase.of(context).addMedication}",
fontSize: SizeConfig
.textMultiplier *
1.8,
color: Colors.black,
fontWeight: FontWeight.bold,
),
],
)),
Icon(
Icons.add_box_rounded,
size: 25,
)
],
),
),
),
SizedBox(
height: 20,
)
],
);
}
openMedicationList(BuildContext context) {
showModalBottomSheet(
backgroundColor: Colors.white,
isScrollControlled: true,
isDismissible: false,
context: context,
builder: (context) {
return AddMedication(
addMedicationFun: (MySelectedAllergy mySelectedAllergy) {},
medicationController: widget.medicationController,
);
});
}
}
// ignore: must_be_immutable
class AddMedication extends StatefulWidget {
final Function addMedicationFun;
TextEditingController medicationController;
AddMedication({Key key, this.addMedicationFun, this.medicationController})
: super(key: key);
@override
_AddMedicationState createState() => _AddMedicationState();
}
class _AddMedicationState extends State<AddMedication> {
MasterKeyModel _selectedMedicationDose;
MasterKeyModel _selectedMedicationStrength;
MasterKeyModel _selectedMedicationRoute;
MasterKeyModel _selectedMedicationFrequency;
MasterKeyModel _selectedAllergy;
TextEditingController doseController = TextEditingController();
TextEditingController strengthController = TextEditingController();
TextEditingController routeController = TextEditingController();
TextEditingController frequencyController = TextEditingController();
GetMedicationResponseModel _selectedMedication;
GlobalKey key =
new GlobalKey<AutoCompleteTextFieldState<GetMedicationResponseModel>>();
bool isFormSubmitted = false;
InputDecoration textFieldSelectorDecoration(
String hintText, String selectedText, bool isDropDown,
{IconData icon}) {
return InputDecoration(
filled: true,
fillColor: Colors.white,
contentPadding: EdgeInsets.symmetric(vertical: 10, horizontal: 10),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 0.00),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 0.00),
borderRadius: BorderRadius.circular(8),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 0.00),
borderRadius: BorderRadius.circular(8),
),
hintText: selectedText != null ? selectedText : hintText,
suffixIcon: isDropDown ? Icon(icon ?? Icons.arrow_drop_down) : null,
hintStyle: TextStyle(
fontSize: 10,
color: Theme
.of(context)
.hintColor,
fontWeight: FontWeight.w700
),
);
}
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
final screenSize = MediaQuery
.of(context)
.size;
return FractionallySizedBox(
child: BaseView<SOAPViewModel>(
onModelReady: (model) async {
if (model.medicationStrengthList.length == 0) {
await model.getMasterLookup(MasterKeysService.MedicationStrength,);
}
if (model.medicationFrequencyList.length == 0) {
await model.getMasterLookup(MasterKeysService.MedicationFrequency);
}
if (model.medicationDoseTimeList.length == 0) {
await model.getMasterLookup(MasterKeysService.MedicationDoseTime);
}
if (model.medicationRouteList.length == 0) {
await model.getMasterLookup(MasterKeysService.MedicationRoute);
}
if (model.allMedicationList.length == 0)
await model.getMedicationList();
},
builder: (_, model, w) =>
AppScaffold(
baseViewModel: model,
isShowAppBar: false,
body: Center(
child: Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
padding:
EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5),
decoration: BoxDecoration(
color: Colors.white,
),
height: 115,
child: Container(
padding: EdgeInsets.only(left: 10, right: 10),
margin: EdgeInsets.only(top: 40),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
RichText(
text: TextSpan(
style: TextStyle(
fontSize: 20, color: Colors.black),
children: <TextSpan>[
new TextSpan(
text: TranslationBase.of(context)
.addMedication,
style: TextStyle(
color: Color(0xFF2B353E),
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
fontSize: 20)),
],
),
),
InkWell(
onTap: () {
Navigator.pop(context);
},
child: Icon(FontAwesomeIcons.times,
size: 30, color: Color(0xFF2B353E)))
],
),
],
),
),
),
SizedBox(
height: 10,
),
SizedBox(
height: 16,
),
Expanded(
child: Center(
child: FractionallySizedBox(
widthFactor: 0.9,
child: Column(
children: [
SizedBox(
height: 16,
),
SizedBox(
height: 16,
),
Container(
height: screenSize.height * 0.070,
child: InkWell(
onTap: model.allMedicationList != null
? () {
setState(() {
_selectedMedication = null;
});
}
: null,
child: _selectedMedication == null
? AutoCompleteTextField<
GetMedicationResponseModel>(
decoration:
textFieldSelectorDecoration(
TranslationBase.of(context)
.searchMedicineNameHere,
_selectedMedication != null
? _selectedMedication
.genericName
: null,
true,
icon: EvaIcons.search),
itemSubmitted: (item) => setState(
() =>
_selectedMedication = item),
key: key,
suggestions:
model.allMedicationList,
itemBuilder: (context,
suggestion) =>
new Padding(
child: Texts(suggestion
.description +
'/' +
suggestion.genericName),
padding:
EdgeInsets.all(8.0)),
itemSorter: (a, b) => 1,
itemFilter: (suggestion, input) =>
suggestion.genericName
.toLowerCase()
.startsWith(
input.toLowerCase()) ||
suggestion.description
.toLowerCase()
.startsWith(
input.toLowerCase()) ||
suggestion.keywords
.toLowerCase()
.startsWith(
input.toLowerCase()),
)
: AppTextFieldCustom(
hintText: _selectedMedication != null
? _selectedMedication
.description +
(' (${_selectedMedication.genericName} )')
: TranslationBase.of(context)
.searchMedicineNameHere,
minLines: 2,
maxLines: 2,
enabled: false,
),
),
),
if (isFormSubmitted &&
_selectedMedication == null)
CustomValidationError(),
SizedBox(
height: 5,
),
AppTextFieldCustom(
enabled: false,
onClick: model.medicationDoseTimeList != null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list: model.medicationDoseTimeList,
okText:
TranslationBase.of(context).ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationDose =
selectedValue;
doseController
.text = projectViewModel
.isArabic
? _selectedMedicationDose
.nameAr
: _selectedMedicationDose
.nameEn;
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
hintText:
TranslationBase.of(context).doseTime,
//TODO add translation
maxLines: 2,
minLines: 2,
isDropDown: true,
controller: doseController,
),
SizedBox(
height: 5,
),
if (isFormSubmitted &&
_selectedMedicationDose == null)
CustomValidationError(),
SizedBox(
height: 5,
),
AppTextFieldCustom(
enabled: false,
isDropDown: true,
onClick: model.medicationStrengthList != null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list: model.medicationStrengthList,
okText:
TranslationBase.of(context).ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationStrength =
selectedValue;
strengthController
.text = projectViewModel
.isArabic
? _selectedMedicationStrength
.nameAr
: _selectedMedicationStrength
.nameEn;
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
hintText:
TranslationBase.of(context).strength,
// hintColor: Colors.black,
// fontWeight: FontWeight.w600,
maxLines: 2,
minLines: 2,
controller: strengthController,
),
SizedBox(
height: 5,
),
if (isFormSubmitted &&
_selectedMedicationStrength == null)
CustomValidationError(),
SizedBox(
height: 5,
),
AppTextFieldCustom(
enabled: false,
isDropDown: true,
onClick: model.medicationRouteList != null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list: model.medicationRouteList,
okText:
TranslationBase.of(context).ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationRoute =
selectedValue;
routeController
.text = projectViewModel
.isArabic
? _selectedMedicationRoute
.nameAr
: _selectedMedicationRoute
.nameEn;
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
hintText: TranslationBase.of(context).route,
maxLines: 2,
minLines: 2,
controller: routeController,
),
SizedBox(
height: 5,
),
if (isFormSubmitted &&
_selectedMedicationRoute == null)
CustomValidationError(),
SizedBox(
height: 5,
),
AppTextFieldCustom(
onClick: model.medicationFrequencyList != null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list: model.medicationFrequencyList,
okText:
TranslationBase.of(context).ok,
okFunction: (selectedValue) {
setState(() {
_selectedMedicationFrequency =
selectedValue;
frequencyController
.text = projectViewModel
.isArabic
? _selectedMedicationFrequency
.nameAr
: _selectedMedicationFrequency
.nameEn;
});
},
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
hintText:
TranslationBase.of(context).frequency,
//TODO add translation
enabled: false,
// hintColor: Colors.black,
maxLines: 2,
minLines: 2,
isDropDown: true,
controller: frequencyController,
),
SizedBox(
height: 5,
),
if (isFormSubmitted &&
_selectedMedicationFrequency == null)
CustomValidationError(),
SizedBox(
height: 30,
),
],
)),
),
),
]),
),
),
bottomSheet: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
border: Border.all(color: HexColor('#707070'), width: 0.30),
),
height: MediaQuery.of(context).size.height * 0.1,
width: double.infinity,
child: Column(
children: [
SizedBox(
height: 10,
),
Container(
child: FractionallySizedBox(
widthFactor: .80,
child: Center(
child: AppButton(
title: TranslationBase.of(context).addMedication.toUpperCase(),
color: Color(0xFF359846),
onPressed: () {
setState(() {
isFormSubmitted = true;
});
if (_selectedMedication != null &&
_selectedMedicationDose != null &&
_selectedMedicationStrength != null &&
_selectedMedicationRoute != null &&
_selectedMedicationFrequency != null) {
widget.medicationController.text = widget
.medicationController.text +
'${_selectedMedication.description} (${TranslationBase.of(context).doseTime} ) ${doseController.text} (${TranslationBase.of(context).strength}) ${strengthController.text} (${TranslationBase.of(context).route}) ${routeController.text} (${TranslationBase.of(context).frequency}) ${frequencyController.text} \n \n';
Navigator.of(context).pop();
}
},
),
),
),
),
SizedBox(
height: 5,
),
],
),
),
),
),
);
}
}

@ -18,8 +18,8 @@ import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_history_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/allergies/update_allergies_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/history/update_history_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';

@ -19,6 +19,7 @@ class DoctorCardInsurance extends StatelessWidget {
final String clinic;
final String approvalStatus;
final String patientOut;
final String branch2;
DoctorCardInsurance(
{this.doctorName,
@ -31,7 +32,8 @@ class DoctorCardInsurance extends StatelessWidget {
this.isPrescriptions = false,
this.clinic,
this.approvalStatus,
this.patientOut});
this.patientOut,
this.branch2});
@override
Widget build(BuildContext context) {
@ -108,7 +110,7 @@ class DoctorCardInsurance extends StatelessWidget {
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Container(
child: LargeAvatar(
@ -161,23 +163,38 @@ class DoctorCardInsurance extends StatelessWidget {
child: Texts(
clinic,
fontWeight: FontWeight.w700,
fontSize: 15.0,
),
)
],
),
if (branch != null)
if (branch2 != null)
Row(
children: <Widget>[
Texts(
'Approval No: ',
'Branch:',
//color: Colors.grey[500],
),
Texts(
branch,
branch2,
fontWeight: FontWeight.w700,
fontSize: 15.0,
)
],
)
),
Row(
children: <Widget>[
Texts(
'Approval No: ',
//color: Colors.grey[500],
),
Texts(
branch,
fontWeight: FontWeight.w700,
fontSize: 15.0,
)
],
),
]),
),
),

@ -7,11 +7,13 @@ import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/custom_validation_error.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/new_text_Field.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'app-textfield-custom.dart';
import 'app_texts_widget.dart';
import 'dialogs/master_key_dailog.dart';
import 'expandable-widget-header-body.dart';
@ -62,132 +64,130 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return Container(
child: Column(
children: [
Expanded(
child: Container(
height: MediaQuery.of(context).size.height * 0.62,
child: Center(
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Column(
children: [
TextFields(
hintText: widget.hintSearchText ??
TranslationBase.of(context).selectAllergy,
borderWidth: 0.0,
padding: EdgeInsets.all(20),
borderRadius: 0,
suffixIcon: EvaIcons.search,
onChanged: (value) {
filterSearchResults(value);
},
),
SizedBox(
height: 10,
),
Expanded(
child: FractionallySizedBox(
widthFactor: 0.9,
child: Container(
height: MediaQuery.of(context).size.height * 0.60,
child: ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
bool isSelected =
widget.isServiceSelected(items[index]);
MySelectedAllergy mySelectedAllergy;
if (isSelected) {
mySelectedAllergy =
widget.getServiceSelectedAllergy(
items[index]);
}
TextEditingController remarkController =
TextEditingController(
text: isSelected
? mySelectedAllergy.remark
: null);
TextEditingController severityController =
TextEditingController(
text: isSelected
? mySelectedAllergy
.selectedAllergySeverity !=
null
? projectViewModel.isArabic
? mySelectedAllergy
.selectedAllergySeverity
.nameAr
: mySelectedAllergy
.selectedAllergySeverity
.nameEn
: null
: null);
return HeaderBodyExpandableNotifier(
headerWidget: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Checkbox(
value:
widget.isServiceSelected(
items[index]),
activeColor: Colors.red[800],
onChanged: (bool newValue) {
child: Expanded(
child: Column(
children: [
Expanded(
child: Container(
height: MediaQuery.of(context).size.height * 0.70,
child: Center(
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Column(
children: [
TextFields(
hintText: widget.hintSearchText ??
TranslationBase.of(context).selectAllergy,
borderWidth: 0.0,
padding: EdgeInsets.all(20),
borderRadius: 0,
suffixIcon: EvaIcons.search,
onChanged: (value) {
filterSearchResults(value);
},
),
SizedBox(
height: 10,
),
Expanded(
child: FractionallySizedBox(
widthFactor: 0.9,
child: Container(
height: MediaQuery.of(context).size.height * 0.60,
child: ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
bool isSelected =
widget.isServiceSelected(items[index]);
MySelectedAllergy mySelectedAllergy;
if (isSelected) {
mySelectedAllergy =
widget.getServiceSelectedAllergy(
items[index]);
}
TextEditingController remarkController =
TextEditingController(
text: isSelected
? mySelectedAllergy.remark
: null);
TextEditingController severityController =
TextEditingController(
text: isSelected
? mySelectedAllergy
.selectedAllergySeverity !=
null
? projectViewModel.isArabic
? mySelectedAllergy
.selectedAllergySeverity
.nameAr
: mySelectedAllergy
.selectedAllergySeverity
.nameEn
: null
: null);
return HeaderBodyExpandableNotifier(
headerWidget: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Checkbox(
value:
widget.isServiceSelected(
items[index]),
activeColor: Colors.red[800],
onChanged: (bool newValue) {
setState(() {
if (widget
.isServiceSelected(
items[index])) {
widget.removeAllergy(
items[index]);
} else {
MySelectedAllergy
mySelectedAllergy =
new MySelectedAllergy(
selectedAllergy:
items[index],
selectedAllergySeverity:
_selectedAllergySeverity,
remark: null,
isChecked: true,
isExpanded: true);
widget.addAllergy(
mySelectedAllergy);
}
});
}),
InkWell(
onTap: () {
setState(() {
if (widget
.isServiceSelected(
items[index])) {
items[index])) {
widget.removeAllergy(
items[index]);
} else {
// TODO add Allergy
MySelectedAllergy
mySelectedAllergy =
new MySelectedAllergy(
selectedAllergy:
items[index],
selectedAllergySeverity:
_selectedAllergySeverity,
remark: null,
isChecked: true,
isExpanded: true);
mySelectedAllergy =
new MySelectedAllergy(
selectedAllergy:
items[index],
selectedAllergySeverity:
_selectedAllergySeverity,
remark: null,
isChecked: true,
isExpanded: true);
widget.addAllergy(
mySelectedAllergy);
}
});
}),
InkWell(
onTap: () {
setState(() {
if (widget
.isServiceSelected(
items[index])) {
widget.removeAllergy(
items[index]);
} else {
// TODO add Allergy
MySelectedAllergy
mySelectedAllergy =
new MySelectedAllergy(
selectedAllergy:
items[index],
selectedAllergySeverity:
_selectedAllergySeverity,
remark: null,
isChecked: true,
isExpanded: true);
widget.addAllergy(
mySelectedAllergy);
}
});
},
child: Expanded(
},
child: Padding(
padding: const EdgeInsets
.symmetric(
@ -214,396 +214,163 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState
),
),
),
),
],
),
InkWell(
onTap: () {
if (mySelectedAllergy != null) {
setState(() {
mySelectedAllergy
.isExpanded =
mySelectedAllergy
.isExpanded
? false
: true;
});
}
},
child: Icon((mySelectedAllergy !=
null
? mySelectedAllergy
.isExpanded
: false)
? EvaIcons
.arrowIosUpwardOutline
: EvaIcons
.arrowIosDownwardOutline))
],
),
bodyWidget: Column(
children: [
TextFields(
onTapTextFields: widget.model
.allergySeverityList !=
null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list: widget.model
.allergySeverityList,
okText:
TranslationBase.of(
context)
.ok,
okFunction:
(selectedValue) {
setState(() {
mySelectedAllergy
.selectedAllergySeverity =
selectedValue;
});
},
);
showDialog(
barrierDismissible:
false,
context: context,
builder: (BuildContext
context) {
return dialog;
],
),
InkWell(
onTap: () {
if (mySelectedAllergy != null) {
setState(() {
mySelectedAllergy
.isExpanded =
mySelectedAllergy
.isExpanded
? false
: true;
});
}
},
);
}
: null,
hasLabelText:
mySelectedAllergy != null &&
mySelectedAllergy
.selectedAllergySeverity !=
null
? true
: false,
showLabelText: true,
hintText:
TranslationBase
.of(context)
.selectSeverity,
fontSize: 13.5,
readOnly: true,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 2,
minLines: 1,
controller: severityController,
validator: (value) {
if (value == null)
return TranslationBase
.of(
context)
.emptyMessage;
else
return null;
}),
SizedBox(
height: 5,
),
if(isSubmitted &&
mySelectedAllergy
.selectedAllergySeverity == null)
Row(
children: [
CustomValidationError(),
],
mainAxisAlignment: MainAxisAlignment.start,
),
SizedBox(
height: 10,
child: Icon((mySelectedAllergy !=
null
? mySelectedAllergy
.isExpanded
: false)
? EvaIcons
.arrowIosUpwardOutline
: EvaIcons
.arrowIosDownwardOutline))
],
),
Container(
margin: EdgeInsets.only(
left: 0, right: 0, top: 15),
child: TextFields(
hasLabelText:
remarkController.text !=
''
? true
: false,
showLabelText: true,
hintText: TranslationBase
.of(
context)
.remarks,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 25,
minLines: 10,
initialValue: isSelected
? mySelectedAllergy
.remark : '',
// controller: remarkControlle
onChanged: (value) {
if (isSelected) {
mySelectedAllergy
.remark = value;
};
},
validator: (value) {
if (value == null)
return TranslationBase
.of(
bodyWidget: Column(
children: [
AppTextFieldCustom(
onClick: widget.model
.allergySeverityList !=
null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list: widget.model
.allergySeverityList,
okText:
TranslationBase.of(
context)
.emptyMessage;
else
return null;
}),
),
SizedBox(
height: 10,
),
],),
isExpand: mySelectedAllergy != null
? mySelectedAllergy.isExpanded
: false,
);
Column(
children: [
InkWell(
onTap: () {
setState(() {
if (widget.isServiceSelected(
items[index])) {
widget
.removeAllergy(
items[index]);
} else {
// TODO add Allergy
MySelectedAllergy
mySelectedAllergy =
new MySelectedAllergy(
selectedAllergy:
items[index],
selectedAllergySeverity:
_selectedAllergySeverity,
remark: null,
isChecked: true);
widget.addAllergy(
mySelectedAllergy);
.ok,
okFunction:
(selectedValue) {
setState(() {
mySelectedAllergy
.selectedAllergySeverity =
selectedValue;
});
},
);
showDialog(
barrierDismissible:
false,
context: context,
builder: (BuildContext
context) {
return dialog;
},
);
}
});
},
child: Column(
children: [
Row(
children: [
Checkbox(
value: widget
.isServiceSelected(
items[index]),
activeColor:
Colors.red[800],
onChanged: (bool newValue) {
// setState(() {
// if (widget
// .isServiceSelected(items[index])) {
// widget.removeHistory(items[index]);
// } else {
// widget.addHistory(items[index]);
// }
// });
}),
Expanded(
child: Padding(
padding: const EdgeInsets
.symmetric(
horizontal: 10,
vertical: 0),
child: AppText(
projectViewModel.isArabic
? items[index]
.nameAr !=
""
? items[index]
.nameAr
: items[index]
.nameEn
: items[index].nameEn,
color: Color(0xFF575757),
fontSize: 16,
fontWeight:
FontWeight.w600,
),
),
),
],
),
if(widget
.isServiceSelected(
items[index]))
Column(children: [
TextFields(
onTapTextFields: widget.model
.allergySeverityList !=
null
? () {
MasterKeyDailog dialog =
MasterKeyDailog(
list: widget.model
.allergySeverityList,
okText:
TranslationBase.of(
context)
.ok,
okFunction:
(selectedValue) {
setState(() {
mySelectedAllergy
.selectedAllergySeverity =
selectedValue;
});
},
);
showDialog(
barrierDismissible:
false,
context: context,
builder: (BuildContext
context) {
return dialog;
},
);
}
: null,
hasLabelText:
mySelectedAllergy
.selectedAllergySeverity !=
null
? true
: false,
showLabelText: true,
hintText:
TranslationBase
.of(context)
.selectSeverity,
fontSize: 13.5,
readOnly: true,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 2,
minLines: 1,
controller: severityController,
validator: (value) {
if (value == null)
return TranslationBase
.of(
context)
.emptyMessage;
else
return null;
}),
SizedBox(
height: 5,
),
if(isSubmitted &&
mySelectedAllergy
.selectedAllergySeverity == null)
Row(
: null,
isDropDown: true,
hintText:
TranslationBase
.of(context)
.selectSeverity,
enabled: false,
maxLines: 2,
minLines: 2,
controller: severityController,),
SizedBox(
height: 5,
),
if(isSubmitted && mySelectedAllergy !=null &&
mySelectedAllergy
.selectedAllergySeverity == null)
Row(
children: [
CustomValidationError(),
],
mainAxisAlignment: MainAxisAlignment.start,
),
children: [
CustomValidationError(),
],
mainAxisAlignment: MainAxisAlignment.start,
),
SizedBox(
height: 10,
),
Container(
margin: EdgeInsets.only(
left: 0, right: 0, top: 15),
child: TextFields(
hasLabelText:
remarkController.text !=
''
? true
: false,
showLabelText: true,
hintText: TranslationBase
.of(
context)
.remarks,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 25,
minLines: 10,
initialValue: isSelected
? mySelectedAllergy
.remark : '',
// controller: remarkControlle
SizedBox(
height: 10,
),
Container(
margin: EdgeInsets.only(
left: 0, right: 0, top: 15),
child: NewTextFields(
hintText: TranslationBase
.of(
context)
.remarks,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 25,
minLines: 3,
initialValue: isSelected
? mySelectedAllergy
.remark : '',
// controller: remarkControlle
onChanged: (value) {
if (isSelected) {
mySelectedAllergy
.remark = value;
};
},
onChanged: (value) {
if (isSelected) {
mySelectedAllergy
.remark = value;
}
},
validator: (value) {
if (value == null)
return TranslationBase
.of(
context)
.emptyMessage;
else
return null;
}),
),
SizedBox(
height: 10,
),
],)
],
validator: (value) {
if (value == null)
return TranslationBase
.of(
context)
.emptyMessage;
else
return null;
}),
),
),
// DividerWithSpacesAround(),
],
);
},
SizedBox(
height: 10,
),
],),
isExpand: mySelectedAllergy != null
? mySelectedAllergy.isExpanded
: false,
);
},
),
),
),
),
),
],
)
)),
],
)
)),
),
),
),
SizedBox(
height: 10,
),
if (widget.model.state == ViewState.Idle)
AppButton(
title: "Add Selected Allergy",
padding: 10,
color: Color(0xFF359846),
onPressed: () {
setState(() {
isSubmitted = true;
});
widget.addSelectedAllergy();
},
SizedBox(
height: 10,
),
],
if (widget.model.state == ViewState.Idle)
AppButton(
title: "Add Selected Allergy",
padding: 10,
color: Color(0xFF359846),
onPressed: () {
setState(() {
isSubmitted = true;
});
widget.addSelectedAllergy();
},
),
],
),
),
);
}

@ -34,10 +34,14 @@ class NetworkBaseView extends StatelessWidget {
case ViewState.Error:
return Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(height: 100,),
Image.asset('assets/images/no-data.png',height: 250),
Texts(baseViewModel.error??'')
Image.asset('assets/images/no-data.png'),
Padding(
padding: const EdgeInsets.all(8.0),
child: Texts(baseViewModel.error??''),
)
],
),

Loading…
Cancel
Save