Merge branches 'Stepper_header' and 'development' of https://gitlab.com/Cloud_Solution/doctor_app_flutter into Stepper_header

 Conflicts:
	lib/widgets/patients/profile/soap_update/update_plan_page.dart
merge-requests/473/head
Elham Rababah 5 years ago
commit 9a8ca00eec

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

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

@ -43,7 +43,7 @@ const Map<String, Map<String, String>> localizedValues = {
'notArrived': {'en': 'Not Arrived', 'ar': 'لم يصل'}, 'notArrived': {'en': 'Not Arrived', 'ar': 'لم يصل'},
'radiology': {'en': 'Radiology', 'ar': 'الأشعة'}, 'radiology': {'en': 'Radiology', 'ar': 'الأشعة'},
'service': {'en': 'Service', 'ar': 'خدمة'}, 'service': {'en': 'Service', 'ar': 'خدمة'},
'referral': {'en': 'Referral', 'ar': 'االإحالة'}, 'referral': {'en': 'Referral', 'ar': 'الإحالة'},
'inPatient': {'en': 'In Patient', 'ar': 'المريض الداخلي'}, 'inPatient': {'en': 'In Patient', 'ar': 'المريض الداخلي'},
'operations': {'en': 'Operations', 'ar': 'عمليات'}, 'operations': {'en': 'Operations', 'ar': 'عمليات'},
'patientServices': {'en': 'Patient Services', 'ar': 'خدمات المرضى'}, 'patientServices': {'en': 'Patient Services', 'ar': 'خدمات المرضى'},
@ -51,7 +51,7 @@ const Map<String, Map<String, String>> localizedValues = {
'myReferralPatient': {'en': 'My Referral Patient', 'ar': 'مرضى الاحالة'}, 'myReferralPatient': {'en': 'My Referral Patient', 'ar': 'مرضى الاحالة'},
'referPatient': {'en': 'Referral Patient', 'ar': 'إحالة مريض'}, 'referPatient': {'en': 'Referral Patient', 'ar': 'إحالة مريض'},
'myReferral': {'en': 'My Referral', 'ar': 'إحالة'}, 'myReferral': {'en': 'My Referral', 'ar': 'إحالة'},
'myReferredPatient': {'en': 'My Referred Patient', 'ar': 'مرضاي المحالين'}, 'myReferredPatient': {'en': 'Referred', 'ar': 'المحالين'},
'referredPatient': {'en': 'Referred Patient', 'ar': 'المرضى المحالين'}, 'referredPatient': {'en': 'Referred Patient', 'ar': 'المرضى المحالين'},
'referredOn': {'en': 'referred On : ', 'ar': ' : تمت الإحالة في'}, 'referredOn': {'en': 'referred On : ', 'ar': ' : تمت الإحالة في'},
'firstName': {'en': 'First Name', 'ar': 'الاسم الاول'}, 'firstName': {'en': 'First Name', 'ar': 'الاسم الاول'},
@ -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(),

@ -119,7 +119,7 @@ class _LoginsreenState extends State<Loginsreen> {
children: <Widget>[ children: <Widget>[
AuthHeader(loginType.knownUser), AuthHeader(loginType.knownUser),
SizedBox( SizedBox(
height: 60, height: 40,
), ),
LoginForm( LoginForm(
changeLoadingStata: changeLoadingStata, changeLoadingStata: changeLoadingStata,

@ -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: [

@ -8,10 +8,12 @@ import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/models/SOAP/order-procedure.dart'; import 'package:doctor_app_flutter/models/SOAP/order-procedure.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/screens/patients/profile/UCAF/page-stepper-widget.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.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/PatientHeaderWidgetNoAvatar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/PatientHeaderWidgetNoAvatar.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.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/borderedButton.dart'; import 'package:doctor_app_flutter/widgets/shared/borderedButton.dart';
@ -45,6 +47,9 @@ class _UcafDetailScreenState extends State<UcafDetailScreen> {
}, },
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
baseViewModel: model, baseViewModel: model,
isShowAppBar: true,
appBar: PatientProfileHeaderNewDesignAppBar(
patient, patientType, arrivalType),
appBarTitle: TranslationBase.of(context).ucaf, appBarTitle: TranslationBase.of(context).ucaf,
body: Column( body: Column(
children: [ children: [
@ -54,7 +59,32 @@ class _UcafDetailScreenState extends State<UcafDetailScreen> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
PatientHeaderWidgetNoAvatar(patient), // PatientHeaderWidgetNoAvatar(patient),
Container(
margin: EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
"${TranslationBase.of(context).patient}",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.6,
fontWeight: FontWeight.w600,
),
AppText(
"${TranslationBase.of(context).ucaf}",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 3,
fontWeight: FontWeight.bold,
)
],
),
),
PageStepperWidget(
stepsCount: 2,
currentStepIndex: 2,
screenSize: screenSize,
),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
@ -80,6 +110,32 @@ class _UcafDetailScreenState extends State<UcafDetailScreen> {
), ),
Container( Container(
margin: EdgeInsets.symmetric(vertical: 8, horizontal: 16), margin: EdgeInsets.symmetric(vertical: 8, horizontal: 16),
child: Row(
children: [
Expanded(
child: Container(
child: BorderedButton(
TranslationBase.of(context).cancel,
hasBorder: true,
vPadding: 8,
hPadding: 8,
borderColor: Colors.white,
backgroundColor: Colors.white,
textColor: HexColor("#B8382B"),
fontSize: SizeConfig.textMultiplier * 2.2,
handler: () {
Navigator.of(context).popUntil((route) {
return route.settings.name == PATIENTS_PROFILE;
});
},
),
),
),
SizedBox(
width: 8,
),
Expanded(
child: Container(
child: BorderedButton( child: BorderedButton(
TranslationBase.of(context).save, TranslationBase.of(context).save,
hasBorder: true, hasBorder: true,
@ -103,25 +159,11 @@ class _UcafDetailScreenState extends State<UcafDetailScreen> {
}, },
), ),
), ),
Container( ),
margin: EdgeInsets.only( ],
left: 16, right: 16, top: 0.0, bottom: 8),
child: BorderedButton(
TranslationBase.of(context).cancel,
hasBorder: true,
vPadding: 8,
hPadding: 8,
borderColor: Colors.white,
backgroundColor: Colors.white,
textColor: HexColor("#B8382B"),
fontSize: SizeConfig.textMultiplier * 2.2,
handler: () {
Navigator.of(context).popUntil((route) {
return route.settings.name == PATIENTS_PROFILE;
});
},
), ),
), ),
], ],
), ),
)); ));

