merge-requests/464/head
Sultan Khan 5 years ago
commit e46d7c34ad

@ -4,8 +4,8 @@ const MAX_SMALL_SCREEN = 660;
const ONLY_NUMBERS = "[0-9]"; const ONLY_NUMBERS = "[0-9]";
const ONLY_LETTERS = "[a-zA-Z &'\"]"; const ONLY_LETTERS = "[a-zA-Z &'\"]";
const ONLY_DATE = "[0-9/]"; const ONLY_DATE = "[0-9/]";
//const BASE_URL = 'https://hmgwebservices.com/'; const BASE_URL = 'https://hmgwebservices.com/';
const BASE_URL = 'https://uat.hmgwebservices.com/'; // const BASE_URL = 'https://uat.hmgwebservices.com/';
const PHARMACY_ITEMS_URL = "Services/Lists.svc/REST/GetPharmcyItems_Region_enh"; const PHARMACY_ITEMS_URL = "Services/Lists.svc/REST/GetPharmcyItems_Region_enh";
const PHARMACY_LIST_URL = "Services/Patients.svc/REST/GetPharmcyList"; const PHARMACY_LIST_URL = "Services/Patients.svc/REST/GetPharmcyList";
const PATIENT_PROGRESS_NOTE_URL = const PATIENT_PROGRESS_NOTE_URL =

@ -837,5 +837,10 @@ const Map<String, Map<String, String>> localizedValues = {
"enter_credentials": { "enter_credentials": {
"en": "Enter the user credentials below", "en": "Enter the user credentials below",
"ar": "أدخل بيانات اعتماد المستخدم أدناه" "ar": "أدخل بيانات اعتماد المستخدم أدناه"
},
"step": {
"en": "Step",
"ar": "خطوة"
}, },
}; };

@ -161,9 +161,12 @@ class AdmissionRequestService extends LookupService {
); );
} }
Future getDietTypesList() async { Future getDietTypesList(int patientMrn) async {
hasError = false; hasError = false;
Map<String, dynamic> body = Map();
body['patientMRN'] = patientMrn;
await baseAppClient.post( await baseAppClient.post(
GET_DIET_TYPES, GET_DIET_TYPES,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
@ -180,7 +183,7 @@ class AdmissionRequestService extends LookupService {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, },
body: Map(), body: body,
); );
} }

