merge-requests/474/head
Sultan Khan 5 years ago
commit 0080b66c8e

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

@ -322,4 +322,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 649616dc336b3659ac6b2b25159d8e488e042b69 PODFILE CHECKSUM: 649616dc336b3659ac6b2b25159d8e488e042b69
COCOAPODS: 1.10.0.rc.1 COCOAPODS: 1.10.1

@ -843,6 +843,10 @@ const Map<String, Map<String, String>> localizedValues = {
"en": "Step", "en": "Step",
"ar": "خطوة" "ar": "خطوة"
}, },
"fieldRequired": {
"en": "This field is required",
"ar": "هذه الخانة مطلوبه"
},
"applyOrRescheduleLeave": { "applyOrRescheduleLeave": {
"en": "Apply Or Reschedule Leave", "en": "Apply Or Reschedule Leave",
"ar": "التقدم بطلب أو إعادة جدولة الإجازة" "ar": "التقدم بطلب أو إعادة جدولة الإجازة"

@ -19,7 +19,7 @@ class MedicalFileViewModel extends BaseViewModel {
await _medicalFileService.getMedicalFile(mrn: mrn); await _medicalFileService.getMedicalFile(mrn: mrn);
if (_medicalFileService.hasError) { if (_medicalFileService.hasError) {
error = _medicalFileService.error; error = _medicalFileService.error;
setState(ViewState.ErrorLocal); setState(ViewState.Error);
} else } else
setState(ViewState.Idle); setState(ViewState.Idle);
} }

@ -46,7 +46,7 @@ class MyApp extends StatelessWidget {
child: Consumer<ProjectViewModel>( child: Consumer<ProjectViewModel>(
builder: (context, projectProvider, child) => MaterialApp( builder: (context, projectProvider, child) => MaterialApp(
showSemanticsDebugger: false, showSemanticsDebugger: false,
title: 'Flutter Demo', title: 'Doctors App',
locale: projectProvider.appLocal, locale: projectProvider.appLocal,
localizationsDelegates: [ localizationsDelegates: [
TranslationBaseDelegate(), TranslationBaseDelegate(),

@ -131,181 +131,6 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
), ),
); );
// return Padding(
// padding: EdgeInsets.symmetric(
// horizontal: 12.0, vertical: 8.0),
// child: InkWell(
// child: 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(
// mainAxisAlignment:
// MainAxisAlignment.spaceBetween,
// children: [
// Row(
// children: [
// AppText(
// model
// .medicalFileList[0]
// .entityList[0]
// .timelines[index]
// .doctorName,
// fontWeight: FontWeight.w700,
// fontSize: 17.0,
// fontFamily: 'Poppins',
// )
// ],
// ),
// Row(
// children: [
// AppText(
// Helpers.convertStringToDate(model
// .medicalFileList[0]
// .entityList[0]
// .timelines[index]
// .date)
// .day
// .toString() +
// "/",
// ),
// AppText(
// Helpers.convertStringToDate(model
// .medicalFileList[0]
// .entityList[0]
// .timelines[index]
// .date)
// .month
// .toString() +
// "/",
// ),
// AppText(
// Helpers.convertStringToDate(
// model
// .medicalFileList[0]
// .entityList[0]
// .timelines[index]
// .date)
// .year
// .toString(),
// ),
// ],
// )
// ],
// ),
// Row(
// mainAxisAlignment:
// MainAxisAlignment.start,
// children: [
// Padding(
// padding: const EdgeInsets.all(8.0),
// child: Column(
// children: [
// ClipRRect(
// borderRadius:
// BorderRadius.all(
// Radius.circular(30)),
// child: Image.network(
// 'https://previews.123rf.com/images/yupiramos/yupiramos1705/yupiramos170524444/78443570-a-female-doctor-avatar-character-vector-illustration-design.jpg',
// fit: BoxFit.cover,
// width: 60,
// height: 70,
// ),
// ),
// ],
// ),
// ),
// Column(
// crossAxisAlignment:
// CrossAxisAlignment.start,
// children: [
// Row(
// children: [
// AppText(
// TranslationBase.of(context)
// .clinic +
// ": ",
// ),
// AppText(
// model
// .medicalFileList[0]
// .entityList[0]
// .timelines[index]
// .clinicName,
// fontWeight: FontWeight.w600,
// ),
// ],
// ),
// Row(
// mainAxisAlignment:
// MainAxisAlignment
// .spaceBetween,
// children: [
// AppText(
// TranslationBase.of(context)
// .branch +
// ": ",
// ),
// AppText(
// model
// .medicalFileList[0]
// .entityList[0]
// .timelines[index]
// .projectName,
// fontWeight: FontWeight.w600,
// ),
// ],
// ),
// ],
// ),
// ],
// ),
// Row(
// mainAxisAlignment:
// MainAxisAlignment.end,
// children: [
// Column(
// children: [
// Icon(
// Icons.remove_red_eye,
// size: 30.0,
// )
// ],
// )
// ],
// ),
// ],
// ),
// ),
// onTap: () {
// Navigator.push(
// context,
// MaterialPageRoute(
// builder: (context) =>
// MedicalFileDetails(
// age: patient.age,
// firstName: patient.firstName,
// lastName: patient.lastName,
// gender: patient.genderDescription,
// encounterNumber: index,
// pp: patient.patientId,
// patient: patient,
// )),
// );
// },
// ),
// );
}) })
: Column( : Column(
children: [ children: [

@ -116,7 +116,8 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
title: AppText( title: AppText(
TranslationBase.of(context).inPatient, TranslationBase.of(context).inPatient,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
fontSize: SizeConfig.textMultiplier * 2.1, fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 2.2,
), ),
value: _inPatient, value: _inPatient,
onChanged: (newValue) { onChanged: (newValue) {
@ -124,6 +125,7 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
_inPatient = newValue; _inPatient = newValue;
}); });
}, },
activeColor: HexColor("#D02127"),
controlAffinity: controlAffinity:
ListTileControlAffinity.leading, ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0), contentPadding: EdgeInsets.all(0),
@ -132,7 +134,8 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
title: AppText( title: AppText(
TranslationBase.of(context).emergencyCase, TranslationBase.of(context).emergencyCase,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
fontSize: SizeConfig.textMultiplier * 2.1, fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 2.2,
), ),
value: _emergencyCase, value: _emergencyCase,
onChanged: (newValue) { onChanged: (newValue) {
@ -140,12 +143,12 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
_emergencyCase = newValue; _emergencyCase = newValue;
}); });
}, },
activeColor: HexColor("#D02127"),
controlAffinity: controlAffinity:
ListTileControlAffinity.leading, ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0), contentPadding: EdgeInsets.all(0),
), ),
AppTextFieldCustom( AppTextFieldCustom(
height: screenSize.height * 0.075,
hintText: TranslationBase.of(context) hintText: TranslationBase.of(context)
.durationOfIllness, .durationOfIllness,
dropDownText: "3", dropDownText: "3",
@ -170,7 +173,7 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
color: Color(0xFFCC9B14), color: Color(0xFFCC9B14),
), ),
SizedBox( SizedBox(
width: 4, width: 8,
), ),
AppText( AppText(
"BP (H/L)", "BP (H/L)",
@ -192,7 +195,7 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
], ],
), ),
SizedBox( SizedBox(
width: 4, width: 6,
), ),
Expanded( Expanded(
child: Row( child: Row(
@ -205,7 +208,7 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
), ),
SizedBox( SizedBox(
width: 8, width: 4,
), ),
Expanded( Expanded(
child: AppText( child: AppText(
@ -222,7 +225,7 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
], ],
), ),
SizedBox( SizedBox(
height: 4, height: 2,
), ),
Row( Row(
mainAxisAlignment: mainAxisAlignment:
@ -231,14 +234,14 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
Row( Row(
children: [ children: [
AppText( AppText(
"${TranslationBase.of(context).pulseBeats} :", "${TranslationBase.of(context).pulseBeats}:",
fontSize: fontSize:
SizeConfig.textMultiplier * 1.8, SizeConfig.textMultiplier * 1.8,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
), ),
SizedBox( SizedBox(
width: 8, width: 4,
), ),
AppText( AppText(
"${model.patientVitalSigns.pulseBeatPerMinute}", "${model.patientVitalSigns.pulseBeatPerMinute}",
@ -258,8 +261,9 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
TranslationBase.of(context) TranslationBase.of(context)
.chiefComplaintsAndSymptoms, .chiefComplaintsAndSymptoms,
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 2.1, fontSize: SizeConfig.textMultiplier * 2.2,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
color: Color(0xFF2E303A),
), ),
SizedBox( SizedBox(
height: 4, height: 4,
@ -269,6 +273,7 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
.patientFeelsPainInHisBackAndCough, .patientFeelsPainInHisBackAndCough,
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
color: Color(0xFF575757),
fontSize: SizeConfig.textMultiplier * 1.8, fontSize: SizeConfig.textMultiplier * 1.8,
), ),
SizedBox( SizedBox(
@ -292,7 +297,8 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
AppText( AppText(
TranslationBase.of(context).otherConditions, TranslationBase.of(context).otherConditions,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 2.0, fontSize: SizeConfig.textMultiplier * 2.1,
color: Color(0xFF2E303A),
), ),
...List.generate( ...List.generate(
conditionsData.length, conditionsData.length,
@ -302,6 +308,7 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
fontSize: fontSize:
SizeConfig.textMultiplier * 2.1, SizeConfig.textMultiplier * 2.1,
fontFamily: 'Poppins',
), ),
value: conditionsData[index] value: conditionsData[index]
['isChecked'], ['isChecked'],
@ -319,7 +326,6 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
height: 8, height: 8,
), ),
AppTextFieldCustom( AppTextFieldCustom(
height: screenSize.height * 0.075,
hintText: TranslationBase.of(context).other, hintText: TranslationBase.of(context).other,
dropDownText: "None", dropDownText: "None",
enabled: false, enabled: false,
@ -328,7 +334,6 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
height: 8, height: 8,
), ),
AppTextFieldCustom( AppTextFieldCustom(
height: screenSize.height * 0.075,
hintText: TranslationBase.of(context).how, hintText: TranslationBase.of(context).how,
dropDownText: "None", dropDownText: "None",
enabled: false, enabled: false,
@ -340,7 +345,6 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
children: [ children: [
Expanded( Expanded(
child: AppTextFieldCustom( child: AppTextFieldCustom(
height: screenSize.height * 0.075,
hintText: hintText:
TranslationBase.of(context).when, TranslationBase.of(context).when,
dropDownText: "None", dropDownText: "None",
@ -352,7 +356,6 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
), ),
Expanded( Expanded(
child: AppTextFieldCustom( child: AppTextFieldCustom(
height: screenSize.height * 0.075,
hintText: hintText:
TranslationBase.of(context).where, TranslationBase.of(context).where,
dropDownText: "None", dropDownText: "None",
@ -379,7 +382,8 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
AppText( AppText(
TranslationBase.of(context).significantSigns, TranslationBase.of(context).significantSigns,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 2.1, fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 2.2,
), ),
SizedBox( SizedBox(
height: 8, height: 8,

@ -4,6 +4,15 @@ import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
/// *
/// By Mousa Zaid Mousa Abuzaid
/// At 13/4/2021
/*
All hex value from 100% to 0% alpha: used in line 122
https://gist.github.com/lopspower/03fb1cc0ac9f32ef38f4
*/
class PageStepperWidget extends StatelessWidget { class PageStepperWidget extends StatelessWidget {
final int stepsCount; final int stepsCount;
final int currentStepIndex; final int currentStepIndex;
@ -13,7 +22,7 @@ class PageStepperWidget extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
double dividerWidth = (screenSize.width / stepsCount) - (5 * stepsCount); double dividerWidth = (screenSize.width / stepsCount) - (10 * stepsCount);
return Container( return Container(
margin: EdgeInsets.symmetric(vertical: 16.0, horizontal: 16.0), margin: EdgeInsets.symmetric(vertical: 16.0, horizontal: 16.0),
@ -38,6 +47,7 @@ class PageStepperWidget extends StatelessWidget {
} }
class StepWidget extends StatelessWidget { class StepWidget extends StatelessWidget {
final int index; final int index;
final bool isInProgress; final bool isInProgress;
final bool isFinalStep; final bool isFinalStep;
@ -71,24 +81,25 @@ class StepWidget extends StatelessWidget {
width: 30, width: 30,
height: 30, height: 30,
decoration: BoxDecoration( decoration: BoxDecoration(
color: isInProgress ? Color(0xFFCC9B14) : Color(0xFFC9C9C9), color: status == StepStatus.InProgress ? Color(0xFFCC9B14) : status == StepStatus.Locked ? Color(0xFFE3E3E3) : Color(0xFF359846),
shape: BoxShape.circle, shape: BoxShape.circle,
border: Border.all( border: Border.all(
color: isInProgress ? Color(0xFFCC9B14) : Color(0xFFC9C9C9), color: status == StepStatus.InProgress ? Color(0xFFCC9B14) : status == StepStatus.Locked ? Color(0xFFE3E3E3) : Color(0xFF359846),
width: 1), width: 1),
), ),
child: Center( child: Center(
child: Icon( child: Icon(
Icons.check, Icons.check,
size: 20, size: 20,
color: status == StepStatus.InProgress ? Colors.white : status == StepStatus.Locked ? Colors.grey.shade800 : Color(0xFF359846), color: status == StepStatus.Locked ? Color(0xFF969696) : Colors.white,
)), )),
), ),
if (!isFinalStep) if (!isFinalStep)
Container( Container(
margin: EdgeInsets.symmetric(horizontal: 4),
width: dividerWidth, width: dividerWidth,
height: 2, height: 2,
color: Colors.grey, color: status == StepStatus.Completed ? Color(0xFF359846) : Color(0xFFCCCCCC),
), ),
], ],
), ),
@ -98,23 +109,27 @@ class StepWidget extends StatelessWidget {
AppText( AppText(
"${TranslationBase.of(context).step} $index", "${TranslationBase.of(context).step} $index",
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: status == StepStatus.InProgress ? Colors.black : status == StepStatus.Locked ? Colors.grey : Color(0xFF359846), color: status == StepStatus.Locked ? Color(0xFF969696) : Colors.black,
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.6, fontSize: SizeConfig.textMultiplier * 1.6,
), ),
Container( Container(
margin: EdgeInsets.symmetric(vertical: 4), margin: EdgeInsets.symmetric(vertical: 4),
padding: EdgeInsets.symmetric(horizontal: 4, vertical: 2), padding: EdgeInsets.symmetric(horizontal: 12, vertical: 4),
decoration: BoxDecoration( decoration: BoxDecoration(
color: status == StepStatus.InProgress color: status == StepStatus.InProgress
? Color(0xFFF1E9D3) ? Color(0xFFF1E9D3)
: status == StepStatus.Locked : status == StepStatus.Locked
? Color(0xFFD8E8DB) ? Color(0x29797979)
: Color(0xFFCCCCCC), : Color(0xFFD8E8D8),
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(8.0), Radius.circular(4.0),
), ),
border: Border.all(color: HexColor('#707070'), width: 0.30), border: Border.all(color: status == StepStatus.InProgress
? Color(0xFFF1E9D3)
: status == StepStatus.Locked
? Color(0x29797979)
: Color(0xFFD8E8D8), width: 0.30),
), ),
child: AppText( child: AppText(
status == StepStatus.InProgress status == StepStatus.InProgress

@ -118,14 +118,14 @@ class _AdmissionRequestThirdScreenState
hintText: TranslationBase.of(context).clinic, hintText: TranslationBase.of(context).clinic,
isDropDown: true, isDropDown: true,
dropDownText: _selectedClinic != null dropDownText: _selectedClinic != null
? _selectedClinic['clinicGroupName'] ? projectViewModel.isArabic? _selectedClinic['clinicNameArabic'] : _selectedClinic['clinicNameEnglish']
: null, : null,
enabled: false, enabled: false,
onClick: model.clinicList != null && onClick: model.clinicList != null &&
model.clinicList.length > 0 model.clinicList.length > 0
? () { ? () {
openListDialogField( openListDialogField(
'clinicGroupName', projectViewModel.isArabic? 'clinicNameArabic' : 'clinicNameEnglish',
'clinicID', 'clinicID',
model.clinicList, (selectedValue) { model.clinicList, (selectedValue) {
setState(() { setState(() {
@ -142,7 +142,7 @@ class _AdmissionRequestThirdScreenState
if (model.state == ViewState.Idle && if (model.state == ViewState.Idle &&
model.clinicList.length > 0) { model.clinicList.length > 0) {
openListDialogField( openListDialogField(
'clinicGroupName', projectViewModel.isArabic? 'clinicNameArabic' : 'clinicNameEnglish',
'clinicID', 'clinicID',
model.clinicList, (selectedValue) { model.clinicList, (selectedValue) {
setState(() { setState(() {

@ -43,6 +43,8 @@ class _LaboratoryResultPageState extends State<LaboratoryResultPage> {
orderNo: widget.patientLabOrders.orderNo, orderNo: widget.patientLabOrders.orderNo,
appointmentDate:widget.patientLabOrders.orderDate, appointmentDate:widget.patientLabOrders.orderDate,
doctorName: widget.patientLabOrders.doctorName, doctorName: widget.patientLabOrders.doctorName,
branch: widget.patientLabOrders.projectName,
clinic: widget.patientLabOrders.clinicDescription,
profileUrl: widget.patientLabOrders.doctorImageURL, profileUrl: widget.patientLabOrders.doctorImageURL,
invoiceNO: widget.patientLabOrders.invoiceNo, invoiceNO: widget.patientLabOrders.invoiceNo,
), ),

@ -36,7 +36,8 @@ class LabsHomePage extends StatelessWidget {
builder: (context, ProcedureViewModel model, widget) => AppScaffold( builder: (context, ProcedureViewModel model, widget) => AppScaffold(
baseViewModel: model, baseViewModel: model,
isShowAppBar: true, isShowAppBar: true,
appBar: PatientProfileHeaderNewDesignAppBar(patient, patient.patientType.toString() ?? '0', patientType), appBar: PatientProfileHeaderNewDesignAppBar(
patient, patient.patientType.toString() ?? '0', patientType),
body: SingleChildScrollView( body: SingleChildScrollView(
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
child: FractionallySizedBox( child: FractionallySizedBox(
@ -66,11 +67,24 @@ class LabsHomePage extends StatelessWidget {
], ],
), ),
), ),
if (patientType != null && patientType == '7' && patient.patientStatusType == 43) if (patientType != null &&
patientType == '7' &&
patient.patientStatusType == 43)
InkWell( InkWell(
onTap: () { onTap: () {
addSelectedLabOrder(context, model, patient); Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AddSelectedLabOrder(
patient: patient,
model: model,
)),
);
}, },
// () {
// addSelectedLabOrder(context, model, patient);
// },
child: Container( child: Container(
width: double.maxFinite, width: double.maxFinite,
height: 140, height: 140,
@ -136,6 +150,7 @@ class LabsHomePage extends StatelessWidget {
invoiceNO: ' ${labOrder.invoiceNo}', invoiceNO: ' ${labOrder.invoiceNo}',
profileUrl: labOrder.doctorImageURL, profileUrl: labOrder.doctorImageURL,
branch: labOrder.projectName, branch: labOrder.projectName,
clinic: labOrder.clinicDescription,
appointmentDate: labOrder.orderDate, appointmentDate: labOrder.orderDate,
orderNo: labOrder.orderNo, orderNo: labOrder.orderNo,
); );

@ -43,6 +43,8 @@ class RadiologyDetailsPage extends StatelessWidget {
arrivalType: arrivalType ?? "0", arrivalType: arrivalType ?? "0",
appointmentDate: finalRadiology.orderDate, appointmentDate: finalRadiology.orderDate,
doctorName: finalRadiology.doctorName, doctorName: finalRadiology.doctorName,
clinic: finalRadiology.clinicDescription,
branch: finalRadiology.projectName,
profileUrl: finalRadiology.doctorImageURL, profileUrl: finalRadiology.doctorImageURL,
invoiceNO: finalRadiology.invoiceNo.toString(), invoiceNO: finalRadiology.invoiceNo.toString(),
), ),
@ -54,6 +56,7 @@ class RadiologyDetailsPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Container( Container(
width: double.maxFinite,
margin: EdgeInsets.all(8), margin: EdgeInsets.all(8),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,

@ -33,7 +33,8 @@ class RadiologyHomePage extends StatelessWidget {
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
isShowAppBar: true, isShowAppBar: true,
// appBarTitle: TranslationBase.of(context).radiology, // appBarTitle: TranslationBase.of(context).radiology,
appBar: PatientProfileHeaderNewDesignAppBar(patient, patient.patientType.toString() ?? '0', arrivalType), appBar: PatientProfileHeaderNewDesignAppBar(
patient, patient.patientType.toString() ?? '0', arrivalType),
baseViewModel: model, baseViewModel: model,
body: FractionallySizedBox( body: FractionallySizedBox(
widthFactor: 1.0, widthFactor: 1.0,
@ -62,11 +63,23 @@ class RadiologyHomePage extends StatelessWidget {
], ],
), ),
), ),
if (patientType != null && patientType == '7' && patient.patientStatusType == 43) if (patientType != null &&
patientType == '7' &&
patient.patientStatusType == 43)
InkWell( InkWell(
onTap: () { onTap: () {
addSelectedRadiologyOrder(context, model, patient); Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AddSelectedRadiologyOrder(
patient: patient,
model: model,
)),
);
}, },
// () {
// addSelectedRadiologyOrder(context, model, patient);
// },
child: Container( child: Container(
width: double.maxFinite, width: double.maxFinite,
height: 140, height: 140,
@ -108,25 +121,27 @@ class RadiologyHomePage extends StatelessWidget {
), ),
), ),
), ),
...List.generate(model.radiologyList.length, (index) => InkWell( ...List.generate(
onTap: () => Navigator.push( model.radiologyList.length,
context, (index) => InkWell(
FadePage( onTap: () => Navigator.push(
page: RadiologyDetailsPage( context,
finalRadiology: model.radiologyList[index], FadePage(
patient: patient, page: RadiologyDetailsPage(
), finalRadiology: model.radiologyList[index],
), patient: patient,
), ),
child: DoctorCard( ),
doctorName: model.radiologyList[index].doctorName, ),
profileUrl: model.radiologyList[index].doctorImageURL, child: DoctorCard(
invoiceNO: '${model.radiologyList[index].invoiceNo}', doctorName: model.radiologyList[index].doctorName,
branch: '${model.radiologyList[index].projectName}', profileUrl: model.radiologyList[index].doctorImageURL,
invoiceNO: '${model.radiologyList[index].invoiceNo}',
branch: '${model.radiologyList[index].projectName}',
clinic: model.radiologyList[index].clinicDescription,
appointmentDate: model.radiologyList[index].orderDate, appointmentDate: model.radiologyList[index].orderDate,
), ),
)), )),
], ],
), ),
), ),

@ -10,6 +10,7 @@ import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/patient-referral-item-widget.dart'; import 'package:doctor_app_flutter/widgets/patients/patient-referral-item-widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.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-new-design.dart';
import 'package:doctor_app_flutter/widgets/shared/app-textfield-custom.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_buttons_widget.dart';
@ -38,6 +39,11 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
DateTime appointmentDate; DateTime appointmentDate;
final _remarksController = TextEditingController(); final _remarksController = TextEditingController();
String branchError = null;
String hospitalError = null;
String clinicError = null;
String doctorError = null;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -71,7 +77,9 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
baseViewModel: model, baseViewModel: model,
appBarTitle: TranslationBase.of(context).referPatient, appBarTitle: TranslationBase.of(context).referPatient,
isShowAppBar: false, isShowAppBar: true,
appBar: PatientProfileHeaderNewDesignAppBar(
patient, patientType, arrivalType),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Container( child: Container(
child: Column( child: Column(
@ -80,8 +88,8 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
PatientProfileHeaderNewDesign( /*PatientProfileHeaderNewDesign(
patient, patientType, arrivalType), patient, patientType, arrivalType),*/
Container( Container(
margin: EdgeInsets.all(16.0), margin: EdgeInsets.all(16.0),
child: Column( child: Column(
@ -145,6 +153,28 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
color: HexColor("#359846"), color: HexColor("#359846"),
onPressed: () { onPressed: () {
setState(() {
if(_referTo == null){
branchError = TranslationBase.of(context).fieldRequired;
}else {
branchError = null;
}
if(_selectedBranch == null){
hospitalError = TranslationBase.of(context).fieldRequired;
}else {
hospitalError = null;
}
if(_selectedClinic == null){
clinicError = TranslationBase.of(context).fieldRequired;
}else {
clinicError = null;
}
if(_selectedDoctor == null){
doctorError = TranslationBase.of(context).fieldRequired;
}else {
doctorError = null;
}
});
if (appointmentDate == null || if (appointmentDate == null ||
_selectedBranch == null || _selectedBranch == null ||
_selectedClinic == null || _selectedClinic == null ||
@ -186,6 +216,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
dropDownText: _referTo != null ? _referTo['name'] : null, dropDownText: _referTo != null ? _referTo['name'] : null,
enabled: false, enabled: false,
isDropDown: true, isDropDown: true,
validationError: branchError,
onClick: referToList != null onClick: referToList != null
? () { ? () {
ListSelectDialog dialog = ListSelectDialog( ListSelectDialog dialog = ListSelectDialog(
@ -238,6 +269,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isDropDown: true,
validationError: hospitalError,
onClick: model.branchesList != null && onClick: model.branchesList != null &&
model.branchesList.length > 0 && model.branchesList.length > 0 &&
_referTo != null && _referTo != null &&
@ -285,6 +317,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isDropDown: true,
validationError: clinicError,
onClick: _selectedBranch != null && onClick: _selectedBranch != null &&
model.clinicsList != null && model.clinicsList != null &&
model.clinicsList.length > 0 model.clinicsList.length > 0
@ -332,6 +365,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
_selectedDoctor != null ? _selectedDoctor['DoctorName'] : null, _selectedDoctor != null ? _selectedDoctor['DoctorName'] : null,
enabled: false, enabled: false,
isDropDown: true, isDropDown: true,
validationError: doctorError,
onClick: _selectedClinic != null && onClick: _selectedClinic != null &&
model.doctorsList != null && model.doctorsList != null &&
model.doctorsList.length > 0 model.doctorsList.length > 0
@ -357,7 +391,13 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
}, },
); );
} }
: null, : (){
if(_selectedClinic == null){
DrAppToastMsg.showErrorToast("You need to select a clinic first");
} else if(model.doctorsList == null || model.doctorsList.length == 0){
DrAppToastMsg.showErrorToast("There is no doctors for this clinic");
}
},
), ),
SizedBox( SizedBox(
height: 10, height: 10,

@ -90,10 +90,10 @@ class LineChartCurvedBloodPressure extends StatelessWidget {
height: 20, height: 20,
decoration: BoxDecoration( decoration: BoxDecoration(
shape: BoxShape.rectangle, shape: BoxShape.rectangle,
color: Colors.grey), color: Colors.red),
), ),
SizedBox(width: 5,), SizedBox(width: 5,),
AppText(TranslationBase.of(context).diastolicLng) AppText(TranslationBase.of(context).diastolicLng,)
], ],
), ),
], ],
@ -248,7 +248,7 @@ class LineChartCurvedBloodPressure extends StatelessWidget {
final LineChartBarData lineChartBarData2 = LineChartBarData( final LineChartBarData lineChartBarData2 = LineChartBarData(
spots: spots2, spots: spots2,
isCurved: true, isCurved: true,
colors: [Colors.grey], colors: [Colors.red],
barWidth: 5, barWidth: 5,
isStrokeCapRound: true, isStrokeCapRound: true,
dotData: FlDotData( dotData: FlDotData(

@ -36,6 +36,7 @@ class PrescriptionItemsPage extends StatelessWidget {
patientType: patientType??"0", patientType: patientType??"0",
arrivalType: arrivalType??"0", arrivalType: arrivalType??"0",
clinic: prescriptions.clinicDescription, clinic: prescriptions.clinicDescription,
branch: prescriptions.name,
isPrescriptions: true, isPrescriptions: true,
appointmentDate: DateUtils.getDateTimeFromServerFormat(prescriptions.appointmentDate), appointmentDate: DateUtils.getDateTimeFromServerFormat(prescriptions.appointmentDate),
doctorName: prescriptions.doctorName, doctorName: prescriptions.doctorName,

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/core/model/procedure/get_ordered_procedure_model.dart'; import 'package:doctor_app_flutter/core/model/procedure/get_ordered_procedure_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.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/Text.dart';
@ -147,7 +148,7 @@ class ProcedureCard extends StatelessWidget {
color: Colors.grey, color: Colors.grey,
), ),
Texts( Texts(
entityList.clinicDescription.toString(), entityList.clinicDescription??"",
bold: true, bold: true,
fontSize: 12, fontSize: 12,
), ),
@ -163,7 +164,7 @@ class ProcedureCard extends StatelessWidget {
if (entityList.categoryID == 2 || if (entityList.categoryID == 2 ||
entityList.categoryID == 4) entityList.categoryID == 4)
InkWell( InkWell(
child: Icon(Icons.edit), child: Icon(DoctorApp.edit),
onTap: onTap, onTap: onTap,
) )
], ],

@ -343,6 +343,8 @@ class _AddSelectedProcedureState extends State<AddSelectedProcedure> {
AppButton( AppButton(
title: TranslationBase.of(context) title: TranslationBase.of(context)
.addSelectedProcedures, .addSelectedProcedures,
color: Color(0xff359846),
fontWeight: FontWeight.w700,
onPressed: () { onPressed: () {
//print(entityList.toString()); //print(entityList.toString());
onPressed: onPressed:

@ -12,6 +12,7 @@ import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_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'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dart'; import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
@ -142,157 +143,158 @@ class _AddSelectedLabOrderState extends State<AddSelectedLabOrder> {
onModelReady: (model) => model.getProcedureCategory( onModelReady: (model) => model.getProcedureCategory(
categoryName: "Laboratory", categoryID: "02"), categoryName: "Laboratory", categoryID: "02"),
builder: (BuildContext context, ProcedureViewModel model, Widget child) => builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
NetworkBaseView( AppScaffold(
baseViewModel: model, isShowAppBar: false,
child: DraggableScrollableSheet( body: NetworkBaseView(
minChildSize: 0.90, baseViewModel: model,
initialChildSize: 0.95, child: DraggableScrollableSheet(
maxChildSize: 1.0, minChildSize: 0.90,
builder: (BuildContext context, ScrollController scrollController) { initialChildSize: 0.95,
return SingleChildScrollView( maxChildSize: 1.0,
child: Container( builder:
height: MediaQuery.of(context).size.height * 1.20, (BuildContext context, ScrollController scrollController) {
child: Padding( return SingleChildScrollView(
padding: EdgeInsets.all(12.0), child: Container(
child: Column( height: MediaQuery.of(context).size.height * 1.0,
crossAxisAlignment: CrossAxisAlignment.start, child: Padding(
children: [ padding: EdgeInsets.all(12.0),
Column( child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
Row( children: [
children: [ Row(
InkWell( children: [
child: Icon( AppText(
Icons.close, 'New Lab Order',
size: 24.0, fontWeight: FontWeight.w700,
), fontSize: 20,
onTap: () { ),
Navigator.pop(context); SizedBox(
}, width: MediaQuery.of(context).size.width * 0.48,
), ),
], InkWell(
), child: Icon(
Row( Icons.close,
children: [ size: 28.0,
AppText(
'New Lab Order',
fontWeight: FontWeight.w700,
fontSize: 20,
), ),
], onTap: () {
), Navigator.pop(context);
],
),
SizedBox(
height: 10.0,
),
if (widget.model.categoriesList.length != 0)
NetworkBaseView(
baseViewModel: model,
child: EntityListCheckboxSearchWidget(
model: widget.model,
masterList:
widget.model.categoriesList[0].entityList,
removeHistory: (item) {
setState(() {
entityList.remove(item);
});
},
addHistory: (history) {
setState(() {
entityList.add(history);
});
},
addSelectedHistories: () {
//TODO build your fun herr
// widget.addSelectedHistories();
}, },
isEntityListSelected: (master) => ),
isEntityListSelected(master), ],
)), ),
SizedBox( SizedBox(
height: 15.0, height: 10.0,
), ),
Column( if (widget.model.categoriesList.length != 0)
mainAxisAlignment: MainAxisAlignment.spaceBetween, NetworkBaseView(
children: [ baseViewModel: model,
// Container( child: EntityListCheckboxSearchWidget(
// child: Row( model: widget.model,
// children: [ masterList:
// AppText( widget.model.categoriesList[0].entityList,
// TranslationBase.of(context).orderType), removeHistory: (item) {
// Radio( setState(() {
// activeColor: Color(0xFFB9382C), entityList.remove(item);
// value: 1, });
// groupValue: selectedType, },
// onChanged: (value) { addHistory: (history) {
// setSelectedType(value); setState(() {
// }, entityList.add(history);
// ), });
// Text('routine'), },
// Radio( addSelectedHistories: () {
// activeColor: Color(0xFFB9382C), //TODO build your fun herr
// groupValue: selectedType, // widget.addSelectedHistories();
// value: 0, },
// onChanged: (value) { isEntityListSelected: (master) =>
// setSelectedType(value); isEntityListSelected(master),
// }, )),
// ), SizedBox(
// Text(TranslationBase.of(context).urgent), height: 15.0,
// ], ),
// ), Column(
// ), mainAxisAlignment: MainAxisAlignment.spaceBetween,
// SizedBox( children: [
// height: 15.0, // Container(
// ), // child: Row(
// TextFields( // children: [
// hintText: TranslationBase.of(context).remarks, // AppText(
// controller: remarksController, // TranslationBase.of(context).orderType),
// minLines: 3, // Radio(
// maxLines: 5, // activeColor: Color(0xFFB9382C),
// ), // value: 1,
SizedBox( // groupValue: selectedType,
height: 100.0, // onChanged: (value) {
), // setSelectedType(value);
Container( // },
margin: EdgeInsets.all( // ),
SizeConfig.widthMultiplier * 5), // Text('routine'),
child: Wrap( // Radio(
alignment: WrapAlignment.center, // activeColor: Color(0xFFB9382C),
children: <Widget>[ // groupValue: selectedType,
AppButton( // value: 0,
title: TranslationBase.of(context) // onChanged: (value) {
.addSelectedProcedures, // setSelectedType(value);
color: Color(0xff359846), // },
onPressed: () { // ),
//print(entityList.toString()); // Text(TranslationBase.of(context).urgent),
onPressed: // ],
if (entityList.isEmpty == true) { // ),
DrAppToastMsg.showErrorToast( // ),
"Fill the mandatory procedure details"); // SizedBox(
return; // 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;
}
Navigator.pop(context); Navigator.pop(context);
postProcedure( postProcedure(
orderType: selectedType.toString(), orderType: selectedType.toString(),
entityList: entityList, entityList: entityList,
patient: patient, patient: patient,
model: widget.model, model: widget.model,
remarks: remarksController.text); remarks: remarksController.text);
}, },
), ),
], ],
),
), ),
), ],
], )
) ],
], ),
), ),
), ),
), );
); }),
}), ),
), ),
); );
} }

@ -12,6 +12,7 @@ import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_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'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dart'; import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
@ -142,157 +143,156 @@ class _AddSelectedRadiologyOrderState extends State<AddSelectedRadiologyOrder> {
onModelReady: (model) => model.getProcedureCategory( onModelReady: (model) => model.getProcedureCategory(
categoryName: "Radiology", categoryID: "03"), categoryName: "Radiology", categoryID: "03"),
builder: (BuildContext context, ProcedureViewModel model, Widget child) => builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
NetworkBaseView( AppScaffold(
baseViewModel: model, isShowAppBar: false,
child: DraggableScrollableSheet( body: NetworkBaseView(
minChildSize: 0.90, baseViewModel: model,
initialChildSize: 0.95, child: DraggableScrollableSheet(
maxChildSize: 1.0, minChildSize: 0.90,
builder: (BuildContext context, ScrollController scrollController) { initialChildSize: 0.95,
return SingleChildScrollView( maxChildSize: 1.0,
child: Container( builder:
height: MediaQuery.of(context).size.height * 1.20, (BuildContext context, ScrollController scrollController) {
child: Padding( return SingleChildScrollView(
padding: EdgeInsets.all(12.0), child: Container(
child: Column( height: MediaQuery.of(context).size.height * 1.0,
crossAxisAlignment: CrossAxisAlignment.start, child: Padding(
children: [ padding: EdgeInsets.all(12.0),
Column( child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
Row( children: [
children: [ Row(
InkWell( children: [
child: Icon( AppText(
Icons.close, 'New Radiology Order',
size: 24.0, fontWeight: FontWeight.w700,
), fontSize: 20,
onTap: () { ),
Navigator.pop(context); SizedBox(
}, width: MediaQuery.of(context).size.width * 0.48,
), ),
], InkWell(
), child: Icon(
Row( Icons.close,
children: [ size: 28.0,
AppText(
'New Radiology Order',
fontWeight: FontWeight.w700,
fontSize: 20,
), ),
], onTap: () {
), Navigator.pop(context);
],
),
SizedBox(
height: 10.0,
),
if (widget.model.categoriesList.length != 0)
NetworkBaseView(
baseViewModel: model,
child: EntityListCheckboxSearchWidget(
model: widget.model,
masterList:
widget.model.categoriesList[0].entityList,
removeHistory: (item) {
setState(() {
entityList.remove(item);
});
},
addHistory: (history) {
setState(() {
entityList.add(history);
});
},
addSelectedHistories: () {
//TODO build your fun herr
// widget.addSelectedHistories();
}, },
isEntityListSelected: (master) => ),
isEntityListSelected(master), ],
)), ),
SizedBox( SizedBox(
height: 15.0, height: 10.0,
), ),
Column( if (widget.model.categoriesList.length != 0)
mainAxisAlignment: MainAxisAlignment.spaceBetween, NetworkBaseView(
children: [ baseViewModel: model,
// Container( child: EntityListCheckboxSearchWidget(
// child: Row( model: widget.model,
// children: [ masterList:
// AppText( widget.model.categoriesList[0].entityList,
// TranslationBase.of(context).orderType), removeHistory: (item) {
// Radio( setState(() {
// activeColor: Color(0xFFB9382C), entityList.remove(item);
// value: 1, });
// groupValue: selectedType, },
// onChanged: (value) { addHistory: (history) {
// setSelectedType(value); setState(() {
// }, entityList.add(history);
// ), });
// Text('routine'), },
// Radio( addSelectedHistories: () {
// activeColor: Color(0xFFB9382C), //TODO build your fun herr
// groupValue: selectedType, // widget.addSelectedHistories();
// value: 0, },
// onChanged: (value) { isEntityListSelected: (master) =>
// setSelectedType(value); isEntityListSelected(master),
// }, )),
// ), SizedBox(
// Text(TranslationBase.of(context).urgent), height: 15.0,
// ], ),
// ), Column(
// ), mainAxisAlignment: MainAxisAlignment.spaceBetween,
// SizedBox( children: [
// height: 15.0, // Container(
// ), // child: Row(
// TextFields( // children: [
// hintText: TranslationBase.of(context).remarks, // AppText(
// controller: remarksController, // TranslationBase.of(context).orderType),
// minLines: 3, // Radio(
// maxLines: 5, // activeColor: Color(0xFFB9382C),
// ), // value: 1,
SizedBox( // groupValue: selectedType,
height: 100.0, // onChanged: (value) {
), // setSelectedType(value);
Container( // },
margin: EdgeInsets.all( // ),
SizeConfig.widthMultiplier * 5), // Text('routine'),
child: Wrap( // Radio(
alignment: WrapAlignment.center, // activeColor: Color(0xFFB9382C),
children: <Widget>[ // groupValue: selectedType,
AppButton( // value: 0,
title: TranslationBase.of(context) // onChanged: (value) {
.addSelectedProcedures, // setSelectedType(value);
color: Color(0xff359846), // },
onPressed: () { // ),
//print(entityList.toString()); // Text(TranslationBase.of(context).urgent),
onPressed: // ],
if (entityList.isEmpty == true) { // ),
DrAppToastMsg.showErrorToast( // ),
"Fill the mandatory procedure details"); // SizedBox(
return; // 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;
}
Navigator.pop(context); Navigator.pop(context);
postProcedure( postProcedure(
orderType: selectedType.toString(), orderType: selectedType.toString(),
entityList: entityList, entityList: entityList,
patient: patient, patient: patient,
model: widget.model, model: widget.model,
remarks: remarksController.text); remarks: remarksController.text);
}, },
), ),
], ],
),
), ),
), ],
], )
) ],
], ),
), ),
), ),
), );
); }),
}), ),
), ),
); );
} }

@ -74,16 +74,18 @@ class _EntityListCheckboxSearchWidgetState
child: Container( child: Container(
margin: EdgeInsets.only(top: 15), margin: EdgeInsets.only(top: 15),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(8),
color: Colors.white), color: Colors.white),
child: ListView( child: ListView(
children: [ children: [
TextFields( TextFields(
hintText: TranslationBase.of(context).searchProcedures, hintText: TranslationBase.of(context).searchProcedures,
suffixIcon: EvaIcons.search, suffixIcon: EvaIcons.search,
suffixIconColor: Color(0xff2B353E),
onChanged: (value) { onChanged: (value) {
filterSearchResults(value); filterSearchResults(value);
}, },
hasBorder: false,
), ),
SizedBox( SizedBox(
height: 15, height: 15,
@ -99,7 +101,7 @@ class _EntityListCheckboxSearchWidgetState
Checkbox( Checkbox(
value: widget.isEntityListSelected( value: widget.isEntityListSelected(
historyInfo), historyInfo),
activeColor: Colors.red[800], activeColor: Color(0xffD02127),
onChanged: (bool newValue) { onChanged: (bool newValue) {
setState(() { setState(() {
if (widget.isEntityListSelected( if (widget.isEntityListSelected(
@ -118,6 +120,7 @@ class _EntityListCheckboxSearchWidgetState
horizontal: 10, vertical: 0), horizontal: 10, vertical: 0),
child: Texts( child: Texts(
historyInfo.procedureName, historyInfo.procedureName,
fontSize: 14.0,
variant: "bodyText", variant: "bodyText",
bold: true, bold: true,
color: Color(0xff575757)), color: Color(0xff575757)),
@ -130,18 +133,32 @@ class _EntityListCheckboxSearchWidgetState
child: Padding( child: Padding(
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
horizontal: 12), horizontal: 12),
child: Row( child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [ children: [
AppText( Row(
TranslationBase.of(context) children: [
.orderType, Padding(
fontWeight: FontWeight.w700, padding: const EdgeInsets
.symmetric(
horizontal: 11),
child: AppText(
TranslationBase.of(
context)
.orderType,
fontWeight:
FontWeight.w700,
color: Color(0xff2B353E),
),
),
],
), ),
Row( Row(
children: [ children: [
Radio( Radio(
activeColor: activeColor:
Color(0xFFB9382C), Color(0xFFD02127),
value: 0, value: 0,
groupValue: selectedType, groupValue: selectedType,
onChanged: (value) { onChanged: (value) {
@ -153,10 +170,14 @@ class _EntityListCheckboxSearchWidgetState
value.toString(); value.toString();
}, },
), ),
Text('routine'), AppText(
'routine',
color: Color(0xff575757),
fontWeight: FontWeight.w600,
),
Radio( Radio(
activeColor: activeColor:
Color(0xFFB9382C), Color(0xFFD02127),
groupValue: selectedType, groupValue: selectedType,
value: 1, value: 1,
onChanged: (value) { onChanged: (value) {
@ -168,9 +189,12 @@ class _EntityListCheckboxSearchWidgetState
value.toString(); value.toString();
}, },
), ),
Text(TranslationBase.of( AppText(
context) TranslationBase.of(context)
.urgent), .urgent,
color: Color(0xff575757),
fontWeight: FontWeight.w600,
),
], ],
), ),
], ],
@ -192,11 +216,13 @@ class _EntityListCheckboxSearchWidgetState
}, },
minLines: 3, minLines: 3,
maxLines: 5, maxLines: 5,
borderWidth: 0.5,
borderColor: Colors.grey[500],
), ),
), ),
DividerWithSpacesAround(),
], ],
), ),
DividerWithSpacesAround(),
], ],
); );
}).toList(), }).toList(),

@ -29,122 +29,119 @@ class ProcedureScreen extends StatelessWidget {
builder: (BuildContext context, ProcedureViewModel model, Widget child) => builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold( AppScaffold(
isShowAppBar: true, isShowAppBar: true,
baseViewModel: model,
appBar: PatientProfileHeaderNewDesignAppBar( appBar: PatientProfileHeaderNewDesignAppBar(
patient, arrivalType ?? '0', patientType), patient, arrivalType ?? '0', patientType),
body: NetworkBaseView( body: SingleChildScrollView(
baseViewModel: model, child: Container(
child: SingleChildScrollView( child: Column(
child: Container( crossAxisAlignment: CrossAxisAlignment.start,
color: Colors.white, children: [
child: Column( SizedBox(
crossAxisAlignment: CrossAxisAlignment.start, height: 12,
children: [ ),
SizedBox( Padding(
height: 12, padding: const EdgeInsets.all(8.0),
), child: Column(
Padding( crossAxisAlignment: CrossAxisAlignment.start,
padding: const EdgeInsets.all(8.0), children: [
child: Column( Texts(
crossAxisAlignment: CrossAxisAlignment.start, 'Order Test or',
children: [ style: "caption2",
Texts( color: Colors.black,
'Order Test or', fontSize: 13,
style: "caption2", ),
color: Colors.black, Texts(
fontSize: 13, 'Procedure',
), bold: true,
Texts( fontSize: 22,
'Procedure', ),
bold: true, ],
fontSize: 22,
),
],
),
), ),
if (patientType != null && patientType == '7' && patient.patientStatusType == 43) ),
InkWell( if (patientType != null && patientType == '7' && patient.patientStatusType == 43)
onTap: () { InkWell(
addSelectedProcedure(context, model, patient); onTap: () {
}, addSelectedProcedure(context, model, patient);
child: Container( },
width: double.maxFinite, child: Container(
height: 140, width: double.maxFinite,
margin: EdgeInsets.all(10), height: 140,
decoration: BoxDecoration( margin: EdgeInsets.all(10),
color: Colors.grey[300], decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), color: Colors.grey[300],
), borderRadius: BorderRadius.circular(10),
child: Center( ),
child: Container( child: Center(
height: 90, child: Container(
child: Column( height: 90,
children: [ child: Column(
Container( children: [
height: 40, Container(
width: 40, height: 40,
decoration: BoxDecoration( width: 40,
color: Colors.grey[600], decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), color: Colors.grey[600],
), borderRadius: BorderRadius.circular(10),
child: Center(
child: Icon(
Icons.add,
color: Colors.white,
),
),
), ),
SizedBox( child: Center(
height: 10, child: Icon(
Icons.add,
color: Colors.white,
),
), ),
Texts( ),
'Add More Procedure', SizedBox(
color: Colors.grey[600], height: 10,
fontWeight: FontWeight.w600, ),
) Texts(
], 'Add More Procedure',
), color: Colors.grey[600],
fontWeight: FontWeight.w600,
)
],
), ),
), ),
), ),
), ),
if (model.procedureList.isNotEmpty) ),
...List.generate( if (model.procedureList.isNotEmpty)
model.procedureList[0].rowcount, ...List.generate(
(index) => ProcedureCard( model.procedureList[0].rowcount,
categoryID: (index) => ProcedureCard(
model.procedureList[0].entityList[index].categoryID, categoryID:
entityList: model.procedureList[0].entityList[index], model.procedureList[0].entityList[index].categoryID,
onTap: () { entityList: model.procedureList[0].entityList[index],
if (model.procedureList[0].entityList[index].categoryID == onTap: () {
2 || if (model.procedureList[0].entityList[index].categoryID ==
model.procedureList[0].entityList[index].categoryID == 4) 2 ||
updateProcedureForm(context, model.procedureList[0].entityList[index].categoryID == 4)
model: model, updateProcedureForm(context,
patient: patient, model: model,
remarks: model patient: patient,
.procedureList[0].entityList[index].remarks, remarks: model
orderType: model.procedureList[0] .procedureList[0].entityList[index].remarks,
.entityList[index].orderType orderType: model.procedureList[0]
.toString(), .entityList[index].orderType
orderNo: model .toString(),
.procedureList[0].entityList[index].orderNo, orderNo: model
procedureName: model.procedureList[0] .procedureList[0].entityList[index].orderNo,
.entityList[index].procedureName, procedureName: model.procedureList[0]
categoreId: model.procedureList[0] .entityList[index].procedureName,
.entityList[index].categoryID categoreId: model.procedureList[0]
.toString(), .entityList[index].categoryID
procedureId: model.procedureList[0] .toString(),
.entityList[index].procedureId, procedureId: model.procedureList[0]
limetNo: model.procedureList[0] .entityList[index].procedureId,
.entityList[index].lineItemNo); limetNo: model.procedureList[0]
// } else .entityList[index].lineItemNo);
// helpers.showErrorToast( // } else
// 'You Cant Update This Procedure'); // helpers.showErrorToast(
}, // 'You Cant Update This Procedure');
), },
), ),
], ),
), ],
), ),
), ),
), ),

@ -57,25 +57,25 @@ class _ProfileScreenState extends State<ProfileScreen> {
children: <Widget>[ children: <Widget>[
DrawerItem( DrawerItem(
TranslationBase.of(context).gender, TranslationBase.of(context).gender,
Icons.person_pin, icon: Icons.person_pin,
color: Colors.black, color: Colors.black,
subTitle: doctorProfile.genderDescription //"Male" subTitle: doctorProfile.genderDescription //"Male"
, ,
), ),
DrawerItem(TranslationBase.of(context).clinic, Icons.build, DrawerItem(TranslationBase.of(context).clinic, icon: Icons.build,
color: Colors.black, color: Colors.black,
subTitle: subTitle:
doctorProfile.clinicDescription //"Neurology Clinic", doctorProfile.clinicDescription //"Neurology Clinic",
), ),
DrawerItem( DrawerItem(
TranslationBase.of(context).hospital, TranslationBase.of(context).hospital,
Icons.local_hospital, icon: Icons.local_hospital,
color: Colors.black, color: Colors.black,
subTitle: doctorProfile.projectName, //"Al-Takkassussi", subTitle: doctorProfile.projectName, //"Al-Takkassussi",
), ),
DrawerItem( DrawerItem(
TranslationBase.of(context).speciality, TranslationBase.of(context).speciality,
Icons.crop_square, icon: Icons.crop_square,
color: Colors.black, color: Colors.black,
subTitle: doctorProfile.doctorRate == 0 subTitle: doctorProfile.doctorRate == 0
? TranslationBase.of(context).beingBad ? TranslationBase.of(context).beingBad

@ -1216,7 +1216,7 @@ class TranslationBase {
String get remove => localizedValues['remove'][locale.languageCode]; String get remove => localizedValues['remove'][locale.languageCode];
String get step => localizedValues['step'][locale.languageCode]; String get step => localizedValues['step'][locale.languageCode];
String get fieldRequired => localizedValues['fieldRequired'][locale.languageCode];
String get noSickLeave => localizedValues['no-sickleve'][locale.languageCode]; String get noSickLeave => localizedValues['no-sickleve'][locale.languageCode];
String get changeOfSchedule => String get changeOfSchedule =>
localizedValues['changeOfSchedule'][locale.languageCode]; localizedValues['changeOfSchedule'][locale.languageCode];

@ -455,28 +455,11 @@ class PatientReferralItemWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Container( Container(
width: 2, margin: EdgeInsets.only(left: 10, right: 0),
height: 30, child: Image.asset(
color: Color(0xFFD9D9D9), infoIcon != null ? 'assets/images/patient/ic_ref_arrow_up.png' : 'assets/images/patient/ic_ref_arrow_left.png',
height: 50,
/* width: 30,
decoration: BoxDecoration(
shape: BoxShape.rectangle,
border: Border(
bottom: BorderSide(
color: Color(0xFFD9D9D9), width: 2.5),
left: BorderSide(
color: Color(0xFFD9D9D9), width: 2.5),
)),
*/
),
Container(
margin: EdgeInsets.only(
left: 0, top: 20, right: 0, bottom: 0),
child: Icon(
Icons.arrow_forward,
color: Color(0xFFD9D9D9),
size: 30,
), ),
), ),
Container( Container(

@ -171,7 +171,7 @@ class PatientProfileHeaderNewDesignAppBar extends StatelessWidget
Container( Container(
child: AppText( child: AppText(
convertDateFormat2( convertDateFormat2(
patient.appointmentDate.toString() ?? ''), patient.appointmentDate ?? ''),
fontSize: 1.5 * SizeConfig.textMultiplier, fontSize: 1.5 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
@ -281,7 +281,7 @@ class PatientProfileHeaderNewDesignAppBar extends StatelessWidget
date.day.toString().padLeft(2, '0'); date.day.toString().padLeft(2, '0');
} }
return newDate.toString(); return newDate??'';
} }
isToday(date) { isToday(date) {

@ -380,7 +380,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 12, fontSize: 12,
), ),
if (orderNo != null && !isPrescriptions) if (orderNo != null )
Row( Row(
children: <Widget>[ children: <Widget>[
Texts( Texts(
@ -393,7 +393,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
) )
], ],
), ),
if (invoiceNO != null && !isPrescriptions) if (invoiceNO != null )
Row( Row(
children: <Widget>[ children: <Widget>[
Texts( Texts(
@ -407,7 +407,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
) )
], ],
), ),
if(isPrescriptions && branch!=null) if( branch!=null)
Row( Row(
children: [ children: [
Texts( Texts(
@ -421,7 +421,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
) )
], ],
), ),
if(isPrescriptions) if(clinic!=null)
Row( Row(
children: [ children: [
Texts( Texts(

@ -0,0 +1,45 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/steps_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart';
class SOAPStepHeader extends StatelessWidget {
const SOAPStepHeader({
Key key,
this.currentIndex, this.changePageViewIndex,
}) : super(key: key);
final int currentIndex;
final Function changePageViewIndex;
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
TranslationBase.of(context).createNew,
fontSize: 3 * SizeConfig.textMultiplier,
fontWeight: FontWeight.w500,
),
AppText(TranslationBase.of(context).episode,
fontSize: 3.5 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
Container(
color: Theme.of(context).scaffoldBackgroundColor,
child: StepsWidget(
index: currentIndex,
changeCurrentTab: changePageViewIndex,
height: 100,//MediaQuery.of(context).size.height * 0.17,
),
),
SizedBox(
height: 30,
),
],
);
}
}

@ -44,7 +44,6 @@ class ExpandableSOAPWidget extends StatelessWidget {
if(isRequired) if(isRequired)
Icon( Icon(
FontAwesomeIcons.asterisk, FontAwesomeIcons.asterisk,
color: AppGlobal.appPrimaryColor,
size: 12, size: 12,
) )
], ],

@ -26,13 +26,14 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../SOAP_step_header.dart';
import 'examination-item-card.dart'; import 'examination-item-card.dart';
import 'objective-add-examination-page.dart'; import 'objective-add-examination-page.dart';
class UpdateObjectivePage extends StatefulWidget { class UpdateObjectivePage extends StatefulWidget {
final Function changePageViewIndex; final Function changePageViewIndex;
final Function changeLoadingState; final Function changeLoadingState;
final int currentIndex;
final List<MySelectedExamination> mySelectedExamination; final List<MySelectedExamination> mySelectedExamination;
final PatiantInformtion patientInfo; final PatiantInformtion patientInfo;
@ -41,7 +42,7 @@ class UpdateObjectivePage extends StatefulWidget {
this.changePageViewIndex, this.changePageViewIndex,
this.mySelectedExamination, this.mySelectedExamination,
this.patientInfo, this.patientInfo,
this.changeLoadingState}); this.changeLoadingState, this.currentIndex});
@override @override
_UpdateObjectivePageState createState() => _UpdateObjectivePageState(); _UpdateObjectivePageState createState() => _UpdateObjectivePageState();
@ -108,6 +109,8 @@ class _UpdateObjectivePageState extends State<UpdateObjectivePage> {
body: Column( body: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
SOAPStepHeader(currentIndex: widget.currentIndex, changePageViewIndex:widget.changePageViewIndex),
Expanded( Expanded(
child: SingleChildScrollView( child: SingleChildScrollView(
physics: ScrollPhysics(), physics: ScrollPhysics(),

@ -24,19 +24,23 @@ class StepsWidget extends StatelessWidget {
height: height == 0 ? 150 : height, height: height == 0 ? 150 : height,
width: MediaQuery.of(context).size.width * 0.9, width: MediaQuery.of(context).size.width * 0.9,
color: Colors.transparent, color: Colors.transparent,
child: Center( // child:,
child: Container(
width: MediaQuery.of(context).size.width * 0.86,
child: Divider(
color: Colors.grey,
height: 0.75,
thickness: 0.75,
),
),
),
), ),
Positioned( Positioned(
top: 43, top: 30
,
child: Center(
child: Container(
width: MediaQuery.of(context).size.width * 0.9,
child: Divider(
color: Colors.grey,
height: 0.75,
thickness: 0.75,
),
),
)),
Positioned(
top: 10,
left: 0, left: 0,
child: InkWell( child: InkWell(
onTap: () => changeCurrentTab(0), onTap: () => changeCurrentTab(0),
@ -87,7 +91,7 @@ class StepsWidget extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
top: 43, top: 10,
left: MediaQuery left: MediaQuery
.of(context) .of(context)
.size .size
@ -143,7 +147,7 @@ class StepsWidget extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
top: 43, top: 10,
left: MediaQuery left: MediaQuery
.of(context) .of(context)
.size .size
@ -201,7 +205,7 @@ class StepsWidget extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
top: 43, top: 10,
right: 0, right: 0,
child: InkWell( child: InkWell(
onTap: () => index >= 3 ? changeCurrentTab(4) : null, onTap: () => index >= 3 ? changeCurrentTab(4) : null,
@ -271,7 +275,7 @@ class StepsWidget extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
top: 43, top: 10,
right: 0, right: 0,
child: InkWell( child: InkWell(
onTap: () => changeCurrentTab(0), onTap: () => changeCurrentTab(0),
@ -321,7 +325,7 @@ class StepsWidget extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
top: 43, top: 10,
right: MediaQuery right: MediaQuery
.of(context) .of(context)
.size .size
@ -374,7 +378,7 @@ class StepsWidget extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
top: 43, top: 10,
right: MediaQuery right: MediaQuery
.of(context) .of(context)
.size .size
@ -432,7 +436,7 @@ class StepsWidget extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
top: 43, top: 10,
left: 0, left: 0,
child: InkWell( child: InkWell(
onTap: () => index >= 3 ? changeCurrentTab(4) : null, onTap: () => index >= 3 ? changeCurrentTab(4) : null,

@ -1,4 +1,5 @@
import 'package:autocomplete_textfield/autocomplete_textfield.dart'; 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/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/model/get_medication_response_model.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/SOAP_view_model.dart';
@ -41,30 +42,52 @@ class _UpdateMedicationWidgetState extends State<UpdateMedicationWidget> {
return Column( return Column(
children: [ children: [
Container( InkWell(
child: TextFields( onTap: () {
hintText: TranslationBase.of(context).addMedication, openMedicationList(context);
borderColor: HexColor('#707070'), },
borderWidth: 0.30, child: Container(
fontSize: 13.5, padding: EdgeInsets.symmetric(
borderRadius: 12, vertical: 8, horizontal: 8.0),
onTapTextFields: () { margin:
openMedicationList(context); EdgeInsets.symmetric(vertical: 8),
}, decoration: BoxDecoration(
readOnly: true, border: Border.all(
// hintColor: Colors.black, color: Colors.grey.shade400,
suffixIcon: EvaIcons.plusCircleOutline, width: 0.5),
suffixIconColor: Color(0xFF2B353E), borderRadius: BorderRadius.all(
fontWeight: FontWeight.w600, Radius.circular(8),
// controller: messageController, ),
validator: (value) { color: Colors.white,
if (value == null) ),
return TranslationBase child: Row(
.of(context) mainAxisAlignment:
.emptyMessage; MainAxisAlignment.spaceBetween,
else crossAxisAlignment:
return null; 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( SizedBox(
height: 20, height: 20,
@ -78,6 +101,7 @@ class _UpdateMedicationWidgetState extends State<UpdateMedicationWidget> {
showModalBottomSheet( showModalBottomSheet(
backgroundColor: Colors.white, backgroundColor: Colors.white,
isScrollControlled: true, isScrollControlled: true,
isDismissible: false,
context: context, context: context,
builder: (context) { builder: (context) {
return AddMedication( return AddMedication(

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.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/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
@ -21,10 +22,13 @@ import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjecti
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/update_history_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_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_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import '../SOAP_step_header.dart';
import '../expandable_SOAP_widget.dart'; import '../expandable_SOAP_widget.dart';
import '../steps_widget.dart';
class UpdateSubjectivePage extends StatefulWidget { class UpdateSubjectivePage extends StatefulWidget {
final Function changePageViewIndex; final Function changePageViewIndex;
@ -32,13 +36,14 @@ class UpdateSubjectivePage extends StatefulWidget {
final List<MySelectedAllergy> myAllergiesList; final List<MySelectedAllergy> myAllergiesList;
final List<MySelectedHistory> myHistoryList; final List<MySelectedHistory> myHistoryList;
final PatiantInformtion patientInfo; final PatiantInformtion patientInfo;
final int currentIndex;
UpdateSubjectivePage( UpdateSubjectivePage(
{Key key, {Key key,
this.changePageViewIndex, this.changePageViewIndex,
this.myAllergiesList, this.myAllergiesList,
this.myHistoryList, this.myHistoryList,
this.patientInfo, this.changeLoadingState}); this.patientInfo, this.changeLoadingState, this.currentIndex});
@override @override
_UpdateSubjectivePageState createState() => _UpdateSubjectivePageState(); _UpdateSubjectivePageState createState() => _UpdateSubjectivePageState();
@ -231,10 +236,10 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
widthFactor: 0.9, widthFactor: 0.9,
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SizedBox(
height: 30, SOAPStepHeader(currentIndex: widget.currentIndex, changePageViewIndex:widget.changePageViewIndex),
),
ExpandableSOAPWidget( ExpandableSOAPWidget(
headerTitle: TranslationBase.of(context) headerTitle: TranslationBase.of(context)
.chiefComplaints .chiefComplaints
@ -316,11 +321,11 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(10.0), Radius.circular(0.0),
), ),
border: Border.all( border: Border.all(
color: HexColor('#707070'), color: HexColor('#707070'),
width: 0.30), width: 0),
), ),
height: MediaQuery height: MediaQuery
.of(context) .of(context)
@ -535,3 +540,4 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {

@ -14,6 +14,7 @@ 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/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.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/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app-textfield-custom.dart'; import 'package:doctor_app_flutter/widgets/shared/app-textfield-custom.dart';
@ -28,6 +29,7 @@ import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'SOAP_step_header.dart';
import 'custom_validation_error.dart'; import 'custom_validation_error.dart';
class UpdateAssessmentPage extends StatefulWidget { class UpdateAssessmentPage extends StatefulWidget {
@ -35,13 +37,13 @@ class UpdateAssessmentPage extends StatefulWidget {
List<MySelectedAssessment> mySelectedAssessmentList; List<MySelectedAssessment> mySelectedAssessmentList;
final PatiantInformtion patientInfo; final PatiantInformtion patientInfo;
final Function changeLoadingState; final Function changeLoadingState;
final int currentIndex;
UpdateAssessmentPage( UpdateAssessmentPage(
{Key key, {Key key,
this.changePageViewIndex, this.changePageViewIndex,
this.mySelectedAssessmentList, this.mySelectedAssessmentList,
this.patientInfo, this.patientInfo,
this.changeLoadingState}); this.changeLoadingState, this.currentIndex});
@override @override
_UpdateAssessmentPageState createState() => _UpdateAssessmentPageState(); _UpdateAssessmentPageState createState() => _UpdateAssessmentPageState();
@ -122,9 +124,7 @@ class _UpdateAssessmentPageState extends State<UpdateAssessmentPage> {
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
SizedBox( SOAPStepHeader(currentIndex: widget.currentIndex, changePageViewIndex:widget.changePageViewIndex),
height: 30,
),
Container( Container(
width: double.infinity, width: double.infinity,
margin: EdgeInsets.only(top: 10, left: 10, right: 10), margin: EdgeInsets.only(top: 10, left: 10, right: 10),
@ -689,7 +689,8 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SizedBox(
SizedBox(
height: 16, height: 16,
), ),
Row( Row(

@ -1,6 +1,4 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
@ -14,31 +12,33 @@ import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.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-textfield-custom.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_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_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart'; import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart';
import 'package:doctor_app_flutter/widgets/shared/new_text_Field.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'SOAP_step_header.dart';
class UpdatePlanPage extends StatefulWidget { class UpdatePlanPage extends StatefulWidget {
final Function changePageViewIndex; final Function changePageViewIndex;
final PatiantInformtion patientInfo; final PatiantInformtion patientInfo;
final Function changeLoadingState; final Function changeLoadingState;
GetPatientProgressNoteResModel patientProgressNote;
final int currentIndex;
GetPatientProgressNoteResModel patientProgressNote;
UpdatePlanPage( UpdatePlanPage(
{Key key, {Key key,
this.changePageViewIndex, this.changePageViewIndex,
this.patientInfo, this.patientInfo,
this.changeLoadingState, this.changeLoadingState,
this.patientProgressNote}); this.patientProgressNote,
this.currentIndex});
@override @override
_UpdatePlanPageState createState() => _UpdatePlanPageState(); _UpdatePlanPageState createState() => _UpdatePlanPageState();
@ -108,117 +108,137 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
child: Center( child: Center(
child: FractionallySizedBox( child: FractionallySizedBox(
widthFactor: 0.95, widthFactor: 0.95,
child: Container( child: Column(
margin: EdgeInsets.all(8.0), children: [
padding: EdgeInsets.all(12.0), SOAPStepHeader(currentIndex: widget.currentIndex, changePageViewIndex:widget.changePageViewIndex),
decoration: BoxDecoration(
shape: BoxShape.rectangle, SizedBox(height: 10,),
color: Colors.white, Container(
borderRadius: BorderRadius.circular(12), margin: EdgeInsets.all(8.0),
border: Border.fromBorderSide(BorderSide( padding: EdgeInsets.all(12.0),
color: Colors.grey.shade400, decoration: BoxDecoration(
width: 0.4, shape: BoxShape.rectangle,
)), color: Colors.white,
), borderRadius: BorderRadius.circular(12),
child: Column( border: Border.fromBorderSide(BorderSide(
mainAxisAlignment: MainAxisAlignment.start, color: Colors.grey.shade400,
children: [ width: 0.4,
Column( )),
crossAxisAlignment: CrossAxisAlignment.start, ),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Container(
margin: EdgeInsets.only(left: 5, right: 5),
child: Texts(TranslationBase.of(context).progressNote)),
if( isAddProgress)
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: AppTextFieldCustom(
hintText: TranslationBase.of(context).progressNote,
controller: progressNoteController,
minLines: 2,
maxLines: 4,
inputType: TextInputType.multiline,
onChanged: (value){
widget.patientProgressNote.planNote = value;
},
),
),
SizedBox(
height: 9,
),
if ( widget.patientProgressNote.planNote != null && !isAddProgress)
Container(
margin:
EdgeInsets.only(left: 5, right: 5,),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Texts('Appointment No: ',fontSize: 12,),
Texts(widget.patientProgressNote.appointmentNo??'',fontWeight: FontWeight.w600,),
], Column(
), crossAxisAlignment: CrossAxisAlignment.start,
Texts( children: [
widget.patientProgressNote.createdOn !=null?DateUtils.getDayMonthYearDateFormatted(DateTime.parse(widget.patientProgressNote.createdOn)):DateUtils.getDayMonthYearDateFormatted(DateTime.now()), Container(
fontWeight: FontWeight.w600, margin: EdgeInsets.only(left: 5, right: 5),
fontSize: 14, child: Texts(TranslationBase
) .of(context)
.progressNote)),
if(isAddProgress)
Container(
margin:
EdgeInsets.only(left: 10, right: 10, top: 15),
], child: AppTextFieldCustom(
), hintText: TranslationBase.of(context).progressNote,
Row( controller: progressNoteController,
mainAxisAlignment: MainAxisAlignment.spaceBetween, minLines: 2,
crossAxisAlignment: CrossAxisAlignment.start, maxLines: 4,
children: [ inputType: TextInputType.multiline,
Row( onChanged: (value){
children: [ widget.patientProgressNote.planNote = value;
Texts('Condition: ',fontSize: 12,), },
Texts(widget.patientProgressNote.mName??'',fontWeight: FontWeight.w600),
],
), ),
Texts(
widget.patientProgressNote.createdOn !=null?DateUtils.getHour(DateTime.parse(widget.patientProgressNote.createdOn)):DateUtils.getHour(DateTime.now()),
fontWeight: FontWeight.w600,
fontSize: 14,
)
],
), ),
SizedBox(height: 8,), SizedBox(
Row( height: 9,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
child: Texts(
progressNoteController.text,
fontSize: 10,
),
),
InkWell(
onTap: (){
setState(() {
isAddProgress = true;
widget.changePageViewIndex(3,isChangeState:false);
});
},
child: Icon(DoctorApp.edit,size: 18,))
],
), ),
if ( widget.patientProgressNote.planNote != null&& !isAddProgress)
Container(
margin:
EdgeInsets.only(left: 5, right: 5, ),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Texts('Appointment No: ',fontSize: 12,),
Texts(widget.patientProgressNote.appointmentNo??'',fontWeight: FontWeight.w600,),
],
),
Texts(
widget.patientProgressNote.createdOn !=null?DateUtils.getDayMonthYearDateFormatted(DateTime.parse(widget.patientProgressNote.createdOn)):DateUtils.getDayMonthYearDateFormatted(DateTime.now()),
fontWeight: FontWeight
.w600,
fontSize: 14,
)
],
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Texts('Condition: ',
fontSize: 12,),
Texts(
widget.patientProgressNote.mName??'',fontWeight: FontWeight.w600),
],
),
Texts(
widget.patientProgressNote.createdOn !=null?DateUtils.getHour(DateTime.parse(widget.patientProgressNote.createdOn)):DateUtils.getHour(DateTime.now()),
fontWeight: FontWeight.w600,
fontSize: 14,
)
],
),
SizedBox(height: 8,
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
Expanded(
child: Texts(
progressNoteController.text,
fontSize: 10,
),
),
InkWell(
onTap: (){
setState(() {
isAddProgress = true;
widget.changePageViewIndex(3,isChangeState:false);
});
},
child: Icon(DoctorApp.edit,size: 18,))
], ],
), ),
],
),
) )
], ],
), ),
], ],
), ),
),
],
), ),
), ),
), ),

@ -1,3 +1,4 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteResModel.dart'; import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteResModel.dart';
import 'package:doctor_app_flutter/models/SOAP/my_selected_allergy.dart'; import 'package:doctor_app_flutter/models/SOAP/my_selected_allergy.dart';
@ -6,11 +7,13 @@ import 'package:doctor_app_flutter/models/SOAP/my_selected_examination.dart';
import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart'; import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; 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/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/steps_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/steps_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/update_assessment_page.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/update_assessment_page.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/update_plan_page.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/update_plan_page.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -83,6 +86,7 @@ class _UpdateSoapIndexState extends State<UpdateSoapIndex>
color: Theme.of(context).scaffoldBackgroundColor), color: Theme.of(context).scaffoldBackgroundColor),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
// PatientPageHeaderWidget(patient), // PatientPageHeaderWidget(patient),
PatientProfileHeaderNewDesign(patient, '7', '7', height: MediaQuery.of(context).size.height * 0.28,), PatientProfileHeaderNewDesign(patient, '7', '7', height: MediaQuery.of(context).size.height * 0.28,),
@ -91,20 +95,10 @@ class _UpdateSoapIndexState extends State<UpdateSoapIndex>
height: 1, height: 1,
color: Color(0xffCCCCCC), color: Color(0xffCCCCCC),
), ),
Container( Container(
color: Theme.of(context).scaffoldBackgroundColor, color: Theme.of(context).scaffoldBackgroundColor,
margin: EdgeInsets.only( height: MediaQuery.of(context).size.height * 0.73,
left: MediaQuery.of(context).size.width * 0.05,
right: MediaQuery.of(context).size.width * 0.05),
child: StepsWidget(
index: _currentIndex,
changeCurrentTab: changePageViewIndex,
height: 135,//MediaQuery.of(context).size.height * 0.17,
),
),
Container(
color: Theme.of(context).scaffoldBackgroundColor,
height: MediaQuery.of(context).size.height * 0.50,
child: PageView( child: PageView(
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
controller: _controller, controller: _controller,
@ -117,22 +111,26 @@ class _UpdateSoapIndexState extends State<UpdateSoapIndex>
children: <Widget>[ children: <Widget>[
UpdateSubjectivePage( UpdateSubjectivePage(
changePageViewIndex: changePageViewIndex, changePageViewIndex: changePageViewIndex,
currentIndex: _currentIndex,
myAllergiesList: myAllergiesList, myAllergiesList: myAllergiesList,
myHistoryList: myHistoryList, myHistoryList: myHistoryList,
patientInfo: patient, patientInfo: patient,
changeLoadingState: changeLoadingState), changeLoadingState: changeLoadingState),
UpdateObjectivePage( UpdateObjectivePage(
changePageViewIndex: changePageViewIndex, changePageViewIndex: changePageViewIndex,
currentIndex: _currentIndex,
mySelectedExamination: mySelectedExamination, mySelectedExamination: mySelectedExamination,
patientInfo: patient, patientInfo: patient,
changeLoadingState: changeLoadingState), changeLoadingState: changeLoadingState),
UpdateAssessmentPage( UpdateAssessmentPage(
changePageViewIndex: changePageViewIndex, changePageViewIndex: changePageViewIndex,
currentIndex: _currentIndex,
mySelectedAssessmentList: mySelectedAssessment, mySelectedAssessmentList: mySelectedAssessment,
patientInfo: patient, patientInfo: patient,
changeLoadingState: changeLoadingState), changeLoadingState: changeLoadingState),
UpdatePlanPage( UpdatePlanPage(
changePageViewIndex: changePageViewIndex, changePageViewIndex: changePageViewIndex,
currentIndex: _currentIndex,
patientInfo: patient, patientInfo: patient,
patientProgressNote: patientProgressNote, patientProgressNote: patientProgressNote,
changeLoadingState: changeLoadingState) changeLoadingState: changeLoadingState)

@ -1,4 +1,5 @@
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'app_texts_widget.dart'; import 'app_texts_widget.dart';
@ -19,6 +20,7 @@ class AppTextFieldCustom extends StatefulWidget {
final int maxLines; final int maxLines;
final List<TextInputFormatter> inputFormatters; final List<TextInputFormatter> inputFormatters;
final Function(String) onChanged; final Function(String) onChanged;
final String validationError;
AppTextFieldCustom({ AppTextFieldCustom({
this.height = 0, this.height = 0,
@ -36,6 +38,7 @@ class AppTextFieldCustom extends StatefulWidget {
this.maxLines = 1, this.maxLines = 1,
this.inputFormatters, this.inputFormatters,
this.onChanged, this.onChanged,
this.validationError,
}); });
@override @override
@ -45,80 +48,115 @@ class AppTextFieldCustom extends StatefulWidget {
class _AppTextFieldCustomState extends State<AppTextFieldCustom> { class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Column(
height: widget.height != 0 ? widget.height : null, children: [
decoration: widget.hasBorder Container(
? containerBorderDecoration(Color(0Xffffffff), Color(0xFFEFEFEF)) height: widget.height != 0 ? widget.height + 8 : null,
: null, decoration: widget.hasBorder
padding: EdgeInsets.only(top: 4.0, bottom: 4.0, left: 8.0, right: 8.0), ? containerBorderDecoration(
child: InkWell( Color(0Xffffffff),
onTap: widget.onClick ?? null, widget.validationError == null
child: Row( ? Color(0xFFEFEFEF)
crossAxisAlignment: CrossAxisAlignment.center, : Colors.red.shade700)
children: [ : null,
Expanded( padding:
child: Column( EdgeInsets.only(top: 4.0, bottom: 4.0, left: 8.0, right: 8.0),
crossAxisAlignment: CrossAxisAlignment.start, child: InkWell(
mainAxisAlignment: MainAxisAlignment.center, onTap: widget.onClick ?? null,
children: [ child: Row(
if ((widget.controller != null && crossAxisAlignment: CrossAxisAlignment.center,
widget.controller.text != "") || children: [
widget.dropDownText != null) Expanded(
AppText( child: Container(
widget.hintText, padding: widget.dropDownText == null
fontFamily: 'Poppins', ? EdgeInsets.symmetric(vertical: 0)
fontSize: SizeConfig.textMultiplier * 1.4, : EdgeInsets.symmetric(vertical: 8),
fontWeight: FontWeight.w700, child: Column(
), crossAxisAlignment: CrossAxisAlignment.start,
widget.dropDownText == null mainAxisAlignment: MainAxisAlignment.center,
? TextField( children: [
textAlign: TextAlign.left, if ((widget.controller != null &&
decoration: textFieldSelectorDecoration( widget.controller.text != "") ||
widget.hintText, null, true), widget.dropDownText != null)
style: TextStyle( AppText(
fontSize: SizeConfig.textMultiplier * 1.7, widget.hintText,
fontFamily: 'Poppins', fontFamily: 'Poppins',
color: Colors.grey.shade800, fontSize: SizeConfig.textMultiplier * 1.4,
fontWeight: FontWeight.w700,
), ),
controller: widget.controller, widget.dropDownText == null
keyboardType: widget.inputType, ? TextField(
enabled: widget.enabled, textAlign: TextAlign.left,
minLines: widget.minLines, decoration: textFieldSelectorDecoration(
maxLines: widget.maxLines, widget.hintText, null, true),
inputFormatters: widget.inputFormatters != null style: TextStyle(
? widget.inputFormatters fontSize: SizeConfig.textMultiplier * 1.7,
: [], fontFamily: 'Poppins',
onChanged: (value) { color: Colors.grey.shade800,
if (widget.onChanged != null){ ),
widget.onChanged(value); controller: widget.controller,
setState(() { keyboardType: widget.inputType,
enabled: widget.enabled,
}); minLines: widget.minLines,
} maxLines: widget.maxLines,
}, inputFormatters: widget.inputFormatters != null
) ? widget.inputFormatters
: AppText( : [],
widget.dropDownText, onChanged: (value) {
fontFamily: 'Poppins', if (widget.onChanged != null) {
color: Colors.grey.shade800, widget.onChanged(value);
fontSize: SizeConfig.textMultiplier * 1.7, setState(() {});
), }
], },
), )
: AppText(
widget.dropDownText,
fontFamily: 'Poppins',
color: Colors.grey.shade800,
fontSize: SizeConfig.textMultiplier * 1.7,
),
],
),
),
),
widget.isDropDown
? widget.suffixIcon != null
? widget.suffixIcon
: Icon(
Icons.keyboard_arrow_down,
color: widget.dropDownColor != null
? widget.dropDownColor
: Colors.black,
)
: Container(),
],
), ),
widget.isDropDown ),
? widget.suffixIcon != null
? widget.suffixIcon
: Icon(
Icons.keyboard_arrow_down,
color: widget.dropDownColor != null
? widget.dropDownColor
: Colors.black,
)
: Container(),
],
), ),
), if (widget.validationError != null)
Container(
margin: EdgeInsets.only(top: 8, right: 8, left: 8, bottom: 8),
child: Row(
children: [
Icon(
DoctorApp.warning,
size: 20,
color: Colors.red.shade700,
),
SizedBox(
width: 12,
),
AppText(
widget.validationError,
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.7,
color: Colors.red.shade700,
fontWeight: FontWeight.w700,
),
],
),
),
],
); );
} }

@ -113,7 +113,7 @@ class _AppDrawerState extends State<AppDrawer> {
InkWell( InkWell(
child: DrawerItem( child: DrawerItem(
TranslationBase.of(context).applyOrRescheduleLeave, TranslationBase.of(context).applyOrRescheduleLeave,
DoctorApp.reschedule__1, icon: DoctorApp.reschedule__1,
// subTitle: , // subTitle: ,
), ),
onTap: () { onTap: () {
@ -129,8 +129,10 @@ class _AppDrawerState extends State<AppDrawer> {
SizedBox(height: 15), SizedBox(height: 15),
InkWell( InkWell(
child: DrawerItem( child: DrawerItem(
TranslationBase.of(context).myQRCode, TranslationBase
DoctorApp.qr_code_3, .of(context)
.myQRCode,
icon: DoctorApp.qr_code_3,
// subTitle: , // subTitle: ,
), ),
), ),
@ -149,7 +151,7 @@ class _AppDrawerState extends State<AppDrawer> {
), ),
), ),
SizedBox( SizedBox(
height: 130, height: MediaQuery.of(context).size.height * 0.09,
), ),
Container( Container(
margin: EdgeInsets.symmetric(horizontal: 20), margin: EdgeInsets.symmetric(horizontal: 20),
@ -157,10 +159,17 @@ class _AppDrawerState extends State<AppDrawer> {
children: [ children: [
InkWell( InkWell(
child: DrawerItem( child: DrawerItem(
projectsProvider.isArabic projectsProvider.isArabic
? TranslationBase.of(context).lanEnglish ? TranslationBase
: TranslationBase.of(context).lanArabic, .of(context)
DoctorApp.qr_code), .lanEnglish
: TranslationBase
.of(context)
.lanArabic,
// icon: DoctorApp.qr_code,
assetLink: projectsProvider.isArabic
? 'assets/images/usa-flag.png'
: 'assets/images/saudi-arabia-flag.png',),
onTap: () { onTap: () {
if (projectsProvider.isArabic) if (projectsProvider.isArabic)
projectsProvider.changeLanguage('en'); projectsProvider.changeLanguage('en');
@ -171,7 +180,9 @@ class _AppDrawerState extends State<AppDrawer> {
SizedBox(height: 10), SizedBox(height: 10),
InkWell( InkWell(
child: DrawerItem( child: DrawerItem(
TranslationBase.of(context).logout, DoctorApp.logout_1), TranslationBase
.of(context)
.logout, icon: DoctorApp.logout_1,),
onTap: () async { onTap: () async {
Navigator.pop(context); Navigator.pop(context);
await helpers.logout(); await helpers.logout();

@ -82,7 +82,7 @@ class DoctorCard extends StatelessWidget {
], ],
), ),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Container( Container(
child: LargeAvatar( child: LargeAvatar(
@ -93,74 +93,81 @@ class DoctorCard extends StatelessWidget {
height: 55, height: 55,
), ),
Expanded( Expanded(
flex: 4, child: Row(
child: Container( crossAxisAlignment: CrossAxisAlignment.end,
margin: EdgeInsets.all(10), children: [
child: Column( Expanded(
crossAxisAlignment: CrossAxisAlignment.start, child: Container(
children: <Widget>[ margin: EdgeInsets.all(10),
if (orderNo != null && !isPrescriptions) child: Column(
Row( crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(
'order No:',
color: Colors.grey[500],
fontSize: 14,
),
Texts(
orderNo ?? '',
fontSize: 14,
)
],
),
if (invoiceNO != null && !isPrescriptions)
Row(
children: <Widget>[ children: <Widget>[
Texts( if (orderNo != null && !isPrescriptions)
'Invoice:', Row(
fontSize: 14, children: <Widget>[
color: Colors.grey[500], Texts(
'order No:',
color: Colors.grey[500],
fontSize: 14,
),
Texts(
orderNo ?? '',
fontSize: 14,
)
],
),
if (invoiceNO != null && !isPrescriptions)
Row(
children: <Widget>[
Texts(
'Invoice:',
fontSize: 14,
color: Colors.grey[500],
),
Texts(
invoiceNO,
fontSize: 14,
)
],
),
if(clinic!=null)
Row(
children: <Widget>[
Texts(
'Clinic: ',
color: Colors.grey[500],
fontSize: 14,
),
Texts(
clinic,
fontSize: 14,
)
],
), ),
Texts( if(branch!=null)
invoiceNO, Row(
fontSize: 14, children: <Widget>[
Texts(
'Branch: ',
fontSize: 14,
color: Colors.grey[500],
),
Texts(
branch,
fontSize: 14,
)
],
) )
], ]),
), ),
if(isPrescriptions) ),
Row( Icon(
children: <Widget>[ EvaIcons.eye,
Texts( )
'Clinic: ', ],
color: Colors.grey[500],
fontSize: 14,
),
Texts(
clinic,
fontSize: 14,
)
],
),
if(branch!=null)
Row(
children: <Widget>[
Texts(
'Branch: ',
fontSize: 14,
color: Colors.grey[500],
),
Texts(
branch,
fontSize: 14,
)
],
)
]),
), ),
), ),
Icon(
EvaIcons.eye,
)
], ],
), ),
], ],

@ -15,8 +15,9 @@ class DrawerItem extends StatefulWidget {
final String subTitle; final String subTitle;
final IconData icon; final IconData icon;
final Color color; final Color color;
final String assetLink;
DrawerItem(this.title, this.icon, {this.color, this.subTitle = ''}); DrawerItem(this.title, {this.icon, this.color, this.subTitle = '', this.assetLink});
@override @override
_DrawerItemState createState() => _DrawerItemState(); _DrawerItemState createState() => _DrawerItemState();
@ -30,6 +31,13 @@ class _DrawerItemState extends State<DrawerItem> {
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
if(widget.assetLink!=null)
Container(
height: 20,
width: 20,
child: Image.asset(widget.assetLink),
),
if(widget.assetLink==null)
Icon( Icon(
widget.icon, widget.icon,
color: widget.color ?? Colors.black87, color: widget.color ?? Colors.black87,

@ -26,7 +26,12 @@ class _HeaderBodyExpandableNotifierState
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
setState(() {
if (widget.isExpand == true) {
widget.expandFlag = widget.isExpand;
widget.controller.expanded = true;
}
});
return ExpandableNotifier( return ExpandableNotifier(
child: Padding( child: Padding(
padding: const EdgeInsets.only(left: 0, right: 0), padding: const EdgeInsets.only(left: 0, right: 0),

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -32,8 +33,13 @@ class NetworkBaseView extends StatelessWidget {
break; break;
case ViewState.Error: case ViewState.Error:
return Center( return Center(
child: DrAppEmbeddedError( child: Column(
error: baseViewModel.error, children: [
SizedBox(height: 100,),
Image.asset('assets/images/no-data.png',height: 250),
Texts(baseViewModel.error??'')
],
), ),
); );
break; break;

Loading…
Cancel
Save