TimeSeriesChart as widget

merge-requests/85/head
Elham Rababah 6 years ago
parent 1347198928
commit bd24b7c196

@ -27,6 +27,7 @@ class PatientsProvider with ChangeNotifier {
bool isError = false; bool isError = false;
String error = ''; String error = '';
List<VitalSignResModel> patientVitalSignList = []; List<VitalSignResModel> patientVitalSignList = [];
List<VitalSignResModel> patientVitalSignOrderdSubList = [];
List<LabOrdersResModel> patientLabResultOrdersList = []; List<LabOrdersResModel> patientLabResultOrdersList = [];
List<PrescriptionResModel> patientPrescriptionsList = []; List<PrescriptionResModel> patientPrescriptionsList = [];
List<RadiologyResModel> patientRadiologyList = []; List<RadiologyResModel> patientRadiologyList = [];
@ -117,6 +118,22 @@ class PatientsProvider with ChangeNotifier {
res['List_DoctorPatientVitalSign'].forEach((v) { res['List_DoctorPatientVitalSign'].forEach((v) {
patientVitalSignList.add(new VitalSignResModel.fromJson(v)); patientVitalSignList.add(new VitalSignResModel.fromJson(v));
}); });
if (patientVitalSignList.length > 0) {
List<VitalSignResModel> patientVitalSignOrderdSubListTemp = [];
patientVitalSignOrderdSubListTemp = patientVitalSignList;
patientVitalSignOrderdSubListTemp
.sort((VitalSignResModel a, VitalSignResModel b) {
return b.vitalSignDate.microsecondsSinceEpoch -
a.vitalSignDate.microsecondsSinceEpoch;
});
patientVitalSignOrderdSubList.clear();
for(int x =0; x< 20;x++ ){
patientVitalSignOrderdSubList.add(patientVitalSignOrderdSubListTemp[x]);
}
var asd="";
}
// patientVitalSignList = res['List_DoctorPatientVitalSign']; // patientVitalSignList = res['List_DoctorPatientVitalSign'];
} else { } else {
isError = true; isError = true;
@ -283,12 +300,12 @@ class PatientsProvider with ChangeNotifier {
} }
} }
getPatientProgressNote(patient) async {
getPatientProgressNote(patient) async{
setBasicData(); setBasicData();
try { try {
if (await Helpers.checkConnection()) { if (await Helpers.checkConnection()) {
final response =await AppClient.post(PATIENT_PROGRESS_NOTE_URL, body: json.encode(patient)); final response = await AppClient.post(PATIENT_PROGRESS_NOTE_URL,
body: json.encode(patient));
final int statusCode = response.statusCode; final int statusCode = response.statusCode;
isLoading = false; isLoading = false;
@ -316,12 +333,12 @@ class PatientsProvider with ChangeNotifier {
} }
} }
getPatientInsuranceApprovals(patient) async{ getPatientInsuranceApprovals(patient) async {
//setBasicData(); //setBasicData();
try { try {
if (await Helpers.checkConnection()) { if (await Helpers.checkConnection()) {
final response =await AppClient.post(PATIENT_INSURANCE_APPROVALS_URL, body: json.encode(patient)); final response = await AppClient.post(PATIENT_INSURANCE_APPROVALS_URL,
body: json.encode(patient));
final int statusCode = response.statusCode; final int statusCode = response.statusCode;
isLoading = false; isLoading = false;
@ -349,5 +366,4 @@ class PatientsProvider with ChangeNotifier {
handelCatchErrorCase(err); handelCatchErrorCase(err);
} }
} }
} }

@ -1,10 +1,9 @@
import 'package:charts_flutter/flutter.dart' as charts; import 'package:charts_flutter/flutter.dart' as charts;
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/chart_axis_model.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.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/providers/patients_provider.dart';
import 'package:doctor_app_flutter/widgets/patients/vital_sign_details_wideget.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/charts/app_line_chart.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:provider/provider.dart'; import 'package:provider/provider.dart';
@ -26,33 +25,12 @@ class BodyMeasurementsScreen extends StatelessWidget {
children: <Widget>[ children: <Widget>[
Column( Column(
children: <Widget>[ children: <Widget>[
// RoundedContainer( TimeSeriesChart(seriesList: seriesList, vitalList: vitalList),
// height: SizeConfig.realScreenHeight * 0.4, VitalSignDetailsWidget(
// child: Padding( vitalList: vitalList.reversed.toList(),
// padding: EdgeInsets.all(8.0), title1: 'Date',
// child: Container( title2: 'Kg',
// child: Center( viewKey: 'HeightCm',
// child: Text('sss'),
// ),
// ),
// ),
// ),
RoundedContainer(
height: SizeConfig.realScreenHeight * 0.4,
child: Center(
child: Expanded(
child: charts.TimeSeriesChart(seriesList,
animate: true,
behaviors: [
new charts.RangeAnnotation([
new charts.RangeAnnotationSegment(
vitalList[vitalList.length - 1].vitalSignDate,
vitalList[0].vitalSignDate,
charts.RangeAnnotationAxisType.domain),
]),
]),
),
),
), ),
], ],
), ),
@ -62,50 +40,21 @@ class BodyMeasurementsScreen extends StatelessWidget {
} }
generateData() { generateData() {
var myFakeMobileData3 = [
new LinearSales(0, 15),
new LinearSales(1, 75),
new LinearSales(2, 300),
new LinearSales(3, 225),
];
final myFakeDesktopData = [
new ChartAxis(10, 35),
new ChartAxis(1, 36),
new ChartAxis(5, 40),
new ChartAxis(17, 35),
new ChartAxis(4, 35),
new ChartAxis(5, 36),
new ChartAxis(15, 35),
new ChartAxis(7, 40),
new ChartAxis(11, 36),
new ChartAxis(2, 35),
new ChartAxis(10, 38),
new ChartAxis(1, 38),
];
// final data = [
// new TimeSeriesSales(new DateTime(2018, 11, 30), 45),
// new TimeSeriesSales(new DateTime(2017, 9, 26), 25),
// new TimeSeriesSales(new DateTime(2017, 10, 3), 100),
// new TimeSeriesSales(new DateTime(2015, 10, 10), 75),
// ];
final List<TimeSeriesSales> data = []; final List<TimeSeriesSales> data = [];
vitalList = patientsProv.patientVitalSignList; vitalList = patientsProv.patientVitalSignOrderdSubList;
if (vitalList.length > 0) { if (vitalList.length > 0) {
vitalList.sort((VitalSignResModel a, VitalSignResModel b) { vitalList.forEach(
return a.vitalSignDate.microsecondsSinceEpoch - (element) {
b.vitalSignDate.microsecondsSinceEpoch; data.add(
}); TimeSeriesSales(
new DateTime(element.vitalSignDate.year,
for (int x = vitalList.length - 1; x >= 0; x--) { element.vitalSignDate.month, element.vitalSignDate.day),
data.add(TimeSeriesSales( element.bodyMassIndex.toInt(),
new DateTime( ),
vitalList[x].vitalSignDate.year, );
vitalList[x].vitalSignDate.month, },
vitalList[x].vitalSignDate.day), );
vitalList[x].bodyMassIndex.toInt()));
}
} }
return [ return [
new charts.Series<TimeSeriesSales, DateTime>( new charts.Series<TimeSeriesSales, DateTime>(
@ -118,6 +67,7 @@ class BodyMeasurementsScreen extends StatelessWidget {
} }
} }
class LinearSales { class LinearSales {
final int year; final int year;
final int sales; final int sales;

@ -0,0 +1,51 @@
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/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;
class TimeSeriesChart extends StatelessWidget {
const TimeSeriesChart({
Key key,
@required this.seriesList,
@required this.vitalList,
}) : super(key: key);
final List<charts.Series> seriesList;
final List<VitalSignResModel> vitalList;
@override
Widget build(BuildContext context) {
return RoundedContainer(
height: SizeConfig.realScreenHeight * 0.4,
child: Center(
child: Expanded(
child: charts.TimeSeriesChart(
seriesList,
animate: true,
behaviors: [
new charts.RangeAnnotation(
[
new charts.RangeAnnotationSegment(
DateTime(
vitalList[vitalList.length - 1]
.vitalSignDate
.year,
vitalList[vitalList.length - 1]
.vitalSignDate
.month +
3,
vitalList[vitalList.length - 1]
.vitalSignDate
.day),
vitalList[0].vitalSignDate,
charts.RangeAnnotationAxisType.domain),
],
),
],
),
),
),
);
}
}
Loading…
Cancel
Save