@ -101,12 +101,14 @@ class PatientReferralService extends LookupService {
); );
} }
Future getDoctorsList(String clinicId) async { Future getDoctorsList(String clinicId, int branchId) async {
hasError = false; hasError = false;
DoctorsByClinicIdRequest _doctorsByClinicIdRequest = DoctorsByClinicIdRequest _doctorsByClinicIdRequest =
DoctorsByClinicIdRequest(); DoctorsByClinicIdRequest();
_doctorsByClinicIdRequest.projectID = branchId;
_doctorsByClinicIdRequest.clinicID = clinicId; _doctorsByClinicIdRequest.clinicID = clinicId;
await baseAppClient.post( await baseAppClient.post(
PATIENT_GET_DOCTOR_BY_CLINIC_URL, PATIENT_GET_DOCTOR_BY_CLINIC_URL,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {

@ -114,9 +114,9 @@ class AdmissionRequestViewModel extends BaseViewModel{
} }
} }
Future getDietTypes() async { Future getDietTypes(int patientMrn) async {
setState(ViewState.BusyLocal); setState(ViewState.BusyLocal);
await _admissionRequestService.getDietTypesList(); await _admissionRequestService.getDietTypesList(patientMrn);
if (_admissionRequestService.hasError) { if (_admissionRequestService.hasError) {
error = _admissionRequestService.error; error = _admissionRequestService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);

@ -82,9 +82,9 @@ class PatientReferralViewModel extends BaseViewModel {
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future getClinicDoctors(String clinicId) async { Future getClinicDoctors(String clinicId, int branchId) async {
setState(ViewState.BusyLocal); setState(ViewState.BusyLocal);
await _referralPatientService.getDoctorsList(clinicId); await _referralPatientService.getDoctorsList(clinicId, branchId);
if (_referralPatientService.hasError) { if (_referralPatientService.hasError) {
error = _referralPatientService.error; error = _referralPatientService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);

@ -1020,12 +1020,12 @@ class _DashboardScreenState extends State<DashboardScreen> {
), ),
hasBorder: false, hasBorder: false,
onTap: () { onTap: () {
Navigator.push( // Navigator.push(
context, // context,
MaterialPageRoute( // MaterialPageRoute(
builder: (context) => // builder: (context) =>
SearchMedicinePatientScreen(), // SearchMedicinePatientScreen(),
)); // ));
}, },
) )
], ],

@ -160,95 +160,109 @@ class _InsuranceApprovalsDetailsState extends State<InsuranceApprovalsDetails> {
), ),
], ],
), ),
Padding( Expanded(
padding: const EdgeInsets.symmetric( child: Padding(
horizontal: 8.0), padding: const EdgeInsets.symmetric(
child: Column( horizontal: 8.0),
crossAxisAlignment: child: Column(
CrossAxisAlignment.start, crossAxisAlignment:
//mainAxisAlignment: MainAxisAlignment.center, CrossAxisAlignment.start,
children: [ //mainAxisAlignment: MainAxisAlignment.center,
SizedBox( children: [
height: 25.0, SizedBox(
), height: 25.0,
Row( ),
children: [ Row(
Texts( children: [
'Clinic: ', Texts(
color: Colors.grey[500], 'Clinic: ',
), color: Colors.grey[500],
Texts( fontSize: 14,
model ),
.insuranceApproval[ Expanded(
indexInsurance] child: Texts(
.clinicName, model
) .insuranceApproval[
], indexInsurance]
), .clinicName,
Row( fontSize: 14,
children: <Widget>[ ),
Texts( )
'Approval No: ', ],
color: Colors.grey[500], ),
), Row(
Texts( children: <Widget>[
model Texts(
'Approval No: ',
color: Colors.grey[500],
fontSize: 14,
),
Texts(
model
.insuranceApproval[
indexInsurance]
.approvalNo
.toString(),
fontSize: 14,
)
],
),
Row(
children: <Widget>[
Texts(
'Unused Count:',
color: Colors.grey[500],
fontSize: 14,
),
Texts(model
.insuranceApproval[ .insuranceApproval[
indexInsurance] indexInsurance]
.approvalNo .unUsedCount
.toString(), .toString(),
) fontSize: 14,
], )
),
Row( ],
children: <Widget>[ ),
Texts( Row(
'Unused Count:', children: <Widget>[
color: Colors.grey[500], Texts(
), 'Company Name :',
Texts(model color: Colors.grey[500],
.insuranceApproval[ ),
indexInsurance] Texts('Sample')
.unUsedCount ],
.toString()) ),
], Row(
), children: [
Row( Texts(
children: <Widget>[ 'Receipt on: ',
Texts( color: Colors.grey[500],
'Company Name :', ),
color: Colors.grey[500], Expanded(
), child: Texts(
Texts('Sample') '${DateUtils.getDayMonthYearDateFormatted(DateUtils.getDateTimeFromServerFormat(model.insuranceApproval[indexInsurance].rceiptOn), isArabic: projectViewModel.isArabic)}',
], color: Colors.black,
), fontWeight: FontWeight.w600,
Row( ),
children: [ ),
Texts( ],
'Receipt on: ', ),
color: Colors.grey[500], Row(
), children: [
Texts( Texts(
'${DateUtils.getDayMonthYearDateFormatted(DateUtils.getDateTimeFromServerFormat(model.insuranceApproval[indexInsurance].rceiptOn), isArabic: projectViewModel.isArabic)}', 'Exp on: ',
color: Colors.black, color: Colors.grey[500],
fontWeight: FontWeight.w600, ),
), Texts(
], '${DateUtils.getDayMonthYearDateFormatted(DateUtils.getDateTimeFromServerFormat(model.insuranceApproval[indexInsurance].expiryDate), isArabic: projectViewModel.isArabic)}',
), color: Colors.black,
Row( fontWeight: FontWeight.w600,
children: [ ),
Texts( ],
'Exp on: ', ),
color: Colors.grey[500], ],
), ),
Texts(
'${DateUtils.getDayMonthYearDateFormatted(DateUtils.getDateTimeFromServerFormat(model.insuranceApproval[indexInsurance].expiryDate), isArabic: projectViewModel.isArabic)}',
color: Colors.black,
fontWeight: FontWeight.w600,
),
],
),
],
), ),
), ),
], ],
@ -264,34 +278,20 @@ class _InsuranceApprovalsDetailsState extends State<InsuranceApprovalsDetails> {
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
horizontal: 8.0), horizontal: 8.0),
child: Row( child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceAround,
children: [ children: [
Container( Expanded(
width: MediaQuery.of(context)
.size
.width *
0.33,
child: Texts( child: Texts(
'Procedure', 'Procedure',
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
), ),
), ),
Container( Expanded(
width: MediaQuery.of(context)
.size
.width *
0.33,
child: Texts( child: Texts(
'Status', 'Status',
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
), ),
), ),
Container( Expanded(
width: MediaQuery.of(context)
.size
.width *
0.21,
child: Texts( child: Texts(
'Usage Status', 'Usage Status',
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
@ -316,78 +316,58 @@ class _InsuranceApprovalsDetailsState extends State<InsuranceApprovalsDetails> {
itemBuilder: (BuildContext context, itemBuilder: (BuildContext context,
int index) { int index) {
return Container( return Container(
child: Row( child: Column(
mainAxisAlignment:
MainAxisAlignment
.spaceAround,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [ children: [
Container( Row(
height:
MediaQuery.of(context) children: [
.size Expanded(
.height * child: Container(
0.15, //130.0,
width: child: Texts(model
MediaQuery.of(context) .insuranceApproval[
.size indexInsurance]
.width * ?.apporvalDetails[
0.33, index]
child: Texts(model ?.procedureName ??
.insuranceApproval[ "",textAlign: TextAlign.start,),
indexInsurance] ),
?.apporvalDetails[ ),
index] Expanded(
?.procedureName ?? child: Container(
""),
), child: Texts(model
Container( .insuranceApproval[
height: indexInsurance]
MediaQuery.of(context) ?.apporvalDetails[
.size index]
.height * ?.status ??
0.15, "",textAlign: TextAlign.center,),
width: ),
MediaQuery.of(context) ),
.size Expanded(
.width * child: Container(
0.33, child: Texts(model
child: Texts(model .insuranceApproval[
.insuranceApproval[ indexInsurance]
indexInsurance] ?.apporvalDetails[
?.apporvalDetails[ index]
index] ?.isInvoicedDesc ??
?.status ?? "",textAlign: TextAlign.center,),
""), ),
),
],
), ),
Container( SizedBox(width: 5,),
height: Divider(
MediaQuery.of(context) color: Colors.black38,
.size
.height *
0.15,
width:
MediaQuery.of(context)
.size
.width *
0.21,
child: Texts(model
.insuranceApproval[
indexInsurance]
?.apporvalDetails[
index]
?.isInvoicedDesc ??
""),
), ),
], ],
), ),
); );
}), }),
), ),
Divider(
color: Colors.black45,
),
], ],
), ),
), ),

