patient profile

merge-requests/91/head
Salman Afzal 6 years ago
parent 0c5503b4f9
commit 494a44148d

@ -1,6 +1,10 @@
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/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/profile_image_widget.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import './Profile_general_info_Widget.dart';
import './profile_header_widget.dart';
@ -15,19 +19,59 @@ import './profile_status_info_widget.dart';
*@desc: Patient Profile Widget
*/
class PatientProfileWidget extends StatelessWidget {
PatiantInformtion patient;
@override
Widget build(BuildContext context) {
final routeArgs =ModalRoute.of(context).settings.arguments as Map;
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
patient = routeArgs['patient'];
return ListView(padding: EdgeInsets.zero, children: <Widget>[
ProfileHeaderWidget(patient: patient),
ProfileGeneralInfoWidget(patient: patient),
ProfileMedicalInfoWidget(patient: patient),
ProfileStatusInfoWidget()
]);
// return ListView(padding: EdgeInsets.zero, children: <Widget>[
// ProfileHeaderWidget(patient: patient),
// ProfileGeneralInfoWidget(patient: patient),
// ProfileMedicalInfoWidget(patient: patient),
// ProfileStatusInfoWidget()
// ]);
return Container(
child: Column(children: <Widget>[
Expanded(
flex: 1,
child:
Row(mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[
Column(children: <Widget>[
Container(
padding: EdgeInsets.only(top: 20),
child: ProfileImageWidget(
url:
"https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png",
name: patient.firstName + ' ' + patient.lastName,
fontsize: 24.0,
color: Colors.black,
),
),
Container(
child: Column(
children: <Widget>[
AppText(
'File No: ' + patient.patientId.toString(),
fontWeight: FontWeight.normal,
fontSize: 16,
),
AppText(
patient.genderDescription.toString() + ', ' + patient.age,
fontWeight: FontWeight.normal,
fontSize: 16,
)
],
),
)
]),
]),
),
Expanded(
flex: 2,
child: ProfileMedicalInfoWidget(patient: patient),
)
]));
}
}

