Merge branch 'search_patient_profile_preview_services' into 'development'

Merge branch 'development' of https://gitlab.com/Cloud_Solution/doctor_app_flutter into development

See merge request Cloud_Solution/doctor_app_flutter!348
merge-requests/349/merge
Mohammad Aljammal 5 years ago
commit 3ca2ca8116

@ -41,7 +41,7 @@ class VitalSignsService extends BaseService {
patientVitalSigns = null; patientVitalSigns = null;
hasError = false; hasError = false;
Map<String, dynamic> body = Map(); Map<String, dynamic> body = Map();
body['PatientMRN'] = patient.patientMRN; body['PatientMRN'] = patient.patientId; // patient.patientMRN
body['AppointmentNo'] = patient.appointmentNo; body['AppointmentNo'] = patient.appointmentNo;
// body['EpisodeID'] = patient.episodeNo; // body['EpisodeID'] = patient.episodeNo;
body['PatientTypeID'] = 1; body['PatientTypeID'] = 1;

@ -91,7 +91,8 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
}); });
Navigator.of(context).pushNamed(PATIENTS, arguments: { Navigator.of(context).pushNamed(PATIENTS, arguments: {
"patientSearchForm": _patientSearchFormValues, "patientSearchForm": _patientSearchFormValues,
"selectedType": _selectedType "selectedType": _selectedType,
"isSearch": true,
}); });
} }
} else { } else {

@ -53,6 +53,7 @@ class _PatientsScreenState extends State<PatientsScreen> {
bool _isInit = true; bool _isInit = true;
String patientType; String patientType;
bool isSearch = false;
String patientTypeTitle; String patientTypeTitle;
var _isLoading = true; var _isLoading = true;
@ -208,6 +209,10 @@ class _PatientsScreenState extends State<PatientsScreen> {
? widget.selectedType ? widget.selectedType
: routeArgs['selectedType']; : routeArgs['selectedType'];
if(routeArgs != null && routeArgs.containsKey("isSearch")){
isSearch = routeArgs['isSearch'];
}
if (!projectsProvider.isArabic) if (!projectsProvider.isArabic)
patientTypeTitle = SERVICES_PATIANT_HEADER[int.parse(patientType)]; patientTypeTitle = SERVICES_PATIANT_HEADER[int.parse(patientType)];
else else
@ -366,20 +371,17 @@ class _PatientsScreenState extends State<PatientsScreen> {
patientInfo: item, patientInfo: item,
patientType: patientType, patientType: patientType,
onTap: () { onTap: () {
Navigator.of(context) Navigator.of(context)
.pushNamed( .pushNamed(
PATIENTS_PROFILE, PATIENTS_PROFILE,
arguments: { arguments: {
"patient": item, "patient": item,
"patientType": "patientType":patientType,
patientType, "from" : patient.getFrom,
"from": patient "to" : patient.getTo,
.getFrom, "isSearch" : isSearch,
"to": });
patient.getTo, },);
});
},
);
}).toList(), }).toList(),
) )
: Center( : Center(

@ -9,12 +9,12 @@ import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget_search.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:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
/* /*
*@author: Elham Rababah *@author: Elham Rababah
*@Date:22/4/2020 *@Date:22/4/2020
@ -25,8 +25,7 @@ import 'package:provider/provider.dart';
// ignore: must_be_immutable // ignore: must_be_immutable
class PatientProfileScreen extends StatelessWidget { class PatientProfileScreen extends StatelessWidget {
PatiantInformtion patient; PatiantInformtion patient;
bool isFromSearch = false;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -37,11 +36,14 @@ class PatientProfileScreen extends StatelessWidget {
String patientType = routeArgs['patientType']; String patientType = routeArgs['patientType'];
String from = routeArgs['from']; String from = routeArgs['from'];
String to = routeArgs['to']; String to = routeArgs['to'];
if (routeArgs.containsKey("isSearch")) {
isFromSearch = routeArgs['isSearch'];
}
return BaseView<SOAPViewModel>( return BaseView<SOAPViewModel>(
onModelReady: (model) async { onModelReady: (model) async {
GeneralGetReqForSOAP generalGetReqForSOAP = GeneralGetReqForSOAP( GeneralGetReqForSOAP generalGetReqForSOAP = GeneralGetReqForSOAP(
patientMRN: patient.patientMRN??patient.patientId, patientMRN: patient.patientMRN ?? patient.patientId,
doctorID: '', doctorID: '',
editedBy: ''); editedBy: '');
await model.getPatientAllergy(generalGetReqForSOAP); await model.getPatientAllergy(generalGetReqForSOAP);
@ -51,449 +53,534 @@ class PatientProfileScreen extends StatelessWidget {
if (model.allergySeverityList.length == 0) { if (model.allergySeverityList.length == 0) {
await model.getMasterLookup(MasterKeysService.AllergySeverity); await model.getMasterLookup(MasterKeysService.AllergySeverity);
} }
}, },
builder: (_, model, w) =>AppScaffold( builder: (_, model, w) => AppScaffold(
baseViewModel: model, baseViewModel: model,
appBarTitle: TranslationBase.of(context).patientProfile, appBarTitle: TranslationBase.of(context).patientProfile,
body: Container(
color: Color(0XFFF2F2F2),
body: Container( child: CustomScrollView(primary: false, slivers: <Widget>[
color: Color(0XFFF2F2F2), SliverList(
child: CustomScrollView(primary: false, slivers: <Widget>[ delegate: SliverChildListDelegate(
SliverList( [
delegate: SliverChildListDelegate( Column(
[ crossAxisAlignment: CrossAxisAlignment.start,
Column( children: [
crossAxisAlignment: CrossAxisAlignment.start, Container(
children: [ decoration: BoxDecoration(boxShadow: <BoxShadow>[
Container( BoxShadow(
decoration: BoxDecoration(boxShadow: <BoxShadow>[ color: Colors.grey.shade300,
BoxShadow( blurRadius: 10.0,
color: Colors.grey.shade300, spreadRadius: 0,
blurRadius: 10.0, offset: Offset(0, 10)),
spreadRadius: 0, ], color: Colors.white),
offset: Offset(0, 10)), child: Column(children: <Widget>[
], color: Colors.white), Padding(
child: Column(children: <Widget>[ padding: const EdgeInsets.all(8.0),
Padding( child: Row(
padding: const EdgeInsets.all(8.0), children: <Widget>[
child: Row( AvatarWidget(
children: <Widget>[ Icon(
AvatarWidget( patient.genderDescription == "Male"
Icon( ? DoctorApp.male
patient.genderDescription == "Male" : DoctorApp.female_icon,
? DoctorApp.male size: 70,
: DoctorApp.female_icon, color: Colors.white,
size: 70, ),
color: Colors.white, ),
), SizedBox(
), width: 20,
SizedBox(
width: 20,
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
patient.firstName + ' ' + patient.lastName,
color: Colors.black,
fontWeight: FontWeight.bold,
), ),
Row( Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [ children: [
AppText( AppText(
TranslationBase.of(context).fileNo, patient.firstName +
' ' +
patient.lastName,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
SizedBox( Row(
width: 4, children: [
), AppText(
AppText( TranslationBase.of(context)
patient.patientId.toString(), .fileNo,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.normal, fontWeight: FontWeight.bold,
),
SizedBox(
width: 4,
),
AppText(
patient.patientId.toString(),
color: Colors.black,
fontWeight: FontWeight.normal,
),
],
), ),
model.patientAllergiesList
.isNotEmpty &&
model.getAllergicNames(
projectViewModel
.isArabic) !=
''
? Container(
width: MediaQuery.of(context)
.size
.width *
0.65,
child: Padding(
padding: const EdgeInsets
.symmetric(vertical: 8),
child: AppText(
TranslationBase.of(
context)
.allergicTO +
" : " +
model.getAllergicNames(
projectViewModel
.isArabic),
color: Color(0xFFB9382C),
fontWeight:
FontWeight.bold,
),
),
)
: AppText(''),
], ],
), )
model.patientAllergiesList.isNotEmpty && model.getAllergicNames(projectViewModel.isArabic)!='' ?Container( ],
width: MediaQuery.of(context).size.width *0.65, ),
),
Container(
width: double.infinity,
height: 1,
color: Color(0xffCCCCCC),
),
Container(
height: 11 * SizeConfig.textMultiplier,
child: Row(
children: [
Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.fromLTRB(
child: AppText( 16.0, 8.0, 8.0, 8.0),
TranslationBase.of(context).allergicTO +" : "+model.getAllergicNames(projectViewModel.isArabic), child: Column(
color: Color(0xFFB9382C), crossAxisAlignment:
fontWeight: FontWeight.bold, CrossAxisAlignment.start,
children: [
AppText(
TranslationBase.of(context).age,
fontWeight: FontWeight.bold,
fontSize: 2 *
SizeConfig.textMultiplier,
),
SizedBox(
height: 4,
),
AppText(
"${DateUtils.convertDateFromServerFormat(patient.dateofBirth, 'dd-MM-yyyy')} / ${DateUtils.getAgeByBirthday(patient.dateofBirth, context) /*patient.age*/}",
fontWeight: FontWeight.normal,
fontSize: 1.6 *
SizeConfig.textMultiplier,
),
],
), ),
), ),
) : AppText(''),
],
)
],
),
),
Container(
width: double.infinity,
height: 1,
color: Color(0xffCCCCCC),
),
Container(
height: 11 * SizeConfig.textMultiplier,
child: Row(
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(
16.0, 8.0, 8.0, 8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
TranslationBase.of(context).age,
fontWeight: FontWeight.bold,
fontSize: 2 * SizeConfig.textMultiplier,
),
SizedBox(
height: 4,
),
AppText(
"${DateUtils.convertDateFromServerFormat(patient.dateofBirth, 'dd-MM-yyyy')} / ${DateUtils.getAgeByBirthday(patient.dateofBirth, context)/*patient.age*/}",
fontWeight: FontWeight.normal,
fontSize: 1.6 * SizeConfig.textMultiplier,
),
],
), ),
), Container(
), width: 1,
Container( color: Color(0xffCCCCCC),
width: 1,
color: Color(0xffCCCCCC),
),
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(
16.0, 8.0, 8.0, 8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
TranslationBase.of(context).nationality,
fontWeight: FontWeight.bold,
fontSize: 2 * SizeConfig.textMultiplier,
),
SizedBox(
height: 4,
),
AppText(
patient.nationalityName ??patient.nationality ,
fontWeight: FontWeight.normal,
fontSize: 1.7 * SizeConfig.textMultiplier,
),
],
), ),
), Expanded(
), child: Padding(
Container( padding: const EdgeInsets.fromLTRB(
width: 1, 16.0, 8.0, 8.0, 8.0),
color: Color(0xffCCCCCC), child: Column(
), crossAxisAlignment:
Expanded( CrossAxisAlignment.start,
child: Padding( children: [
padding: const EdgeInsets.fromLTRB( AppText(
16.0, 8.0, 8.0, 8.0), TranslationBase.of(context)
child: Column( .nationality,
crossAxisAlignment: CrossAxisAlignment.start, fontWeight: FontWeight.bold,
children: [ fontSize: 2 *
AppText( SizeConfig.textMultiplier,
TranslationBase.of(context).gender, ),
fontWeight: FontWeight.bold, SizedBox(
fontSize: 2 * SizeConfig.textMultiplier, height: 4,
), ),
SizedBox( AppText(
height: 4, patient.nationalityName ??
patient.nationality,
fontWeight: FontWeight.normal,
fontSize: 1.7 *
SizeConfig.textMultiplier,
),
],
), ),
AppText( ),
patient.gender.toString() == '1' ? 'Male' : 'Female', ),
fontWeight: FontWeight.normal, Container(
fontSize: 1.8 * SizeConfig.textMultiplier, width: 1,
color: Color(0xffCCCCCC),
),
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(
16.0, 8.0, 8.0, 8.0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
AppText(
TranslationBase.of(context)
.gender,
fontWeight: FontWeight.bold,
fontSize: 2 *
SizeConfig.textMultiplier,
),
SizedBox(
height: 4,
),
AppText(
patient.gender.toString() == '1'
? 'Male'
: 'Female',
fontWeight: FontWeight.normal,
fontSize: 1.8 *
SizeConfig.textMultiplier,
),
],
), ),
], ),
), ),
), ],
), ),
],
),
),
Container(
width: double.infinity,
height: 1,
color: Color(0xffCCCCCC),
),
]),
),
if (patient.admissionNo != null)
Container(
margin: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
TranslationBase.of(context).admissionDetail,
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 1.8 * SizeConfig.textMultiplier,
),
SizedBox(
height: 4,
), ),
Container( Container(
decoration: BoxDecoration( width: double.infinity,
color: Colors.white, height: 1,
shape: BoxShape.rectangle, color: Color(0xffCCCCCC),
borderRadius: BorderRadius.circular(8), ),
border: Border.fromBorderSide(BorderSide( ]),
color: Color(0xffBBBBBB), ),
width: 1, if (patient.admissionNo != null)
)), Container(
), margin: EdgeInsets.all(16),
child: Column( child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
Padding( children: [
padding: EdgeInsets.all(16), AppText(
child: Column( TranslationBase.of(context)
children: [ .admissionDetail,
Row( color: Colors.black,
children: [ fontWeight: FontWeight.bold,
Container( fontSize: 1.8 * SizeConfig.textMultiplier,
width: ),
14 * SizeConfig.textMultiplier, SizedBox(
child: AppText( height: 4,
TranslationBase.of(context) ),
.dateTime, Container(
color: Colors.black, decoration: BoxDecoration(
fontWeight: FontWeight.bold, color: Colors.white,
fontSize: 1.6 * shape: BoxShape.rectangle,
SizeConfig.textMultiplier, borderRadius: BorderRadius.circular(8),
), border:
), Border.fromBorderSide(BorderSide(
Expanded( color: Color(0xffBBBBBB),
child: AppText( width: 1,
patient.createdOn != null )),
? "${DateUtils.convertDateFromServerFormat(patient.createdOn, 'EEEE dd, MMMM yyyy hh:mm a')}" ),
: "", child: Column(
color: Colors.black, children: [
fontWeight: FontWeight.normal, Padding(
fontSize: padding: EdgeInsets.all(16),
1.6 * SizeConfig.textMultiplier, child: Column(
),
),
],
),
SizedBox(
height: 4,
),
Row(
children: [
Container(
width:
14 * SizeConfig.textMultiplier,
child: AppText(
TranslationBase.of(context)
.admissionNo,
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 1.6 *
SizeConfig.textMultiplier,
),
),
AppText(
patient.admissionNo != null
? patient.admissionNo
: '',
color: Colors.black,
fontWeight: FontWeight.normal,
fontSize:
1.6 * SizeConfig.textMultiplier,
),
],
),
SizedBox(
height: 4,
),
Row(
children: [ children: [
Container( Row(
width: children: [
14 * SizeConfig.textMultiplier, Container(
child: AppText( width: 14 *
TranslationBase.of(context).losNo, SizeConfig
color: Colors.black, .textMultiplier,
fontWeight: FontWeight.bold, child: AppText(
fontSize: 1.6 * TranslationBase.of(
SizeConfig.textMultiplier, context)
), .dateTime,
color: Colors.black,
fontWeight:
FontWeight.bold,
fontSize: 1.6 *
SizeConfig
.textMultiplier,
),
),
Expanded(
child: AppText(
patient.createdOn !=
null
? "${DateUtils.convertDateFromServerFormat(patient.createdOn, 'EEEE dd, MMMM yyyy hh:mm a')}"
: "",
color: Colors.black,
fontWeight:
FontWeight.normal,
fontSize: 1.6 *
SizeConfig
.textMultiplier,
),
),
],
), ),
AppText( SizedBox(
patient.createdOn != null height: 4,
? DateUtils
.differenceBetweenServerDateAndCurrent(
patient.createdOn, context)
: "",
color: Colors.black,
fontWeight: FontWeight.normal,
fontSize:
1.6 * SizeConfig.textMultiplier,
), ),
], Row(
),
],
),
),
const Divider(
color: Color(0xffCCCCCC),
height: 5,
thickness: 1,
indent: 0,
endIndent: 0,
),
Container(
height: 10 * SizeConfig.textMultiplier,
child: Row(
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(
16.0, 8.0, 8.0, 8.0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [ children: [
AppText( Container(
TranslationBase.of(context) width: 14 *
.area, SizeConfig
fontWeight: FontWeight.bold, .textMultiplier,
fontSize: 1.6 * child: AppText(
SizeConfig.textMultiplier, TranslationBase.of(
), context)
SizedBox( .admissionNo,
height: 4, color: Colors.black,
fontWeight:
FontWeight.bold,
fontSize: 1.6 *
SizeConfig
.textMultiplier,
),
), ),
AppText( AppText(
patient.clinicDescription, patient.admissionNo !=
fontWeight: FontWeight.normal, null
? patient.admissionNo
: '',
color: Colors.black,
fontWeight:
FontWeight.normal,
fontSize: 1.6 * fontSize: 1.6 *
SizeConfig.textMultiplier, SizeConfig
.textMultiplier,
), ),
], ],
), ),
), SizedBox(
), height: 4,
Container( ),
width: 1, Row(
color: Color(0xffCCCCCC),
),
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(
16.0, 8.0, 8.0, 8.0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
mainAxisAlignment:
MainAxisAlignment.spaceEvenly,
children: [ children: [
Expanded( Container(
child: Row( width: 14 *
crossAxisAlignment: SizeConfig
CrossAxisAlignment.start, .textMultiplier,
children: [ child: AppText(
AppText( TranslationBase.of(
TranslationBase.of(
context) context)
.room, .losNo,
fontWeight: color: Colors.black,
fontWeight:
FontWeight.bold, FontWeight.bold,
fontSize: 1.6 * fontSize: 1.6 *
SizeConfig SizeConfig
.textMultiplier, .textMultiplier,
),
SizedBox(
width: 4,
),
Expanded(
child: AppText(
"${patient.nursingStationName}\n${patient.roomId}",
fontWeight:
FontWeight.normal,
fontSize: 1.4 *
SizeConfig
.textMultiplier,
),
),
],
), ),
), ),
SizedBox( AppText(
height: 4, patient.createdOn != null
? DateUtils
.differenceBetweenServerDateAndCurrent(
patient
.createdOn,
context)
: "",
color: Colors.black,
fontWeight:
FontWeight.normal,
fontSize: 1.6 *
SizeConfig
.textMultiplier,
), ),
Expanded( ],
child: Row( ),
crossAxisAlignment: ],
CrossAxisAlignment.start, ),
children: [ ),
AppText( const Divider(
TranslationBase.of( color: Color(0xffCCCCCC),
context) height: 5,
.bed, thickness: 1,
fontWeight: indent: 0,
FontWeight.bold, endIndent: 0,
fontSize: 1.6 * ),
SizeConfig Container(
.textMultiplier, height:
), 10 * SizeConfig.textMultiplier,
SizedBox( child: Row(
width: 4, children: [
Expanded(
child: Padding(
padding: const EdgeInsets
.fromLTRB(
16.0, 8.0, 8.0, 8.0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment
.start,
children: [
AppText(
TranslationBase.of(
context)
.area,
fontWeight:
FontWeight.bold,
fontSize: 1.6 *
SizeConfig
.textMultiplier,
),
SizedBox(
height: 4,
),
AppText(
patient
.clinicDescription,
fontWeight:
FontWeight.normal,
fontSize: 1.6 *
SizeConfig
.textMultiplier,
),
],
),
),
),
Container(
width: 1,
color: Color(0xffCCCCCC),
),
Expanded(
child: Padding(
padding: const EdgeInsets
.fromLTRB(
16.0, 8.0, 8.0, 8.0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment
.start,
mainAxisAlignment:
MainAxisAlignment
.spaceEvenly,
children: [
Expanded(
child: Row(
crossAxisAlignment:
CrossAxisAlignment
.start,
children: [
AppText(
TranslationBase.of(
context)
.room,
fontWeight:
FontWeight
.bold,
fontSize: 1.6 *
SizeConfig
.textMultiplier,
),
SizedBox(
width: 4,
),
Expanded(
child: AppText(
"${patient.nursingStationName}\n${patient.roomId}",
fontWeight:
FontWeight
.normal,
fontSize: 1.4 *
SizeConfig
.textMultiplier,
),
),
],
), ),
AppText( ),
"${patient.bedId}", SizedBox(
fontWeight: height: 4,
FontWeight.normal, ),
fontSize: 1.6 * Expanded(
SizeConfig child: Row(
.textMultiplier, crossAxisAlignment:
CrossAxisAlignment
.start,
children: [
AppText(
TranslationBase.of(
context)
.bed,
fontWeight:
FontWeight
.bold,
fontSize: 1.6 *
SizeConfig
.textMultiplier,
),
SizedBox(
width: 4,
),
AppText(
"${patient.bedId}",
fontWeight:
FontWeight
.normal,
fontSize: 1.6 *
SizeConfig
.textMultiplier,
),
],
), ),
], ),
), ],
), ),
], ),
), ),
), ],
), ),
], )
), ],
) ),
], )
), ],
) ),
], ),
), ],
), ),
], ],
), ),
], ),
), SliverPadding(
padding: const EdgeInsets.all(16.0),
sliver: isFromSearch
? ProfileMedicalInfoWidgetSearch(
patient: patient,
patientType: patientType,
from: from,
to: to,
)
: ProfileMedicalInfoWidget(
patient: patient,
patientType: patientType,
from: from,
to: to,
),
)
]),
), ),
SliverPadding( ));
padding: const EdgeInsets.all(16.0),
sliver: ProfileMedicalInfoWidget(
patient: patient, patientType:patientType, from: from, to: to,
))
]),
),
));
} }
} }

