diff --git a/lib/routes.dart b/lib/routes.dart index 9c87ff2f..f90e1ba9 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -1,11 +1,4 @@ -import 'package:doctor_app_flutter/config/config.dart'; -import 'package:doctor_app_flutter/screens/patients/profile/insurance_approvals_screen.dart'; -import 'package:doctor_app_flutter/screens/patients/profile/patient_orders_screen.dart'; -import 'package:doctor_app_flutter/screens/patients/profile/progress_note_screen.dart'; - -import './screens/patients/profile/vital_sign/body_measurements_screen.dart'; - import './screens/QR_reader_screen.dart'; import './screens/auth/change_password_screen.dart'; import './screens/auth/login_screen.dart'; @@ -21,11 +14,15 @@ import './screens/medicine/pharmacies_list_screen.dart'; import './screens/patients/patient_search_screen.dart'; import './screens/patients/patients_referred_screen.dart'; import './screens/patients/patients_screen.dart'; +import './screens/patients/profile/insurance_approvals_screen.dart'; import './screens/patients/profile/lab_result/lab_orders_screen.dart'; +import './screens/patients/profile/patient_orders_screen.dart'; import './screens/patients/profile/patient_profile_screen.dart'; import './screens/patients/profile/prescriptions/prescriptions_screen.dart'; +import './screens/patients/profile/progress_note_screen.dart'; import './screens/patients/profile/radiology/radiology_screen.dart'; import './screens/patients/profile/vital_sign/vital_sign_details_screen.dart'; +import './screens/patients/profile/vital_sign/vital_sign_item_details_screen.dart'; import './screens/patients/profile/vital_sign/vital_sign_screen.dart'; import './screens/profile_screen.dart'; import './screens/settings/settings_screen.dart'; @@ -91,5 +88,5 @@ var routes = { PATIENT_ORDERS: (_) => PatientsOrdersScreen(), PATIENT_INSURANCE_APPROVALS: (_) => InsuranceApprovalsScreen(), VITAL_SIGN_DETAILS: (_) => VitalSignDetailsScreen(), - BODY_MEASUREMENTS: (_) => BodyMeasurementsScreen() + BODY_MEASUREMENTS: (_) => VitalSignItemDetailsScreen() }; diff --git a/lib/screens/patients/profile/insurance_approvals_screen.dart b/lib/screens/patients/profile/insurance_approvals_screen.dart index e2d531c5..2015e106 100644 --- a/lib/screens/patients/profile/insurance_approvals_screen.dart +++ b/lib/screens/patients/profile/insurance_approvals_screen.dart @@ -1,6 +1,5 @@ import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/models/patient/insurance_aprovals_request.dart'; -import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/material.dart'; diff --git a/lib/screens/patients/profile/vital_sign/vital_ding_chart_and_detials.dart b/lib/screens/patients/profile/vital_sign/vital_ding_chart_and_detials.dart deleted file mode 100644 index e01290c1..00000000 --- a/lib/screens/patients/profile/vital_sign/vital_ding_chart_and_detials.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart'; -import 'package:doctor_app_flutter/widgets/patients/vital_sign_details_wideget.dart'; -import 'package:doctor_app_flutter/widgets/shared/charts/app_time_series_chart.dart'; -import 'package:flutter/material.dart'; -class VitalSingChartAndDetials extends StatelessWidget { - VitalSingChartAndDetials({ - Key key, - @required this.vitalList, - @required this.name, - @required this.viewKey, - @required this.title1, - @required this.title2, - }) : super(key: key); - - final List vitalList ; - final String name; - final String viewKey; - final String title1; - final String title2; - - @override - Widget build(BuildContext context) { - return Column( - children: [ - AppTimeSeriesChart( - vitalList: vitalList, - chartName: name, - viewKey: viewKey, - ), - VitalSignDetailsWidget( - vitalList: vitalList.reversed.toList(), - title1: '${title1}', - title2: '${title2}', - viewKey: '${viewKey}', - ), - ], - ); - } -} diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart index 8b9cbead..ca21e7aa 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart @@ -1,16 +1,16 @@ -import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; -import 'package:doctor_app_flutter/lookups/patient_lookup.dart'; -import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; -import 'package:doctor_app_flutter/models/patient/vital_sign_req_model.dart'; -import 'package:doctor_app_flutter/providers/patients_provider.dart'; -import 'package:doctor_app_flutter/routes.dart'; -import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; -import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import '../../../../config/shared_pref_kay.dart'; import '../../../../config/size_config.dart'; +import '../../../../lookups/patient_lookup.dart'; +import '../../../../models/patient/patiant_info_model.dart'; +import '../../../../models/patient/vital_sign_req_model.dart'; import '../../../../models/patient/vital_sign_res_model.dart'; +import '../../../../providers/patients_provider.dart'; +import '../../../../routes.dart'; +import '../../../../screens/patients/profile/vital_sign/vital_sign_item.dart'; +import '../../../../util/dr_app_shared_pref.dart'; import '../../../../widgets/shared/app_scaffold_widget.dart'; DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); @@ -199,78 +199,3 @@ class _VitalSignDetailsScreenState extends State { } } -class VitalSignItem extends StatelessWidget { - const VitalSignItem( - {Key key, - @required this.url, - @required this.des, - this.lastVal = 'N/A', - this.unit = '', - this.height, - this.width}) - : super(key: key); - - final String url; - final String des; - final String lastVal; - final String unit; - - final double height; - final double width; - - @override - Widget build(BuildContext context) { - return RoundedContainer( - margin: 0.025 * SizeConfig.realScreenWidth, - height: 0.14 * SizeConfig.realScreenHeight, - width: 0.45 * SizeConfig.realScreenWidth, - child: Container( - padding: EdgeInsets.all(5), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - flex: 2, - child: Text( - des, - style: TextStyle( - fontSize: 1.7 * SizeConfig.textMultiplier, - color: Theme.of(context).primaryColor, - fontWeight: FontWeight.bold), - ), - ), - Expanded( - flex: 1, - child: Column( - // mainAxisAlignment: MainAxisAlignment.spaceEvenly, - // crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - child: Image.asset( - url, - height: SizeConfig.heightMultiplier * 7, - ), - ), - Expanded( - child: RichText( - text: TextSpan( - style: TextStyle(color: Colors.black), - children: [ - new TextSpan(text: lastVal), - new TextSpan( - text: ' ${unit}', - style: - TextStyle(color: Theme.of(context).primaryColor)), - ], - ), - )) - ], - ), - ) - ], - ), - ), - ); - } -} diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_item.dart b/lib/screens/patients/profile/vital_sign/vital_sign_item.dart new file mode 100644 index 00000000..9e25af85 --- /dev/null +++ b/lib/screens/patients/profile/vital_sign/vital_sign_item.dart @@ -0,0 +1,86 @@ +import 'package:flutter/material.dart'; + +import '../../../../config/size_config.dart'; +import '../../../../widgets/shared/rounded_container_widget.dart'; +/* + *@author: Elham Rababah + *@Date:03/6/2020 + *@param: + *@return: + *@desc: VitalSignItem + */ +class VitalSignItem extends StatelessWidget { + const VitalSignItem( + {Key key, + @required this.url, + @required this.des, + this.lastVal = 'N/A', + this.unit = '', + this.height, + this.width}) + : super(key: key); + + final String url; + final String des; + final String lastVal; + final String unit; + + final double height; + final double width; + + @override + Widget build(BuildContext context) { + return RoundedContainer( + margin: 0.025 * SizeConfig.realScreenWidth, + height: 0.14 * SizeConfig.realScreenHeight, + width: 0.45 * SizeConfig.realScreenWidth, + child: Container( + padding: EdgeInsets.all(5), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + flex: 2, + child: Text( + des, + style: TextStyle( + fontSize: 1.7 * SizeConfig.textMultiplier, + color: Theme.of(context).primaryColor, + fontWeight: FontWeight.bold), + ), + ), + Expanded( + flex: 1, + child: Column( + // mainAxisAlignment: MainAxisAlignment.spaceEvenly, + // crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Image.asset( + url, + height: SizeConfig.heightMultiplier * 7, + ), + ), + Expanded( + child: RichText( + text: TextSpan( + style: TextStyle(color: Colors.black), + children: [ + new TextSpan(text: lastVal), + new TextSpan( + text: ' ${unit}', + style: + TextStyle(color: Theme.of(context).primaryColor)), + ], + ), + )) + ], + ), + ) + ], + ), + ), + ); + } +} diff --git a/lib/screens/patients/profile/vital_sign/body_measurements_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_item_details_screen.dart similarity index 81% rename from lib/screens/patients/profile/vital_sign/body_measurements_screen.dart rename to lib/screens/patients/profile/vital_sign/vital_sign_item_details_screen.dart index eb1f011d..55f636d2 100644 --- a/lib/screens/patients/profile/vital_sign/body_measurements_screen.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_item_details_screen.dart @@ -1,15 +1,22 @@ -import 'package:doctor_app_flutter/lookups/patient_lookup.dart'; -import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart'; -import 'package:doctor_app_flutter/providers/patients_provider.dart'; -import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_ding_chart_and_detials.dart'; -import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/charts/app_time_series_chart.dart'; -import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -class BodyMeasurementsScreen extends StatelessWidget { - BodyMeasurementsScreen(); +import '../../../../lookups/patient_lookup.dart'; +import '../../../../models/patient/vital_sign_res_model.dart'; +import '../../../../providers/patients_provider.dart'; +import '../../../../screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart'; +import '../../../../widgets/shared/app_scaffold_widget.dart'; + + +/* + *@author: Elham Rababah + *@Date:03/6/2020 + *@param: + *@return: + *@desc: VitalSignItemDetailsScreen + */ +class VitalSignItemDetailsScreen extends StatelessWidget { + VitalSignItemDetailsScreen(); // ; PatientsProvider patientsProv; List vitalList = []; @@ -146,7 +153,6 @@ class BodyMeasurementsScreen extends StatelessWidget { default: } - // generateData(); return AppScaffold( appBarTitle: pageTitle, body: ListView( @@ -164,17 +170,4 @@ class BodyMeasurementsScreen extends StatelessWidget { } } -class LinearSales { - final int year; - final int sales; - - LinearSales(this.year, this.sales); -} - -/// Sample time series data type. -class TimeSeriesSales { - final DateTime time; - final int sales; - TimeSeriesSales(this.time, this.sales); -} diff --git a/lib/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart b/lib/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart new file mode 100644 index 00000000..1bc5b55d --- /dev/null +++ b/lib/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart @@ -0,0 +1,53 @@ +import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart'; +import 'package:doctor_app_flutter/widgets/patients/vital_sign_details_wideget.dart'; +import 'package:doctor_app_flutter/widgets/shared/Text.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_expandable_notifier.dart'; +import 'package:doctor_app_flutter/widgets/shared/charts/app_time_series_chart.dart'; +import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; +import 'package:expandable/expandable.dart'; +import 'package:flutter/material.dart'; + +/* + *@author: Elham Rababah + *@Date:03/6/2020 + *@param: + *@return: + *@desc: VitalSingChartAndDetials + */ +class VitalSingChartAndDetials extends StatelessWidget { + VitalSingChartAndDetials({ + Key key, + @required this.vitalList, + @required this.name, + @required this.viewKey, + @required this.title1, + @required this.title2, + }) : super(key: key); + + final List vitalList; + final String name; + final String viewKey; + final String title1; + final String title2; + + @override + Widget build(BuildContext context) { + return Column( + children: [ + AppExpandableNotifier( + headerWid: AppTimeSeriesChart( + vitalList: vitalList, + chartName: name, + viewKey: viewKey, + ), + bodyWid: VitalSignDetailsWidget( + vitalList: vitalList.reversed.toList(), + title1: '${title1}', + title2: '${title2}', + viewKey: '${viewKey}', + ), + ), + ], + ); + } +} diff --git a/lib/widgets/patients/vital_sign_details_wideget.dart b/lib/widgets/patients/vital_sign_details_wideget.dart index 35e85699..7c91b499 100644 --- a/lib/widgets/patients/vital_sign_details_wideget.dart +++ b/lib/widgets/patients/vital_sign_details_wideget.dart @@ -11,7 +11,8 @@ class VitalSignDetailsWidget extends StatefulWidget { final String title2; final String viewKey; - VitalSignDetailsWidget({Key key, this.vitalList, this.title1, this.title2,this.viewKey}); + VitalSignDetailsWidget( + {Key key, this.vitalList, this.title1, this.title2, this.viewKey}); @override _VitalSignDetailsWidgetState createState() => _VitalSignDetailsWidgetState(); @@ -26,6 +27,10 @@ class _VitalSignDetailsWidgetState extends State { borderRadius: BorderRadius.only( topLeft: Radius.circular(10.0), ), + border: Border.all( + color: Colors.grey, + width: 0.5 + ), ), margin: EdgeInsets.all(20), child: Container( diff --git a/lib/widgets/shared/app_expandable_notifier.dart b/lib/widgets/shared/app_expandable_notifier.dart new file mode 100644 index 00000000..ca3edd09 --- /dev/null +++ b/lib/widgets/shared/app_expandable_notifier.dart @@ -0,0 +1,53 @@ +import 'package:expandable/expandable.dart'; +import 'package:flutter/material.dart'; + +class AppExpandableNotifier extends StatelessWidget { + final Widget headerWid; + final Widget bodyWid; + + AppExpandableNotifier({this.headerWid, this.bodyWid}); + @override + Widget build(BuildContext context) { + return ExpandableNotifier( + child: Padding( + padding: const EdgeInsets.all(10), + child: Card( + clipBehavior: Clip.antiAlias, + child: Column( + children: [ + SizedBox( + child: headerWid, + ), + ScrollOnExpand( + scrollOnExpand: true, + scrollOnCollapse: false, + child: ExpandablePanel( + theme: const ExpandableThemeData( + headerAlignment: ExpandablePanelHeaderAlignment.center, + tapBodyToCollapse: true, + ), + header: Padding( + padding: EdgeInsets.all(10), + child: Text( + "See Graph Details", + )), + collapsed: Text(''), + expanded: bodyWid, + builder: (_, collapsed, expanded) { + return Padding( + padding: EdgeInsets.only(left: 10, right: 10, bottom: 10), + child: Expandable( + collapsed: collapsed, + expanded: expanded, + theme: const ExpandableThemeData(crossFadePoint: 0), + ), + ); + }, + ), + ), + ], + ), + ), + )); + } +} diff --git a/lib/widgets/shared/charts/app_line_chart.dart b/lib/widgets/shared/charts/app_line_chart.dart index 554eafa1..35320962 100644 --- a/lib/widgets/shared/charts/app_line_chart.dart +++ b/lib/widgets/shared/charts/app_line_chart.dart @@ -1,6 +1,13 @@ import 'package:flutter/material.dart'; import 'package:charts_flutter/flutter.dart' as charts; +/* + *@author: Elham Rababah + *@Date:03/6/2020 + *@param: + *@return: + *@desc: AppLineChart + */ class AppLineChart extends StatelessWidget { const AppLineChart({ Key key, diff --git a/lib/widgets/shared/charts/app_time_series_chart.dart b/lib/widgets/shared/charts/app_time_series_chart.dart index d22fb951..1ffb1afb 100644 --- a/lib/widgets/shared/charts/app_time_series_chart.dart +++ b/lib/widgets/shared/charts/app_time_series_chart.dart @@ -1,12 +1,19 @@ import 'package:charts_flutter/flutter.dart' as charts; -import 'package:doctor_app_flutter/config/size_config.dart'; -import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart'; -import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/body_measurements_screen.dart'; -import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/material.dart'; +import '../../../config/size_config.dart'; +import '../../../models/patient/vital_sign_res_model.dart'; +import '../../../widgets/shared/rounded_container_widget.dart'; + +/* + *@author: Elham Rababah + *@Date:03/6/2020 + *@param: + *@return: + *@desc: AppTimeSeriesChart + */ class AppTimeSeriesChart extends StatelessWidget { - AppTimeSeriesChart( + AppTimeSeriesChart( {Key key, @required this.vitalList, @required this.viewKey, @@ -66,6 +73,13 @@ class AppTimeSeriesChart extends StatelessWidget { ); } + /* + *@author: Elham Rababah + *@Date:03/6/2020 + *@param: + *@return: + *@desc: generateData + */ generateData() { final List data = []; if (vitalList.length > 0) { @@ -91,3 +105,17 @@ class AppTimeSeriesChart extends StatelessWidget { ]; } } + +/* + *@author: Elham Rababah + *@Date:03/6/2020 + *@param: + *@return: + *@desc: TimeSeriesSales + */ +class TimeSeriesSales { + final DateTime time; + final int sales; + + TimeSeriesSales(this.time, this.sales); +}