complete refer patient

merge-requests/111/head
ibrahim albitar 6 years ago
parent 4a8b97b189
commit 480c64d25a

@ -1,3 +1,5 @@
import 'package:flutter/cupertino.dart';
class ReferToDoctorRequest { class ReferToDoctorRequest {
/* /*
@ -64,27 +66,27 @@ class ReferToDoctorRequest {
*/ */
ReferToDoctorRequest( ReferToDoctorRequest(
{this.projectID, {@required this.projectID,
this.admissionNo, @required this.admissionNo,
this.roomID = "ISO-6", @required this.roomID ,
this.referralClinic, @required this.referralClinic,
this.referralDoctor , @required this.referralDoctor ,
this.createdBy, @required this.createdBy,
this.editedBy , @required this.editedBy ,
this.patientID, @required this.patientID,
this.patientTypeID = 1, @required this.patientTypeID,
this.referringClinic, @required this.referringClinic,
this.referringDoctor, @required this.referringDoctor,
this.referringDoctorRemarks, @required this.referringDoctorRemarks,
this.priority , @required this.priority ,
this.frequency, @required this.frequency,
this.extension, @required this.extension,
this.languageID = 2, this.languageID = 2,
this.stamp = "2020-06-03T11:26:42.358Z", this.stamp = "2020-06-03T11:26:42.358Z",
this.iPAdress = "11.11.11.11", this.iPAdress = "11.11.11.11",
this.versionID = 1.2, this.versionID = 1.2,
this.channel = 9, this.channel = 9,
this.tokenID, @required this.tokenID,
this.sessionID = "JBXRsDl37L", this.sessionID = "JBXRsDl37L",
this.isLoginForDoctorApp = true, this.isLoginForDoctorApp = true,
this.patientOutSA = false}); this.patientOutSA = false});

@ -308,12 +308,10 @@ class PatientsProvider with ChangeNotifier {
isError = false; isError = false;
error = ""; error = "";
notifyListeners(); notifyListeners();
await BaseAppClient.post( await BaseAppClient.post('Patients.svc/REST/GetPrescriptionReport',
'Patients.svc/REST/GetPrescriptionReport',
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
response['ListPRM'].forEach((v) { response['ListPRM'].forEach((v) {
prescriptionReport prescriptionReport.add(PrescriptionReport.fromJson(v));
.add(PrescriptionReport.fromJson(v));
}); });
isError = false; isError = false;
isLoading = false; isLoading = false;
@ -626,38 +624,46 @@ class PatientsProvider with ChangeNotifier {
*@desc: referToDoctor *@desc: referToDoctor
*/ */
referToDoctor( referToDoctor(
int selectedDoctorID, {String selectedDoctorID,
int selectedClinicID, String selectedClinicID,
String selectedReferralFrequancyID,
int admissionNo, int admissionNo,
String extension, String extension,
String doctorRemark) async { String priority,
String frequency,
String referringDoctorRemarks,
int patientID,
int patientTypeID,
String roomID,
int projectID}) async {
setBasicData();
try {
if (await Helpers.checkConnection()) {
String token = await sharedPref.getString(TOKEN); String token = await sharedPref.getString(TOKEN);
int projectID = await sharedPref.getInt(PROJECT_ID);
Map profile = await sharedPref.getObj(DOCTOR_PROFILE); Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile = new DoctorProfileModel.fromJson(profile); DoctorProfileModel doctorProfile =
new DoctorProfileModel.fromJson(profile);
int doctorID = doctorProfile.doctorID; int doctorID = doctorProfile.doctorID;
int clinicId = doctorProfile.clinicID; int clinicId = doctorProfile.clinicID;
setBasicData(); _referToDoctorRequest = ReferToDoctorRequest(
try { projectID: projectID,
if (await Helpers.checkConnection()) { admissionNo: admissionNo,
// _referToDoctorRequest.tokenID = token; roomID: roomID,
// _referToDoctorRequest.admissionNo = admissionNo; referralClinic: selectedClinicID.toString(),
// _referToDoctorRequest.projectID = projectID; referralDoctor: selectedDoctorID.toString(),
// _referToDoctorRequest.tokenID = token; createdBy: doctorID,
// _referToDoctorRequest.extension = extension; editedBy: doctorID,
// _referToDoctorRequest.frequency = selectedReferralFrequancyID; patientID: patientID,
// _referToDoctorRequest.patientID = patientTypeID: patientTypeID,
// _referToDoctorRequest.priority = referringClinic: clinicId,
// _referToDoctorRequest.referralClinic = referringDoctor: doctorID,
// _referToDoctorRequest.referralDoctor = referringDoctorRemarks: referringDoctorRemarks,
// _referToDoctorRequest.referringDoctorRemarks = priority: priority,
// _referToDoctorRequest.roomID = frequency: frequency,
// _referToDoctorRequest.referringClinic = extension: extension,
// _referToDoctorRequest.referringDoctor = tokenID: token);
final response = await AppClient.post(PATIENT_REFER_TO_DOCTOR_URL, final response = await AppClient.post(PATIENT_REFER_TO_DOCTOR_URL,
body: json.encode(_referralFrequencyRequest)); body: json.encode(_referToDoctorRequest));
final int statusCode = response.statusCode; final int statusCode = response.statusCode;
isLoading = false; isLoading = false;
@ -668,7 +674,7 @@ class PatientsProvider with ChangeNotifier {
var res = json.decode(response.body); var res = json.decode(response.body);
print('$res'); print('$res');
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
patientProgressNoteList = res['List_GetPregressNoteForInPatient']; print('Done : /n $res');
} else { } else {
isError = true; isError = true;
error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; error = res['ErrorMessage'] ?? res['ErrorEndUserMessage'];
@ -684,8 +690,4 @@ class PatientsProvider with ChangeNotifier {
handelCatchErrorCase(err); handelCatchErrorCase(err);
} }
} }
} }

@ -1,6 +1,13 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.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:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../../config/size_config.dart'; import '../../../config/size_config.dart';
import '../../../providers/patients_provider.dart'; import '../../../providers/patients_provider.dart';
@ -29,13 +36,22 @@ class _ReferPatientState extends State<ReferPatientScreen> {
var doctorsList; var doctorsList;
var clinicsList; var clinicsList;
var referralFrequancyList; var referralFrequancyList;
final _controller = TextEditingController(); final _remarksController = TextEditingController();
final _extController = TextEditingController();
var _isInit = true; var _isInit = true;
var clinicId;
var doctorId;
var freqId;
String _selectedClinic; String _selectedClinic;
String _selectedDoctor; String _selectedDoctor;
String _selectedReferralFrequancy; String _selectedReferralFrequancy;
List<String> _priorities = ['Very Urgent', 'Urgent', 'Routine'];
int _activePriority = 2;
String _priorityTime;
@override @override
void didChangeDependencies() { void didChangeDependencies() {
super.didChangeDependencies(); super.didChangeDependencies();
@ -54,18 +70,28 @@ class _ReferPatientState extends State<ReferPatientScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return AppScaffold(
appBarTitle: "Progress Note", appBarTitle: "Refer Patient",
body: patientsProv.isLoading body: patientsProv.isLoading
? DrAppCircularProgressIndeicator() ? DrAppCircularProgressIndeicator()
: patientsProv.isError : patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error) ? DrAppEmbeddedError(error: patientsProv.error)
: clinicsList == null : clinicsList == null
? DrAppEmbeddedError( ? DrAppEmbeddedError(
error: 'You don\'t have any Progress Note') error: 'Something Wrong!')
: Column( : SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AppText(
"Clinic",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
RoundedContainer( RoundedContainer(
margin: 0, margin: 10,
showBorder: true, showBorder: true,
raduis: 30, raduis: 30,
borderColor: Color(0xff707070), borderColor: Color(0xff707070),
@ -113,7 +139,7 @@ class _ReferPatientState extends State<ReferPatientScreen> {
i['ClinicDescription'] i['ClinicDescription']
.toString() .toString()
.contains(_selectedClinic)); .contains(_selectedClinic));
var clinicId = clinicId =
clinicInfo['ClinicID'].toString(); clinicInfo['ClinicID'].toString();
patientsProv.getDoctorsList(clinicId); patientsProv.getDoctorsList(clinicId);
}) })
@ -136,8 +162,16 @@ class _ReferPatientState extends State<ReferPatientScreen> {
), ),
), ),
//--------------------------------------------------------------------// //--------------------------------------------------------------------//
AppText(
"Doctor",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
RoundedContainer( RoundedContainer(
margin: 0, margin: 10,
showBorder: true, showBorder: true,
raduis: 30, raduis: 30,
borderColor: Color(0xff707070), borderColor: Color(0xff707070),
@ -179,6 +213,13 @@ class _ReferPatientState extends State<ReferPatientScreen> {
onChanged: (newValue) => { onChanged: (newValue) => {
setState(() { setState(() {
_selectedDoctor = newValue; _selectedDoctor = newValue;
var doctorInfo =
doctorsList.singleWhere((i) =>
i['DoctorName']
.toString()
.contains(_selectedDoctor));
doctorId =
doctorInfo['DoctorID'].toString();
}) })
}, },
items: patientsProv items: patientsProv
@ -198,8 +239,49 @@ class _ReferPatientState extends State<ReferPatientScreen> {
), ),
), ),
), //-----------------------------/// ), //-----------------------------///
AppText(
"Ext#",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
Padding(
padding: const EdgeInsets.all(10.0),
child: AppTextFormField(
hintText: "Ext#",
controller: _extController,
inputFormatter: ONLY_NUMBERS,
textInputType: TextInputType.number,
onChanged: (value) => {},
),
),
AppText(
"Priority",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
priorityBar(context),
AppText(
"Replay Before: " + getPriority(),
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
AppText(
"Referral Frequency",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
RoundedContainer( RoundedContainer(
margin: 0, margin: 10,
showBorder: true, showBorder: true,
raduis: 30, raduis: 30,
borderColor: Color(0xff707070), borderColor: Color(0xff707070),
@ -241,6 +323,13 @@ class _ReferPatientState extends State<ReferPatientScreen> {
onChanged: (newValue) => { onChanged: (newValue) => {
setState(() { setState(() {
_selectedReferralFrequancy = newValue; _selectedReferralFrequancy = newValue;
var freqInfo =
referralFrequancyList.singleWhere((i) =>
i['Description']
.toString()
.contains(_selectedReferralFrequancy));
freqId =
freqInfo['ParameterCode'].toString();
}) })
}, },
items: patientsProv items: patientsProv
@ -260,8 +349,131 @@ class _ReferPatientState extends State<ReferPatientScreen> {
), ),
), ),
), ),
AppText(
"Clinical Details and Remarks",
fontSize: 18,
fontWeight: FontWeight.bold,
marginLeft: 15,
marginTop: 15,
),
Padding(
padding: const EdgeInsets.all(10.0),
child: AppTextFormField(
hintText: "Remarks",
controller: _remarksController,
inputFormatter: ONLY_LETTERS,
textInputType: TextInputType.text,
onChanged: (value) => {},
),
),
Padding(
padding: const EdgeInsets.all(20.0),
child: AppButton(title: "Send", color: Color(PRIMARY_COLOR),onPressed: ()=>{
referToDoctor()
},),
)
], ],
), ),
),
);
}
Widget priorityBar(BuildContext _context) {
return Container(
height: MediaQuery.of(context).size.height * 0.065,
width: SizeConfig.screenWidth * 0.9,
margin: EdgeInsets.only(top: 10),
decoration: BoxDecoration(
color: Color(0Xffffffff), borderRadius: BorderRadius.circular(20)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
children: _priorities.map((item) {
bool _isActive = _priorities[_activePriority] == item ? true : false;
return Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
InkWell(
child: Center(
child: Container(
height: 40,
width: 90,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(50),
color: _isActive ? Hexcolor("#B8382B") : Colors.white,
),
child: Center(
child: Text(
item,
style: TextStyle(
fontSize: 12,
color: _isActive
? Colors.white
: Colors.black, //Colors.black,
// backgroundColor:_isActive
// ? Hexcolor("#B8382B")
// : Colors.white,//sideColor,
fontWeight: FontWeight.bold,
),
),
)),
),
onTap: () {
print(_priorities.indexOf(item));
setState(() {
_activePriority = _priorities.indexOf(item);
});
}),
_isActive
? Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.white),
alignment: Alignment.center,
height: 3,
width: 90,
)
: Container()
]);
}).toList(),
),
);
}
String getPriority() {
DateTime date = DateTime.now();
switch (_activePriority) {
case 0:
date = date.add(new Duration(hours: 3));
break;
case 1:
date = date.add(new Duration(hours: 6));
break;
case 2:
date = date.add(new Duration(days: 1));
break;
}
var format = DateFormat('yyyy/mm/dd HH:mm a');
var time = format.format(date);
print(time);
return time;
}
void referToDoctor(){
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient'];
patientsProv.referToDoctor(
extension: _extController.value.text,
admissionNo:int.parse( patient.admissionNo),
referringDoctorRemarks: _remarksController.value.text,
frequency: freqId,
patientID: patient.patientId,
patientTypeID: patient.patientType,
priority: (_activePriority + 1).toString(),
roomID: patient.roomId,
selectedClinicID: clinicId.toString(),
selectedDoctorID: doctorId.toString(),
projectID: patient.projectId
); );
} }
} }

Loading…
Cancel
Save