@ -1,6 +1,7 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/patient-ucaf-viewmodel.dart'; import 'package:doctor_app_flutter/core/viewModel/patient-ucaf-viewmodel.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.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/screens/patients/profile/UCAF/page-stepper-widget.dart'; import 'package:doctor_app_flutter/screens/patients/profile/UCAF/page-stepper-widget.dart';
@ -115,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) {
@ -123,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),
@ -131,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) {
@ -139,14 +143,14 @@ 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: .durationOfIllness,
TranslationBase.of(context).durationOfIllness,
dropDownText: "3", dropDownText: "3",
inputType: TextInputType.number, inputType: TextInputType.number,
inputFormatters: [ inputFormatters: [
@ -163,6 +167,14 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
children: [ children: [
Row( Row(
children: [ children: [
Icon(
DoctorApp.warning,
size: 20,
color: Color(0xFFCC9B14),
),
SizedBox(
width: 8,
),
AppText( AppText(
"BP (H/L)", "BP (H/L)",
fontSize: fontSize:
@ -183,7 +195,7 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
], ],
), ),
SizedBox( SizedBox(
width: 4, width: 6,
), ),
Expanded( Expanded(
child: Row( child: Row(
@ -196,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(
@ -213,7 +225,7 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
], ],
), ),
SizedBox( SizedBox(
height: 4, height: 2,
), ),
Row( Row(
mainAxisAlignment: mainAxisAlignment:
@ -222,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}",
@ -246,10 +258,12 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
height: 16, height: 16,
), ),
AppText( AppText(
TranslationBase.of(context).chiefComplaintsAndSymptoms, TranslationBase.of(context)
.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,
@ -259,13 +273,15 @@ 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(
height: 8, height: 8,
), ),
AppTextFieldCustom( AppTextFieldCustom(
hintText: TranslationBase.of(context).instruction, hintText:
TranslationBase.of(context).instruction,
dropDownText: helpers.parseHtmlString(model dropDownText: helpers.parseHtmlString(model
.patientChiefComplaintList[0] .patientChiefComplaintList[0]
.chiefComplaint), .chiefComplaint),
@ -281,16 +297,18 @@ 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,
(index) => CheckboxListTile( (index) => CheckboxListTile(
title: AppText( title: AppText(
conditionsData[index]['name'], conditionsData[index]['name'],
fontWeight: FontWeight.bold, fontWeight: FontWeight.normal,
fontSize: fontSize:
SizeConfig.textMultiplier * 2.1, SizeConfig.textMultiplier * 2.1,
fontFamily: 'Poppins',
), ),
value: conditionsData[index] value: conditionsData[index]
['isChecked'], ['isChecked'],
@ -307,115 +325,76 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
SizedBox( SizedBox(
height: 8, height: 8,
), ),
Container( AppTextFieldCustom(
height: screenSize.height * 0.070, hintText: TranslationBase.of(context).other,
child: TextField( dropDownText: "None",
decoration: enabled: false,
Helpers.textFieldSelectorDecoration( ),
TranslationBase.of(context).other,
null,
false),
enabled: true,
controller: _otherController,
keyboardType: TextInputType.text,
)),
SizedBox( SizedBox(
height: 8, height: 8,
), ),
Container( AppTextFieldCustom(
height: screenSize.height * 0.070, hintText: TranslationBase.of(context).how,
child: TextField( dropDownText: "None",
decoration: enabled: false,
Helpers.textFieldSelectorDecoration( ),
TranslationBase.of(context).how,
null,
false),
enabled: true,
controller: _howController,
keyboardType: TextInputType.text,
)),
SizedBox( SizedBox(
height: 8, height: 8,
), ),
Row( Row(
children: [ children: [
Expanded( Expanded(
child: Container( child: AppTextFieldCustom(
height: screenSize.height * 0.070, hintText:
child: TextField( TranslationBase.of(context).when,
decoration: Helpers dropDownText: "None",
.textFieldSelectorDecoration( enabled: false,
TranslationBase.of(context) ),
.when,
null,
false),
enabled: true,
controller: _whenController,
keyboardType: TextInputType.text,
)),
), ),
SizedBox( SizedBox(
width: 4, width: 4,
), ),
Expanded( Expanded(
child: Container( child: AppTextFieldCustom(
height: screenSize.height * 0.070, hintText:
child: TextField( TranslationBase.of(context).where,
decoration: Helpers dropDownText: "None",
.textFieldSelectorDecoration( enabled: false,
TranslationBase.of(context) ),
.where,
null,
false),
enabled: true,
controller: _whereController,
keyboardType: TextInputType.text,
)),
), ),
], ],
), ),
SizedBox( SizedBox(
height: 8, height: 8,
), ),
Container( AppTextFieldCustom(
child: TextField( height: screenSize.height * 0.1,
decoration: hintText: TranslationBase.of(context)
Helpers.textFieldSelectorDecoration(
TranslationBase.of(context)
.specifyPossibleLineManagement, .specifyPossibleLineManagement,
null, dropDownText: "None",
false), enabled: false,
enabled: true,
controller: _managementsLineController,
keyboardType: TextInputType.text,
minLines: 4, minLines: 4,
maxLines: 6, maxLines: 6,
)), ),
SizedBox( SizedBox(
height: 16, height: 26,
), ),
AppText( AppText(
TranslationBase.of(context).significantSigns, TranslationBase.of(context).significantSigns,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 2.0, fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 2.2,
), ),
SizedBox( SizedBox(
height: 8, height: 8,
), ),
Container( AppTextFieldCustom(
child: TextField( height: screenSize.height * 0.1,
decoration: hintText:
Helpers.textFieldSelectorDecoration( TranslationBase.of(context).backAbdomen,
TranslationBase.of(context) dropDownText: "BackLNeck",
.backAbdomen, enabled: false,
null, ),
false),
enabled: true,
controller: _signsController,
keyboardType: TextInputType.multiline,
minLines: null,
maxLines: null,
)),
], ],
), ),
), ),
@ -430,7 +409,11 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
color: HexColor("#D02127"), color: HexColor("#D02127"),
onPressed: () { onPressed: () {
Navigator.of(context).pushNamed(PATIENT_UCAF_DETAIL, Navigator.of(context).pushNamed(PATIENT_UCAF_DETAIL,
arguments: {'patient': patient}); arguments: {
'patient': patient,
'patientType': patientType,
'arrivalType': arrivalType
});
}, },
), ),
), ),

@ -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;
@ -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;
@ -68,27 +78,28 @@ class StepWidget extends StatelessWidget {
Container( Container(
padding: EdgeInsets.all(0.0), padding: EdgeInsets.all(0.0),
margin: EdgeInsets.symmetric(horizontal: 1), margin: EdgeInsets.symmetric(horizontal: 1),
width: 25, width: 30,
height: 25, 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,7 +121,9 @@ class RadiologyHomePage extends StatelessWidget {
), ),
), ),
), ),
...List.generate(model.radiologyList.length, (index) => InkWell( ...List.generate(
model.radiologyList.length,
(index) => InkWell(
onTap: () => Navigator.push( onTap: () => Navigator.push(
context, context,
FadePage( FadePage(
@ -123,10 +138,10 @@ class RadiologyHomePage extends StatelessWidget {
profileUrl: model.radiologyList[index].doctorImageURL, profileUrl: model.radiologyList[index].doctorImageURL,
invoiceNO: '${model.radiologyList[index].invoiceNo}', invoiceNO: '${model.radiologyList[index].invoiceNo}',
branch: '${model.radiologyList[index].projectName}', branch: '${model.radiologyList[index].projectName}',
clinic: model.radiologyList[index].clinicDescription,
appointmentDate: model.radiologyList[index].orderDate, appointmentDate: model.radiologyList[index].orderDate,
), ),
)), )),
], ],
), ),
), ),

@ -44,12 +44,12 @@ class _PatientReferralScreen extends State<PatientReferralScreen>
child: Container( child: Container(
height: 60.0, height: 60.0,
// margin: EdgeInsets.only(top: 10.0), // margin: EdgeInsets.only(top: 10.0),
width: MediaQuery.of(context).size.width * 0.92, // 0.9, width: MediaQuery.of(context).size.width * 1, // 0.92,
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
bottom: BorderSide( bottom: BorderSide(
color: Theme.of(context).dividerColor, color: Theme.of(context).dividerColor,
width: 0.9), //width: 0.7 width: 1), //width: 0.7
), ),
color: Colors.white), color: Colors.white),
child: Center( child: Center(
@ -68,7 +68,7 @@ class _PatientReferralScreen extends State<PatientReferralScreen>
width: MediaQuery.of(context).size.width * 0.30, width: MediaQuery.of(context).size.width * 0.30,
child: Center( child: Center(
child: child:
AppText(TranslationBase.of(context).myReferral), AppText(TranslationBase.of(context).referral),
), ),
), ),
Container( Container(

@ -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(

@ -51,7 +51,7 @@ class VitalSignItem extends StatelessWidget {
"$lastVal", "$lastVal",
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.4, fontSize: SizeConfig.textMultiplier * 1.4,
fontWeight: FontWeight.w800, fontWeight: FontWeight.bold,
margin: 0, margin: 0,
), ),
Expanded( Expanded(
@ -88,7 +88,7 @@ class VitalSignItem extends StatelessWidget {
"$des", "$des",
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.3, fontSize: SizeConfig.textMultiplier * 1.3,
fontWeight: FontWeight.w600, fontWeight: FontWeight.bold,
), ),
), ),
), ),