@ -21,150 +21,202 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
PatiantInformtion patient;
@override
Widget build(BuildContext context) {
String url = "assets/images/";
final double contWidth = SizeConfig.realScreenWidth * 0.70;
final double contHeight = SizeConfig.screenHeight * 0.30;
// final double contWidth = SizeConfig.realScreenWidth * 0.70;
// final double contHeight = SizeConfig.screenHeight * 0.30;
return CustomScrollView(primary: false, slivers: <Widget>[
SliverPadding(
padding: const EdgeInsets.fromLTRB(20, 30, 15, 10),
sliver: SliverGrid.count(
crossAxisSpacing: 10,
mainAxisSpacing: 20,
crossAxisCount: 2,
childAspectRatio: 1.5,
children: [
PatientProfileButton(
key: key,
patient: patient,
name: 'Vital Sign',
route: VITAL_SIGN_DETAILS,
icon: 'heartbeat.png'),
PatientProfileButton(
key: key,
patient: patient,
route: LAB_ORDERS,
name: 'Lab Order',
icon: 'lab.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PRESCRIPTIONS,
name: 'Prescription',
icon: 'note.png'),
PatientProfileButton(
key: key,
patient: patient,
route: RADIOLOGY,
name: 'Radiology',
icon: 'radiology-1.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PROGRESS_NOTE,
name: 'Progress Notes',
icon: 'heartbeat.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PATIENT_INSURANCE_APPROVALS,
name: 'Insurance Aprovals',
icon: 'lab.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PRESCRIPTIONS,
name: 'Refer Patient',
icon: 'note.png'),
PatientProfileButton(
key: key,
patient: patient,
route: PATIENT_ORDERS,
name: 'Orders',
icon: 'radiology-1.png'),
]))
]);
// child: ListView(
// children: <Widget>[
// Padding(
// padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 14),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: <Widget>[
// AppText(
// 'Patient Medical Information ',
// fontSize: SizeConfig.textMultiplier * 3,
// fontWeight: FontWeight.w700,
// color: Hexcolor('#58434F'),
// ),
// SizedBox(
// height: 20,
// ),
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceAround,
// children: <Widget>[
// InkWell(
// onTap: () {
// navigator(context, VITAL_SIGN_DETAILS);
// },
// child: CircleAvatarWidget(
// des: 'Vital Sign',
// url: url + 'heartbeat.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// InkWell(
// onTap: () {
// navigator(context, LAB_ORDERS);
// },
// child: CircleAvatarWidget(
// des: 'Lab Result',
// url: url + 'lab.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// InkWell(
// onTap: () {
// navigator(context, PRESCRIPTIONS);
// },
// child: CircleAvatarWidget(
// des: 'Prescription',
// url: url + 'note.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// InkWell(
// //RADIOLOGY
// onTap: () {
// navigator(context, RADIOLOGY);
// },
// child: CircleAvatarWidget(
// des: 'Radiology',
// url: url + 'radiology-1.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// ],
// ),
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceAround,
// children: <Widget>[
// Visibility(
// visible: selectedPatientType != 0 && selectedPatientType != 5 ,
// child: InkWell(
// onTap: () {
// navigator(context, PROGRESS_NOTE);
// },
// child: CircleAvatarWidget(
// des: 'Progress Notes',
// url: url + 'heartbeat.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// ),
// Visibility(
return RoundedContainer(
child: ListView(
children: <Widget>[
Padding(
padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 14),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
'Patient Medical Information ',
fontSize: SizeConfig.textMultiplier * 3,
fontWeight: FontWeight.w700,
color: Hexcolor('#58434F'),
),
SizedBox(
height: 20,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
InkWell(
onTap: () {
navigator(context, VITAL_SIGN_DETAILS);
},
child: CircleAvatarWidget(
des: 'Vital Sign',
url: url + 'heartbeat.png',
width: (contWidth) / 4.5,
height: (contWidth) / 4.5,
),
),
InkWell(
onTap: () {
navigator(context, LAB_ORDERS);
},
child: CircleAvatarWidget(
des: 'Lab Result',
url: url + 'lab.png',
width: (contWidth) / 4.5,
height: (contWidth) / 4.5,
),
),
InkWell(
onTap: () {
navigator(context, PRESCRIPTIONS);
},
child: CircleAvatarWidget(
des: 'Prescription',
url: url + 'note.png',
width: (contWidth) / 4.5,
height: (contWidth) / 4.5,
),
),
InkWell(
//RADIOLOGY
onTap: () {
navigator(context, RADIOLOGY);
},
child: CircleAvatarWidget(
des: 'Radiology',
url: url + 'radiology-1.png',
width: (contWidth) / 4.5,
height: (contWidth) / 4.5,
),
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Visibility(
visible: selectedPatientType != 0 && selectedPatientType != 5 ,
child: InkWell(
onTap: () {
navigator(context, PROGRESS_NOTE);
},
child: CircleAvatarWidget(
des: 'Progress Notes',
url: url + 'heartbeat.png',
width: (contWidth) / 4.5,
height: (contWidth) / 4.5,
),
),
),
Visibility(
child: InkWell(
onTap: () {
navigator(context, PATIENT_INSURANCE_APPROVALS);
},
child: CircleAvatarWidget(
des: 'Insurance Aprovals',
url: url + 'lab.png',
width: (contWidth) / 4.5,
height: (contWidth) / 4.5,
),
),
),
Visibility(
visible: selectedPatientType != 0 && selectedPatientType != 5 && selectedPatientType != 2,
child: InkWell(
onTap: () {
navigator(context, PRESCRIPTIONS);
},
child: CircleAvatarWidget(
des: 'Refer Patient ',
url: url + 'note.png',
width: (contWidth) / 4.5,
height: (contWidth) / 4.5,
),
),
),
Visibility(
visible: selectedPatientType != 0 && selectedPatientType != 5,
child: InkWell(
onTap: () {
navigator(context, PATIENT_ORDERS);
},
child: CircleAvatarWidget(
des: 'Orders',
url: url + 'radiology-1.png',
width: (contWidth) / 4.5,
height: (contWidth) / 4.5,
),
),
),
],
)
],
),
),
],
),
width: contWidth,
height: contHeight,
);
}
void navigator(BuildContext context, route) {
Navigator.of(context).pushNamed(route, arguments: {'patient': patient});
// child: InkWell(
// onTap: () {
// navigator(context, PATIENT_INSURANCE_APPROVALS);
// },
// child: CircleAvatarWidget(
// des: 'Insurance Aprovals',
// url: url + 'lab.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// ),
// Visibility(
// visible: selectedPatientType != 0 && selectedPatientType != 5 && selectedPatientType != 2,
// child: InkWell(
// onTap: () {
// navigator(context, PRESCRIPTIONS);
// },
// child: CircleAvatarWidget(
// des: 'Refer Patient ',
// url: url + 'note.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// ),
// Visibility(
// visible: selectedPatientType != 0 && selectedPatientType != 5,
// child: InkWell(
// onTap: () {
// navigator(context, PATIENT_ORDERS);
// },
// child: CircleAvatarWidget(
// des: 'Orders',
// url: url + 'radiology-1.png',
// width: (contWidth) / 4.5,
// height: (contWidth) / 4.5,
// ),
// ),
// ),
// ],
// )
// ],
// ),
// ),
// ],
// ),
// width: contWidth,
// height: contHeight,
//);
}
}
@ -216,3 +268,73 @@ class CircleAvatarWidget extends StatelessWidget {
);
}
}
class PatientProfileButton extends StatelessWidget {
final String name;
final String icon;
final dynamic route;
final PatiantInformtion patient;
final String url = "assets/images/";
PatientProfileButton(
{Key key, this.patient, this.name, this.icon, this.route})
: super(key: key);
@override
Widget build(BuildContext context) {
return new Container(
margin: new EdgeInsets.symmetric(horizontal: 4.0),
child: InkWell(
onTap: () {
navigator(context, this.route);
},
child: Column(children: <Widget>[
Expanded(
flex: 1,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
padding: EdgeInsets.all(5),
child: new AppText(
this.name,
color: Colors.red,
fontWeight: FontWeight.w600,
textAlign: TextAlign.left,
fontSize: 16,
),
)
],
),
),
Expanded(
flex: 1,
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Container(
padding: EdgeInsets.all(10),
child: new Image.asset(url + icon))
],
))
]),
),
decoration: BoxDecoration(
// border: Border.all(),
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(10)),
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) {
Navigator.of(context).pushNamed(route, arguments: {'patient': patient});
}
}

