add new screens

merge-requests/70/head
unknown 6 years ago
parent 1ee2655e63
commit 7d1cfb7b4e

@ -31,6 +31,7 @@ class PatientsProvider with ChangeNotifier {
List<PrescriptionResModel> patientPrescriptionsList = [];
List<RadiologyResModel> patientRadiologyList = [];
var patientProgressNoteList = [];
var insuranceApporvalsList = [];
Client client =
HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]);
@ -284,8 +285,7 @@ class PatientsProvider with ChangeNotifier {
getPatientProgressNote(patient) async{
//setBasicData();
setBasicData();
try {
if (await Helpers.checkConnection()) {
final response =await AppClient.post(PATIENT_PROGRESS_NOTE_URL, body: json.encode(patient));
@ -333,9 +333,7 @@ class PatientsProvider with ChangeNotifier {
print('$res');
if (res['MessageStatus'] == 1) {
//patientRadiologyList = [];
res['List_ApprovalMain_InPatient'].forEach((v) {
//patientRadiologyList.add(new RadiologyResModel.fromJson(v));
});
insuranceApporvalsList = res['List_ApprovalMain_InPatient'];
} else {
isError = true;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage'];

@ -1,3 +1,6 @@
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';
@ -50,6 +53,8 @@ const String LAB_ORDERS = 'patients/lab_orders';
const String PRESCRIPTIONS = 'patients/prescription';
const String RADIOLOGY = 'patients/radiology';
const String PROGRESS_NOTE = 'patients/progress-note';
const String PATIENT_ORDERS = 'patients/patient_orders';
const String PATIENT_INSURANCE_APPROVALS = 'patients/patient_insurance_approvals';
const String VITAL_SIGN_DETAILS = 'patients/vital-sign-details';
const String BODY_MEASUREMENTS = 'patients/body-measurements';
@ -79,6 +84,8 @@ var routes = {
PRESCRIPTIONS: (_) => PrescriptionScreen(),
RADIOLOGY: (_) => RadiologyScreen(),
PROGRESS_NOTE: (_) => ProgressNoteScreen(),
PATIENT_ORDERS: (_) => PatientsOrdersScreen(),
PATIENT_INSURANCE_APPROVALS: (_) => InsuranceApprovalsScreen(),
VITAL_SIGN_DETAILS: (_) => VitalSignDetailsScreen(),
BODY_MEASUREMENTS: (_) => BodyMeasurementsScreen()
};

@ -165,6 +165,7 @@ class _PatientSearchScreenState extends State<PatientSearchScreen> {
onChanged: (String newValue) => {
setState(() {
_selectedType = newValue;
selectedPatientType = int.parse(_selectedType);
})
},
items: PATIENT_TYPE.map((item) {

@ -0,0 +1,151 @@
import 'package:doctor_app_flutter/models/patient/insurance_aprovals_request.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';
import 'package:provider/provider.dart';
import '../../../config/shared_pref_kay.dart';
import '../../../config/size_config.dart';
import '../../../models/patient/patiant_info_model.dart';
import '../../../providers/patients_provider.dart';
import '../../../util/dr_app_shared_pref.dart';
import '../../../widgets/shared/app_scaffold_widget.dart';
import '../../../widgets/shared/app_texts_widget.dart';
import '../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
/*
*@author: ibrahim albitar
*@Date:21/5/2020
*@param:
*@return:
*@desc:
*/
class InsuranceApprovalsScreen extends StatefulWidget {
@override
_InsuranceApprovalsState createState() => _InsuranceApprovalsState();
}
class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
PatientsProvider patientsProv;
var _isInit = true;
/*
*@author: ibrahim al bitar
*@Date:21/5/2020
*@param:
*@return:
*@desc:
*/
getInsuranceApprovalsList(context) async {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN);
String type = await sharedPref.getString(SLECTED_PATIENT_TYPE);
print(type);
InsuranceAprovalsRequest insuranceApprovalsRequest = InsuranceAprovalsRequest(
patientID: patient.patientId,
projectID: patient.projectId,
tokenID: token,
patientTypeID: patient.patientType,
languageID: 2);
patientsProv.getPatientInsuranceApprovals(insuranceApprovalsRequest.toJson());
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProv = Provider.of<PatientsProvider>(context);
getInsuranceApprovalsList(context);
}
_isInit = false;
}
@override
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: "Insurance Approvals",
showAppDrawer: false,
showBottomBar: false,
body: patientsProv.isLoading
? DrAppCircularProgressIndeicator()
: patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.insuranceApporvalsList.length == 0
? DrAppEmbeddedError(
error: 'You don\'t have any Insurance Approvals')
: Container(
margin: EdgeInsets.fromLTRB(
SizeConfig.realScreenWidth * 0.05,
0,
SizeConfig.realScreenWidth * 0.05,
0),
child: ListView.builder(
itemCount:
patientsProv.insuranceApporvalsList.length,
itemBuilder: (BuildContext ctxt, int index) {
return RoundedContainer(
backgroundColor: Colors.yellow[200],
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
patientsProv
.insuranceApporvalsList[index]
["ClinicName"]+"-"+patientsProv
.insuranceApporvalsList[index]
["DoctorName"],
marginTop: 10,
marginLeft: 10,
marginBottom: 5,
fontWeight: FontWeight.bold,
),
AppText(
convertDateFormat(patientsProv
.insuranceApporvalsList[index]
["ApprovalDate"]),
marginLeft: 10,
color: Colors.grey[600],
),
Divider(
color: Colors.black,
height: 20,
thickness: 1,
indent: 0,
endIndent: 0,
),
AppText(
patientsProv
.insuranceApporvalsList[index]
["CompanyName"],
margin: 10,
)
],
));
}),
),
);
}
convertDateFormat(String str) {
const start = "/Date(";
const end = "+0300)";
final startIndex = str.indexOf(start);
final endIndex = str.indexOf(end, startIndex + start.length);
var date = new DateTime.fromMillisecondsSinceEpoch(
int.parse(str.substring(startIndex + start.length, endIndex)));
String newDate = date.year.toString() +
"-" +
date.month.toString().padLeft(2, '0') +
"-" +
date.day.toString().padLeft(2, '0');
return newDate.toString();
}
}

@ -0,0 +1,150 @@
import 'package:doctor_app_flutter/models/patient/progress_note_request.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';
import 'package:provider/provider.dart';
import '../../../config/shared_pref_kay.dart';
import '../../../config/size_config.dart';
import '../../../models/patient/patiant_info_model.dart';
import '../../../providers/patients_provider.dart';
import '../../../util/dr_app_shared_pref.dart';
import '../../../widgets/shared/app_scaffold_widget.dart';
import '../../../widgets/shared/app_texts_widget.dart';
import '../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
/*
*@author: ibrahim albitar
*@Date:21/5/2020
*@param:
*@return:
*@desc:
*/
class PatientsOrdersScreen extends StatefulWidget {
@override
_PatientsOrdersState createState() => _PatientsOrdersState();
}
class _PatientsOrdersState extends State<PatientsOrdersScreen> {
PatientsProvider patientsProv;
var _isInit = true;
/*
*@author: ibrahim al bitar
*@Date:21/5/2020
*@param:
*@return:
*@desc:
*/
getProgressNoteList(context) async {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN);
String type = await sharedPref.getString(SLECTED_PATIENT_TYPE);
print(type);
ProgressNoteRequest progressNoteRequest = ProgressNoteRequest(
visitType: 3, // if equal 3 then this will return orders
admissionNo: int.parse(patient.admissionNo),
projectID: patient.projectId,
tokenID: token,
patientTypeID: patient.patientType,
languageID: 2);
patientsProv.getPatientProgressNote(progressNoteRequest.toJson());
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProv = Provider.of<PatientsProvider>(context);
getProgressNoteList(context);
}
_isInit = false;
}
@override
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: "Orders",
showAppDrawer: false,
showBottomBar: false,
body: patientsProv.isLoading
? DrAppCircularProgressIndeicator()
: patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.patientProgressNoteList.length == 0
? DrAppEmbeddedError(
error: 'You don\'t have any Orders')
: Container(
margin: EdgeInsets.fromLTRB(
SizeConfig.realScreenWidth * 0.05,
0,
SizeConfig.realScreenWidth * 0.05,
0),
child: ListView.builder(
itemCount:
patientsProv.patientProgressNoteList.length,
itemBuilder: (BuildContext ctxt, int index) {
return RoundedContainer(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
patientsProv
.patientProgressNoteList[index]
["DoctorName"],
marginTop: 10,
marginLeft: 10,
marginBottom: 5,
fontWeight: FontWeight.bold,
),
AppText(
convertDateFormat(patientsProv
.patientProgressNoteList[index]
["AssessmentDate"]),
marginLeft: 10,
color: Colors.grey[600],
),
Divider(
color: Colors.black,
height: 20,
thickness: 1,
indent: 0,
endIndent: 0,
),
AppText(
patientsProv
.patientProgressNoteList[index]
["Notes"],
margin: 10,
)
],
));
}),
),
);
}
convertDateFormat(String str) {
const start = "/Date(";
const end = "+0300)";
final startIndex = str.indexOf(start);
final endIndex = str.indexOf(end, startIndex + start.length);
var date = new DateTime.fromMillisecondsSinceEpoch(
int.parse(str.substring(startIndex + start.length, endIndex)));
String newDate = date.year.toString() +
"-" +
date.month.toString().padLeft(2, '0') +
"-" +
date.day.toString().padLeft(2, '0');
return newDate.toString();
}
}