@ -345,8 +345,9 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
suggestion suggestion
.genericName), .genericName),
padding: padding:
EdgeInsets.all(8.0)), EdgeInsets.all(15.0)),
itemSorter: (a, b) => 1, itemSorter: (a, b) => 1,
suggestionsAmount: 7,
itemFilter: (suggestion, input) => itemFilter: (suggestion, input) =>
suggestion.genericName.toLowerCase().startsWith( suggestion.genericName.toLowerCase().startsWith(
input.toLowerCase()) || input.toLowerCase()) ||
@ -383,6 +384,13 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
SizedBox( SizedBox(
height: spaceBetweenTextFileds, height: spaceBetweenTextFileds,
), ),
Visibility(
visible: _selectedMedication == null
? false
: true,
child: Container(
child: Column(
children: [
Container( Container(
child: Row( child: Row(
children: [ children: [
@ -391,7 +399,8 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
), ),
Radio( Radio(
activeColor: Color(0xFFB9382C), activeColor:
Color(0xFFB9382C),
value: 1, value: 1,
groupValue: selectedType, groupValue: selectedType,
onChanged: (value) { onChanged: (value) {
@ -402,7 +411,8 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
], ],
), ),
), ),
SizedBox(height: spaceBetweenTextFileds), SizedBox(
height: spaceBetweenTextFileds),
Container( Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
width: double.infinity, width: double.infinity,
@ -421,32 +431,39 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
// .digitsOnly // .digitsOnly
], ],
hintText: hintText:
TranslationBase.of(context) TranslationBase.of(
context)
.strength, .strength,
controller: strengthController, controller:
keyboardType: strengthController,
TextInputType.numberWithOptions( keyboardType: TextInputType
.numberWithOptions(
decimal: true, decimal: true,
), ),
onChanged: (String value) { onChanged: (String value) {
setState(() { setState(() {
strengthChar = value.length; strengthChar =
value.length;
}); });
if (strengthChar >= 5) { if (strengthChar >= 5) {
DrAppToastMsg.showErrorToast( DrAppToastMsg
.showErrorToast(
"Only 5 Digits allowed for strength"); "Only 5 Digits allowed for strength");
} }
}, },
onSubmit: (_) { onSubmit: (_) {
if (_selectedMedication != null && if (_selectedMedication !=
null &&
duration != null && duration != null &&
frequency != null && frequency != null &&
strengthController.text != strengthController
.text !=
null) { null) {
model.getBoxQuantity( model.getBoxQuantity(
freq: frequency[ freq: frequency[
'parameterCode'], 'parameterCode'],
duration: duration['id'], duration:
duration['id'],
itemCode: itemCode:
_selectedMedication _selectedMedication
.itemId, .itemId,
@ -479,12 +496,15 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
.width * .width *
0.350, 0.350,
child: InkWell( child: InkWell(
onTap: model.itemMedicineListUnit != onTap:
model.itemMedicineListUnit !=
null null
? () { ? () {
Helpers.hideKeyboard( Helpers
.hideKeyboard(
context); context);
ListSelectDialog dialog = ListSelectDialog
dialog =
ListSelectDialog( ListSelectDialog(
list: model list: model
.itemMedicineListUnit, .itemMedicineListUnit,
@ -492,23 +512,27 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
'description', 'description',
attributeValueId: attributeValueId:
'parameterCode', 'parameterCode',
okText: okText: TranslationBase.of(
TranslationBase.of(
context) context)
.ok, .ok,
okFunction: okFunction:
(selectedValue) { (selectedValue) {
setState(() { setState(
units = selectedValue; () {
units =
selectedValue;
units['isDefault'] = units['isDefault'] =
true; true;
}); });
}, },
); );
showDialog( showDialog(
barrierDismissible: false, barrierDismissible:
context: context, false,
builder: (BuildContext context:
context,
builder:
(BuildContext
context) { context) {
return dialog; return dialog;
}, },
@ -530,82 +554,110 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
], ],
), ),
), ),
SizedBox(height: spaceBetweenTextFileds), SizedBox(
height: spaceBetweenTextFileds),
Container( Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
color: Colors.white, color: Colors.white,
child: InkWell( child: InkWell(
onTap: model.itemMedicineListRoute != null onTap:
model.itemMedicineListRoute !=
null
? () { ? () {
Helpers.hideKeyboard(context); Helpers.hideKeyboard(
ListSelectDialog dialog = context);
ListSelectDialog
dialog =
ListSelectDialog( ListSelectDialog(
list: list: model
model.itemMedicineListRoute, .itemMedicineListRoute,
attributeName: 'description', attributeName:
'description',
attributeValueId: attributeValueId:
'parameterCode', 'parameterCode',
okText: okText:
TranslationBase.of(context) TranslationBase.of(
context)
.ok, .ok,
okFunction: (selectedValue) { okFunction:
(selectedValue) {
setState(() { setState(() {
route = selectedValue; route =
route['isDefault'] = true; selectedValue;
route['isDefault'] =
true;
}); });
if (route == null) { if (route ==
null) {
helpers.showErrorToast( helpers.showErrorToast(
'plase fill'); 'plase fill');
} }
}, },
); );
showDialog( showDialog(
barrierDismissible: false, barrierDismissible:
false,
context: context, context: context,
builder: builder:
(BuildContext context) { (BuildContext
context) {
return dialog; return dialog;
}, },
); );
} }
: null, : null,
child: TextField( child: TextField(
decoration: textFieldSelectorDecoration( decoration:
TranslationBase.of(context).route, textFieldSelectorDecoration(
TranslationBase.of(
context)
.route,
route != null route != null
? route['description'] ? route[
'description']
: null, : null,
true), true),
enabled: false, enabled: false,
), ),
), ),
), ),
SizedBox(height: spaceBetweenTextFileds), SizedBox(
height: spaceBetweenTextFileds),
Container( Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
color: Colors.white, color: Colors.white,
child: InkWell( child: InkWell(
onTap: model.itemMedicineList != null onTap:
model.itemMedicineList != null
? () { ? () {
Helpers.hideKeyboard(context); Helpers.hideKeyboard(
ListSelectDialog dialog = context);
ListSelectDialog
dialog =
ListSelectDialog( ListSelectDialog(
list: model.itemMedicineList, list: model
attributeName: 'description', .itemMedicineList,
attributeName:
'description',
attributeValueId: attributeValueId:
'parameterCode', 'parameterCode',
okText: okText:
TranslationBase.of(context) TranslationBase.of(
context)
.ok, .ok,
okFunction: (selectedValue) { okFunction:
(selectedValue) {
setState(() { setState(() {
frequency = selectedValue; frequency =
frequency['isDefault'] = selectedValue;
frequency[
'isDefault'] =
true; true;
if (_selectedMedication != if (_selectedMedication != null &&
duration !=
null &&
frequency !=
null && null &&
duration != null &&
frequency != null &&
strengthController strengthController
.text != .text !=
null) { null) {
@ -613,13 +665,14 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
freq: frequency[ freq: frequency[
'parameterCode'], 'parameterCode'],
duration: duration:
duration['id'], duration[
'id'],
itemCode: itemCode:
_selectedMedication _selectedMedication
.itemId, .itemId,
strength: double.parse( strength:
strengthController double.parse(
.text)); strengthController.text));
return; return;
} }
@ -627,64 +680,82 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
}, },
); );
showDialog( showDialog(
barrierDismissible: false, barrierDismissible:
false,
context: context, context: context,
builder: builder:
(BuildContext context) { (BuildContext
context) {
return dialog; return dialog;
}, },
); );
} }
: null, : null,
child: TextField( child: TextField(
decoration: textFieldSelectorDecoration( decoration:
TranslationBase.of(context) textFieldSelectorDecoration(
TranslationBase.of(
context)
.frequency, .frequency,
frequency != null frequency != null
? frequency['description'] ? frequency[
'description']
: null, : null,
true), true),
enabled: false, enabled: false,
), ),
), ),
), ),
SizedBox(height: spaceBetweenTextFileds), SizedBox(
height: spaceBetweenTextFileds),
Container( Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
color: Colors.white, color: Colors.white,
child: InkWell( child: InkWell(
onTap: model.medicationDoseTimeList != onTap:
model.medicationDoseTimeList !=
null null
? () { ? () {
Helpers.hideKeyboard(context); Helpers.hideKeyboard(
ListSelectDialog dialog = context);
ListSelectDialog
dialog =
ListSelectDialog( ListSelectDialog(
list: model list: model
.medicationDoseTimeList, .medicationDoseTimeList,
attributeName: 'nameEn', attributeName:
attributeValueId: 'id', 'nameEn',
attributeValueId:
'id',
okText: okText:
TranslationBase.of(context) TranslationBase.of(
context)
.ok, .ok,
okFunction: (selectedValue) { okFunction:
(selectedValue) {
setState(() { setState(() {
doseTime = selectedValue; doseTime =
selectedValue;
}); });
}, },
); );
showDialog( showDialog(
barrierDismissible: false, barrierDismissible:
false,
context: context, context: context,
builder: builder:
(BuildContext context) { (BuildContext
context) {
return dialog; return dialog;
}, },
); );
} }
: null, : null,
child: TextField( child: TextField(
decoration: textFieldSelectorDecoration( decoration:
TranslationBase.of(context) textFieldSelectorDecoration(
TranslationBase.of(
context)
.doseTime, .doseTime,
doseTime != null doseTime != null
? doseTime['nameEn'] ? doseTime['nameEn']
@ -694,8 +765,10 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
), ),
), ),
), ),
SizedBox(height: spaceBetweenTextFileds), SizedBox(
if (model.patientAssessmentList.isNotEmpty) height: spaceBetweenTextFileds),
if (model
.patientAssessmentList.isNotEmpty)
Container( Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
width: double.infinity, width: double.infinity,
@ -703,12 +776,14 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
child: Row( child: Row(
children: [ children: [
Container( Container(
width: MediaQuery.of(context) width:
MediaQuery.of(context)
.size .size
.width * .width *
0.29, 0.29,
child: InkWell( child: InkWell(
onTap: indicationList != null onTap:
indicationList != null
? () { ? () {
Helpers.hideKeyboard( Helpers.hideKeyboard(
context); context);
@ -722,8 +797,10 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
0] 0]
.icdCode10ID .icdCode10ID
.toString(), .toString(),
indication != null indication !=
? indication['name'] null
? indication[
'name']
: null, : null,
false), false),
enabled: true, enabled: true,
@ -732,13 +809,15 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
), ),
), ),
Container( Container(
width: MediaQuery.of(context) width:
MediaQuery.of(context)
.size .size
.width * .width *
0.65, 0.65,
color: Colors.white, color: Colors.white,
child: InkWell( child: InkWell(
onTap: indicationList != null onTap:
indicationList != null
? () { ? () {
Helpers.hideKeyboard( Helpers.hideKeyboard(
context); context);
@ -753,8 +832,10 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
0] 0]
.asciiDesc .asciiDesc
.toString(), .toString(),
indication != null indication !=
? indication['name'] null
? indication[
'name']
: null, : null,
false), false),
enabled: true, enabled: true,
@ -765,16 +846,20 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
], ],
), ),
), ),
SizedBox(height: spaceBetweenTextFileds), SizedBox(
height: spaceBetweenTextFileds),
Container( Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
color: Colors.white, color: Colors.white,
child: InkWell( child: InkWell(
onTap: () => onTap: () => selectDate(
selectDate(context, widget.model), context, widget.model),
child: TextField( child: TextField(
decoration: textFieldSelectorDecoration( decoration:
TranslationBase.of(context).date, textFieldSelectorDecoration(
TranslationBase.of(
context)
.date,
selectedDate != null selectedDate != null
? "${DateUtils.convertStringToDateFormat(selectedDate.toString(), "yyyy-MM-dd")}" ? "${DateUtils.convertStringToDateFormat(selectedDate.toString(), "yyyy-MM-dd")}"
: null, : null,
@ -787,39 +872,51 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
), ),
), ),
), ),
SizedBox(height: spaceBetweenTextFileds), SizedBox(
height: spaceBetweenTextFileds),
Container( Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
color: Colors.white, color: Colors.white,
child: InkWell( child: InkWell(
onTap: model.medicationDurationList != onTap:
model.medicationDurationList !=
null null
? () { ? () {
Helpers.hideKeyboard(context); Helpers.hideKeyboard(
ListSelectDialog dialog = context);
ListSelectDialog
dialog =
ListSelectDialog( ListSelectDialog(
list: model list: model
.medicationDurationList, .medicationDurationList,
attributeName: 'nameEn', attributeName:
attributeValueId: 'id', 'nameEn',
attributeValueId:
'id',
okText: okText:
TranslationBase.of(context) TranslationBase.of(
context)
.ok, .ok,
okFunction: (selectedValue) { okFunction:
(selectedValue) {
setState(() { setState(() {
duration = selectedValue; duration =
if (_selectedMedication != selectedValue;
if (_selectedMedication != null &&
duration !=
null &&
frequency !=
null && null &&
duration != null &&
frequency != null &&
strengthController strengthController
.text != .text !=
null) { null) {
model.getBoxQuantity( model
.getBoxQuantity(
freq: frequency[ freq: frequency[
'parameterCode'], 'parameterCode'],
duration: duration:
duration['id'], duration[
'id'],
itemCode: itemCode:
_selectedMedication _selectedMedication
.itemId, .itemId,
@ -827,7 +924,8 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
strengthController strengthController
.text), .text),
); );
box = model.boxQuintity; box = model
.boxQuintity;
return; return;
} }
@ -835,18 +933,22 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
}, },
); );
showDialog( showDialog(
barrierDismissible: false, barrierDismissible:
false,
context: context, context: context,
builder: builder:
(BuildContext context) { (BuildContext
context) {
return dialog; return dialog;
}, },
); );
} }
: null, : null,
child: TextField( child: TextField(
decoration: textFieldSelectorDecoration( decoration:
TranslationBase.of(context) textFieldSelectorDecoration(
TranslationBase.of(
context)
.duration, .duration,
duration != null duration != null
? duration['nameEn'] ? duration['nameEn']
@ -856,86 +958,108 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
), ),
), ),
), ),
SizedBox(height: spaceBetweenTextFileds), SizedBox(
height: spaceBetweenTextFileds),
Container( Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
color: Colors.white, color: Colors.white,
child: InkWell( child: InkWell(
onTap: model.allMedicationList != null onTap: model.allMedicationList !=
null
? () { ? () {
Helpers.hideKeyboard(context); Helpers.hideKeyboard(
context);
ListSelectDialog dialog = ListSelectDialog dialog =
ListSelectDialog( ListSelectDialog(
list: model.allMedicationList, list: model
.allMedicationList,
attributeName: 'nameEn', attributeName: 'nameEn',
attributeValueId: 'id', attributeValueId: 'id',
okText: okText:
TranslationBase.of(context) TranslationBase.of(
context)
.ok, .ok,
okFunction: (selectedValue) { okFunction:
(selectedValue) {
setState(() { setState(() {
duration = selectedValue; duration =
selectedValue;
}); });
}, },
); );
showDialog( showDialog(
barrierDismissible: false, barrierDismissible:
false,
context: context, context: context,
builder: builder: (BuildContext
(BuildContext context) { context) {
return dialog; return dialog;
}, },
); );
} }
: null, : null,
child: TextField( child: TextField(
decoration: textFieldSelectorDecoration( decoration:
textFieldSelectorDecoration(
"UOM", "UOM",
uom != null ? uom : null, uom != null
? uom
: null,
false), false),
//enabled: false, //enabled: false,
readOnly: true, readOnly: true,
), ),
), ),
), ),
SizedBox(height: spaceBetweenTextFileds), SizedBox(
height: spaceBetweenTextFileds),
Container( Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
color: Colors.white, color: Colors.white,
child: InkWell( child: InkWell(
onTap: model.allMedicationList != null onTap: model.allMedicationList !=
null
? () { ? () {
Helpers.hideKeyboard(context); Helpers.hideKeyboard(
context);
ListSelectDialog dialog = ListSelectDialog dialog =
ListSelectDialog( ListSelectDialog(
list: model.allMedicationList, list: model
.allMedicationList,
attributeName: 'nameEn', attributeName: 'nameEn',
attributeValueId: 'id', attributeValueId: 'id',
okText: okText:
TranslationBase.of(context) TranslationBase.of(
context)
.ok, .ok,
okFunction: (selectedValue) { okFunction:
(selectedValue) {
setState(() { setState(() {
duration = selectedValue; duration =
selectedValue;
}); });
}, },
); );
showDialog( showDialog(
barrierDismissible: false, barrierDismissible:
false,
context: context, context: context,
builder: builder: (BuildContext
(BuildContext context) { context) {
return dialog; return dialog;
}, },
); );
} }
: null, : null,
child: TextField( child: TextField(
decoration: textFieldSelectorDecoration( decoration:
textFieldSelectorDecoration(
"Box Quantity", "Box Quantity",
box != null box != null
? "Box Quantity: " + ? "Box Quantity: " +
model.boxQuintity.toString() model
.boxQuintity
.toString()
: null, : null,
false), false),
//enabled: false, //enabled: false,
@ -943,24 +1067,28 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
), ),
), ),
), ),
SizedBox(height: spaceBetweenTextFileds), SizedBox(
height: spaceBetweenTextFileds),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(6.0)), Radius.circular(6.0)),
border: Border.all( border: Border.all(
width: 1.0, width: 1.0,
color: HexColor("#CCCCCC"))), color:
HexColor("#CCCCCC"))),
child: TextFields( child: TextFields(
maxLines: 6, maxLines: 6,
minLines: 4, minLines: 4,
hintText: TranslationBase.of(context) hintText:
TranslationBase.of(context)
.instruction, .instruction,
controller: instructionController, controller: instructionController,
//keyboardType: TextInputType.number, //keyboardType: TextInputType.number,
), ),
), ),
SizedBox(height: spaceBetweenTextFileds), SizedBox(
height: spaceBetweenTextFileds),
Container( Container(
margin: EdgeInsets.all( margin: EdgeInsets.all(
SizeConfig.widthMultiplier * 5), SizeConfig.widthMultiplier * 5),
@ -969,7 +1097,8 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
children: <Widget>[ children: <Widget>[
AppButton( AppButton(
color: Color(0xff359846), color: Color(0xff359846),
title: TranslationBase.of(context) title: TranslationBase.of(
context)
.addMedication, .addMedication,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
onPressed: () { onPressed: () {
@ -996,14 +1125,16 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
} }
if (double.parse( if (double.parse(
strengthController.text) > strengthController
.text) >
1000.0) { 1000.0) {
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast(
"1000 is the MAX for the strength"); "1000 is the MAX for the strength");
return; return;
} }
if (double.parse( if (double.parse(
strengthController.text) < strengthController
.text) <
0.0) { 0.0) {
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast(
"strength can't be zero"); "strength can't be zero");
@ -1097,6 +1228,10 @@ class _PrescriptionFormWidgetState extends State<PrescriptionFormWidget> {
), ),
), ),
), ),
],
),
),
),
); );
}), }),
), ),