@ -32,6 +32,9 @@ class _UcafDetailScreenState extends State<UcafDetailScreen> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient']; PatiantInformtion patient = routeArgs['patient'];
String patientType = routeArgs['patientType'];
String arrivalType = routeArgs['arrivalType'];
final screenSize = MediaQuery.of(context).size; final screenSize = MediaQuery.of(context).size;
return BaseView<UcafViewModel>( return BaseView<UcafViewModel>(

@ -3,9 +3,12 @@ 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/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/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-textfield-custom.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
@ -53,337 +56,385 @@ class _UCAFInputScreenState extends State<UCAFInputScreen> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient']; PatiantInformtion patient = routeArgs['patient'];
String patientType = routeArgs['patientType'];
String arrivalType = routeArgs['arrivalType'];
final screenSize = MediaQuery.of(context).size; final screenSize = MediaQuery.of(context).size;
return BaseView<UcafViewModel>( return BaseView<UcafViewModel>(
onModelReady: (model) => model.getUCAFData(patient), onModelReady: (model) => model.getUCAFData(patient),
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: model.patientVitalSigns != null && body: model.patientVitalSigns != null &&
model.patientChiefComplaintList != null && model.patientChiefComplaintList != null &&
model.patientChiefComplaintList.length > 0 model.patientChiefComplaintList.length > 0
? SingleChildScrollView( ? Column(
child: Column( children: [
children: [ Expanded(
PatientHeaderWidgetNoAvatar(patient), child: SingleChildScrollView(
Container(
margin:
EdgeInsets.symmetric(vertical: 16, horizontal: 16),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
CheckboxListTile( // PatientHeaderWidgetNoAvatar(patient),
title: AppText( Container(
TranslationBase.of(context).inPatient, margin: EdgeInsets.all(16.0),
fontWeight: FontWeight.bold, child: Column(
fontSize: SizeConfig.textMultiplier * 2.1, 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,
)
],
), ),
value: _inPatient,
onChanged: (newValue) {
setState(() {
_inPatient = newValue;
});
},
controlAffinity: ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0),
), ),
CheckboxListTile( PageStepperWidget(
title: AppText( stepsCount: 2,
TranslationBase.of(context).emergencyCase, currentStepIndex: 1,
fontWeight: FontWeight.bold, screenSize: screenSize,
fontSize: SizeConfig.textMultiplier * 2.1,
),
value: _emergencyCase,
onChanged: (newValue) {
setState(() {
_emergencyCase = newValue;
});
},
controlAffinity: ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0),
), ),
Container( Container(
height: screenSize.height * 0.070, margin: EdgeInsets.symmetric(
child: TextField( vertical: 0, horizontal: 16),
decoration: Helpers.textFieldSelectorDecoration( child: Column(
TranslationBase.of(context) crossAxisAlignment: CrossAxisAlignment.start,
.durationOfIllness, children: [
null, CheckboxListTile(
false), title: AppText(
enabled: true, TranslationBase.of(context).inPatient,
controller: _durationOfIllnessController, fontWeight: FontWeight.normal,
inputFormatters: [ fontSize: SizeConfig.textMultiplier * 2.1,
FilteringTextInputFormatter.allow(
RegExp(ONLY_NUMBERS))
],
keyboardType: TextInputType.number,
)),
SizedBox(
height: 10,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
AppText(
"BP (H/L)",
fontSize: SizeConfig.textMultiplier * 1.8,
color: Colors.black,
fontWeight: FontWeight.w700,
),
SizedBox(
width: 8,
), ),
AppText( value: _inPatient,
"${model.patientVitalSigns.bloodPressureHigher}/${model.patientVitalSigns.bloodPressureLower}", onChanged: (newValue) {
fontSize: SizeConfig.textMultiplier * 2, setState(() {
color: Colors.grey.shade800, _inPatient = newValue;
});
},
controlAffinity:
ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0),
),
CheckboxListTile(
title: AppText(
TranslationBase.of(context).emergencyCase,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
fontSize: SizeConfig.textMultiplier * 2.1,
), ),
], value: _emergencyCase,
), onChanged: (newValue) {
SizedBox( setState(() {
width: 4, _emergencyCase = newValue;
), });
Expanded( },
child: Row( controlAffinity:
ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0),
),
AppTextFieldCustom(
height: screenSize.height * 0.075,
hintText:
TranslationBase.of(context).durationOfIllness,
dropDownText: "3",
inputType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.allow(
RegExp(ONLY_NUMBERS))
],
),
SizedBox(
height: 16,
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [ children: [
AppText( Row(
"${TranslationBase.of(context).temperature}", children: [
fontSize: SizeConfig.textMultiplier * 1.8, AppText(
color: Colors.black, "BP (H/L)",
fontWeight: FontWeight.w700, fontSize:
SizeConfig.textMultiplier * 1.8,
color: Colors.black,
fontWeight: FontWeight.normal,
),
SizedBox(
width: 8,
),
AppText(
"${model.patientVitalSigns.bloodPressureHigher}/${model.patientVitalSigns.bloodPressureLower}",
fontSize:
SizeConfig.textMultiplier * 2,
color: Colors.grey.shade800,
fontWeight: FontWeight.w700,
),
],
), ),
SizedBox( SizedBox(
width: 8, width: 4,
), ),
Expanded( Expanded(
child: AppText( child: Row(
"${model.patientVitalSigns.temperatureCelcius}(C), ${(model.patientVitalSigns.temperatureCelcius * (9 / 5) + 32).toStringAsFixed(2)}(F)", children: [
fontSize: SizeConfig.textMultiplier * 2, AppText(
color: Colors.grey.shade800, "${TranslationBase.of(context).temperature}",
fontWeight: FontWeight.normal, fontSize:
SizeConfig.textMultiplier * 1.8,
color: Colors.black,
fontWeight: FontWeight.normal,
),
SizedBox(
width: 8,
),
Expanded(
child: AppText(
"${model.patientVitalSigns.temperatureCelcius}(C), ${(model.patientVitalSigns.temperatureCelcius * (9 / 5) + 32).toStringAsFixed(2)}(F)",
fontSize:
SizeConfig.textMultiplier * 2,
color: Colors.grey.shade800,
fontWeight: FontWeight.w700,
),
),
],
), ),
), ),
], ],
), ),
), SizedBox(
], height: 4,
), ),
SizedBox( Row(
height: 4, mainAxisAlignment:
), MainAxisAlignment.spaceBetween,
Row( children: [
mainAxisAlignment: MainAxisAlignment.spaceBetween, Row(
children: [ children: [
Row( AppText(
children: [ "${TranslationBase.of(context).pulseBeats} :",
AppText( fontSize:
"${TranslationBase.of(context).pulseBeats} :", SizeConfig.textMultiplier * 1.8,
fontSize: SizeConfig.textMultiplier * 1.8, color: Colors.black,
color: Colors.black, fontWeight: FontWeight.normal,
fontWeight: FontWeight.w700, ),
), SizedBox(
SizedBox( width: 8,
width: 8, ),
), AppText(
AppText( "${model.patientVitalSigns.pulseBeatPerMinute}",
"${model.patientVitalSigns.pulseBeatPerMinute}", fontSize:
fontSize: SizeConfig.textMultiplier * 2, SizeConfig.textMultiplier * 2,
color: Colors.grey.shade800, color: Colors.grey.shade800,
fontWeight: FontWeight.normal, fontWeight: FontWeight.w700,
), ),
], ],
),
],
),
SizedBox(
height: 16,
),
AppText(
TranslationBase.of(context)
.chiefComplaintsAndSymptoms,
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 2.5,
),
SizedBox(
height: 8,
),
AppText(
TranslationBase.of(context)
.patientFeelsPainInHisBackAndCough,
fontWeight: FontWeight.normal,
fontSize: SizeConfig.textMultiplier * 2.0,
),
SizedBox(
height: 8,
),
Container(
child: TextField(
decoration: Helpers.textFieldSelectorDecoration(
TranslationBase.of(context)
.additionalTextComplaints,
helpers.parseHtmlString(model
.patientChiefComplaintList[0]
.chiefComplaint),
false),
enabled: false,
controller: _additionalComplaintsController,
keyboardType: TextInputType.multiline,
minLines: 1,
maxLines: 20,
)),
SizedBox(
height: 16,
),
AppText(
TranslationBase.of(context).otherConditions,
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 2.0,
),
...List.generate(
conditionsData.length,
(index) => CheckboxListTile(
title: AppText(
conditionsData[index]['name'],
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 2.1,
), ),
value: conditionsData[index]['isChecked'], ],
onChanged: (newValue) { ),
setState(() { SizedBox(
conditionsData[index]['isChecked'] = height: 16,
newValue; ),
}); AppText(
}, TranslationBase.of(context).chiefComplaintsAndSymptoms,
controlAffinity: fontFamily: 'Poppins',
ListTileControlAffinity.leading, fontSize: SizeConfig.textMultiplier * 2.1,
contentPadding: EdgeInsets.all(0), fontWeight: FontWeight.w700,
)), ),
SizedBox( SizedBox(
height: 8, height: 4,
), ),
Container( AppText(
height: screenSize.height * 0.070, TranslationBase.of(context)
child: TextField( .patientFeelsPainInHisBackAndCough,
decoration: Helpers.textFieldSelectorDecoration( fontFamily: 'Poppins',
TranslationBase.of(context).other, fontWeight: FontWeight.normal,
null, fontSize: SizeConfig.textMultiplier * 1.8,
false), ),
enabled: true, SizedBox(
controller: _otherController, height: 8,
keyboardType: TextInputType.text, ),
)), AppTextFieldCustom(
SizedBox( hintText: TranslationBase.of(context).instruction,
height: 8, dropDownText: helpers.parseHtmlString(model
), .patientChiefComplaintList[0]
Container( .chiefComplaint),
height: screenSize.height * 0.070, controller: _additionalComplaintsController,
child: TextField( inputType: TextInputType.multiline,
decoration: Helpers.textFieldSelectorDecoration( enabled: false,
TranslationBase.of(context).how, minLines: 1,
null, maxLines: 20,
false), ),
enabled: true, SizedBox(
controller: _howController, height: 16,
keyboardType: TextInputType.text, ),
)), AppText(
SizedBox( TranslationBase.of(context).otherConditions,
height: 8, fontWeight: FontWeight.bold,
), fontSize: SizeConfig.textMultiplier * 2.0,
Row( ),
children: [ ...List.generate(
Expanded( conditionsData.length,
child: Container( (index) => CheckboxListTile(
title: AppText(
conditionsData[index]['name'],
fontWeight: FontWeight.bold,
fontSize:
SizeConfig.textMultiplier * 2.1,
),
value: conditionsData[index]
['isChecked'],
onChanged: (newValue) {
setState(() {
conditionsData[index]
['isChecked'] = newValue;
});
},
controlAffinity:
ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0),
)),
SizedBox(
height: 8,
),
Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
child: TextField( child: TextField(
decoration: decoration:
Helpers.textFieldSelectorDecoration( Helpers.textFieldSelectorDecoration(
TranslationBase.of(context).when, TranslationBase.of(context).other,
null, null,
false), false),
enabled: true, enabled: true,
controller: _whenController, controller: _otherController,
keyboardType: TextInputType.text, keyboardType: TextInputType.text,
)), )),
), SizedBox(
SizedBox( height: 8,
width: 4, ),
), Container(
Expanded(
child: Container(
height: screenSize.height * 0.070, height: screenSize.height * 0.070,
child: TextField( child: TextField(
decoration: decoration:
Helpers.textFieldSelectorDecoration( Helpers.textFieldSelectorDecoration(
TranslationBase.of(context).where, TranslationBase.of(context).how,
null, null,
false), false),
enabled: true, enabled: true,
controller: _whereController, controller: _howController,
keyboardType: TextInputType.text, keyboardType: TextInputType.text,
)), )),
), SizedBox(
], height: 8,
), ),
SizedBox( Row(
height: 8, children: [
), Expanded(
Container( child: Container(
child: TextField( height: screenSize.height * 0.070,
decoration: Helpers.textFieldSelectorDecoration( child: TextField(
TranslationBase.of(context) decoration: Helpers
.specifyPossibleLineManagement, .textFieldSelectorDecoration(
null, TranslationBase.of(context)
false), .when,
enabled: true, null,
controller: _managementsLineController, false),
keyboardType: TextInputType.text, enabled: true,
minLines: 4, controller: _whenController,
maxLines: 6, keyboardType: TextInputType.text,
)), )),
SizedBox( ),
height: 16, SizedBox(
), width: 4,
AppText( ),
TranslationBase.of(context).significantSigns, Expanded(
fontWeight: FontWeight.bold, child: Container(
fontSize: SizeConfig.textMultiplier * 2.0, height: screenSize.height * 0.070,
), child: TextField(
SizedBox( decoration: Helpers
height: 8, .textFieldSelectorDecoration(
), TranslationBase.of(context)
Container( .where,
child: TextField( null,
decoration: Helpers.textFieldSelectorDecoration( false),
TranslationBase.of(context).backAbdomen, enabled: true,
null, controller: _whereController,
false), keyboardType: TextInputType.text,
enabled: true, )),
controller: _signsController, ),
keyboardType: TextInputType.multiline, ],
minLines: null, ),
maxLines: null, SizedBox(
)), height: 8,
SizedBox( ),
height: 16, Container(
), child: TextField(
AppButton( decoration:
title: TranslationBase.of(context).next, Helpers.textFieldSelectorDecoration(
color: HexColor("#B8382B"), TranslationBase.of(context)
onPressed: () { .specifyPossibleLineManagement,
Navigator.of(context).pushNamed( null,
PATIENT_UCAF_DETAIL, false),
arguments: {'patient': patient}); enabled: true,
}, controller: _managementsLineController,
keyboardType: TextInputType.text,
minLines: 4,
maxLines: 6,
)),
SizedBox(
height: 16,
),
AppText(
TranslationBase.of(context).significantSigns,
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 2.0,
),
SizedBox(
height: 8,
),
Container(
child: TextField(
decoration:
Helpers.textFieldSelectorDecoration(
TranslationBase.of(context)
.backAbdomen,
null,
false),
enabled: true,
controller: _signsController,
keyboardType: TextInputType.multiline,
minLines: null,
maxLines: null,
)),
],
),
), ),
], ],
), ),
), ),
], ),
), Container(
margin: EdgeInsets.symmetric(horizontal: 16, vertical: 8),
child: AppButton(
title: TranslationBase.of(context).next,
color: HexColor("#D02127"),
onPressed: () {
Navigator.of(context).pushNamed(PATIENT_UCAF_DETAIL,
arguments: {'patient': patient});
},
),
),
],
) )
: Container( : Container(
child: Center( child: Center(

@ -0,0 +1,145 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
class PageStepperWidget extends StatelessWidget {
final int stepsCount;
final int currentStepIndex;
final Size screenSize;
PageStepperWidget({this.stepsCount, this.currentStepIndex, this.screenSize});
@override
Widget build(BuildContext context) {
double dividerWidth = (screenSize.width / stepsCount) - (10 * stepsCount);
return Container(
margin: EdgeInsets.symmetric(vertical: 16.0, horizontal: 16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
for (int i = 1; i <= stepsCount; i++)
if (i == currentStepIndex)
StepWidget(i, true, i == stepsCount, i < currentStepIndex,
dividerWidth)
else
StepWidget(i, false, i == stepsCount, i < currentStepIndex,
dividerWidth)
],
)
],
),
);
}
}
class StepWidget extends StatelessWidget {
final int index;
final bool isInProgress;
final bool isFinalStep;
final bool isStepFinish;
final double dividerWidth;
StepWidget(this.index, this.isInProgress, this.isFinalStep, this.isStepFinish,
this.dividerWidth);
@override
Widget build(BuildContext context) {
StepStatus status;
if (isInProgress) {
status = StepStatus.InProgress;
} else {
if(isStepFinish){
status = StepStatus.Completed;
}else {
status = StepStatus.Locked;
}
}
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Container(
padding: EdgeInsets.all(0.0),
margin: EdgeInsets.symmetric(horizontal: 1),
width: 25,
height: 25,
decoration: BoxDecoration(
color: isInProgress ? Color(0xFFCC9B14) : Color(0xFFC9C9C9),
shape: BoxShape.circle,
border: Border.all(
color: isInProgress ? Color(0xFFCC9B14) : Color(0xFFC9C9C9),
width: 1),
),
child: Center(
child: Icon(
Icons.check,
size: 20,
color: status == StepStatus.InProgress ? Colors.white : status == StepStatus.Locked ? Colors.grey.shade800 : Color(0xFF359846),
)),
),
if (!isFinalStep)
Container(
width: dividerWidth,
height: 2,
color: Colors.grey,
),
],
),
SizedBox(
height: 8,
),
AppText(
"${TranslationBase.of(context).step} $index",
fontWeight: FontWeight.bold,
color: status == StepStatus.InProgress ? Colors.black : status == StepStatus.Locked ? Colors.grey : Color(0xFF359846),
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.6,
),
Container(
margin: EdgeInsets.symmetric(vertical: 4),
padding: EdgeInsets.symmetric(horizontal: 4, vertical: 2),
decoration: BoxDecoration(
color: status == StepStatus.InProgress
? Color(0xFFF1E9D3)
: status == StepStatus.Locked
? Color(0xFFD8E8DB)
: Color(0xFFCCCCCC),
borderRadius: BorderRadius.all(
Radius.circular(8.0),
),
border: Border.all(color: HexColor('#707070'), width: 0.30),
),
child: AppText(
status == StepStatus.InProgress
? "inProgress"
: status == StepStatus.Locked
? "Locked"
: "Completed",
fontWeight: FontWeight.bold,
textAlign: TextAlign.center,
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.4,
color: status == StepStatus.InProgress
? Color(0xFFCC9B14)
: status == StepStatus.Locked
? Color(0xFF969696)
: Color(0xFF359846),
),
)
],
);
}
}
enum StepStatus {
InProgress,
Locked,
Completed,
}