@ -1,6 +1,6 @@
import 'package:doctor_app_flutter/models/patient/progress_note_request.dart';
import 'package:doctor_app_flutter/routes.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';
import 'package:provider/provider.dart';
@ -11,9 +11,7 @@ import '../../../providers/patients_provider.dart';
import '../../../util/dr_app_shared_pref.dart';
import '../../../widgets/shared/app_scaffold_widget.dart';
import '../../../widgets/shared/app_texts_widget.dart';
import '../../../widgets/shared/card_with_bg_widget.dart';
import '../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
import '../../../widgets/shared/profile_image_widget.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
@ -46,10 +44,10 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN);
String type = await sharedPref.getString(SLECTED_PATIENT_TYPE);
print(type);
ProgressNoteRequest progressNoteRequest = ProgressNoteRequest(
visitType: 5,
visitType: 5, // if equal 5 then this will return progress note
admissionNo: int.parse(patient.admissionNo),
projectID: patient.projectId,
tokenID: token,
@ -78,8 +76,9 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
? DrAppCircularProgressIndeicator()
: patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.patientVitalSignList.length == 0
? DrAppEmbeddedError(error: 'You don\'t have any Progress Note')
: patientsProv.patientProgressNoteList.length == 0
? DrAppEmbeddedError(
error: 'You don\'t have any Progress Note')
: Container(
margin: EdgeInsets.fromLTRB(
SizeConfig.realScreenWidth * 0.05,
@ -87,11 +86,65 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
SizeConfig.realScreenWidth * 0.05,
0),
child: ListView.builder(
itemCount: patientsProv.patientProgressNoteList.length,
itemCount:
patientsProv.patientProgressNoteList.length,
itemBuilder: (BuildContext ctxt, int index) {
return AppText(patientsProv.patientProgressNoteList[index]["DoctorName"].toString());
return RoundedContainer(
backgroundColor: Colors.yellow[200],
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
patientsProv
.patientProgressNoteList[index]
["DoctorName"],
marginTop: 10,
marginLeft: 10,
marginBottom: 5,
fontWeight: FontWeight.bold,
),
AppText(
convertDateFormat(patientsProv
.patientProgressNoteList[index]
["AssessmentDate"]),
marginLeft: 10,
color: Colors.grey[600],
),
Divider(
color: Colors.black,
height: 20,
thickness: 1,
indent: 0,
endIndent: 0,
),
AppText(
patientsProv
.patientProgressNoteList[index]
["Notes"],
margin: 10,
)
],
));
}),
),
);
}
convertDateFormat(String str) {
const start = "/Date(";
const end = "+0300)";
final startIndex = str.indexOf(start);
final endIndex = str.indexOf(end, startIndex + start.length);
var date = new DateTime.fromMillisecondsSinceEpoch(
int.parse(str.substring(startIndex + start.length, endIndex)));
String newDate = date.year.toString() +
"-" +
date.month.toString().padLeft(2, '0') +
"-" +
date.day.toString().padLeft(2, '0');
return newDate.toString();
}
}

@ -1,3 +1,4 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/routes.dart';
@ -94,49 +95,60 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
InkWell(
onTap: () {
navigator(context, PROGRESS_NOTE);
},
child: CircleAvatarWidget(
des: 'Progress Notes',
url: url + 'heartbeat.png',
width: (contWidth) / 4.5,
height: (contWidth) / 4.5,
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,
),
),
),
InkWell(
onTap: () {
navigator(context, PROGRESS_NOTE);
},
child: CircleAvatarWidget(
des: 'Insurance Aprovals',
url: url + 'lab.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,
),
),
),
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 && 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,
),
),
),
InkWell(
//RADIOLOGY
onTap: () {
navigator(context, RADIOLOGY);
},
child: CircleAvatarWidget(
des: 'Orders',
url: url + 'radiology-1.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,
),
),
),
],

Loading…
Cancel
Save