@ -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,29 +143,38 @@ 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(
isShowAppBar: false,
body: NetworkBaseView(
baseViewModel: model, baseViewModel: model,
child: DraggableScrollableSheet( child: DraggableScrollableSheet(
minChildSize: 0.90, minChildSize: 0.90,
initialChildSize: 0.95, initialChildSize: 0.95,
maxChildSize: 1.0, maxChildSize: 1.0,
builder: (BuildContext context, ScrollController scrollController) { builder:
(BuildContext context, ScrollController scrollController) {
return SingleChildScrollView( return SingleChildScrollView(
child: Container( child: Container(
height: MediaQuery.of(context).size.height * 1.20, height: MediaQuery.of(context).size.height * 1.0,
child: Padding( child: Padding(
padding: EdgeInsets.all(12.0), padding: EdgeInsets.all(12.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
children: [ children: [
Row( Row(
children: [ children: [
AppText(
'New Lab Order',
fontWeight: FontWeight.w700,
fontSize: 20,
),
SizedBox(
width: MediaQuery.of(context).size.width * 0.48,
),
InkWell( InkWell(
child: Icon( child: Icon(
Icons.close, Icons.close,
size: 24.0, size: 28.0,
), ),
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);
@ -172,17 +182,6 @@ class _AddSelectedLabOrderState extends State<AddSelectedLabOrder> {
), ),
], ],
), ),
Row(
children: [
AppText(
'New Lab Order',
fontWeight: FontWeight.w700,
fontSize: 20,
),
],
),
],
),
SizedBox( SizedBox(
height: 10.0, height: 10.0,
), ),
@ -261,8 +260,10 @@ class _AddSelectedLabOrderState extends State<AddSelectedLabOrder> {
alignment: WrapAlignment.center, alignment: WrapAlignment.center,
children: <Widget>[ children: <Widget>[
AppButton( AppButton(
title: TranslationBase.of(context) title:
.addSelectedProcedures, "Add Lab Order", //TranslationBase.of(context)
fontWeight: FontWeight.w700,
//.addSelectedProcedures,
color: Color(0xff359846), color: Color(0xff359846),
onPressed: () { onPressed: () {
//print(entityList.toString()); //print(entityList.toString());
@ -294,6 +295,7 @@ class _AddSelectedLabOrderState extends State<AddSelectedLabOrder> {
); );
}), }),
), ),
),
); );
} }

@ -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,29 +143,38 @@ 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(
isShowAppBar: false,
body: NetworkBaseView(
baseViewModel: model, baseViewModel: model,
child: DraggableScrollableSheet( child: DraggableScrollableSheet(
minChildSize: 0.90, minChildSize: 0.90,
initialChildSize: 0.95, initialChildSize: 0.95,
maxChildSize: 1.0, maxChildSize: 1.0,
builder: (BuildContext context, ScrollController scrollController) { builder:
(BuildContext context, ScrollController scrollController) {
return SingleChildScrollView( return SingleChildScrollView(
child: Container( child: Container(
height: MediaQuery.of(context).size.height * 1.20, height: MediaQuery.of(context).size.height * 1.0,
child: Padding( child: Padding(
padding: EdgeInsets.all(12.0), padding: EdgeInsets.all(12.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
children: [ children: [
Row( Row(
children: [ children: [
AppText(
'New Radiology Order',
fontWeight: FontWeight.w700,
fontSize: 20,
),
SizedBox(
width: MediaQuery.of(context).size.width * 0.48,
),
InkWell( InkWell(
child: Icon( child: Icon(
Icons.close, Icons.close,
size: 24.0, size: 28.0,
), ),
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);
@ -172,17 +182,6 @@ class _AddSelectedRadiologyOrderState extends State<AddSelectedRadiologyOrder> {
), ),
], ],
), ),
Row(
children: [
AppText(
'New Radiology Order',
fontWeight: FontWeight.w700,
fontSize: 20,
),
],
),
],
),
SizedBox( SizedBox(
height: 10.0, height: 10.0,
), ),
@ -261,9 +260,9 @@ class _AddSelectedRadiologyOrderState extends State<AddSelectedRadiologyOrder> {
alignment: WrapAlignment.center, alignment: WrapAlignment.center,
children: <Widget>[ children: <Widget>[
AppButton( AppButton(
title: TranslationBase.of(context) title: 'Add Radiology Order',
.addSelectedProcedures,
color: Color(0xff359846), color: Color(0xff359846),
fontWeight: FontWeight.w700,
onPressed: () { onPressed: () {
//print(entityList.toString()); //print(entityList.toString());
onPressed: onPressed:
@ -294,6 +293,7 @@ class _AddSelectedRadiologyOrderState extends State<AddSelectedRadiologyOrder> {
); );
}), }),
), ),
),
); );
} }

@ -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,13 +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: [
Row(
children: [
Padding(
padding: const EdgeInsets
.symmetric(
horizontal: 11),
child: AppText(
TranslationBase.of(
context)
.orderType,
fontWeight:
FontWeight.w700,
color: Color(0xff2B353E),
),
),
],
),
Row(
children: [ children: [
AppText(
TranslationBase.of(context)
.orderType),
Radio( Radio(
activeColor: Color(0xFFB9382C), activeColor:
Color(0xFFD02127),
value: 0, value: 0,
groupValue: selectedType, groupValue: selectedType,
onChanged: (value) { onChanged: (value) {
@ -148,9 +170,14 @@ class _EntityListCheckboxSearchWidgetState
value.toString(); value.toString();
}, },
), ),
Text('routine'), AppText(
'routine',
color: Color(0xff575757),
fontWeight: FontWeight.w600,
),
Radio( Radio(
activeColor: Color(0xFFB9382C), activeColor:
Color(0xFFD02127),
groupValue: selectedType, groupValue: selectedType,
value: 1, value: 1,
onChanged: (value) { onChanged: (value) {
@ -162,18 +189,24 @@ class _EntityListCheckboxSearchWidgetState
value.toString(); value.toString();
}, },
), ),
Text(TranslationBase.of(context) AppText(
.urgent), TranslationBase.of(context)
.urgent,
color: Color(0xff575757),
fontWeight: FontWeight.w600,
),
],
),
], ],
), ),
), ),
), ),
SizedBox( SizedBox(
height: 15.0, height: 2.0,
), ),
Padding( Padding(
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
horizontal: 12), horizontal: 12, vertical: 12.0),
child: TextFields( child: TextFields(
hintText: TranslationBase.of(context) hintText: TranslationBase.of(context)
.remarks, .remarks,
@ -183,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,13 +29,11 @@ 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: SingleChildScrollView(
child: Container( child: Container(
color: Colors.white,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -148,7 +146,6 @@ class ProcedureScreen extends StatelessWidget {
), ),
), ),
), ),
),
); );
} }
} }

@ -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];

@ -319,7 +319,7 @@ class _KnownUserLoginState extends State<KnownUserLogin> {
} }
navigateToHome() { navigateToHome() {
Navigator.of(context).pushNamed(HOME); Navigator.of(context).pushReplacementNamed(HOME);
} }
showErorrMsg(localMsg) { showErorrMsg(localMsg) {

@ -69,17 +69,20 @@ class _LoginFormState extends State<LoginForm> {
return Form( return Form(
key: loginFormKey, key: loginFormKey,
child: Container(
width: SizeConfig.realScreenWidth * 0.90,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
Container(
width: SizeConfig.realScreenWidth * 0.90,
height: SizeConfig.realScreenHeight * 0.65,
child:
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
buildSizedBox(), buildSizedBox(),
Padding( Padding(
child: AppText( child: AppText(
TranslationBase.of(context).enterCredentials, TranslationBase.of(context).enterCredentials,
fontSize: 18, fontSize: 18,
fontWeight: FontWeight.w600, fontWeight: FontWeight.bold,
), ),
padding: EdgeInsets.only(top: 10, bottom: 10)), padding: EdgeInsets.only(top: 10, bottom: 10)),
Container( Container(
@ -97,7 +100,8 @@ class _LoginFormState extends State<LoginForm> {
padding: EdgeInsets.only(left: 10, top: 10), padding: EdgeInsets.only(left: 10, top: 10),
child: AppText( child: AppText(
TranslationBase.of(context).enterId, TranslationBase.of(context).enterId,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w800,
fontSize: 14,
)), )),
AppTextFormField( AppTextFormField(
labelText: '', labelText: '',
@ -144,7 +148,8 @@ class _LoginFormState extends State<LoginForm> {
padding: EdgeInsets.only(left: 10, top: 10), padding: EdgeInsets.only(left: 10, top: 10),
child: AppText( child: AppText(
TranslationBase.of(context).enterPassword, TranslationBase.of(context).enterPassword,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w800,
fontSize: 14,
)), )),
AppTextFormField( AppTextFormField(
focusNode: focusPass, focusNode: focusPass,
@ -198,6 +203,7 @@ class _LoginFormState extends State<LoginForm> {
focusNode: focusProject, focusNode: focusProject,
controller: projectIdController, controller: projectIdController,
borderColor: Colors.white, borderColor: Colors.white,
suffixIcon: Icons.arrow_drop_down,
onTap: () { onTap: () {
helpers.showCupertinoPicker( helpers.showCupertinoPicker(
context, context,
@ -234,26 +240,33 @@ class _LoginFormState extends State<LoginForm> {
padding: EdgeInsets.only(left: 10, top: 10), padding: EdgeInsets.only(left: 10, top: 10),
child: AppText( child: AppText(
TranslationBase.of(context).selectYourProject, TranslationBase.of(context).selectYourProject,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w800,
fontSize: 14,
)), )),
AppTextFormField( AppTextFormField(
readOnly: true, borderColor: Colors.white readOnly: true, borderColor: Colors.white,
prefix: IconButton(
icon: Icon(Icons.arrow_drop_down),
iconSize: 30,
padding: EdgeInsets.only(bottom: 30),
),
// decoration: buildInputDecoration( // decoration: buildInputDecoration(
// context, // context,
// TranslationBase.of(context) // TranslationBase.of(context)
// .pleaseEnterYourProject, // .pleaseEnterYourProject,
// 'assets/images/password_icon.png') // 'assets/images/password_icon.png')
) )
])), ])),
buildSizedBox(), ]),
),
Row( Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: Button( child: Button(
title: TranslationBase.of(context).login, title: TranslationBase.of(context).login,
color: Colors.red[700], color: HexColor('#D02127'),
onTap: () { onTap: () {
login(context, authProv, widget.changeLoadingStata); login(context, authProv, widget.changeLoadingStata);
}, },
@ -283,7 +296,6 @@ class _LoginFormState extends State<LoginForm> {
// ), // ),
], ],
), ),
),
); );
} }

@ -155,7 +155,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
Flexible( Flexible(
flex: 4, flex: 3,
child: ListTile( child: ListTile(
title: Text( title: Text(
TranslationBase.of( TranslationBase.of(
@ -164,15 +164,17 @@ class _VerificationMethodsState extends State<VerificationMethods> {
overflow: TextOverflow overflow: TextOverflow
.ellipsis, .ellipsis,
style: TextStyle( style: TextStyle(
fontFamily: 'Poppins', fontFamily:
'Poppins',
fontWeight: fontWeight:
FontWeight.w600, FontWeight.w800,
), fontSize: 14),
), ),
subtitle: AppText( subtitle: AppText(
getType( getType(
user.logInTypeID, user.logInTypeID,
context), context),
fontSize: 14,
) )
// Text( // Text(
// user.editedOn != null // user.editedOn != null
@ -208,6 +210,9 @@ class _VerificationMethodsState extends State<VerificationMethods> {
: '--', : '--',
textAlign: textAlign:
TextAlign.right, TextAlign.right,
fontSize: 14,
fontWeight:
FontWeight.w800,
), ),
subtitle: AppText( subtitle: AppText(
user.editedOn != null user.editedOn != null
@ -223,6 +228,7 @@ class _VerificationMethodsState extends State<VerificationMethods> {
: '--', : '--',
textAlign: textAlign:
TextAlign.right, TextAlign.right,
fontSize: 14,
), ),
)) ))
], ],
@ -487,8 +493,8 @@ class _VerificationMethodsState extends State<VerificationMethods> {
children: [ children: [
Image.asset( Image.asset(
'assets/images/verify-whtsapp.png', 'assets/images/verify-whtsapp.png',
height: SizeConfig.imageSizeMultiplier * 13, height: 60,
width: SizeConfig.imageSizeMultiplier * 16, width: 60,
), ),
], ],
), ),
@ -497,7 +503,8 @@ class _VerificationMethodsState extends State<VerificationMethods> {
), ),
AppText( AppText(
TranslationBase.of(context).verifyWhatsApp, TranslationBase.of(context).verifyWhatsApp,
fontSize: SizeConfig.textMultiplier * 2.2, fontSize: 14,
fontWeight: FontWeight.w600,
) )
], ],
), ),
@ -520,8 +527,8 @@ class _VerificationMethodsState extends State<VerificationMethods> {
children: <Widget>[ children: <Widget>[
Image.asset( Image.asset(
'assets/images/verify-sms.png', 'assets/images/verify-sms.png',
height: SizeConfig.imageSizeMultiplier * 13, height: 60,
width: SizeConfig.imageSizeMultiplier * 16, width: 60,
), ),
projectsProvider.isArabic projectsProvider.isArabic
? SizedBox( ? SizedBox(
@ -532,9 +539,8 @@ class _VerificationMethodsState extends State<VerificationMethods> {
), ),
AppText( AppText(
TranslationBase.of(context).verifySMS, TranslationBase.of(context).verifySMS,
fontSize: projectsProvider.isArabic fontSize: 14,
? SizeConfig.textMultiplier * 1.8 fontWeight: FontWeight.w600,
: SizeConfig.textMultiplier * 2.2,
) )
], ],
), ),
@ -560,15 +566,16 @@ class _VerificationMethodsState extends State<VerificationMethods> {
children: <Widget>[ children: <Widget>[
Image.asset( Image.asset(
'assets/images/verification_fingerprint_icon.png', 'assets/images/verification_fingerprint_icon.png',
height: SizeConfig.imageSizeMultiplier * 13, height: 60,
width: SizeConfig.imageSizeMultiplier * 16, width: 60,
), ),
SizedBox( SizedBox(
height: 20, height: 20,
), ),
AppText( AppText(
TranslationBase.of(context).verifyFingerprint, TranslationBase.of(context).verifyFingerprint,
fontSize: SizeConfig.textMultiplier * 2.2, fontSize: 14,
fontWeight: FontWeight.w600,
) )
], ],
), ),
@ -602,15 +609,16 @@ class _VerificationMethodsState extends State<VerificationMethods> {
children: <Widget>[ children: <Widget>[
Image.asset( Image.asset(
'assets/images/verification_faceid_icon.png', 'assets/images/verification_faceid_icon.png',
height: SizeConfig.imageSizeMultiplier * 13, height: 60,
width: SizeConfig.imageSizeMultiplier * 16, width: 60,
), ),
SizedBox( SizedBox(
height: 20, height: 20,
), ),
AppText( AppText(
TranslationBase.of(context).verifyFaceID, TranslationBase.of(context).verifyFaceID,
fontSize: SizeConfig.textMultiplier * 2.2, fontSize: 14,
fontWeight: FontWeight.w600,
) )
], ],
), ),
@ -640,8 +648,8 @@ class _VerificationMethodsState extends State<VerificationMethods> {
children: <Widget>[ children: <Widget>[
Image.asset( Image.asset(
'assets/images/login/more_icon.png', 'assets/images/login/more_icon.png',
height: SizeConfig.imageSizeMultiplier * 13, height: 60,
width: SizeConfig.imageSizeMultiplier * 16, width: 60,
), ),
projectsProvider.isArabic projectsProvider.isArabic
? SizedBox( ? SizedBox(
@ -652,7 +660,8 @@ class _VerificationMethodsState extends State<VerificationMethods> {
), ),
AppText( AppText(
TranslationBase.of(context).moreVerification, TranslationBase.of(context).moreVerification,
fontSize: SizeConfig.textMultiplier * 2.2, fontSize: 14,
fontWeight: FontWeight.w600,
// textAlign: TextAlign.center, // textAlign: TextAlign.center,
) )
], ],

@ -60,20 +60,8 @@ class SMSOTP {
builder: (context) { builder: (context) {
projectProvider = Provider.of(context); projectProvider = Provider.of(context);
return AlertDialog( return AlertDialog(
contentPadding: EdgeInsets.fromLTRB(24.0, 20.0, 0.0, 24.0), contentPadding: EdgeInsets.fromLTRB(24.0, 0.0, 0.0, 24.0),
title: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
IconButton(
icon: Icon(Icons.close),
onPressed: () {
this.isClosed = true;
Navigator.pop(context);
this.onFailure();
},
)
],
),
// shape: RoundedRectangleBorder( // shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.all(Radius.circular(10.0))), // borderRadius: BorderRadius.all(Radius.circular(10.0))),
content: StatefulBuilder(builder: (context, setState) { content: StatefulBuilder(builder: (context, setState) {
@ -89,6 +77,11 @@ class SMSOTP {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Padding(
padding: EdgeInsets.all(10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
type == 1 type == 1
? Padding( ? Padding(
child: Icon( child: Icon(
@ -104,6 +97,24 @@ class SMSOTP {
), ),
padding: EdgeInsets.only(bottom: 20), padding: EdgeInsets.only(bottom: 20),
), ),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Padding(
padding: EdgeInsets.only(
left: 10, right: 10, bottom: 20),
child: IconButton(
icon: Icon(Icons.close),
iconSize: 40,
onPressed: () {
this.isClosed = true;
Navigator.pop(context);
this.onFailure();
},
))
],
)
])),
Padding( Padding(
padding: EdgeInsets.only(top: 5), padding: EdgeInsets.only(top: 5),
child: AppText( child: AppText(
@ -122,7 +133,7 @@ class SMSOTP {
child: Directionality( child: Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround, mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[ children: <Widget>[
Container( Container(
width: SizeConfig.realScreenWidth * 0.15, width: SizeConfig.realScreenWidth * 0.15,
@ -233,22 +244,23 @@ class SMSOTP {
)), )),
), ),
), ),
Padding( Column(
padding: EdgeInsets.only(top: 10), mainAxisAlignment: MainAxisAlignment.start,
child: Row(children: [ crossAxisAlignment: CrossAxisAlignment.start,
Expanded( children: [
child: AppText( AppText(
TranslationBase.of(context).validationMessage + ' ', TranslationBase.of(context).validationMessage + ' ',
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
), fontSize: 14,
), ),
AppText( AppText(
displayTime, displayTime,
color: Colors.red, color: Colors.red,
textAlign: TextAlign.center, textAlign: TextAlign.start,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 14,
) )
])) ])
], ],
))), ))),
); );

@ -282,17 +282,11 @@ class PatientReferralItemWidget extends StatelessWidget {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
RichText( AppText(
text: new TextSpan( referralStatus != null ? referralStatus : "",
style: new TextStyle( fontFamily: 'Poppins',
fontSize: 2.0 * SizeConfig.textMultiplier, fontSize: 1.9 * SizeConfig.textMultiplier,
color: Colors.black), fontWeight: FontWeight.w700,
children: <TextSpan>[
new TextSpan(
text: referralStatus != null
? referralStatus
: "",
style: TextStyle(
color: referralStatus != null color: referralStatus != null
? referralStatus == 'Pending' ? referralStatus == 'Pending'
? Color(0xffc4aa54) ? Color(0xffc4aa54)
@ -300,30 +294,26 @@ class PatientReferralItemWidget extends StatelessWidget {
? Colors.green[700] ? Colors.green[700]
: Colors.red[700] : Colors.red[700]
: Colors.grey[500], : Colors.grey[500],
fontWeight: FontWeight.w700,
fontFamily: 'Poppins',
fontSize:
2.0 * SizeConfig.textMultiplier)),
],
), ),
),
//TODO :ask backend to return in the standard format
AppText( AppText(
referredOn, referredOn,
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 2.1 * SizeConfig.textMultiplier, fontSize: 2.0 * SizeConfig.textMultiplier,
color: Color(0XFF28353E),
) )
], ],
), ),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Expanded( Expanded(
child: AppText( child: AppText(
patientInfo.patientName, patientInfo.patientName,
fontSize: SizeConfig.textMultiplier * 2.5, fontSize: SizeConfig.textMultiplier * 2.2,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
backGroundcolor: Colors.white, backGroundcolor: Colors.white,
color: Colors.black,
fontFamily: 'Poppins', fontFamily: 'Poppins',
), ),
), ),
@ -339,65 +329,69 @@ class PatientReferralItemWidget extends StatelessWidget {
DoctorApp.female_1, DoctorApp.female_1,
color: Colors.pink, color: Colors.pink,
), ),
],
),
SizedBox( SizedBox(
width: 10, width: 4,
),
AppText(
referredOn,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
fontSize: 1.8 * SizeConfig.textMultiplier,
color: Color(0XFF575757),
)
],
), ),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Column( Expanded(
child: Column(
children: [ children: [
RichText( Row(
text: new TextSpan( mainAxisAlignment: MainAxisAlignment.start,
style: new TextStyle( children: [
fontSize: 2.0 * SizeConfig.textMultiplier, AppText(
color: Colors.black), TranslationBase.of(context).fileNumber,
children: <TextSpan>[
new TextSpan(
text: TranslationBase.of(context)
.fileNumber,
style: TextStyle(
fontSize: 14, fontFamily: 'Poppins')),
new TextSpan(
text: patientInfo.patientID.toString(),
style: TextStyle(
fontWeight: FontWeight.w700,
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontSize: 15)), fontWeight: FontWeight.w600,
fontSize: 1.7 * SizeConfig.textMultiplier,
color: Color(0XFF575757),
),
AppText(
patientInfo.patientID.toString(),
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
fontSize: 1.8 * SizeConfig.textMultiplier,
color: Color(0XFF2E303A),
),
], ],
), ),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
AppText(
TranslationBase.of(context).referredFrom,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
fontSize: 1.7 * SizeConfig.textMultiplier,
color: Color(0XFF575757),
), ),
Container( AppText(
child: RichText( isSameBranch
text: new TextSpan( ? TranslationBase.of(context).sameBranch
style: new TextStyle(
fontSize: 2.0 * SizeConfig.textMultiplier,
color: Colors.black),
children: <TextSpan>[
new TextSpan(
text: TranslationBase.of(context)
.referredFrom,
style: TextStyle(
fontSize: 14,
fontFamily: 'Poppins')),
new TextSpan(
text: isSameBranch
? TranslationBase.of(context)
.sameBranch
: TranslationBase.of(context) : TranslationBase.of(context)
.otherBranch, .otherBranch,
style: TextStyle(
fontWeight: FontWeight.w700,
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontSize: 15)), fontWeight: FontWeight.w700,
], fontSize: 1.8 * SizeConfig.textMultiplier,
), color: Color(0XFF2E303A),
), ),
],
), ),
], ],
), ),
),
Row( Row(
children: [ children: [
AppText( AppText(
@ -405,7 +399,8 @@ class PatientReferralItemWidget extends StatelessWidget {
patient.nationality*/ patient.nationality*/
"Saudi", "Saudi",
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 12, color: Color(0xFF2E303A),
fontSize: 1.4 * SizeConfig.textMultiplier,
), ),
/* patient.nationality != null /* patient.nationality != null
? ClipRRect( ? ClipRRect(
@ -434,48 +429,51 @@ class PatientReferralItemWidget extends StatelessWidget {
) )
], ],
), ),
Container( Row(
child: RichText( mainAxisAlignment: MainAxisAlignment.start,
text: new TextSpan( crossAxisAlignment: CrossAxisAlignment.start,
style: new TextStyle( children: [
fontSize: 2.0 * SizeConfig.textMultiplier, AppText(
color: Colors.black),
children: <TextSpan>[
new TextSpan(
text:
TranslationBase.of(context).remarks + " : ", TranslationBase.of(context).remarks + " : ",
style: TextStyle(
fontSize: 14, fontFamily: 'Poppins')),
new TextSpan(
text: patientInfo.remarksFromSource,
style: TextStyle(
fontWeight: FontWeight.w700,
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontSize: 15)), fontWeight: FontWeight.w600,
], fontSize: 1.7 * SizeConfig.textMultiplier,
color: Color(0XFF575757),
),
Expanded(
child: AppText(
patientInfo.remarksFromSource,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
fontSize: 1.8 * SizeConfig.textMultiplier,
color: Color(0XFF2E303A),
), ),
), ),
],
), ),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Container( Container(
margin: EdgeInsets.only(left: 10, right: 0),
child: Image.asset(
infoIcon != null ? 'assets/images/patient/ic_ref_arrow_up.png' : 'assets/images/patient/ic_ref_arrow_left.png',
height: 50,
width: 30, width: 30,
height: 30, ),
),
Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(
left: left: 0, top: 25, right: 0, bottom: 0),
projectViewModel.isArabic ? 10 : 10 /*10:85*/, padding: EdgeInsets.only(left: 4.0, right: 4.0),
right: child: Container(
projectViewModel.isArabic ? 10 : 10 /*85:10*/, width: 40,
top: 5), height: 40,
decoration: BoxDecoration( child: Image.asset(
shape: BoxShape.rectangle, 'assets/images/female_avatar.png',
border: Border( fit: BoxFit.cover,
bottom: BorderSide( ),
color: Colors.grey[400], width: 2.5), ),
left: BorderSide(
color: Colors.grey[400], width: 2.5),
)),
), ),
Expanded( Expanded(
flex: 4, flex: 4,

@ -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(

@ -57,7 +57,7 @@ class ProfileWelcomeWidget extends StatelessWidget {
CircleAvatar( CircleAvatar(
// radius: (52) // radius: (52)
child: ClipRRect( child: ClipRRect(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(20),
child: Image.network( child: Image.network(
authProvider.doctorProfile.doctorImageURL, authProvider.doctorProfile.doctorImageURL,
fit: BoxFit.fill, fit: BoxFit.fill,

@ -2,6 +2,7 @@ import 'package:doctor_app_flutter/config/shared_pref_kay.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';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteReqModel.dart'; import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteReqModel.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/post_progress_note_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_progress_note_request_model.dart';
@ -44,8 +45,7 @@ class UpdatePlanPage extends StatefulWidget {
} }
class _UpdatePlanPageState extends State<UpdatePlanPage> { class _UpdatePlanPageState extends State<UpdatePlanPage> {
bool isProgressNoteExpand = false; bool isAddProgress = true;
TextEditingController progressNoteController = TextEditingController progressNoteController =
TextEditingController(text: null); TextEditingController(text: null);
@ -62,7 +62,17 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
)), )),
); );
} }
TextEditingController typeController = TextEditingController();
@override
void initState() {
super.initState();
if(widget.patientProgressNote.planNote !=null ){
setState(() {
isAddProgress = false;
});
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -83,7 +93,9 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
widget.patientProgressNote.createdOn = model.patientProgressNoteList[0].createdOn; widget.patientProgressNote.createdOn = model.patientProgressNoteList[0].createdOn;
widget.patientProgressNote.editedOn = model.patientProgressNoteList[0].editedOn; widget.patientProgressNote.editedOn = model.patientProgressNoteList[0].editedOn;
widget.patientProgressNote.editedByName = model.patientProgressNoteList[0].editedByName; widget.patientProgressNote.editedByName = model.patientProgressNoteList[0].editedByName;
setState(() {
isAddProgress = false;
});
} }
widget.changeLoadingState(false); widget.changeLoadingState(false);
}, },
@ -117,46 +129,15 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
SizedBox(
height: 10,
),
HeaderBodyExpandableNotifier(
headerWidget: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Row(
children: [
Texts(TranslationBase
.of(context)
.progressNoteSOAP,
variant: isProgressNoteExpand ? "bodyText" : '',
bold: isProgressNoteExpand ? true : false,
color: Colors.black),
Icon(
FontAwesomeIcons.asterisk,
color: Colors.black,
size: 12,
)
],
),
InkWell(
onTap: () {
setState(() {
isProgressNoteExpand = !isProgressNoteExpand;
});
},
child: Icon(isProgressNoteExpand
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down))
],
),
bodyWidget: Column(children: [
SizedBox(
height: 2,
),
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
if(widget.patientProgressNote.planNote == null) Container(
margin: EdgeInsets.only(left: 5, right: 5),
child: Texts(TranslationBase
.of(context)
.progressNote)),
if(isAddProgress)
Container( Container(
margin: margin:
EdgeInsets.only(left: 10, right: 10, top: 15), EdgeInsets.only(left: 10, right: 10, top: 15),
@ -168,115 +149,90 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
maxLines: 4, maxLines: 4,
inputType: TextInputType.multiline, inputType: TextInputType.multiline,
onChanged: (value){ onChanged: (value){
// examination.remark = value; widget.patientProgressNote.planNote = value;
}, },
), ),
), ),
SizedBox( SizedBox(
height: 20, height: 9,
), ),
if ( widget.patientProgressNote.planNote != null) if ( widget.patientProgressNote.planNote != null&& !isAddProgress)
Container( Container(
margin: margin:
EdgeInsets.only(left: 5, right: 5, top: 15), EdgeInsets.only(left: 5, right: 5, ),
child: Column( child: Column(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: [ children: [
SizedBox(
height: 8,
),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceAround, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Row(
children: [ children: [
Texts('Appointment No: '), Texts('Appointment No: ',fontSize: 12,),
Texts(widget.patientProgressNote.appointmentNo.toString()), Texts(widget.patientProgressNote.appointmentNo??'',fontWeight: FontWeight.w600,),
], ],
), ),
AppText( Texts(
widget.patientProgressNote.createdOn !=null?DateUtils.getDayMonthYearDateFormatted(DateTime.parse(widget.patientProgressNote.createdOn)):DateUtils.getDayMonthYearDateFormatted(DateTime.now()), widget.patientProgressNote.createdOn !=null?DateUtils.getDayMonthYearDateFormatted(DateTime.parse(widget.patientProgressNote.createdOn)):DateUtils.getDayMonthYearDateFormatted(DateTime.now()),
fontWeight: FontWeight fontWeight: FontWeight
.bold, .w600,
fontSize: 16, fontSize: 14,
) )
], ],
), ),
Row( Row(
children: [
Texts('Condition: '),
Texts(widget.patientProgressNote.mName.toString()),
],
),
if(widget.patientProgressNote.createdByName !=null)
Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.start, MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
AppText(
TranslationBase.of(context).createdBy,
fontWeight: FontWeight.bold,
fontSize: 16,
),
AppText(
widget.patientProgressNote.createdByName??"",
fontSize: 10,
color: Colors.grey,
),
],
),
if(widget.patientProgressNote.editedByName !=null)
Row( Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [ children: [
AppText( Texts('Condition: ',
TranslationBase.of(context).editedBy, fontSize: 12,),
fontWeight: FontWeight.bold, Texts(
fontSize: 16, widget.patientProgressNote.mName??'',fontWeight: FontWeight.w600),
), ],
AppText(
widget.patientProgressNote.editedByName??"",
fontSize: 10,
color: Colors.grey,
), ),
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( Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.start, MainAxisAlignment.start,
children: [ children: [
SizedBox( Expanded(
height: 6,
),
Padding(
padding: const EdgeInsets.all(0.0),
child: Container(
width: MediaQuery.of(context)
.size
.width *
0.6,
child: Texts( child: Texts(
progressNoteController.text, progressNoteController.text,
fontSize: 10, fontSize: 10,
color: Colors.grey,
),
), ),
), ),
InkWell(
onTap: (){
setState(() {
isAddProgress = true;
widget.changePageViewIndex(3,isChangeState:false);
});
},
child: Icon(DoctorApp.edit,size: 18,))
], ],
), ),
], ],
), ),
) )
], ],
)
]),
isExpand: isProgressNoteExpand,
), ),
], ],
@ -289,20 +245,21 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
), ),
bottomSheet: Container( bottomSheet: Container(
width: double.maxFinite, width: double.maxFinite,
height: 70, height: 90,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container( child: Container(
margin: EdgeInsets.all(6), margin: EdgeInsets.all(6),
child: Column( child: Column(
children: [ children: [
Row( Row(
children: [ children: [
Expanded( Expanded(
child: AppButton( child: AppButton(
title: 'Previous', title: 'Previous',
color: Colors.white38, color: Colors.grey[300],
fontColor: Colors.black, fontColor: Colors.black,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w400,
loading: model.state == ViewState.BusyLocal, loading: model.state == ViewState.BusyLocal,
onPressed: () async { onPressed: () async {
setState(() { setState(() {
@ -314,13 +271,14 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
SizedBox(width: 5,), SizedBox(width: 5,),
Expanded( Expanded(
child: AppButton( child: AppButton(
title: TranslationBase.of(context).next, title: isAddProgress? TranslationBase.of(context).next: "Finish",
fontWeight: FontWeight.w700, fontWeight: FontWeight.w400,
loading: model.state == ViewState.BusyLocal, loading: model.state == ViewState.BusyLocal,
color: Colors.red[700],
disabled: progressNoteController.text.isEmpty, disabled: progressNoteController.text.isEmpty,
onPressed: () async { onPressed: () async {
if(widget.patientProgressNote.planNote.isEmpty) { if(isAddProgress) {
Map profile = await sharedPref.getObj(DOCTOR_PROFILE); Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile);
setState(() { setState(() {
@ -328,10 +286,13 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
widget.patientProgressNote.editedByName = doctorProfile.doctorName; widget.patientProgressNote.editedByName = doctorProfile.doctorName;
widget.patientProgressNote.createdOn = DateTime.now().toString(); widget.patientProgressNote.createdOn = DateTime.now().toString();
widget.patientProgressNote.planNote = progressNoteController.text; widget.patientProgressNote.planNote = progressNoteController.text;
isAddProgress = !isAddProgress;
}); });
} else
submitPlan(model); submitPlan(model);
} else{
Navigator.of(context).pop();
}
}, },
), ),
), ),
@ -343,6 +304,7 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
), ),
), ),
), ),
),
); );
} }
@ -369,7 +331,7 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
if (model.state == ViewState.ErrorLocal) { if (model.state == ViewState.ErrorLocal) {
helpers.showErrorToast(model.error); helpers.showErrorToast(model.error);
} else { } else {
Navigator.of(context).pop(); widget.changePageViewIndex(4,isChangeState:false);
} }
} else { } else {
helpers.showErrorToast(TranslationBase.of(context).progressNoteErrorMsg); helpers.showErrorToast(TranslationBase.of(context).progressNoteErrorMsg);

@ -41,9 +41,13 @@ class _UpdateSoapIndexState extends State<UpdateSoapIndex>
GetPatientProgressNoteResModel patientProgressNote = GetPatientProgressNoteResModel patientProgressNote =
GetPatientProgressNoteResModel(); GetPatientProgressNoteResModel();
changePageViewIndex(pageIndex) { changePageViewIndex(pageIndex,{isChangeState = true}) {
if (pageIndex != _currentIndex) changeLoadingState(true); if (pageIndex != _currentIndex && isChangeState)
changeLoadingState(true);
_controller.jumpToPage(pageIndex); _controller.jumpToPage(pageIndex);
setState(() {
_currentIndex = pageIndex;
});
} }
bool _isLoading = true; bool _isLoading = true;

@ -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,18 +48,29 @@ 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: [
Container(
height: widget.height != 0 ? widget.height + 8 : null,
decoration: widget.hasBorder decoration: widget.hasBorder
? containerBorderDecoration(Color(0Xffffffff), Color(0xFFEFEFEF)) ? containerBorderDecoration(
Color(0Xffffffff),
widget.validationError == null
? Color(0xFFEFEFEF)
: Colors.red.shade700)
: null, : null,
padding: EdgeInsets.only(top: 4.0, bottom: 4.0, left: 8.0, right: 8.0), padding:
EdgeInsets.only(top: 4.0, bottom: 4.0, left: 8.0, right: 8.0),
child: InkWell( child: InkWell(
onTap: widget.onClick ?? null, onTap: widget.onClick ?? null,
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Expanded( Expanded(
child: Container(
padding: widget.dropDownText == null
? EdgeInsets.symmetric(vertical: 0)
: EdgeInsets.symmetric(vertical: 8),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
@ -68,7 +82,7 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
widget.hintText, widget.hintText,
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.4, fontSize: SizeConfig.textMultiplier * 1.4,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w700,
), ),
widget.dropDownText == null widget.dropDownText == null
? TextField( ? TextField(
@ -89,11 +103,9 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
? widget.inputFormatters ? widget.inputFormatters
: [], : [],
onChanged: (value) { onChanged: (value) {
if (widget.onChanged != null){ if (widget.onChanged != null) {
widget.onChanged(value); widget.onChanged(value);
setState(() { setState(() {});
});
} }
}, },
) )
@ -106,6 +118,7 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
], ],
), ),
), ),
),
widget.isDropDown widget.isDropDown
? widget.suffixIcon != null ? widget.suffixIcon != null
? widget.suffixIcon ? widget.suffixIcon
@ -119,6 +132,31 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
], ],
), ),
), ),
),
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,
),
],
),
),
],
); );
} }