@ -9,6 +9,7 @@ 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/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';
@ -55,7 +56,9 @@ class _AdmissionRequestThirdScreenState
return BaseView<AdmissionRequestViewModel>( return BaseView<AdmissionRequestViewModel>(
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
baseViewModel: model, baseViewModel: model,
isShowAppBar: false, isShowAppBar: true,
appBar: PatientProfileHeaderNewDesignAppBar(
patient, patientType, arrivalType),
appBarTitle: TranslationBase.of(context).admissionRequest, appBarTitle: TranslationBase.of(context).admissionRequest,
body: GestureDetector( body: GestureDetector(
onTap: () { onTap: () {
@ -72,9 +75,8 @@ class _AdmissionRequestThirdScreenState
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
// PatientPageHeaderWidget(patient), // PatientProfileHeaderNewDesign(
PatientProfileHeaderNewDesign( // patient, patientType, arrivalType),
patient, patientType, arrivalType),
Container( Container(
margin: EdgeInsets.all(16.0), margin: EdgeInsets.all(16.0),
child: Column( child: Column(
@ -220,23 +222,24 @@ class _AdmissionRequestThirdScreenState
SizedBox( SizedBox(
height: 10, height: 10,
), ),
CheckboxListTile( if(patient.gender != 1)
title: AppText( CheckboxListTile(
TranslationBase.of(context).patientPregnant, title: AppText(
fontWeight: FontWeight.normal, TranslationBase.of(context).patientPregnant,
fontFamily: 'Poppins', fontWeight: FontWeight.normal,
fontSize: SizeConfig.textMultiplier * 2.0, fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 2.0,
),
value: _patientPregnant,
activeColor: HexColor("#D02127"),
onChanged: (newValue) {
setState(() {
_patientPregnant = newValue;
});
},
controlAffinity: ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0),
), ),
value: _patientPregnant,
activeColor: HexColor("#D02127"),
onChanged: (newValue) {
setState(() {
_patientPregnant = newValue;
});
},
controlAffinity: ListTileControlAffinity.leading,
contentPadding: EdgeInsets.all(0),
),
CheckboxListTile( CheckboxListTile(
title: AppText( title: AppText(
TranslationBase.of(context).isSickLeaveRequired, TranslationBase.of(context).isSickLeaveRequired,
@ -287,7 +290,7 @@ class _AdmissionRequestThirdScreenState
: () async { : () async {
GifLoaderDialogUtils.showMyDialog( GifLoaderDialogUtils.showMyDialog(
context); context);
await model.getDietTypes().then((_) => await model.getDietTypes(patient.patientId).then((_) =>
GifLoaderDialogUtils.hideDialog( GifLoaderDialogUtils.hideDialog(
context)); context));
if (model.state == ViewState.Idle && if (model.state == ViewState.Idle &&

@ -11,6 +11,7 @@ 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/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';
@ -51,7 +52,9 @@ class _AdmissionRequestThirdScreenState
return BaseView<AdmissionRequestViewModel>( return BaseView<AdmissionRequestViewModel>(
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
baseViewModel: model, baseViewModel: model,
isShowAppBar: false, isShowAppBar: true,
appBar: PatientProfileHeaderNewDesignAppBar(
patient, patientType, arrivalType),
appBarTitle: TranslationBase.of(context).admissionRequest, appBarTitle: TranslationBase.of(context).admissionRequest,
body: GestureDetector( body: GestureDetector(
onTap: () { onTap: () {
@ -67,8 +70,6 @@ class _AdmissionRequestThirdScreenState
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
PatientProfileHeaderNewDesign(
patient, patientType, arrivalType),
Container( Container(
margin: EdgeInsets.all(16.0), margin: EdgeInsets.all(16.0),
child: Column( child: Column(

@ -12,6 +12,7 @@ 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/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';
@ -63,7 +64,9 @@ class _AdmissionRequestSecondScreenState
return BaseView<AdmissionRequestViewModel>( return BaseView<AdmissionRequestViewModel>(
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
baseViewModel: model, baseViewModel: model,
isShowAppBar: false, isShowAppBar: true,
appBar: PatientProfileHeaderNewDesignAppBar(
patient, patientType, arrivalType),
appBarTitle: TranslationBase.of(context).admissionRequest, appBarTitle: TranslationBase.of(context).admissionRequest,
body: GestureDetector( body: GestureDetector(
onTap: () { onTap: () {
@ -79,8 +82,8 @@ class _AdmissionRequestSecondScreenState
child: Column( child: 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(

@ -303,7 +303,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
await model await model
.getClinicDoctors( .getClinicDoctors(
_selectedClinic['ClinicID'].toString()) _selectedClinic['ClinicID'].toString(), _selectedBranch['facilityId'])
.then((_) => .then((_) =>
GifLoaderDialogUtils.hideDialog(context)); GifLoaderDialogUtils.hideDialog(context));
if (model.state == ViewState.ErrorLocal) { if (model.state == ViewState.ErrorLocal) {

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

@ -61,7 +61,7 @@ class ProcedureScreen extends StatelessWidget {
], ],
), ),
), ),
if (patientType != null && patientType == '7') if (patientType != null && patientType == '7' && patient.patientStatusType == 43)
InkWell( InkWell(
onTap: () { onTap: () {
addSelectedProcedure(context, model, patient); addSelectedProcedure(context, model, patient);

@ -1209,6 +1209,9 @@ class TranslationBase {
localizedValues['typeHereToReply'][locale.languageCode]; localizedValues['typeHereToReply'][locale.languageCode];
String get searchHere => localizedValues['searchHere'][locale.languageCode]; String get searchHere => localizedValues['searchHere'][locale.languageCode];
String get remove => localizedValues['remove'][locale.languageCode]; String get remove => localizedValues['remove'][locale.languageCode];
String get step => localizedValues['step'][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];

@ -236,9 +236,11 @@ class SMSOTP {
Padding( Padding(
padding: EdgeInsets.only(top: 10), padding: EdgeInsets.only(top: 10),
child: Row(children: [ child: Row(children: [
AppText( Expanded(
TranslationBase.of(context).validationMessage + ' ', child: AppText(
fontWeight: FontWeight.w600, TranslationBase.of(context).validationMessage + ' ',
fontWeight: FontWeight.w600,
),
), ),
AppText( AppText(
displayTime, displayTime,

@ -15,9 +15,10 @@ class PatientProfileHeaderNewDesignAppBar extends StatelessWidget
final PatiantInformtion patient; final PatiantInformtion patient;
final String patientType; final String patientType;
final String arrivalType; final String arrivalType;
final double height;
PatientProfileHeaderNewDesignAppBar( PatientProfileHeaderNewDesignAppBar(
this.patient, this.patientType, this.arrivalType); this.patient, this.patientType, this.arrivalType, {this.height = 0.0});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -36,7 +37,7 @@ class PatientProfileHeaderNewDesignAppBar extends StatelessWidget
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
), ),
height: 200, height: height == 0 ? 200 : height,
child: Container( child: Container(
padding: EdgeInsets.only(left: 10, right: 10, bottom: 10), padding: EdgeInsets.only(left: 10, right: 10, bottom: 10),
margin: EdgeInsets.only(top: 50), margin: EdgeInsets.only(top: 50),

@ -27,6 +27,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
final String invoiceNO; final String invoiceNO;
final String orderNo; final String orderNo;
final bool isPrescriptions; final bool isPrescriptions;
final String clinic; final String clinic;
PatientProfileHeaderWhitAppointmentAppBar( PatientProfileHeaderWhitAppointmentAppBar(
{this.patient, {this.patient,
@ -406,7 +407,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
) )
], ],
), ),
if(isPrescriptions) if(isPrescriptions && branch!=null)
Row( Row(
children: [ children: [
Texts( Texts(

@ -151,7 +151,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
arrivalType: arrivalType, arrivalType: arrivalType,
route: REFER_PATIENT_TO_DOCTOR, route: REFER_PATIENT_TO_DOCTOR,
isDisable: patient.patientStatusType != 43 ? true : false, isDisable: patient.patientStatusType != 43 ? true : false,
nameLine1: TranslationBase.of(context).myReferral, nameLine1: TranslationBase.of(context).referral,
nameLine2: TranslationBase.of(context).patient, nameLine2: TranslationBase.of(context).patient,
icon: 'patient/refer_patient.png'), icon: 'patient/refer_patient.png'),
if (int.parse(patientType) == 7 || int.parse(patientType) == 6) if (int.parse(patientType) == 7 || int.parse(patientType) == 6)

@ -692,17 +692,18 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
height: 16, height: 16,
), ),
Row( Row(
children: [ children: [
AppText( Expanded(
TranslationBase.of(context) child: AppText(
.addAssessmentDetails TranslationBase.of(context)
.toUpperCase(), .addAssessmentDetails
fontWeight: FontWeight.bold, .toUpperCase(),
fontSize: 13, fontWeight: FontWeight.bold,
), fontSize: 13,
SizedBox( ),
width: MediaQuery.of(context).size.width * 0.42,
), ),
InkWell( InkWell(
child: Icon( child: Icon(
Icons.close, Icons.close,

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
@ -9,15 +10,18 @@ import 'package:doctor_app_flutter/models/SOAP/post_progress_note_request_model.
import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app-textfield-custom.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart'; import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart'; import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart';
import 'package:doctor_app_flutter/widgets/shared/new_text_Field.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@ -58,6 +62,7 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
)), )),
); );
} }
TextEditingController typeController = TextEditingController();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -84,221 +89,251 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
}, },
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
// baseViewModel: model, // baseViewModel: model,
backgroundColor: Colors.grey[200],
isShowAppBar: false, isShowAppBar: false,
body: SingleChildScrollView( body: SingleChildScrollView(
physics: ScrollPhysics(), physics: ScrollPhysics(),
child: Center( child: Center(
child: FractionallySizedBox( child: FractionallySizedBox(
widthFactor: 0.9, widthFactor: 0.95,
child: Column( child: Container(
mainAxisAlignment: MainAxisAlignment.start, margin: EdgeInsets.all(8.0),
children: [ padding: EdgeInsets.all(12.0),
SizedBox( decoration: BoxDecoration(
height: 30, shape: BoxShape.rectangle,
), color: Colors.white,
HeaderBodyExpandableNotifier( borderRadius: BorderRadius.circular(12),
headerWidget: Row( border: Border.fromBorderSide(BorderSide(
mainAxisAlignment: MainAxisAlignment.spaceBetween, color: Colors.grey.shade400,
children: [ width: 0.4,
Row( )),
children: [ ),
Texts(TranslationBase child: Column(
.of(context) mainAxisAlignment: MainAxisAlignment.start,
.progressNoteSOAP, children: [
variant: isProgressNoteExpand ? "bodyText" : '', SizedBox(
bold: isProgressNoteExpand ? true : false, height: 10,
color: Colors.black),
Icon(
FontAwesomeIcons.asterisk,
color: AppGlobal.appPrimaryColor,
size: 12,
)
],
),
InkWell(
onTap: () {
setState(() {
isProgressNoteExpand = !isProgressNoteExpand;
});
},
child: Icon(isProgressNoteExpand
? EvaIcons.minus
: EvaIcons.plus))
],
), ),
bodyWidget: Column(children: [ HeaderBodyExpandableNotifier(
SizedBox( headerWidget: Row(
height: 20, mainAxisAlignment: MainAxisAlignment.spaceAround,
),
Column(
children: [ children: [
if(widget.patientProgressNote.planNote == null) Row(
Container( children: [
margin: Texts(TranslationBase
EdgeInsets.only(left: 10, right: 10, top: 15), .of(context)
child: TextFields( .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(
children: [
if(widget.patientProgressNote.planNote == null)
Container(
margin:
EdgeInsets.only(left: 10, right: 10, top: 15),
hintText: TranslationBase child: AppTextFieldCustom(
.of(context) hintText: TranslationBase.of(context).progressNote,
.addProgressNote, controller: progressNoteController,
fontSize: 13.5, minLines: 2,
onTapTextFields: () { maxLines: 4,
openProgressNote(context); inputType: TextInputType.multiline,
onChanged: (value){
// examination.remark = value;
}, },
readOnly: true, ),
// hintColor: Colors.black, ),
suffixIcon: EvaIcons.plusCircleOutline, SizedBox(
suffixIconColor: AppGlobal.appPrimaryColor, height: 20,
fontWeight: FontWeight.w600, ),
// controller: messageController, if ( widget.patientProgressNote.planNote != null)
validator: (value) { Container(
if (value == null) margin:
return TranslationBase.of(context) EdgeInsets.only(left: 5, right: 5, top: 15),
.emptyMessage; child: Column(
else crossAxisAlignment:
return null; CrossAxisAlignment.start,
}), children: [
),
SizedBox(
height: 20,
),
if ( widget.patientProgressNote.planNote != null)
Container(
margin:
EdgeInsets.only(left: 5, right: 5, top: 15),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Column(
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
AppText(
widget.patientProgressNote.createdOn !=null?DateTime.parse(widget.patientProgressNote.createdOn).day.toString():DateTime.now().day.toString(), SizedBox(
fontWeight: FontWeight height: 8,
.bold, ),
fontSize: 16, Row(
), mainAxisAlignment: MainAxisAlignment.spaceAround,
AppText( children: [
Helpers.getMonth(widget.patientProgressNote.createdOn !=null?(DateTime.parse(widget.patientProgressNote.createdOn).month):DateTime.now().month).toUpperCase(), Row(
fontSize: 10, children: [
color: Colors.grey, Texts('Appointment No: '),
), Texts(widget.patientProgressNote.appointmentNo.toString()),
],
) ],
], ),
), AppText(
Column( widget.patientProgressNote.createdOn !=null?DateUtils.getDayMonthYearDateFormatted(DateTime.parse(widget.patientProgressNote.createdOn)):DateUtils.getDayMonthYearDateFormatted(DateTime.now()),
crossAxisAlignment: fontWeight: FontWeight
CrossAxisAlignment.start, .bold,
children: [ fontSize: 16,
Row( )
mainAxisAlignment:
MainAxisAlignment.start, ],
children: [ ),
SizedBox( Row(
height: 6, children: [
), Texts('Condition: '),
Padding( Texts(widget.patientProgressNote.mName.toString()),
padding: const EdgeInsets.all(0.0),
child: Container( ],
width: MediaQuery.of(context) ),
.size if(widget.patientProgressNote.createdByName !=null)
.width * Row(
0.6, mainAxisAlignment:
child: AppText( MainAxisAlignment.start,
progressNoteController.text, children: [
fontSize: 10, AppText(
color: Colors.grey, TranslationBase.of(context).createdBy,
), fontWeight: FontWeight.bold,
fontSize: 16,
),
AppText(
widget.patientProgressNote.createdByName??"",
fontSize: 10,
color: Colors.grey,
),
],
),
if(widget.patientProgressNote.editedByName !=null)
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
TranslationBase.of(context).editedBy,
fontWeight: FontWeight.bold,
fontSize: 16,
),
AppText(
widget.patientProgressNote.editedByName??"",
fontSize: 10,
color: Colors.grey,
),
],
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
SizedBox(
height: 6,
),
Padding(
padding: const EdgeInsets.all(0.0),
child: Container(
width: MediaQuery.of(context)
.size
.width *
0.6,
child: Texts(
progressNoteController.text,
fontSize: 10,
color: Colors.grey,
), ),
), ),
], ),
), ],
SizedBox( ),
height: 8, ],
), ),
if(widget.patientProgressNote.createdByName !=null) )
Row( ],
mainAxisAlignment: )
MainAxisAlignment.start, ]),
children: [ isExpand: isProgressNoteExpand,
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(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
TranslationBase.of(context).editedBy,
fontWeight: FontWeight.bold,
fontSize: 16,
),
AppText(
widget.patientProgressNote.editedByName??"",
fontSize: 10,
color: Colors.grey,
),
],
),
],
),
Column(
children: [
InkWell(
onTap: () {
openProgressNote(context);
},
child: Icon(EvaIcons.edit2Outline),
)
],
),
],
),
)
],
)
]),
isExpand: isProgressNoteExpand,
),
DividerWithSpacesAround(
height: 30,
),
AppButton(
title: TranslationBase.of(context).next,
loading: model.state == ViewState.BusyLocal,
onPressed: () {
submitPlan(model);
// widget.changePageViewIndex(2);
},
),
SizedBox(
height: 30,
),
],
), ),
), ),
), ),
), ),
bottomSheet: Container(
width: double.maxFinite,
height: 70,
child: Container(
margin: EdgeInsets.all(6),
child: Column(
children: [
Row(
children: [
Expanded(
child: AppButton(
title: 'Previous',
color: Colors.white38,
fontColor: Colors.black,
fontWeight: FontWeight.w700,
loading: model.state == ViewState.BusyLocal,
onPressed: () async {
setState(() {
widget.changePageViewIndex(2);
});
},
),
),
SizedBox(width: 5,),
Expanded(
child: AppButton(
title: TranslationBase.of(context).next,
fontWeight: FontWeight.w700,
loading: model.state == ViewState.BusyLocal,
disabled: progressNoteController.text.isEmpty,
onPressed: () async {
if(widget.patientProgressNote.planNote.isEmpty) {
Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile);
setState(() {
widget.patientProgressNote.createdByName = widget.patientProgressNote.createdByName ?? doctorProfile.doctorName;
widget.patientProgressNote.editedByName = doctorProfile.doctorName;
widget.patientProgressNote.createdOn = DateTime.now().toString();
widget.patientProgressNote.planNote = progressNoteController.text;
});
} else
submitPlan(model);
},
),
),
],
),
],
),
),
),
), ),
); );
} }
@ -333,74 +368,5 @@ class _UpdatePlanPageState extends State<UpdatePlanPage> {
} }
} }
openProgressNote(BuildContext context) {
showModalBottomSheet(
backgroundColor: Colors.white,
isScrollControlled: true,
context: context,
builder: (context) {
return FractionallySizedBox(
heightFactor: 0.6,
child: Container(
child: FractionallySizedBox(
widthFactor: 0.9,
child: ListView(
// crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
height: 16,
),
AppText(
TranslationBase.of(context).addProgressNote,
fontWeight: FontWeight.bold,
fontSize: 16,
),
SizedBox(
height: 10,
),
Container(
margin: EdgeInsets.only(left: 0, right: 0, top: 15),
child: TextFields(
hasLabelText: progressNoteController.text != ''?true:false,
showLabelText: true,
hintText: TranslationBase.of(context).addProgressNote,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 16,
minLines: 8,
controller: progressNoteController,
validator: (value) {
if (value == null)
return TranslationBase
.of(context)
.emptyMessage;
else
return null;
}),
),SizedBox(
height: 10,
),
AppButton(
title: TranslationBase.of(context).add.toUpperCase(),
onPressed: () async{
Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile);
widget.patientProgressNote.createdByName = widget.patientProgressNote.createdByName??doctorProfile.doctorName;
widget.patientProgressNote.editedByName=doctorProfile.doctorName;
widget.patientProgressNote.createdOn= DateTime.now().toString() ;
widget.patientProgressNote.planNote = progressNoteController.text;
setState(() {
print(progressNoteController.text);
});
Navigator.of(context).pop();
},
),
]),
)),
);
});
}
} }

@ -69,6 +69,7 @@ class _UpdateSoapIndexState extends State<UpdateSoapIndex>
isLoading: _isLoading, isLoading: _isLoading,
isShowAppBar: false, isShowAppBar: false,
body: SingleChildScrollView( body: SingleChildScrollView(
child: SingleChildScrollView(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -141,6 +142,6 @@ class _UpdateSoapIndexState extends State<UpdateSoapIndex>
), ),
), ),
), ),
); ));
} }
} }

@ -46,7 +46,7 @@ class _AppDrawerState extends State<AppDrawer> {
child: ListView(padding: EdgeInsets.zero, children: <Widget>[ child: ListView(padding: EdgeInsets.zero, children: <Widget>[
Container( Container(
margin: EdgeInsets.symmetric(horizontal: 20), margin: EdgeInsets.symmetric(horizontal: 20),
height: SizeConfig.heightMultiplier * 50, // height: SizeConfig.heightMultiplier * 50,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -54,9 +54,9 @@ class _AppDrawerState extends State<AppDrawer> {
child: Image.asset( child: Image.asset(
'assets/images/dr_app_logo.png', 'assets/images/dr_app_logo.png',
), ),
margin: EdgeInsets.only(top: 10, bottom: 15), margin: EdgeInsets.only(top: 10, bottom: 10),
), ),
SizedBox(height: 15), SizedBox(height: 10),
if (authProvider.doctorProfile != null) if (authProvider.doctorProfile != null)
InkWell( InkWell(
onTap: () { onTap: () {
@ -91,7 +91,7 @@ class _AppDrawerState extends State<AppDrawer> {
], ],
), ),
), ),
SizedBox(height: 15), SizedBox(height: 10),
InkWell( InkWell(
child: DrawerItem( child: DrawerItem(
TranslationBase.of(context).rescheduleLeaves, TranslationBase.of(context).rescheduleLeaves,
@ -111,6 +111,29 @@ class _AppDrawerState extends State<AppDrawer> {
)); ));
}, },
), ),
SizedBox(height: 10),
InkWell(
child: DrawerItem(
'My QR Code',
// " or " +
// TranslationBase.of(context).leaves,
DoctorApp.qr_code_3,
// subTitle: ,
),
),
InkWell(
child: Container(
height: 80,
child: Image.asset('assets/images/qr_code.png'),
),
onTap: () {
},
),
], ],
), ),
), ),
@ -121,6 +144,8 @@ class _AppDrawerState extends State<AppDrawer> {
margin: EdgeInsets.symmetric(horizontal: 20), margin: EdgeInsets.symmetric(horizontal: 20),
child: Column( child: Column(
children: [ children: [
InkWell( InkWell(
child: DrawerItem( child: DrawerItem(
projectsProvider.isArabic projectsProvider.isArabic

@ -608,7 +608,7 @@ packages:
name: meta name: meta
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.3.0-nullsafety.4" version: "1.3.0-nullsafety.3"
mime: mime:
dependency: transitive dependency: transitive
description: description:
@ -900,7 +900,7 @@ packages:
name: stack_trace name: stack_trace
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.10.0-nullsafety.2" version: "1.10.0-nullsafety.1"
stream_channel: stream_channel:
dependency: transitive dependency: transitive
description: description:
@ -1084,5 +1084,5 @@ packages:
source: hosted source: hosted
version: "2.2.1" version: "2.2.1"
sdks: sdks:
dart: ">=2.10.0 <=2.11.0-213.1.beta" dart: ">=2.10.0 <2.11.0"
flutter: ">=1.22.0 <2.0.0" flutter: ">=1.22.0 <2.0.0"

Loading…
Cancel
Save