working on new design for vital sign and admission request

merge-requests/387/head
mosazaid 5 years ago
parent b813426024
commit 6eaf448d5a

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 940 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 995 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

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

@ -84,7 +84,7 @@ const Map<String, Map<String, String>> localizedValues = {
'speciality': {'en': 'Speciality', 'ar': 'التخصص'}, 'speciality': {'en': 'Speciality', 'ar': 'التخصص'},
'errorMessage': {'en': 'Something went wrong', 'ar': 'حدث خطأ ما'}, 'errorMessage': {'en': 'Something went wrong', 'ar': 'حدث خطأ ما'},
'patientProfile': {'en': 'Patient Profile', 'ar': 'ملف المريض'}, 'patientProfile': {'en': 'Patient Profile', 'ar': 'ملف المريض'},
'vitalSign': {'en': 'Vital Sign', 'ar': 'المؤشرات الحيوية'}, 'vitalSign': {'en': 'Vital Signs', 'ar': 'المؤشرات الحيوية'},
'vital': {'en': 'Vital', 'ar': 'الحيوية'}, 'vital': {'en': 'Vital', 'ar': 'الحيوية'},
'signs': {'en': 'Signs', 'ar': 'المؤشرات'}, 'signs': {'en': 'Signs', 'ar': 'المؤشرات'},
'labOrder': {'en': 'Lab Order', 'ar': 'نتائج التحاليل'}, 'labOrder': {'en': 'Lab Order', 'ar': 'نتائج التحاليل'},
@ -377,6 +377,11 @@ const Map<String, Map<String, String>> localizedValues = {
'headCircum': {'en': "Head Circum", 'ar': 'محيط الرأس'}, 'headCircum': {'en': "Head Circum", 'ar': 'محيط الرأس'},
'leanBodyWeight': {'en': "Lean Body Weight", 'ar': 'وزن الجسم الهزيل'}, 'leanBodyWeight': {'en': "Lean Body Weight", 'ar': 'وزن الجسم الهزيل'},
'bodyMassIndex': {'en': "Body Mass Index", 'ar': 'مؤشر كتلة الجسم'}, 'bodyMassIndex': {'en': "Body Mass Index", 'ar': 'مؤشر كتلة الجسم'},
'yourBodyMassIndex': {'en': "Your Body Mass Index is", 'ar': 'مؤشر كتلة جسمك هو'},
'bmiUnderWeight': {'en': "UnderWeight", 'ar': 'تحت الوزن'},
'bmiHealthy': {'en': "Healthy", 'ar': 'صحي'},
'bmiOverWeight': {'en': "OverWeight", 'ar': 'فوق الوزن'},
'bmiObese': {'en': "Obese", 'ar': 'سمين'},
'method': {'en': "Method", 'ar': 'الطريقة'}, 'method': {'en': "Method", 'ar': 'الطريقة'},
'pulseBeats': {'en': 'Pulse(beats/minute)', 'ar': ' (دقة/دقيقة)النبض'}, 'pulseBeats': {'en': 'Pulse(beats/minute)', 'ar': ' (دقة/دقيقة)النبض'},
'rhythm': {'en': "Rhythm", 'ar': 'الإيقاع'}, 'rhythm': {'en': "Rhythm", 'ar': 'الإيقاع'},
@ -608,7 +613,7 @@ const Map<String, Map<String, String>> localizedValues = {
"sys-dias": {"en": "SBP/DBP", "ar": "إنقباض/إنبساط"}, "sys-dias": {"en": "SBP/DBP", "ar": "إنقباض/إنبساط"},
"body": {"en": "Body \n Mass", "ar": "كتلة\nالجسم"}, "body": {"en": "Body \n Mass", "ar": "كتلة\nالجسم"},
'respirationRate': {'en': 'Respiration Rate', 'ar': 'معدل التنفس'}, 'respirationRate': {'en': 'Respiration Rate', 'ar': 'معدل التنفس'},
'heart': {'en': 'Heart', 'ar': 'قلب'}, 'heart': {'en': 'Heart rate', 'ar': 'معدل ضربات القلب'},
'medicalReport': {'en': "medical Report", 'ar': "تقرير طبي"}, 'medicalReport': {'en': "medical Report", 'ar': "تقرير طبي"},
'visitDate': {'en': "Visit Date", 'ar': "تاريخ الزيارة"}, 'visitDate': {'en': "Visit Date", 'ar': "تاريخ الزيارة"},
'test': {'en': "Procedures/Test", 'ar': "عمليات/تحاليل"}, 'test': {'en': "Procedures/Test", 'ar': "عمليات/تحاليل"},

@ -99,6 +99,19 @@ class VitalSignsViewModel extends BaseViewModel {
} }
} }
int getBMIStatus() {
var bodyMassIndex = double.parse(bodyMax);
if (bodyMassIndex <= 18.5) {
return 1;
} else if (bodyMassIndex <= 25.0) {
return 2;
} else if (bodyMassIndex <= 30) {
return 3;
} else {
return 4;
}
}
String getTempratureMethod(int temperatureCelciusMethod) { String getTempratureMethod(int temperatureCelciusMethod) {
// temperatureCelciusMethod ( vital sign response field )- master 2005 // temperatureCelciusMethod ( vital sign response field )- master 2005
if (temperatureCelciusMethod == 1) { if (temperatureCelciusMethod == 1) {

@ -1,4 +1,3 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/model/admissionRequest/admission-request.dart'; import 'package:doctor_app_flutter/core/model/admissionRequest/admission-request.dart';
@ -6,11 +5,12 @@ import 'package:doctor_app_flutter/core/viewModel/patient-admission-request-view
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/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/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/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.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';
@ -47,12 +47,15 @@ class _AdmissionRequestThirdScreenState
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;
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
return BaseView<AdmissionRequestViewModel>( return BaseView<AdmissionRequestViewModel>(
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
baseViewModel: model, baseViewModel: model,
isShowAppBar: false,
appBarTitle: TranslationBase.of(context).admissionRequest, appBarTitle: TranslationBase.of(context).admissionRequest,
body: GestureDetector( body: GestureDetector(
onTap: (){ onTap: (){
@ -62,27 +65,57 @@ class _AdmissionRequestThirdScreenState
} }
}, },
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Expanded( Expanded(
child: SingleChildScrollView( child: SingleChildScrollView(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
PatientPageHeaderWidget(patient), // PatientPageHeaderWidget(patient),
PatientProfileHeaderNewDesign(
patient, patientType, arrivalType),
Container( Container(
margin: EdgeInsets.symmetric( margin: EdgeInsets.all(16.0),
vertical: 16, horizontal: 16),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SizedBox( AppText(
height: 16, "${TranslationBase.of(context).admission}",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.6,
fontWeight: FontWeight.w600,
), ),
AppText(
"${TranslationBase.of(context).request}",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 3,
fontWeight: FontWeight.bold,
)
],
),
),
Container(
margin: EdgeInsets.symmetric(
vertical: 0, horizontal: 16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText( AppText(
TranslationBase.of(context) TranslationBase.of(context)
.specialityAndDoctorDetail, .specialityAndDoctorDetail,
fontWeight: FontWeight.bold, fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 2.5, fontSize: SizeConfig.textMultiplier * 1.8,
fontWeight: FontWeight.w700,
),
SizedBox(
height: 10,
),
AppTextFieldCustom(
height: screenSize.height * 0.070,
hintText: "test field",
isDropDown: true,
controller: _sickLeaveCommentsController,
), ),
SizedBox( SizedBox(
height: 10, height: 10,

@ -96,7 +96,7 @@ class PatientProfileScreen extends StatelessWidget {
if (int.parse(patientType) == 7 || if (int.parse(patientType) == 7 ||
int.parse(patientType) == 6) int.parse(patientType) == 6)
Positioned( Positioned(
top: 195, top: 175,
left: 20, left: 20,
right: 20, right: 20,
child: Row( child: Row(

@ -33,7 +33,7 @@ class MyReferralPatientScreen extends StatelessWidget {
) )
: SingleChildScrollView( : SingleChildScrollView(
child: Container( child: Container(
margin: EdgeInsets.only(top: 50), margin: EdgeInsets.only(top: 70),
// color: Colors.white, // color: Colors.white,
// height: MediaQuery.of(context).size.height, // height: MediaQuery.of(context).size.height,
child: Column( child: Column(

@ -6,6 +6,7 @@ import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sign_item.dart'; import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sign_item.dart';
import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sign_item_details_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sign_item_details_screen.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-profile-header-new-design.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/transitions/fade_page.dart'; import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart';
@ -29,191 +30,378 @@ class VitalSignDetailsScreen extends StatelessWidget {
String from = routeArgs['from']; String from = routeArgs['from'];
String to = routeArgs['to']; String to = routeArgs['to'];
String imageBasePath = 'assets/images/'; String imageBasePath = 'assets/images/';
String assetBasePath = "${imageBasePath}patient/vital_signs/";
return BaseView<VitalSignsViewModel>( return BaseView<VitalSignsViewModel>(
onModelReady: (model) => onModelReady: (model) =>
model.getPatientVitalSignHistory(patient, from, to), model.getPatientVitalSignHistory(patient, from, to),
builder: (_, mode, widget) => AppScaffold( builder: (_, mode, widget) => AppScaffold(
isShowAppBar: true, isShowAppBar: false,
baseViewModel: mode, baseViewModel: mode,
appBarTitle: TranslationBase.of(context).vitalSign, appBarTitle: TranslationBase.of(context).vitalSign,
body: mode.patientVitalSignsHistory.length > 0 body: mode.patientVitalSignsHistory.length > 0
? Container( ? Column(
child: ListView( crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: [
Row( PatientProfileHeaderNewDesign(
children: <Widget>[ patient, patientType, arrivalType),
InkWell( Container(
onTap: () => isNotOneAppointment margin: EdgeInsets.all(16.0),
? Navigator.push( child: Column(
context, crossAxisAlignment: CrossAxisAlignment.start,
FadePage( children: [
page: VitalSignItemDetailsScreen( AppText(
pageKey: vitalSignDetails.Height, "${patient.firstName ?? patient.patientDetails.firstName}'s",
pageTitle: fontFamily: 'Poppins',
TranslationBase.of(context).height, fontSize: SizeConfig.textMultiplier * 1.6,
vitalList: mode.patientVitalSignsHistory, fontWeight: FontWeight.w600,
),
),
)
: null,
child: Container(
child: VitalSignItem(
des: TranslationBase.of(context).height,
imagePath: "${imageBasePath}vital_height.png",
lastVal: mode.heightCm,
unit: TranslationBase.of(context).cm,
),
),
), ),
InkWell( AppText(
onTap: () => isNotOneAppointment TranslationBase.of(context).vitalSign,
? Navigator.push( fontFamily: 'Poppins',
context, fontSize: SizeConfig.textMultiplier * 3,
FadePage( fontWeight: FontWeight.bold,
page: VitalSignItemDetailsScreen( )
pageKey: vitalSignDetails.Weight, ],
pageTitle: ),
TranslationBase.of(context).weight, ),
vitalList: mode.patientVitalSignsHistory, Container(
), height: MediaQuery.of(context).size.height * 0.21,
), width: double.infinity,
) padding: EdgeInsets.all(12.0),
: null, margin: EdgeInsets.symmetric(horizontal: 16.0),
child: VitalSignItem( decoration: BoxDecoration(
des: TranslationBase.of(context).weight, shape: BoxShape.rectangle,
imagePath: "${imageBasePath}vital_weight.png", color: Colors.white,
unit: TranslationBase.of(context).kg, borderRadius: BorderRadius.circular(16),
lastVal: mode.weightKg, border: Border.fromBorderSide(BorderSide(
), color: Colors.grey.shade400,
width: 0.4,
)),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
"${TranslationBase.of(context).yourBodyMassIndex} ${mode.bodyMax}",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 2.0,
fontWeight: FontWeight.w700,
), ),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Image.asset(
mode.getBMIStatus() != 1
? '${assetBasePath}underweight_BMI.png'
: '${assetBasePath}underweight_BMI-r.png',
height:
MediaQuery.of(context).size.height * 0.10,
),
const SizedBox(
height: 4,
),
AppText(
"${TranslationBase.of(context).bmiUnderWeight}",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.4,
color: mode.getBMIStatus() == 1
? Color(0XFFD02127)
: null,
fontWeight: FontWeight.w700,
),
AppText(
"(1-10)",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.4,
color: mode.getBMIStatus() == 1
? Color(0XFFD02127)
: null,
fontWeight: FontWeight.w700,
),
],
)),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Image.asset(
mode.getBMIStatus() != 2
? '${assetBasePath}health_BMI.png'
: '${assetBasePath}health_BMI-r.png',
height:
MediaQuery.of(context).size.height * 0.10,
),
const SizedBox(
height: 4,
),
AppText(
"${TranslationBase.of(context).bmiHealthy}",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.4,
fontWeight: FontWeight.w700,
color: mode.getBMIStatus() == 2
? Color(0XFFD02127)
: null,
),
AppText(
"(11-20)",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.4,
fontWeight: FontWeight.w700,
color: mode.getBMIStatus() == 2
? Color(0XFFD02127)
: null,
),
],
)),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Image.asset(
mode.getBMIStatus() != 3
? '${assetBasePath}ovrweight_BMI.png'
: '${assetBasePath}ovrweight_BMI-r.png',
height:
MediaQuery.of(context).size.height * 0.10,
),
const SizedBox(
height: 4,
),
AppText(
"${TranslationBase.of(context).bmiOverWeight}",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.4,
fontWeight: FontWeight.w700,
color: mode.getBMIStatus() == 3
? Color(0XFFD02127)
: null,
),
AppText(
"(21-30)",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.4,
fontWeight: FontWeight.w700,
color: mode.getBMIStatus() == 3
? Color(0XFFD02127)
: null,
),
],
)),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Image.asset(
mode.getBMIStatus() != 4
? '${assetBasePath}Obese_BMI.png'
: '${assetBasePath}Obese_BMI-r.png',
height:
MediaQuery.of(context).size.height * 0.10,
),
const SizedBox(
height: 4,
),
AppText(
"${TranslationBase.of(context).bmiObese}",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.4,
fontWeight: FontWeight.w700,
color: mode.getBMIStatus() == 4
? Color(0XFFD02127)
: null,
),
AppText(
"(31-40>)",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.4,
fontWeight: FontWeight.w700,
color: mode.getBMIStatus() == 4
? Color(0XFFD02127)
: null,
),
],
)),
],
)
], ],
), ),
Row( ),
children: <Widget>[ Expanded(
InkWell( child: Container(
onTap: () => isNotOneAppointment margin: EdgeInsets.symmetric(horizontal: 8.0),
? Navigator.push( child : GridView.count(
context, shrinkWrap: true,
FadePage( physics: NeverScrollableScrollPhysics(),
page: VitalSignItemDetailsScreen( crossAxisSpacing: 4,
pageKey: mainAxisSpacing: 4,
vitalSignDetails.BodyMeasurements, childAspectRatio: 1 / 1.0,
pageTitle: TranslationBase.of(context) crossAxisCount: 3,
.bodyMeasurements, children: [
vitalList: mode.patientVitalSignsHistory, InkWell(
), onTap: () => isNotOneAppointment
), ? Navigator.push(
) context,
: null, FadePage(
child: VitalSignItem( page: VitalSignItemDetailsScreen(
des: TranslationBase.of(context).body, pageKey: vitalSignDetails.Height,
imagePath: "${imageBasePath}vital_body_mass.png", pageTitle:
lastVal: mode.bodyMax, TranslationBase.of(context)
unit: TranslationBase.of(context).mass, .height,
vitalList:
mode.patientVitalSignsHistory,
),
),
)
: null,
child: Container(
child: VitalSignItem(
des: TranslationBase.of(context).height,
imagePath:
"${assetBasePath}height.png",
lastVal: mode.heightCm,
unit: TranslationBase.of(context).cm,
),
),
), ),
), InkWell(
InkWell( onTap: () => isNotOneAppointment
onTap: () => isNotOneAppointment ? Navigator.push(
? Navigator.push( context,
context, FadePage(
FadePage( page: VitalSignItemDetailsScreen(
page: VitalSignItemDetailsScreen( pageKey: vitalSignDetails.Weight,
pageKey: vitalSignDetails.Temperature, pageTitle:
pageTitle: TranslationBase.of(context) TranslationBase.of(context)
.temperature, .weight,
vitalList: mode.patientVitalSignsHistory, vitalList:
), mode.patientVitalSignsHistory,
), ),
) ),
: null, )
child: Container( : null,
child: VitalSignItem( child: VitalSignItem(
des: TranslationBase.of(context).temperature, des: TranslationBase.of(context).weight,
imagePath: imagePath: "${assetBasePath}weight.png",
"${imageBasePath}vital_temperature.png", unit: TranslationBase.of(context).kg,
lastVal: mode.temperatureCelcius, lastVal: mode.weightKg,
unit: TranslationBase.of(context).tempC,
), ),
), ),
), InkWell(
], onTap: () => isNotOneAppointment
), ? Navigator.push(
Row( context,
children: <Widget>[ FadePage(
InkWell( page: VitalSignItemDetailsScreen(
onTap: () => isNotOneAppointment pageKey:
? Navigator.push( vitalSignDetails.Temperature,
context, pageTitle:
FadePage( TranslationBase.of(context)
page: VitalSignItemDetailsScreen( .temperature,
pageKey: vitalSignDetails.heart, vitalList:
pageTitle: mode.patientVitalSignsHistory,
TranslationBase.of(context).heart, ),
vitalList: mode.patientVitalSignsHistory, ),
), )
), : null,
) child: Container(
: null, child: VitalSignItem(
child: VitalSignItem( des:
des: TranslationBase.of(context).heart, TranslationBase.of(context).temperature,
imagePath: "${imageBasePath}vital_heart_rate.png", imagePath:
lastVal: mode.hartRat, "${assetBasePath}temperature.png",
unit: TranslationBase.of(context).bpm, lastVal: mode.temperatureCelcius,
unit: TranslationBase.of(context).tempC,
),
),
), ),
), InkWell(
InkWell( onTap: () => isNotOneAppointment
onTap: () => isNotOneAppointment ? Navigator.push(
? Navigator.push( context,
context, FadePage(
FadePage( page: VitalSignItemDetailsScreen(
page: VitalSignItemDetailsScreen( pageKey: vitalSignDetails.heart,
pageKey: vitalSignDetails.Respiration, pageTitle:
pageTitle: TranslationBase.of(context) TranslationBase.of(context)
.respirationRate, .heart,
vitalList: mode.patientVitalSignsHistory, vitalList:
), mode.patientVitalSignsHistory,
), ),
) ),
: null, )
child: VitalSignItem( : null,
des: TranslationBase.of(context).respirationRate, child: VitalSignItem(
imagePath: "${imageBasePath}vital_respiration.png", des: TranslationBase.of(context).heart,
lastVal: mode.respirationBeatPerMinute, imagePath:
unit: TranslationBase.of(context).respirationSigns, "${assetBasePath}heart_rate.png",
lastVal: mode.hartRat,
unit: TranslationBase.of(context).bpm,
),
), ),
), InkWell(
], onTap: () => isNotOneAppointment
), ? Navigator.push(
Row( context,
mainAxisAlignment: MainAxisAlignment.center, FadePage(
children: <Widget>[ page: VitalSignItemDetailsScreen(
InkWell( pageKey:
onTap: () => isNotOneAppointment vitalSignDetails.Respiration,
? Navigator.push( pageTitle:
context, TranslationBase.of(context)
FadePage( .respirationRate,
page: VitalSignItemDetailsScreen( vitalList:
pageKey: vitalSignDetails.BloodPressure, mode.patientVitalSignsHistory,
pageTitle: TranslationBase.of(context) ),
.bloodPressure, ),
vitalList: mode.patientVitalSignsHistory, )
), : null,
), child: VitalSignItem(
) des: TranslationBase.of(context)
: null, .respirationRate,
child: VitalSignItem( imagePath:
des: TranslationBase.of(context).bloodPressure, "${assetBasePath}respiration_rate.png",
imagePath: lastVal: mode.respirationBeatPerMinute,
"${imageBasePath}vital_blood-pressure.png", unit: TranslationBase.of(context)
lastVal: mode.bloodPressure, .respirationSigns,
unit: TranslationBase.of(context).sysDias, ),
), ),
), InkWell(
], onTap: () => isNotOneAppointment
? Navigator.push(
context,
FadePage(
page: VitalSignItemDetailsScreen(
pageKey:
vitalSignDetails.BloodPressure,
pageTitle:
TranslationBase.of(context)
.bloodPressure,
vitalList:
mode.patientVitalSignsHistory,
),
),
)
: null,
child: VitalSignItem(
des:
TranslationBase.of(context).bloodPressure,
imagePath:
"${assetBasePath}blood_pressure.png",
lastVal: mode.bloodPressure,
unit: TranslationBase.of(context).sysDias,
),
),
],
),
), ),
], ),
), ],
) )
: Center( : Center(
child: AppText( child: AppText(

@ -1,9 +1,17 @@
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
class VitalSignItem extends StatelessWidget { class VitalSignItem extends StatelessWidget {
final String des;
final String lastVal;
final String unit;
final String imagePath;
final double height;
final double width;
const VitalSignItem( const VitalSignItem(
{Key key, {Key key,
@required this.des, @required this.des,
@ -14,77 +22,71 @@ class VitalSignItem extends StatelessWidget {
@required this.imagePath}) @required this.imagePath})
: super(key: key); : super(key: key);
final String des;
final String lastVal;
final String unit;
final String imagePath;
final double height;
final double width;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return RoundedContainer( return RoundedContainer(
margin: 0.025 * SizeConfig.realScreenWidth, // margin: 0.025 * SizeConfig.realScreenWidth,
height: 0.15 * SizeConfig.realScreenHeight, // height: 0.15 * SizeConfig.realScreenHeight,
width: 0.45 * SizeConfig.realScreenWidth, // width: 0.45 * SizeConfig.realScreenWidth,
child: Container( child: Container(
padding: EdgeInsets.all(5), padding: EdgeInsets.all(5),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Container( Expanded(
height: 0.10 * SizeConfig.realScreenHeight, child: Container(
child: Row( padding: EdgeInsets.only(top: 8),
children: <Widget>[ child: Row(
Expanded( crossAxisAlignment: CrossAxisAlignment.start,
flex: 2, mainAxisAlignment: MainAxisAlignment.spaceBetween,
child: Align( children: <Widget>[
alignment: Alignment.topLeft, Expanded(
child: Padding( child: Container(
padding: const EdgeInsets.all(8.0), padding: EdgeInsets.only(left: 8, right: 8),
child: Text( child: Column(
des, crossAxisAlignment: CrossAxisAlignment.start,
style: TextStyle( mainAxisAlignment: MainAxisAlignment.start,
fontSize: 1.7 * SizeConfig.textMultiplier, children: [
color: HexColor('#B8382C'), AppText(
fontWeight: FontWeight.bold, "$lastVal",
), fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.6,
fontWeight: FontWeight.w800,
margin: 0,
),
AppText(
"$unit",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.3,
fontWeight: FontWeight.w700,
color: HexColor('#B8382C'),
margin: 0,
),
],
), ),
), ),
), ),
), Container(
Expanded(
flex: 1,
child: Container(
child: Image.asset( child: Image.asset(
imagePath, imagePath,
width: 40, width: 40,
height: 40, height: 40,
)), ))
) ],
], ),
), ),
), ),
Expanded( Container(
child: Container( width: double.infinity,
width: double.infinity, child: Align(
child: Align( alignment: Alignment.topLeft,
alignment: Alignment.topRight, child: Container(
child: Container( margin: EdgeInsets.only(left: 5, right: 5),
margin: EdgeInsets.only(left: 5, right: 5), child: AppText(
child: RichText( "$des",
text: TextSpan( fontFamily: 'Poppins',
style: TextStyle(color: Colors.black), fontSize: SizeConfig.textMultiplier * 1.5,
children: [ fontWeight: FontWeight.w600,
TextSpan(text: "$lastVal "),
TextSpan(
text: unit,
style: TextStyle(
color: HexColor('#B8382C'),
),
),
]),
),
), ),
), ),
), ),

@ -645,8 +645,13 @@ class TranslationBase {
String get leanBodyWeight => String get leanBodyWeight =>
localizedValues['leanBodyWeight'][locale.languageCode]; localizedValues['leanBodyWeight'][locale.languageCode];
String get bodyMassIndex => String get bodyMassIndex => localizedValues['bodyMassIndex'][locale.languageCode];
localizedValues['bodyMassIndex'][locale.languageCode];
String get yourBodyMassIndex => localizedValues['yourBodyMassIndex'][locale.languageCode];
String get bmiUnderWeight => localizedValues['bmiUnderWeight'][locale.languageCode];
String get bmiHealthy => localizedValues['bmiHealthy'][locale.languageCode];
String get bmiOverWeight => localizedValues['bmiOverWeight'][locale.languageCode];
String get bmiObese => localizedValues['bmiObese'][locale.languageCode];
String get method => localizedValues['method'][locale.languageCode]; String get method => localizedValues['method'][locale.languageCode];

@ -313,12 +313,14 @@ class PatientReferralItemWidget extends StatelessWidget {
), ),
Row( Row(
children: [ children: [
AppText( Expanded(
patientInfo.patientName, child: AppText(
fontSize: SizeConfig.textMultiplier * 2.5, patientInfo.patientName,
fontWeight: FontWeight.bold, fontSize: SizeConfig.textMultiplier * 2.5,
backGroundcolor: Colors.white, fontWeight: FontWeight.bold,
fontFamily: 'Poppins', backGroundcolor: Colors.white,
fontFamily: 'Poppins',
),
), ),
SizedBox( SizedBox(
width: 4, width: 4,

@ -26,7 +26,7 @@ class PatientProfileHeaderNewDesign extends StatelessWidget {
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
), ),
height: 220, height: 200,
child: Container( child: Container(
padding: EdgeInsets.only( padding: EdgeInsets.only(
left: 10, right: 10, bottom: 10), left: 10, right: 10, bottom: 10),

@ -0,0 +1,140 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:flutter/material.dart';
import 'app_texts_widget.dart';
class AppTextFieldCustom extends StatefulWidget {
final double height;
final Function onClick;
final String hintText;
final TextEditingController controller;
final bool isDropDown;
final Icon suffixIcon;
final Color dropDownColor;
AppTextFieldCustom(
{this.height = 0,
this.onClick,
this.hintText,
this.controller,
this.isDropDown = false,
this.suffixIcon,
this.dropDownColor});
@override
_AppTextFieldCustomState createState() => _AppTextFieldCustomState();
}
class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
@override
Widget build(BuildContext context) {
return Container(
height: widget.height != 0 ? widget.height : null,
decoration:
containerBorderDecoration(Color(0Xffffffff), Color(0xFFEFEFEF)),
padding: EdgeInsets.only(top: 4.0, bottom: 4.0, left: 8.0, right: 8.0),
child: InkWell(
onTap: widget.onClick ?? null,
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (widget.controller.text != "")
AppText(
widget.hintText,
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.4,
fontWeight: FontWeight.w600,
),
TextField(
textAlign: TextAlign.left,
decoration: textFieldSelectorDecoration(
widget.hintText, null, true),
style: TextStyle(
fontSize: 14,
color: Colors.grey.shade600,
),
controller: widget.controller,
),
],
),
),
widget.isDropDown
? widget.suffixIcon != null
? widget.suffixIcon
: Icon(
Icons.arrow_drop_down,
color: widget.dropDownColor != null
? widget.dropDownColor
: Colors.black,
)
: Container(),
],
),
),
);
}
BoxDecoration containerBorderDecoration(
Color containerColor, Color borderColor,
{double borderWidth = -1}) {
return BoxDecoration(
color: containerColor,
shape: BoxShape.rectangle,
borderRadius: BorderRadius.all(Radius.circular(8)),
border: Border.fromBorderSide(BorderSide(
color: borderColor,
width: borderWidth == -1 ? 2.0 : borderWidth,
)),
);
}
static InputDecoration textFieldSelectorDecoration(
String hintText, String selectedText, bool isDropDown,
{Icon suffixIcon, Color dropDownColor}) {
return InputDecoration(
isDense: true,
contentPadding: EdgeInsets.symmetric(horizontal: 0, vertical: 0),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Color(0Xffffffff)),
),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Color(0Xffffffff)),
),
border: UnderlineInputBorder(
borderSide: BorderSide(color: Color(0Xffffffff)),
),
/*focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),*/
hintText: selectedText != null ? selectedText : hintText,
hintStyle: TextStyle(
fontSize: 14,
color: Colors.grey.shade600,
),
/*suffixIcon: isDropDown
? suffixIcon != null
? suffixIcon
: Icon(
Icons.arrow_drop_down,
color: dropDownColor != null ? dropDownColor : Colors.black,
)
: null,*/
// labelText:
// labelStyle:
);
}
}

@ -107,6 +107,7 @@ flutter:
- assets/images/dashboard/ - assets/images/dashboard/
- assets/images/login/ - assets/images/login/
- assets/images/patient/ - assets/images/patient/
- assets/images/patient/vital_signs/
# An image asset can refer to one or more resolution-specific "variants", see # An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware. # https://flutter.dev/assets-and-images/#resolution-aware.

Loading…
Cancel
Save