@ -2,7 +2,6 @@ import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart';
/*
*@author: Elham Rababah
*@Date:21/4/2020
@ -17,13 +16,14 @@ class ProfileImageWidget extends StatelessWidget {
double height;
double width;
Color color;
double fontsize;
ProfileImageWidget(
{this.url,
this.name,
this.des,
this.height,
this.width,
this.fontsize,
this.color = Colors.black});
@override
@ -40,17 +40,29 @@ class ProfileImageWidget extends StatelessWidget {
backgroundColor: Colors.transparent,
),
),
name==null || des == null?SizedBox():SizedBox(height: 10,),
name==null?SizedBox():AppText(
name,
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 4,
color: color,
),
des==null?SizedBox():AppText(
des,
fontSize: SizeConfig.textMultiplier * 2.5,
)
name == null || des == null
? SizedBox()
: SizedBox(
height: 10,
),
name == null
? SizedBox()
: AppText(
name,
fontWeight: FontWeight.bold,
fontSize: fontsize == null
? SizeConfig.textMultiplier * 3.5
: fontsize,
color: color,
),
des == null
? SizedBox()
: AppText(
des,
fontSize: fontsize == null
? SizeConfig.textMultiplier * 2.5
: fontsize,
)
],
);
}

Loading…
Cancel
Save