|
|
|
|
@ -1,28 +1,17 @@
|
|
|
|
|
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/config/size_config.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/core/enum/view_state.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/core/model/SOAP/progress_note/GetGetProgressNoteResModel.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/core/model/SOAP/progress_note/get_progress_note_req_model.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/core/model/SOAP/progress_note/post_progress_note_request_model.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/core/model/doctor/doctor_profile_model.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/core/model/SOAP/progress_note/progress_note.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/screens/base/base_view.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/screens/patients/profile/soap_update/plan/plan_call_back.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/SOAP_step_header.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/expandable_SOAP_widget.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/objective/list_of_examination.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/plan/widget/add_progress_note.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/plan/widget/empty_progress_note.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/plan/widget/list_of_notes.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/screens/patients/profile/soap_update_vida_plus/subjective/chief_complaint/widgets/add_soap_item.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/utils/date-utils.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/utils/utils.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/text_fields/app-textfield-custom.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
|
|
|
|
@ -50,14 +39,7 @@ class UpdatePlanPageVidaPlus extends StatefulWidget {
|
|
|
|
|
|
|
|
|
|
class _UpdatePlanPageVidaPlusState extends State<UpdatePlanPageVidaPlus>
|
|
|
|
|
implements PlanCallBack {
|
|
|
|
|
bool isAddProgress = true;
|
|
|
|
|
bool isProgressExpanded = true;
|
|
|
|
|
List<GetPatientProgressNoteResModel> listOfProgressNote = [GetPatientProgressNoteResModel()];
|
|
|
|
|
GetPatientProgressNoteResModel patientProgressNote =
|
|
|
|
|
GetPatientProgressNoteResModel();
|
|
|
|
|
|
|
|
|
|
TextEditingController progressNoteController =
|
|
|
|
|
TextEditingController(text: null);
|
|
|
|
|
|
|
|
|
|
BoxDecoration containerBorderDecoration(
|
|
|
|
|
Color containerColor, Color borderColor) {
|
|
|
|
|
@ -75,88 +57,56 @@ class _UpdatePlanPageVidaPlusState extends State<UpdatePlanPageVidaPlus>
|
|
|
|
|
@override
|
|
|
|
|
void initState() {
|
|
|
|
|
super.initState();
|
|
|
|
|
if (patientProgressNote.planNote != null) {
|
|
|
|
|
setState(() {
|
|
|
|
|
isAddProgress = false;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getPatientProgressNote(SOAPViewModel model,
|
|
|
|
|
{bool isAddProgress = false}) async {
|
|
|
|
|
GetProgressNoteReqModel getGetProgressNoteReqModel =
|
|
|
|
|
GetProgressNoteReqModel(
|
|
|
|
|
appointmentNo:
|
|
|
|
|
int.parse(widget.patientInfo.appointmentNo.toString()),
|
|
|
|
|
patientMRN: widget.patientInfo.patientMRN,
|
|
|
|
|
episodeID: widget.patientInfo.episodeNo.toString(),
|
|
|
|
|
editedBy: '',
|
|
|
|
|
doctorID: '');
|
|
|
|
|
await widget.sOAPViewModel
|
|
|
|
|
.getPatientProgressNote(getGetProgressNoteReqModel);
|
|
|
|
|
|
|
|
|
|
///TODO set progressNote in model;
|
|
|
|
|
if (widget.sOAPViewModel.patientProgressNoteList.isNotEmpty) {
|
|
|
|
|
progressNoteController.text = Utils.parseHtmlString(
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].planNote!);
|
|
|
|
|
patientProgressNote.planNote = progressNoteController.text;
|
|
|
|
|
|
|
|
|
|
patientProgressNote.createdByName =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].createdByName;
|
|
|
|
|
patientProgressNote.createdOn =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].createdOn;
|
|
|
|
|
patientProgressNote.editedOn =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].editedOn;
|
|
|
|
|
patientProgressNote.editedByName =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].editedByName;
|
|
|
|
|
patientProgressNote.appointmentNo =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].appointmentNo;
|
|
|
|
|
setState(() {
|
|
|
|
|
isAddProgress = isAddProgress;
|
|
|
|
|
widget.sOAPViewModel.isAddProgress = isAddProgress;
|
|
|
|
|
widget.sOAPViewModel.progressNoteText = progressNoteController.text;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// getPatientProgressNote(SOAPViewModel model,
|
|
|
|
|
// {bool isAddProgress = false}) async {
|
|
|
|
|
// GetProgressNoteReqModel getGetProgressNoteReqModel =
|
|
|
|
|
// GetProgressNoteReqModel(
|
|
|
|
|
// appointmentNo:
|
|
|
|
|
// int.parse(widget.patientInfo.appointmentNo.toString()),
|
|
|
|
|
// patientMRN: widget.patientInfo.patientMRN,
|
|
|
|
|
// episodeID: widget.patientInfo.episodeNo.toString(),
|
|
|
|
|
// editedBy: '',
|
|
|
|
|
// doctorID: '');
|
|
|
|
|
// await widget.sOAPViewModel
|
|
|
|
|
// .getPatientProgressNote(getGetProgressNoteReqModel);
|
|
|
|
|
//
|
|
|
|
|
// ///TODO set progressNote in model;
|
|
|
|
|
// if (widget.sOAPViewModel.patientProgressNoteList.isNotEmpty) {
|
|
|
|
|
// progressNoteController.text = Utils.parseHtmlString(
|
|
|
|
|
// widget.sOAPViewModel.patientProgressNoteList[0].planNote!);
|
|
|
|
|
// patientProgressNote.planNote = progressNoteController.text;
|
|
|
|
|
//
|
|
|
|
|
// patientProgressNote.createdByName =
|
|
|
|
|
// widget.sOAPViewModel.patientProgressNoteList[0].createdByName;
|
|
|
|
|
// patientProgressNote.createdOn =
|
|
|
|
|
// widget.sOAPViewModel.patientProgressNoteList[0].createdOn;
|
|
|
|
|
// patientProgressNote.editedOn =
|
|
|
|
|
// widget.sOAPViewModel.patientProgressNoteList[0].editedOn;
|
|
|
|
|
// patientProgressNote.editedByName =
|
|
|
|
|
// widget.sOAPViewModel.patientProgressNoteList[0].editedByName;
|
|
|
|
|
// patientProgressNote.appointmentNo =
|
|
|
|
|
// widget.sOAPViewModel.patientProgressNoteList[0].appointmentNo;
|
|
|
|
|
// setState(() {
|
|
|
|
|
// isAddProgress = isAddProgress;
|
|
|
|
|
// widget.sOAPViewModel.isAddProgress = isAddProgress;
|
|
|
|
|
// widget.sOAPViewModel.progressNoteText = progressNoteController.text;
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
return BaseView<SOAPViewModel>(
|
|
|
|
|
onModelReady: (model) async {
|
|
|
|
|
widget.sOAPViewModel.setPlanCallBack(this);
|
|
|
|
|
GetProgressNoteReqModel getGetProgressNoteReqModel =
|
|
|
|
|
GetProgressNoteReqModel(
|
|
|
|
|
appointmentNo:
|
|
|
|
|
int.parse(widget.patientInfo.appointmentNo.toString()),
|
|
|
|
|
patientMRN: widget.patientInfo.patientMRN,
|
|
|
|
|
episodeID: widget.patientInfo.episodeNo.toString(),
|
|
|
|
|
editedBy: '',
|
|
|
|
|
doctorID: '');
|
|
|
|
|
widget.changeLoadingState(true);
|
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
|
|
|
|
await widget.sOAPViewModel
|
|
|
|
|
.getPatientProgressNote(getGetProgressNoteReqModel);});
|
|
|
|
|
|
|
|
|
|
if (widget.sOAPViewModel.patientProgressNoteList.isNotEmpty) {
|
|
|
|
|
progressNoteController.text = Utils.parseHtmlString(
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].planNote!);
|
|
|
|
|
patientProgressNote.planNote = progressNoteController.text;
|
|
|
|
|
patientProgressNote.createdByName =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].createdByName;
|
|
|
|
|
patientProgressNote.createdOn =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].createdOn;
|
|
|
|
|
patientProgressNote.editedOn =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].editedOn;
|
|
|
|
|
patientProgressNote.editedByName =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].editedByName;
|
|
|
|
|
patientProgressNote.appointmentNo =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].appointmentNo;
|
|
|
|
|
widget.sOAPViewModel.progressNoteText = progressNoteController.text;
|
|
|
|
|
|
|
|
|
|
setState(() {
|
|
|
|
|
isAddProgress = false;
|
|
|
|
|
widget.sOAPViewModel.isAddProgress = false;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (model.progressNote.isEmpty) {
|
|
|
|
|
await model.getProgressNote(widget.patientInfo);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
widget.changeLoadingState(false);
|
|
|
|
|
},
|
|
|
|
|
builder: (_, model, w) => AppScaffold(
|
|
|
|
|
@ -168,7 +118,6 @@ class _UpdatePlanPageVidaPlusState extends State<UpdatePlanPageVidaPlus>
|
|
|
|
|
child: FractionallySizedBox(
|
|
|
|
|
widthFactor: 0.90,
|
|
|
|
|
child: Column(
|
|
|
|
|
|
|
|
|
|
children: [
|
|
|
|
|
SOAPStepHeader(
|
|
|
|
|
currentIndex: widget.currentIndex,
|
|
|
|
|
@ -202,7 +151,7 @@ class _UpdatePlanPageVidaPlusState extends State<UpdatePlanPageVidaPlus>
|
|
|
|
|
height: 16,
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
if (listOfProgressNote.isEmpty) ...{
|
|
|
|
|
if (model.progressNote.isEmpty) ...{
|
|
|
|
|
Center(
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: const EdgeInsets.all(65),
|
|
|
|
|
@ -211,9 +160,7 @@ class _UpdatePlanPageVidaPlusState extends State<UpdatePlanPageVidaPlus>
|
|
|
|
|
),
|
|
|
|
|
} else ...{
|
|
|
|
|
Divider(),
|
|
|
|
|
ListOfNotes(
|
|
|
|
|
notes: listOfProgressNote
|
|
|
|
|
)
|
|
|
|
|
ListOfNotes(notes: model.progressNote)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// if (mySelectedExamination.isEmpty) ...{
|
|
|
|
|
@ -365,94 +312,84 @@ class _UpdatePlanPageVidaPlusState extends State<UpdatePlanPageVidaPlus>
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
submitPlan(SOAPViewModel model) async {
|
|
|
|
|
if (progressNoteController.text.isNotEmpty) {
|
|
|
|
|
widget.changeLoadingState(true);
|
|
|
|
|
PostProgressNoteRequestModel postProgressNoteRequestModel =
|
|
|
|
|
new PostProgressNoteRequestModel(
|
|
|
|
|
patientMRN: widget.patientInfo.patientMRN,
|
|
|
|
|
episodeId: widget.patientInfo.episodeNo,
|
|
|
|
|
appointmentNo: widget.patientInfo.appointmentNo,
|
|
|
|
|
planNote: patientProgressNote.planNote,
|
|
|
|
|
doctorID: widget.patientInfo.doctorId,
|
|
|
|
|
createdBy: widget.patientInfo.doctorId,
|
|
|
|
|
createdByName: widget.patientInfo.doctorName,
|
|
|
|
|
editedBy: '');
|
|
|
|
|
|
|
|
|
|
if (widget.sOAPViewModel.patientProgressNoteList.isEmpty) {
|
|
|
|
|
await widget.sOAPViewModel
|
|
|
|
|
.postProgressNote(postProgressNoteRequestModel);
|
|
|
|
|
} else {
|
|
|
|
|
Map<String, dynamic> profile = await sharedPref.getObj(DOCTOR_PROFILE);
|
|
|
|
|
DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile);
|
|
|
|
|
postProgressNoteRequestModel.editedBy = doctorProfile.doctorID;
|
|
|
|
|
await widget.sOAPViewModel
|
|
|
|
|
.patchProgressNote(postProgressNoteRequestModel);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (widget.sOAPViewModel.state == ViewState.ErrorLocal) {
|
|
|
|
|
Utils.showErrorToast(widget.sOAPViewModel.error);
|
|
|
|
|
} else {
|
|
|
|
|
GetProgressNoteReqModel getGetProgressNoteReqModel =
|
|
|
|
|
GetProgressNoteReqModel(
|
|
|
|
|
appointmentNo:
|
|
|
|
|
int.parse(widget.patientInfo.appointmentNo.toString()),
|
|
|
|
|
patientMRN: widget.patientInfo.patientMRN,
|
|
|
|
|
episodeID: widget.patientInfo.episodeNo.toString(),
|
|
|
|
|
editedBy: '',
|
|
|
|
|
doctorID: '');
|
|
|
|
|
await widget.sOAPViewModel
|
|
|
|
|
.getPatientProgressNote(getGetProgressNoteReqModel);
|
|
|
|
|
if (widget.sOAPViewModel.patientProgressNoteList.isNotEmpty) {
|
|
|
|
|
progressNoteController.text = Utils.parseHtmlString(
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].planNote!);
|
|
|
|
|
patientProgressNote.planNote = progressNoteController.text;
|
|
|
|
|
patientProgressNote.createdByName =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].createdByName;
|
|
|
|
|
patientProgressNote.createdOn =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].createdOn;
|
|
|
|
|
patientProgressNote.editedOn =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].editedOn;
|
|
|
|
|
patientProgressNote.editedByName =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].editedByName;
|
|
|
|
|
patientProgressNote.appointmentNo =
|
|
|
|
|
widget.sOAPViewModel.patientProgressNoteList[0].appointmentNo;
|
|
|
|
|
|
|
|
|
|
setState(() {
|
|
|
|
|
isAddProgress = false;
|
|
|
|
|
widget.sOAPViewModel.isAddProgress = false;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
|
Utils.showErrorToast("Episode Created Successfully");
|
|
|
|
|
}
|
|
|
|
|
widget.changeLoadingState(false);
|
|
|
|
|
} else {
|
|
|
|
|
Utils.showErrorToast(TranslationBase.of(context).progressNoteErrorMsg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// submitPlan(SOAPViewModel model) async {
|
|
|
|
|
// if (progressNoteController.text.isNotEmpty) {
|
|
|
|
|
// widget.changeLoadingState(true);
|
|
|
|
|
// PostProgressNoteRequestModel postProgressNoteRequestModel =
|
|
|
|
|
// new PostProgressNoteRequestModel(
|
|
|
|
|
// patientMRN: widget.patientInfo.patientMRN,
|
|
|
|
|
// episodeId: widget.patientInfo.episodeNo,
|
|
|
|
|
// appointmentNo: widget.patientInfo.appointmentNo,
|
|
|
|
|
// planNote: patientProgressNote.planNote,
|
|
|
|
|
// doctorID: widget.patientInfo.doctorId,
|
|
|
|
|
// createdBy: widget.patientInfo.doctorId,
|
|
|
|
|
// createdByName: widget.patientInfo.doctorName,
|
|
|
|
|
// editedBy: '');
|
|
|
|
|
//
|
|
|
|
|
// if (widget.sOAPViewModel.patientProgressNoteList.isEmpty) {
|
|
|
|
|
// await widget.sOAPViewModel
|
|
|
|
|
// .postProgressNote(postProgressNoteRequestModel);
|
|
|
|
|
// } else {
|
|
|
|
|
// Map<String, dynamic> profile = await sharedPref.getObj(DOCTOR_PROFILE);
|
|
|
|
|
// DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile);
|
|
|
|
|
// postProgressNoteRequestModel.editedBy = doctorProfile.doctorID;
|
|
|
|
|
// await widget.sOAPViewModel
|
|
|
|
|
// .patchProgressNote(postProgressNoteRequestModel);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// if (widget.sOAPViewModel.state == ViewState.ErrorLocal) {
|
|
|
|
|
// Utils.showErrorToast(widget.sOAPViewModel.error);
|
|
|
|
|
// } else {
|
|
|
|
|
// GetProgressNoteReqModel getGetProgressNoteReqModel =
|
|
|
|
|
// GetProgressNoteReqModel(
|
|
|
|
|
// appointmentNo:
|
|
|
|
|
// int.parse(widget.patientInfo.appointmentNo.toString()),
|
|
|
|
|
// patientMRN: widget.patientInfo.patientMRN,
|
|
|
|
|
// episodeID: widget.patientInfo.episodeNo.toString(),
|
|
|
|
|
// editedBy: '',
|
|
|
|
|
// doctorID: '');
|
|
|
|
|
// await widget.sOAPViewModel
|
|
|
|
|
// .getPatientProgressNote(getGetProgressNoteReqModel);
|
|
|
|
|
// if (widget.sOAPViewModel.patientProgressNoteList.isNotEmpty) {
|
|
|
|
|
// progressNoteController.text = Utils.parseHtmlString(
|
|
|
|
|
// widget.sOAPViewModel.patientProgressNoteList[0].planNote!);
|
|
|
|
|
// patientProgressNote.planNote = progressNoteController.text;
|
|
|
|
|
// patientProgressNote.createdByName =
|
|
|
|
|
// widget.sOAPViewModel.patientProgressNoteList[0].createdByName;
|
|
|
|
|
// patientProgressNote.createdOn =
|
|
|
|
|
// widget.sOAPViewModel.patientProgressNoteList[0].createdOn;
|
|
|
|
|
// patientProgressNote.editedOn =
|
|
|
|
|
// widget.sOAPViewModel.patientProgressNoteList[0].editedOn;
|
|
|
|
|
// patientProgressNote.editedByName =
|
|
|
|
|
// widget.sOAPViewModel.patientProgressNoteList[0].editedByName;
|
|
|
|
|
// patientProgressNote.appointmentNo =
|
|
|
|
|
// widget.sOAPViewModel.patientProgressNoteList[0].appointmentNo;
|
|
|
|
|
//
|
|
|
|
|
// setState(() {
|
|
|
|
|
// isAddProgress = false;
|
|
|
|
|
// widget.sOAPViewModel.isAddProgress = false;
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// Navigator.of(context).pop();
|
|
|
|
|
// Utils.showErrorToast("Episode Created Successfully");
|
|
|
|
|
// }
|
|
|
|
|
// widget.changeLoadingState(false);
|
|
|
|
|
// } else {
|
|
|
|
|
// Utils.showErrorToast(TranslationBase.of(context).progressNoteErrorMsg);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
nextFunction(model) {
|
|
|
|
|
if (progressNoteController.text.isNotEmpty) {
|
|
|
|
|
if (isAddProgress) {
|
|
|
|
|
submitPlan(model);
|
|
|
|
|
} else {
|
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
Utils.showErrorToast(TranslationBase.of(context).progressNoteErrorMsg);
|
|
|
|
|
}
|
|
|
|
|
//todo handle the next event here
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void navigateToAddPlan() {
|
|
|
|
|
Navigator.push(
|
|
|
|
|
context,
|
|
|
|
|
FadePage(
|
|
|
|
|
page: AddProgressNote (
|
|
|
|
|
|
|
|
|
|
),
|
|
|
|
|
));
|
|
|
|
|
context,
|
|
|
|
|
FadePage(
|
|
|
|
|
page: AddProgressNote(),
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|