@ -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,7 +93,10 @@ class DoctorCard extends StatelessWidget {
height: 55, height: 55,
), ),
Expanded( Expanded(
flex: 4, child: Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Expanded(
child: Container( child: Container(
margin: EdgeInsets.all(10), margin: EdgeInsets.all(10),
child: Column( child: Column(
@ -127,7 +130,7 @@ class DoctorCard extends StatelessWidget {
) )
], ],
), ),
if(isPrescriptions) if(clinic!=null)
Row( Row(
children: <Widget>[ children: <Widget>[
Texts( Texts(
@ -163,6 +166,10 @@ class DoctorCard extends StatelessWidget {
) )
], ],
), ),
),
],
),
], ],
), ),
), ),

@ -1,4 +1,5 @@
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/widgets/patients/profile/large_avatar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
@ -89,7 +90,7 @@ class DoctorCardInsurance extends StatelessWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.all(5.0), padding: const EdgeInsets.all(5.0),
child: Texts( child: Texts(
'$patientOut', '$patientOut'.replaceAll(" ", ""),
color: Colors.white, color: Colors.white,
fontSize: 13.0, fontSize: 13.0,
), ),
@ -102,7 +103,7 @@ class DoctorCardInsurance extends StatelessWidget {
Expanded( Expanded(
child: Texts( child: Texts(
doctorName, doctorName,
bold: true, fontWeight: FontWeight.w700,
)), )),
], ],
), ),
@ -153,11 +154,13 @@ class DoctorCardInsurance extends StatelessWidget {
children: <Widget>[ children: <Widget>[
Texts( Texts(
'Clinic: ', 'Clinic: ',
color: Colors.grey[500], //fontWeight: FontWeight.w600,
//color: Colors.grey[500],
), ),
Expanded( Expanded(
child: Texts( child: Texts(
clinic, clinic,
fontWeight: FontWeight.w700,
), ),
) )
], ],
@ -167,19 +170,24 @@ class DoctorCardInsurance extends StatelessWidget {
children: <Widget>[ children: <Widget>[
Texts( Texts(
'Approval No: ', 'Approval No: ',
color: Colors.grey[500], //color: Colors.grey[500],
), ),
Texts( Texts(
branch, branch,
fontWeight: FontWeight.w700,
) )
], ],
) )
]), ]),
), ),
), ),
Icon( Padding(
EvaIcons.eye, padding:
size: 38.0, const EdgeInsets.symmetric(horizontal: 15.0),
child: Icon(
DoctorApp.view,
size: 22.0,
),
) )
], ],
), ),

@ -18,6 +18,12 @@ class HeaderBodyExpandableNotifier extends StatefulWidget {
class _HeaderBodyExpandableNotifierState class _HeaderBodyExpandableNotifierState
extends State<HeaderBodyExpandableNotifier> { extends State<HeaderBodyExpandableNotifier> {
@override
void initState() {
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
setState(() { setState(() {
@ -26,7 +32,6 @@ class _HeaderBodyExpandableNotifierState
widget.controller.expanded = true; 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