update progress_note

merge-requests/537/head
Elham Rababah 5 years ago
parent 0909879ccf
commit f2011301c6

@ -251,6 +251,7 @@ const SEND_PRESCRIPTION_EMAIL =
const GET_PRESCRIPTION_REPORT_ENH = const GET_PRESCRIPTION_REPORT_ENH =
'Services/Patients.svc/REST/GetPrescriptionReport_enh'; 'Services/Patients.svc/REST/GetPrescriptionReport_enh';
const GET_PHARMACY_LIST = "Services/Patients.svc/REST/GetPharmcyList"; const GET_PHARMACY_LIST = "Services/Patients.svc/REST/GetPharmcyList";
const UPDATE_PROGRESS_NOTE_FOR_INPATIENT = "Services/DoctorApplication.svc/REST/UpdateProgressNoteForInPatient";
var selectedPatientType = 1; var selectedPatientType = 1;

@ -0,0 +1,92 @@
class NoteModel {
String setupID;
int projectID;
int patientID;
int patientType;
String admissionNo;
int lineItemNo;
int visitType;
String notes;
String assessmentDate;
String visitTime;
int status;
String nursingRemarks;
String createdOn;
String editedOn;
int createdBy;
int admissionClinicID;
String admissionClinicName;
Null doctorClinicName;
String doctorName;
String visitTypeDesc;
NoteModel(
{this.setupID,
this.projectID,
this.patientID,
this.patientType,
this.admissionNo,
this.lineItemNo,
this.visitType,
this.notes,
this.assessmentDate,
this.visitTime,
this.status,
this.nursingRemarks,
this.createdOn,
this.editedOn,
this.createdBy,
this.admissionClinicID,
this.admissionClinicName,
this.doctorClinicName,
this.doctorName,
this.visitTypeDesc});
NoteModel.fromJson(Map<String, dynamic> json) {
setupID = json['SetupID'];
projectID = json['ProjectID'];
patientID = json['PatientID'];
patientType = json['PatientType'];
admissionNo = json['AdmissionNo'];
lineItemNo = json['LineItemNo'];
visitType = json['VisitType'];
notes = json['Notes'];
assessmentDate = json['AssessmentDate'];
visitTime = json['VisitTime'];
status = json['Status'];
nursingRemarks = json['NursingRemarks'];
createdOn = json['CreatedOn'];
editedOn = json['EditedOn'];
createdBy = json['CreatedBy'];
admissionClinicID = json['AdmissionClinicID'];
admissionClinicName = json['AdmissionClinicName'];
doctorClinicName = json['DoctorClinicName'];
doctorName = json['DoctorName'];
visitTypeDesc = json['VisitTypeDesc'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['SetupID'] = this.setupID;
data['ProjectID'] = this.projectID;
data['PatientID'] = this.patientID;
data['PatientType'] = this.patientType;
data['AdmissionNo'] = this.admissionNo;
data['LineItemNo'] = this.lineItemNo;
data['VisitType'] = this.visitType;
data['Notes'] = this.notes;
data['AssessmentDate'] = this.assessmentDate;
data['VisitTime'] = this.visitTime;
data['Status'] = this.status;
data['NursingRemarks'] = this.nursingRemarks;
data['CreatedOn'] = this.createdOn;
data['EditedOn'] = this.editedOn;
data['CreatedBy'] = this.createdBy;
data['AdmissionClinicID'] = this.admissionClinicID;
data['AdmissionClinicName'] = this.admissionClinicName;
data['DoctorClinicName'] = this.doctorClinicName;
data['DoctorName'] = this.doctorName;
data['VisitTypeDesc'] = this.visitTypeDesc;
return data;
}
}

@ -0,0 +1,80 @@
class UpdateNoteReqModel {
int projectID;
int createdBy;
int admissionNo;
int lineItemNo;
String notes;
bool verifiedNote;
bool cancelledNote;
int languageID;
String stamp;
String iPAdress;
double versionID;
int channel;
String tokenID;
String sessionID;
bool isLoginForDoctorApp;
bool patientOutSA;
int patientTypeID;
UpdateNoteReqModel(
{this.projectID,
this.createdBy,
this.admissionNo,
this.lineItemNo,
this.notes,
this.verifiedNote,
this.cancelledNote,
this.languageID,
this.stamp,
this.iPAdress,
this.versionID,
this.channel,
this.tokenID,
this.sessionID,
this.isLoginForDoctorApp,
this.patientOutSA,
this.patientTypeID});
UpdateNoteReqModel.fromJson(Map<String, dynamic> json) {
projectID = json['ProjectID'];
createdBy = json['CreatedBy'];
admissionNo = json['AdmissionNo'];
lineItemNo = json['LineItemNo'];
notes = json['Notes'];
verifiedNote = json['VerifiedNote'];
cancelledNote = json['CancelledNote'];
languageID = json['LanguageID'];
stamp = json['stamp'];
iPAdress = json['IPAdress'];
versionID = json['VersionID'];
channel = json['Channel'];
tokenID = json['TokenID'];
sessionID = json['SessionID'];
isLoginForDoctorApp = json['IsLoginForDoctorApp'];
patientOutSA = json['PatientOutSA'];
patientTypeID = json['PatientTypeID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ProjectID'] = this.projectID;
data['CreatedBy'] = this.createdBy;
data['AdmissionNo'] = this.admissionNo;
data['LineItemNo'] = this.lineItemNo;
data['Notes'] = this.notes;
data['VerifiedNote'] = this.verifiedNote;
data['CancelledNote'] = this.cancelledNote;
data['LanguageID'] = this.languageID;
data['stamp'] = this.stamp;
data['IPAdress'] = this.iPAdress;
data['VersionID'] = this.versionID;
data['Channel'] = this.channel;
data['TokenID'] = this.tokenID;
data['SessionID'] = this.sessionID;
data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp;
data['PatientOutSA'] = this.patientOutSA;
data['PatientTypeID'] = this.patientTypeID;
return data;
}
}

@ -1,6 +1,8 @@
import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/core/model/note/note_model.dart';
import 'package:doctor_app_flutter/core/model/note/update_note_model.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart'; import 'package:doctor_app_flutter/core/service/base/base_service.dart';
import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/doctor/request_schedule.dart'; import 'package:doctor_app_flutter/models/doctor/request_schedule.dart';
@ -51,9 +53,9 @@ class PatientService extends BaseService {
List<LabResult> get labResultList => _labResultList; List<LabResult> get labResultList => _labResultList;
// TODO: replace var with model // TODO: replace var with model
var _patientProgressNoteList = []; List<NoteModel> _patientProgressNoteList = [];
get patientProgressNoteList => _patientProgressNoteList; List<NoteModel> get patientProgressNoteList => _patientProgressNoteList;
// TODO: replace var with model // TODO: replace var with model
var _insuranceApporvalsList = []; var _insuranceApporvalsList = [];
@ -277,7 +279,10 @@ class PatientService extends BaseService {
PATIENT_PROGRESS_NOTE_URL, PATIENT_PROGRESS_NOTE_URL,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
_patientProgressNoteList = []; _patientProgressNoteList = [];
_patientProgressNoteList = response['List_GetPregressNoteForInPatient']; // _patientProgressNoteList =
response['List_GetPregressNoteForInPatient'].forEach((v) {
_patientProgressNoteList.add(new NoteModel.fromJson(v));
});
}, },
onFailure: (String error, int statusCode) { onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
@ -287,6 +292,23 @@ class PatientService extends BaseService {
); );
} }
Future updatePatientProgressNote(UpdateNoteReqModel req) async {
hasError = false;
await baseAppClient.post(
PATIENT_PROGRESS_NOTE_URL,
onSuccess: (dynamic response, int statusCode) {
print("ok");
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: req.toJson(),
);
}
Future getClinicsList() async { Future getClinicsList() async {
hasError = false; hasError = false;

@ -1,4 +1,6 @@
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/note/note_model.dart';
import 'package:doctor_app_flutter/core/model/note/update_note_model.dart';
import 'package:doctor_app_flutter/core/service/patient_service.dart'; import 'package:doctor_app_flutter/core/service/patient_service.dart';
import 'package:doctor_app_flutter/models/patient/lab_orders/lab_orders_res_model.dart'; import 'package:doctor_app_flutter/models/patient/lab_orders/lab_orders_res_model.dart';
import 'package:doctor_app_flutter/models/patient/lab_result/lab_result.dart'; import 'package:doctor_app_flutter/models/patient/lab_result/lab_result.dart';
@ -39,7 +41,7 @@ class PatientViewModel extends BaseViewModel {
get insuranceApporvalsList => _patientService.insuranceApporvalsList; get insuranceApporvalsList => _patientService.insuranceApporvalsList;
get patientProgressNoteList => _patientService.patientProgressNoteList; List<NoteModel> get patientProgressNoteList => _patientService.patientProgressNoteList;
List<dynamic> get clinicsList => _patientService.clinicsList; List<dynamic> get clinicsList => _patientService.clinicsList;
@ -146,6 +148,16 @@ class PatientViewModel extends BaseViewModel {
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future updatePatientProgressNote(UpdateNoteReqModel req) async {
setState(ViewState.BusyLocal);
await _patientService.getPatientProgressNote(req);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
Future getClinicsList() async { Future getClinicsList() async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _patientService.getClinicsList(); await _patientService.getClinicsList();

@ -1,3 +1,4 @@
import 'package:doctor_app_flutter/core/model/note/note_model.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/models/patient/progress_note_request.dart'; import 'package:doctor_app_flutter/models/patient/progress_note_request.dart';
@ -31,7 +32,7 @@ class ProgressNoteScreen extends StatefulWidget {
} }
class _ProgressNoteState extends State<ProgressNoteScreen> { class _ProgressNoteState extends State<ProgressNoteScreen> {
var notesList; List<NoteModel> notesList;
var filteredNotesList; var filteredNotesList;
final _controller = TextEditingController(); final _controller = TextEditingController();
var _isInit = true; var _isInit = true;
@ -80,8 +81,10 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => AddNoteOrder( builder: (context) => UpdateNoteOrder(
patientModel: model,
patient: patient,
visitType: widget.visitType,
)), )),
); );
},label: 'Add a New Order',), },label: 'Add a New Order',),
@ -128,7 +131,7 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
), ),
Expanded( Expanded(
child: AppText( child: AppText(
notesList[index]["DoctorName"]??'',fontWeight: FontWeight.w600), notesList[index].doctorName??'',fontWeight: FontWeight.w600),
), ),
], ],
), ),
@ -137,11 +140,11 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
children: [ children: [
AppText( AppText(
notesList[index] notesList[index]
["CreatedOn"] != .createdOn !=
null null
? DateUtils ? DateUtils
.getDayMonthYearDateFormatted( .getDayMonthYearDateFormatted(
DateUtils.getDateTimeFromServerFormat(notesList[index]["CreatedOn"] )) DateUtils.getDateTimeFromServerFormat(notesList[index].createdOn))
: DateUtils : DateUtils
.getDayMonthYearDateFormatted( .getDayMonthYearDateFormatted(
DateTime.now()), DateTime.now()),
@ -150,11 +153,11 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
), ),
AppText( AppText(
notesList[index] notesList[index]
["CreatedOn"] != .createdOn !=
null null
? DateUtils ? DateUtils
.getHour( .getHour(
DateUtils.getDateTimeFromServerFormat(notesList[index]["CreatedOn"] )) DateUtils.getDateTimeFromServerFormat(notesList[index].createdOn ))
: DateUtils : DateUtils
.getHour( .getHour(
DateTime.now()), DateTime.now()),
@ -174,12 +177,24 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
children: [ children: [
Expanded( Expanded(
child: AppText( child: AppText(
notesList[index]["Notes"], notesList[index].notes,
fontSize: 10, fontSize: 10,
), ),
), ),
InkWell( InkWell(
onTap: () {}, onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => UpdateNoteOrder(
note: notesList[index],
patientModel: model,
patient: patient,
visitType: widget.visitType,
)),
);
},
child: Icon( child: Icon(
DoctorApp.edit, DoctorApp.edit,
size: 18, size: 18,
@ -195,57 +210,6 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
), ),
], ],
); );
// RoundedContainer(
// backgroundColor: Colors.white,
// child: Column(
// crossAxisAlignment:
// CrossAxisAlignment.start,
// children: <Widget>[
// ExpansionTile(
// title: Container(
// child: Column(
// crossAxisAlignment:
// CrossAxisAlignment.start,
// children: <Widget>[
// AppText(
// notesList[index]
// ["DoctorName"],
// marginTop: 10,
// marginLeft: 10,
// marginBottom: 5,
// fontWeight: FontWeight.bold,
// ),
// AppText(
// convertDateFormat(
// notesList[index]
// ["AssessmentDate"]),
// marginLeft: 10,
// color: Colors.grey[600],
// ),
// ],
// ),
// ),
// children: <Widget>[
// Divider(
// color: Colors.black,
// height: 20,
// thickness: 1,
// indent: 0,
// endIndent: 0,
// ),
// Row(mainAxisAlignment: MainAxisAlignment.start,
// children: [
// AppText(
// notesList[index]["Notes"],
// margin: 5,
// ),
// ],
// )
// ],
// ),
// ],
// ));
}), }),
), ),
), ),
@ -273,24 +237,24 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
)); ));
} }
searchData(String str, PatientViewModel model) { // searchData(String str, PatientViewModel model) {
var strExist = str.length > 0 ? true : false; // var strExist = str.length > 0 ? true : false;
//
if (strExist) { // if (strExist) {
filteredNotesList = null; // filteredNotesList = null;
filteredNotesList = model.patientProgressNoteList // filteredNotesList = model.patientProgressNoteList
.where((note) => // .where((note) =>
note["DoctorName"].toString().contains(str.toUpperCase())) // note["DoctorName"].toString().contains(str.toUpperCase()))
.toList(); // .toList();
setState(() { // setState(() {
notesList = filteredNotesList; // notesList = filteredNotesList;
}); // });
} else { // } else {
setState(() { // setState(() {
notesList = model.patientProgressNoteList; // notesList = model.patientProgressNoteList;
}); // });
} // }
} // }
convertDateFormat(String str) { convertDateFormat(String str) {
const start = "/Date("; const start = "/Date(";

@ -1,34 +1,44 @@
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/model/medical_file_model.dart'; import 'package:doctor_app_flutter/core/model/medical_file_model.dart';
import 'package:doctor_app_flutter/core/model/note/note_model.dart';
import 'package:doctor_app_flutter/core/model/note/update_note_model.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart'; import 'package:doctor_app_flutter/core/viewModel/procedure_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/models/patient/progress_note_request.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/screens/patients/profile/soap_update/shared_soap_widgets/bottom_sheet_title.dart'; import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/bottom_sheet_title.dart';
import 'package:doctor_app_flutter/screens/procedures/entity_list_checkbox_search_widget.dart'; import 'package:doctor_app_flutter/screens/procedures/entity_list_checkbox_search_widget.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/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.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/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class AddNoteOrder extends StatefulWidget { class UpdateNoteOrder extends StatefulWidget {
// final ProcedureViewModel model; final NoteModel note;
// final PatiantInformtion patient; final PatientViewModel patientModel;
// final PatiantInformtion patient;
// const AddNoteOrder({Key key, this.model, this.patient}) final int visitType;
// : super(key: key);
const UpdateNoteOrder(
{Key key, this.note, this.patientModel, this.patient, this.visitType})
: super(key: key);
@override @override
_AddNoteOrderState createState() => _UpdateNoteOrderState createState() =>
_AddNoteOrderState(); _UpdateNoteOrderState();
} }
class _AddNoteOrderState extends State<AddNoteOrder> { class _UpdateNoteOrderState extends State<UpdateNoteOrder> {
int selectedType; int selectedType;
ProcedureViewModel model;
PatiantInformtion patient;
TextEditingController progressNoteController = TextEditingController(); TextEditingController progressNoteController = TextEditingController();
@ -40,16 +50,22 @@ class _AddNoteOrderState extends State<AddNoteOrder> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<ProcedureViewModel>( if (widget.note != null) {
// onModelReady: (model) => model.getProcedureCategory( progressNoteController.text = widget.note.notes;
// categoryName: "Radiology", categoryID: "03"), }
builder: (BuildContext context, ProcedureViewModel model, Widget child) => return BaseView<PatientViewModel>(
builder: (BuildContext context, PatientViewModel model, Widget child) =>
AppScaffold( AppScaffold(
isShowAppBar: false, isShowAppBar: false,
backgroundColor: Theme.of(context).scaffoldBackgroundColor, backgroundColor: Theme
.of(context)
.scaffoldBackgroundColor,
body: SingleChildScrollView( body: SingleChildScrollView(
child: Container( child: Container(
height: MediaQuery.of(context).size.height * 1.0, height: MediaQuery
.of(context)
.size
.height * 1.0,
child: Padding( child: Padding(
padding: EdgeInsets.all(0.0), padding: EdgeInsets.all(0.0),
child: Column( child: Column(
@ -92,9 +108,34 @@ class _AddNoteOrderState extends State<AddNoteOrder> {
AppButton( AppButton(
title: 'Add Progress Note', title: 'Add Progress Note',
color: Color(0xff359846), color: Color(0xff359846),
disabled: progressNoteController.text.isEmpty,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
onPressed: () { onPressed: () async {
UpdateNoteReqModel reqModel = UpdateNoteReqModel(
admissionNo: int.parse(widget.patient.admissionNo),
cancelledNote: false,
lineItemNo: 30,
notes
:progressNoteController.text, verifiedNote: false);
GifLoaderDialogUtils.showMyDialog(context);
await model.updatePatientProgressNote(reqModel);
if (model.state == ViewState.ErrorLocal) {
Helpers.showErrorToast("Error");
} else {
ProgressNoteRequest progressNoteRequest = ProgressNoteRequest(
visitType: widget.visitType,
// if equal 5 then this will return progress note
admissionNo: int.parse(widget.patient.admissionNo),
projectID: widget.patient.projectId,
patientTypeID: widget.patient.patientType,
languageID: 2);
await widget.patientModel.getPatientProgressNote(
progressNoteRequest);
}
GifLoaderDialogUtils.hideDialog(context);
Navigator.of(context).pop();
}, },
), ),
], ],

Loading…
Cancel
Save