@ -1,6 +1,8 @@
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.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/util/date-utils.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/dr_app_circular_progress_Indeicator.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class PatientProfileButton extends StatelessWidget { class PatientProfileButton extends StatelessWidget {
@ -9,24 +11,44 @@ class PatientProfileButton extends StatelessWidget {
final String icon; final String icon;
final dynamic route; final dynamic route;
final PatiantInformtion patient; final PatiantInformtion patient;
String from;
String to;
final String url = "assets/images/"; final String url = "assets/images/";
final bool isDisable;
final bool isLoading;
final Function onTap;
PatientProfileButton( PatientProfileButton(
{Key key, this.patient, this.nameLine1, this.nameLine2, this.icon, this.route}) {Key key,
this.patient,
this.nameLine1,
this.nameLine2,
this.icon,
this.route,
this.isDisable = false,
this.onTap,
this.isLoading = false,
this.from,
this.to})
: super(key: key); : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return new Container( return new Container(
margin: new EdgeInsets.symmetric(horizontal: 4.0), margin: new EdgeInsets.symmetric(horizontal: 4.0),
child: InkWell( child: InkWell(
onTap: () { onTap: isDisable
? null
: onTap != null
? onTap
: () {
navigator(context, this.route); navigator(context, this.route);
}, },
child: Column(children: <Widget>[ child: Column(children: <Widget>[
Container( Container(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
padding: EdgeInsets.all(5), padding: EdgeInsets.all(5),
child: child: Column(
Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
AppText( AppText(
@ -43,6 +65,7 @@ class PatientProfileButton extends StatelessWidget {
textAlign: TextAlign.left, textAlign: TextAlign.left,
fontSize: SizeConfig.textMultiplier * 2, fontSize: SizeConfig.textMultiplier * 2,
), ),
if (isLoading) DrAppCircularProgressIndeicator()
], ],
), ),
), ),
@ -61,7 +84,7 @@ class PatientProfileButton extends StatelessWidget {
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
// border: Border.all(), // border: Border.all(),
color: Colors.white, color: isDisable ? Colors.grey.withOpacity(0.4) : Colors.white,
borderRadius: BorderRadius.all(Radius.circular(10)), borderRadius: BorderRadius.all(Radius.circular(10)),
border: Border.fromBorderSide(BorderSide( border: Border.fromBorderSide(BorderSide(
color: Color(0xffBBBBBB), color: Color(0xffBBBBBB),
@ -81,6 +104,13 @@ class PatientProfileButton extends StatelessWidget {
} }
void navigator(BuildContext context, route) { void navigator(BuildContext context, route) {
Navigator.of(context).pushNamed(route, arguments: {'patient': patient}); if (from == null) {
from = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd');
}
if (to == null) {
to = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd');
}
Navigator.of(context).pushNamed(route,
arguments: {'patient': patient, 'from': from, 'to': to});
} }
} }

@ -7,6 +7,7 @@ import 'package:doctor_app_flutter/routes.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/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/patients/profile/PatientProfileButton.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -15,22 +16,16 @@ import 'package:hexcolor/hexcolor.dart';
import '../../../config/size_config.dart'; import '../../../config/size_config.dart';
import '../../shared/app_texts_widget.dart'; import '../../shared/app_texts_widget.dart';
/*
*@author: Elham Rababah
*@Date:22/4/2020
*@param:
*@return:ProfileMedicalInfoWidget
*@desc: Profile Medical Info Widget
*/
class ProfileMedicalInfoWidget extends StatelessWidget { class ProfileMedicalInfoWidget extends StatelessWidget {
ProfileMedicalInfoWidget(
{Key key, this.patient, this.patientType, this.from, this.to});
String from; String from;
String to; String to;
PatiantInformtion patient; PatiantInformtion patient;
String patientType; String patientType;
ProfileMedicalInfoWidget(
{Key key, this.patient, this.patientType, this.from, this.to});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<SOAPViewModel>( return BaseView<SOAPViewModel>(
@ -185,162 +180,3 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
); );
} }
} }
class CircleAvatarWidget extends StatelessWidget {
const CircleAvatarWidget(
{Key key,
@required this.url,
@required this.des,
this.height,
this.width})
: super(key: key);
final String url;
final String des;
final double height;
final double width;
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: <Widget>[
Container(
height: height,
width: width,
// width: 50,
// height: 50,
decoration: new BoxDecoration(
// color: Colors.green, // border color
shape: BoxShape.circle,
border: Border.all(color: HexColor('#B7831A'), width: 1.5)),
child: CircleAvatar(
radius: SizeConfig.imageSizeMultiplier * 12,
child: Image.asset(url),
backgroundColor: Colors.transparent,
),
),
SizedBox(
height: 10,
),
AppText(
des,
fontSize: 1.5 * SizeConfig.textMultiplier,
textAlign: TextAlign.center,
)
],
),
);
}
}
class PatientProfileButton extends StatelessWidget {
final String nameLine1;
final String nameLine2;
final String icon;
final dynamic route;
final PatiantInformtion patient;
String from;
String to;
final String url = "assets/images/";
final bool isDisable;
final bool isLoading;
final Function onTap;
PatientProfileButton(
{Key key,
this.patient,
this.nameLine1,
this.nameLine2,
this.icon,
this.route,
this.isDisable = false,
this.onTap,
this.isLoading = false,
this.from,
this.to})
: super(key: key);
@override
Widget build(BuildContext context) {
return new Container(
margin: new EdgeInsets.symmetric(horizontal: 4.0),
child: InkWell(
onTap: isDisable
? null
: onTap != null
? onTap
: () {
navigator(context, this.route);
},
child: Column(children: <Widget>[
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.all(5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
this.nameLine1,
color: Color(0xFFB9382C),
fontWeight: FontWeight.w600,
textAlign: TextAlign.left,
fontSize: SizeConfig.textMultiplier * 2,
),
AppText(
this.nameLine2,
color: Colors.black,
fontWeight: FontWeight.w600,
textAlign: TextAlign.left,
fontSize: SizeConfig.textMultiplier * 2,
),
if (isLoading) DrAppCircularProgressIndeicator()
],
),
),
Expanded(
child: Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Container(
padding: EdgeInsets.all(10),
child: new Image.asset(url + icon))
],
)),
)
]),
),
decoration: BoxDecoration(
// border: Border.all(),
color: isDisable ? Colors.grey.withOpacity(0.4) : Colors.white,
borderRadius: BorderRadius.all(Radius.circular(10)),
border: Border.fromBorderSide(BorderSide(
color: Color(0xffBBBBBB),
width: 1,
)),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.2),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
padding: EdgeInsets.fromLTRB(5, 10, 5, 5),
);
}
void navigator(BuildContext context, route) {
if (from == null) {
from = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd');
}
if (to == null) {
to = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd');
}
Navigator.of(context).pushNamed(route,
arguments: {'patient': patient, 'from': from, 'to': to});
}
}

@ -0,0 +1,94 @@
import 'package:doctor_app_flutter/config/config.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/models/SOAP/PostEpisodeReqModel.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/routes.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/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/PatientProfileButton.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import '../../../config/size_config.dart';
import '../../shared/app_texts_widget.dart';
class ProfileMedicalInfoWidgetSearch extends StatelessWidget {
String from;
String to;
PatiantInformtion patient;
String patientType;
ProfileMedicalInfoWidgetSearch(
{Key key, this.patient, this.patientType, this.from, this.to});
@override
Widget build(BuildContext context) {
return BaseView<SOAPViewModel>(
onModelReady: (model) async {},
builder: (_, model, w) => SliverGrid.count(
crossAxisSpacing: 10,
mainAxisSpacing: 20,
crossAxisCount: 2,
childAspectRatio: 1.5,
children: [
PatientProfileButton(
key: key,
patient: patient,
from: from,
to: to,
nameLine1: TranslationBase.of(context).vital,
nameLine2: TranslationBase.of(context).signs,
route: VITAL_SIGN_DETAILS,
icon: 'heartbeat.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PATIENT_INSURANCE_APPROVALS,
nameLine1: TranslationBase.of(context).insurance,
nameLine2: TranslationBase.of(context).service,
icon: 'lab.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PATIENT_ADMISSION_REQUEST,
nameLine1: TranslationBase.of(context).admission,
nameLine2: TranslationBase.of(context).request,
icon: 'heartbeat.png'),
(int.parse(patientType) == 7 || int.parse(patientType) == 6)
? PatientProfileButton(
key: key,
patient: patient,
route: ORDER_PRESCRIPTION,
nameLine1: TranslationBase.of(context).orders,
nameLine2: TranslationBase.of(context).prescription,
icon: 'lab.png')
: PatientProfileButton(
key: key,
patient: patient,
route: ORDER_PRESCRIPTION_HISTORY,
nameLine1: TranslationBase.of(context).orders,
nameLine2: TranslationBase.of(context).prescription,
icon: 'lab.png'),
PatientProfileButton(
key: key,
patient: patient,
route: ADD_SICKLEAVE,
nameLine1: TranslationBase.of(context).patientSick,
nameLine2: TranslationBase.of(context).leave,
icon: 'sick_leaves_icons.png'),
PatientProfileButton(
key: key,
patient: patient,
route: MEDICAL_FILE,
nameLine1: TranslationBase.of(context).previewHealth,
nameLine2: TranslationBase.of(context).summaryReport,
icon: 'radiology-1.png'),
],
),
);
}
}
Loading…
Cancel
Save