Merge branch 'roaa2.8_addnewmedicationservice' into 'development'

Roaa2.8 addnewmedicationservice

See merge request Cloud_Solution/doctor_app_flutter!953
merge-requests/957/merge
Elham Ali 4 years ago
commit 63e94e0d7b

@ -389,6 +389,15 @@ const GET_ALL_DISCHARGE_SUMMARY =
const VTE_ASSESSMENT =
"Services/Patients.svc/REST/INP_GetVTEHistoryByTransactionNo";
const GET_INTERVENTION_MEDICATION =
"Services/DoctorApplication.svc/REST/DoctorApp_GetInterventionMedications";
const GET_INTERVENTION_MEDICATION_HISTORY =
"Services/DoctorApplication.svc/REST/DoctorApp_GetInterventionHistory";
const SET_ACCEPTED_OR_REJECTED =
"Services/DoctorApplication.svc/REST/DoctorApp_AcceptOrRejectIntervention";
var selectedPatientType = 1;
//*********change value to decode json from Dropdown ************

@ -1054,6 +1054,8 @@ const Map<String, Map<String, String>> localizedValues = {
"maritalStatus": {"en": "Marital Status", "ar": "الحالة الزوجية"},
"nursing": {"en": "Nursing", "ar": "تمريض"},
"diabetic": {"en": "Diabetic", "ar": "مرض السكري"},
"pharmacy": {"en": "Pharmacy", "ar": "الصيدلاني"},
"intervention": {"en": "Intervention", "ar": "التدخل"},
"chart": {"en": "Chart", "ar": "جدول"},
"operationTimeStart": {
"en": "Operation Time Start :",

@ -0,0 +1,68 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
import '../../../../screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart';
import '../../../../screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_req_model.dart';
import '../../../../screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_res_model.dart';
import '../../../../screens/patients/profile/pharmacy-intervention-model/new_medication_req_model.dart';
import '../../../../screens/patients/profile/pharmacy-intervention-model/new_medication_res_model.dart';
class InterventionMedicationService extends BaseService {
List<InterventionMedicationResModel> _allInterventionList = [];
List<InterventionMedicationHistoryResModel> _allInterventionHistoryList = [];
List<InterventionMedicationResModel> get allInterventionList =>
_allInterventionList;
List<InterventionMedicationHistoryResModel> get allInterventionHistoryList =>
_allInterventionHistoryList;
Future getInterventionMedication(
{InterventionMedicationReqModel interventionMedicationReqModel}) async {
hasError = false;
await baseAppClient.post(GET_INTERVENTION_MEDICATION,
onSuccess: (dynamic response, int statusCode) {
_allInterventionList.clear();
response['List_InterventionMedications'].forEach(
(v) {
_allInterventionList.add(InterventionMedicationResModel.fromJson(v));
},
);
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: interventionMedicationReqModel.toJson());
}
Future getInterventionMedicationHistory(
{InterventionMedicationHistoryReqModel interventionMedicationHistoryReqModel}) async {
hasError = false;
await baseAppClient.post(GET_INTERVENTION_MEDICATION_HISTORY,
onSuccess: (dynamic response, int statusCode) {
_allInterventionHistoryList.clear();
response['List_InterventionHistory'].forEach(
(v) {
_allInterventionHistoryList.add(InterventionMedicationHistoryResModel.fromJson(v));
},
);
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: interventionMedicationHistoryReqModel.toJson());
}
Future setAcceptedOrRejected(
{AcceptOrRejectReqModel acceptOrRejectReqModel}) async {
hasError = false;
await baseAppClient.post(SET_ACCEPTED_OR_REJECTED,
onSuccess: (dynamic response, int statusCode) {
_allInterventionHistoryList.clear();
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: acceptOrRejectReqModel.toJson());
}
}

@ -0,0 +1,146 @@
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart';
import 'package:doctor_app_flutter/locator.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import '../../../models/dashboard/get_special_clinical_care_mapping_List_Respose_Model.dart';
import '../../../screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart';
import '../../../screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_req_model.dart';
import '../../../screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_res_model.dart';
import '../../../screens/patients/profile/pharmacy-intervention-model/new_medication_req_model.dart';
import '../../../screens/patients/profile/pharmacy-intervention-model/new_medication_res_model.dart';
import '../../../util/date-utils.dart';
import '../../service/patient/profile/intervention_medication_service.dart';
import '../../service/special_clinics/special_clinic_service.dart';
class InterventionMedicationViewModel extends BaseViewModel {
SpecialClinicsService _specialClinicsService =
locator<SpecialClinicsService>();
List<GetSpecialClinicalCareMappingListResponseModel>
get specialClinicalCareMappingList =>
_specialClinicsService.specialClinicalCareMappingList;
List<PatiantInformtion> filterData = [];
DateTime selectedFromDate;
DateTime selectedToDate;
PatiantInformtion patient;
bool hasError = false;
InterventionMedicationService _interventionMedicationService =
locator<InterventionMedicationService>();
List<InterventionMedicationResModel> get allInterventionList =>
_interventionMedicationService.allInterventionList;
List<InterventionMedicationHistoryResModel> get allInterventionHistoryList =>
_interventionMedicationService.allInterventionHistoryList;
Future getInterventionMedication({
int projectId,
int patientId,
DateTime fromDate,
DateTime toDate,
}) async {
InterventionMedicationReqModel interventionMedicationReqModel =
InterventionMedicationReqModel(
projectID: 15,
//projectId,
patientID: 79941,
//patientId,
fromDate: "\/Date(1488322922)\/",
//AppDateUtils.convertDateToServerFormat(fromDate),
toDate:
"\/Date(1635886800000)\/", //AppDateUtils.convertDateToServerFormat(toDate),
);
hasError = false;
setState(ViewState.Busy);
await _interventionMedicationService.getInterventionMedication(
interventionMedicationReqModel: interventionMedicationReqModel);
if (_interventionMedicationService.hasError) {
error = _interventionMedicationService.error;
setState(ViewState.Error);
} else {
setState(ViewState.Idle);
}
}
Future getInterventionMedicationHistory(
{int projectId,
int patientId,
int admissionNo,
int prescriptionNo,
int orderNo,
bool isBusyLocal = false}) async {
InterventionMedicationHistoryReqModel
interventionMedicationHistoryReqModel =
InterventionMedicationHistoryReqModel(
projectID: 15,
//projectId,
patientID: 79941,
//patientId,
admissionNo: 2018013900,
//admissionNo,
prescriptionNo: 2045165,
//prescriptionNo,
orderNo: 1171570, //orderNo,
);
hasError = false;
if (isBusyLocal)
setState(ViewState.Busy);
else
setState(ViewState.Busy);
await _interventionMedicationService.getInterventionMedicationHistory(
interventionMedicationHistoryReqModel:
interventionMedicationHistoryReqModel);
if (_interventionMedicationService.hasError) {
error = _interventionMedicationService.error;
if (isBusyLocal)
setState(ViewState.ErrorLocal);
else
setState(ViewState.Error);
} else {
setState(ViewState.Idle);
}
}
Future setAcceptedOrRejected({
String remarks,
int memberId,
int projectId,
int patientID,
int admissionNo,
int prescriptionNo,
int orderNo,
int interventionStatus,
}) async {
AcceptOrRejectReqModel acceptOrRejectReqModel = AcceptOrRejectReqModel(
projectID: 15,
//projectId,
patientID: 79941,
//patientID,
admissionNo: 2018013900,
//admissionNo,
prescriptionNo: 2045165,
//prescriptionNo,
orderNo: 1171570,
//orderNo,
accessLevel: 4,
lineItemNo: 1,
remarks: remarks,
memberID: 2804,
//memberId,
interventionStatus: interventionStatus,
);
hasError = false;
setState(ViewState.BusyLocal);
await _interventionMedicationService.setAcceptedOrRejected(
acceptOrRejectReqModel: acceptOrRejectReqModel);
if (_interventionMedicationService.hasError) {
error = _interventionMedicationService.error;
setState(ViewState.ErrorLocal);
} else {
setState(ViewState.Idle);
}
}
}

@ -0,0 +1,45 @@
import 'package:doctor_app_flutter/core/service/patient/out_patient_service.dart';
import 'package:doctor_app_flutter/core/service/patient/patientInPatientService.dart';
import 'package:doctor_app_flutter/core/service/special_clinics/special_clinic_service.dart';
import 'package:doctor_app_flutter/models/dashboard/get_special_clinical_care_mapping_List_Respose_Model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import '../../../locator.dart';
import '../base_view_model.dart';
class PharmacyInterventionViewModel extends BaseViewModel {
OutPatientService _outPatientService = locator<OutPatientService>();
SpecialClinicsService _specialClinicsService =
locator<SpecialClinicsService>();
List<PatiantInformtion> get patientList => _outPatientService.patientList;
List<GetSpecialClinicalCareMappingListResponseModel>
get specialClinicalCareMappingList =>
_specialClinicsService.specialClinicalCareMappingList;
List<PatiantInformtion> filterData = [];
DateTime selectedFromDate;
DateTime selectedToDate;
int firstSubsetIndex = 0;
int inPatientPageSize = 20;
int lastSubsetIndex = 20;
List<String> InpatientClinicList = [];
PatientInPatientService _inPatientService =
locator<PatientInPatientService>();
List<PatiantInformtion> get inPatientList => _inPatientService.inPatientList;
List<PatiantInformtion> get myIinPatientList =>
_inPatientService.myInPatientList;
List<PatiantInformtion> filteredInPatientItems = List();
List<PatiantInformtion> filteredMyInPatientItems = List();
}

@ -14,7 +14,6 @@ import 'package:doctor_app_flutter/core/viewModel/profile/operation_report_view_
import 'package:doctor_app_flutter/core/viewModel/scan_qr_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart';
import 'package:get_it/get_it.dart';
import 'core/service/AnalyticsService.dart';
import 'core/service/NavigationService.dart';
import 'core/service/PatientRegistrationService.dart';
@ -32,6 +31,7 @@ import 'core/service/patient/out_patient_service.dart';
import 'core/service/patient/patient-doctor-referral-service.dart';
import 'core/service/patient/patientInPatientService.dart';
import 'core/service/patient/patient_service.dart';
import 'core/service/patient/profile/intervention_medication_service.dart';
import 'core/service/patient/profile/operation_report_servive.dart';
import 'core/service/patient/profile/vte_assessment_service.dart';
import 'core/service/patient/referral_patient_service.dart';
@ -66,6 +66,7 @@ import 'core/viewModel/patient-referral-viewmodel.dart';
import 'core/viewModel/patient-ucaf-viewmodel.dart';
import 'core/viewModel/patient-vital-sign-viewmodel.dart';
import 'core/viewModel/prescriptions_view_model.dart';
import 'core/viewModel/profile/intervention_medication_view_model.dart';
import 'core/viewModel/profile/vte_assessment_view_model.dart';
import 'core/viewModel/radiology_view_model.dart';
import 'core/viewModel/referral_view_model.dart';
@ -115,6 +116,7 @@ void setupLocator() {
locator.registerLazySingleton(() => PatientRegistrationService());
locator.registerLazySingleton(() => DischargeSummaryService());
locator.registerLazySingleton(() => VteAssessmentService());
locator.registerLazySingleton(() => InterventionMedicationService());
/// View Model
locator.registerFactory(() => DoctorReplayViewModel());
@ -148,4 +150,5 @@ void setupLocator() {
locator.registerFactory(() => PendingOrdersViewModel());
locator.registerFactory(() => DischargeSummaryViewModel());
locator.registerFactory(() => VteAssessmentViewModel());
locator.registerFactory(() => InterventionMedicationViewModel());
}

@ -18,6 +18,7 @@ import 'package:doctor_app_flutter/screens/patients/profile/notes/note/progress_
import 'package:doctor_app_flutter/screens/patients/profile/notes/nursing_note/nursing_note_screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/operation_report/operation_report.dart';
import 'package:doctor_app_flutter/screens/patients/profile/pending_orders/pending_orders_screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/pharmacy-intervention/pharmacy_intervention_screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/prescriptions/in_patient_prescription_details_screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/radiology/radiology_home_page.dart';
import 'package:doctor_app_flutter/screens/patients/profile/referral/refer-patient-screen-in-patient.dart';
@ -83,6 +84,9 @@ const String DIAGNOSIS_FOR_IN_PATIENT = 'get_diagnosis_for_in_patient';
const String DIABETIC_CHART_VALUES = 'get_diabetic_chart_values';
const String VTE_ASSESSMENT = 'vte_assessment ';
const String DISCHARGE_SUMMARY = 'discharge_summary';
const String PHARMACY_INTERVENTION = 'new_medication';
const String INTERVENTION_MEDICATION = 'intervention_medication';
//todo: change the routing way.
var routes = {
@ -133,5 +137,6 @@ var routes = {
DIAGNOSIS_FOR_IN_PATIENT: (_) => DiagnosisScreen(),
ADMISSION_ORDERS: (_) => AdmissionOrdersScreen(),
DIABETIC_CHART_VALUES: (_) => DiabeticChart(),
PHARMACY_INTERVENTION: (_) => PharmacyInterventionScreen(),
VTE_ASSESSMENT: (_) => VteAssessmentScreen(),
};

@ -0,0 +1,61 @@
class AcceptOrRejectReqModel {
int patientID;
int projectID;
int admissionNo;
int prescriptionNo;
int orderNo;
String remarks;
int memberID;
int accessLevel;
int languageID;
int lineItemNo;
bool patientOutSA;
int interventionStatus;
AcceptOrRejectReqModel(
{this.patientID,
this.projectID,
this.admissionNo,
this.prescriptionNo,
this.orderNo,
this.remarks,
this.memberID,
this.accessLevel,
this.languageID,
this.lineItemNo,
this.patientOutSA,
this.interventionStatus,
});
AcceptOrRejectReqModel.fromJson(Map<String, dynamic> json) {
patientID = json['PatientID'];
projectID = json['ProjectID'];
admissionNo = json['AdmissionNo'];
prescriptionNo = json['PrescriptionNo'];
orderNo = json['OrderNo'];
remarks = json['Remarks'];
memberID = json['MemberID'];
accessLevel = json['AccessLevel'];
languageID = json['LanguageID'];
lineItemNo = json['LineItemNo'];
patientOutSA = json['PatientOutSA'];
interventionStatus = json['InterventionStatus'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['PatientID'] = this.patientID;
data['ProjectID'] = this.projectID;
data['AdmissionNo'] = this.admissionNo;
data['PrescriptionNo'] = this.prescriptionNo;
data['OrderNo'] = this.orderNo;
data['Remarks'] = this.remarks;
data['MemberID'] = this.memberID;
data['AccessLevel'] = this.accessLevel;
data['LanguageID'] = this.languageID;
data['LineItemNo'] = this.lineItemNo;
data['PatientOutSA'] = this.patientOutSA;
data['InterventionStatus'] = this.interventionStatus;
return data;
}
}

@ -0,0 +1,32 @@
class InterventionMedicationHistoryReqModel {
int projectID;
int patientID;
int admissionNo;
int orderNo;
int prescriptionNo;
InterventionMedicationHistoryReqModel(
{this.projectID,
this.patientID,
this.admissionNo,
this.orderNo,
this.prescriptionNo});
InterventionMedicationHistoryReqModel.fromJson(Map<String, dynamic> json) {
projectID = json['ProjectID'];
patientID = json['PatientID'];
admissionNo = json['AdmissionNo'];
orderNo = json['OrderNo'];
prescriptionNo = json['PrescriptionNo'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ProjectID'] = this.projectID;
data['PatientID'] = this.patientID;
data['AdmissionNo'] = this.admissionNo;
data['OrderNo'] = this.orderNo;
data['PrescriptionNo'] = this.prescriptionNo;
return data;
}
}

@ -0,0 +1,96 @@
class InterventionMedicationHistoryResModel {
String setupId;
String projectId;
int patientId;
int admissionNo;
int prescriptionId;
int orderNo;
int id;
int interventionId;
Null intervention;
String remark;
int commentedBy;
bool isDoctor;
bool isActive;
int createdBy;
String createdByName;
String createdByNameN;
String createdOn;
Null editedBy;
Null editedByName;
Null editedByNameN;
Null editedOn;
InterventionMedicationHistoryResModel(
{this.setupId,
this.projectId,
this.patientId,
this.admissionNo,
this.prescriptionId,
this.orderNo,
this.id,
this.interventionId,
this.intervention,
this.remark,
this.commentedBy,
this.isDoctor,
this.isActive,
this.createdBy,
this.createdByName,
this.createdByNameN,
this.createdOn,
this.editedBy,
this.editedByName,
this.editedByNameN,
this.editedOn});
InterventionMedicationHistoryResModel.fromJson(Map<String, dynamic> json) {
setupId = json['SetupId'];
projectId = json['ProjectId'];
patientId = json['PatientId'];
admissionNo = json['AdmissionNo'];
prescriptionId = json['PrescriptionId'];
orderNo = json['OrderNo'];
id = json['Id'];
interventionId = json['InterventionId'];
intervention = json['Intervention'];
remark = json['Remark'];
commentedBy = json['CommentedBy'];
isDoctor = json['IsDoctor'];
isActive = json['IsActive'];
createdBy = json['CreatedBy'];
createdByName = json['CreatedByName'];
createdByNameN = json['CreatedByNameN'];
createdOn = json['CreatedOn'];
editedBy = json['EditedBy'];
editedByName = json['EditedByName'];
editedByNameN = json['EditedByNameN'];
editedOn = json['EditedOn'];
}
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['AdmissionNo'] = this.admissionNo;
data['PrescriptionId'] = this.prescriptionId;
data['OrderNo'] = this.orderNo;
data['Id'] = this.id;
data['InterventionId'] = this.interventionId;
data['Intervention'] = this.intervention;
data['Remark'] = this.remark;
data['CommentedBy'] = this.commentedBy;
data['IsDoctor'] = this.isDoctor;
data['IsActive'] = this.isActive;
data['CreatedBy'] = this.createdBy;
data['CreatedByName'] = this.createdByName;
data['CreatedByNameN'] = this.createdByNameN;
data['CreatedOn'] = this.createdOn;
data['EditedBy'] = this.editedBy;
data['EditedByName'] = this.editedByName;
data['EditedByNameN'] = this.editedByNameN;
data['EditedOn'] = this.editedOn;
return data;
}
}

@ -0,0 +1,25 @@
class InterventionMedicationReqModel {
int projectID;
int patientID;
String fromDate;
String toDate;
InterventionMedicationReqModel(
{this.projectID, this.patientID, this.fromDate, this.toDate});
InterventionMedicationReqModel.fromJson(Map<String, dynamic> json) {
projectID = json['ProjectID'];
patientID = json['PatientID'];
fromDate = json['FromDate'];
toDate = json['ToDate'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ProjectID'] = this.projectID;
data['PatientID'] = this.patientID;
data['FromDate'] = this.fromDate;
data['ToDate'] = this.toDate;
return data;
}
}

@ -0,0 +1,100 @@
class InterventionMedicationResModel {
String cS;
String iHR;
String setupID;
int projectID;
int accessLevel;
int patientID;
String patientName;
String description;
int admissionNo;
int orderNo;
int prescriptionNo;
int lineItemNo;
int itemID;
String medication;
String doctorComments;
String startDatetime;
String stopDatetime;
int status;
int createdBy;
int authorizedby;
Null pharmacyRemarks;
String statusDescription;
InterventionMedicationResModel(
{this.cS,
this.iHR,
this.setupID,
this.projectID,
this.accessLevel,
this.patientID,
this.patientName,
this.description,
this.admissionNo,
this.orderNo,
this.prescriptionNo,
this.lineItemNo,
this.itemID,
this.medication,
this.doctorComments,
this.startDatetime,
this.stopDatetime,
this.status,
this.createdBy,
this.authorizedby,
this.pharmacyRemarks,
this.statusDescription});
InterventionMedicationResModel.fromJson(Map<String, dynamic> json) {
cS = json['CS'];
iHR = json['IHR'];
setupID = json['SetupID'];
projectID = json['ProjectID'];
accessLevel = json['AccessLevel'];
patientID = json['PatientID'];
patientName = json['PatientName'];
description = json['Description'];
admissionNo = json['AdmissionNo'];
orderNo = json['OrderNo'];
prescriptionNo = json['PrescriptionNo'];
lineItemNo = json['LineItemNo'];
itemID = json['ItemID'];
medication = json['Medication'];
doctorComments = json['DoctorComments'];
startDatetime = json['StartDatetime'];
stopDatetime = json['StopDatetime'];
status = json['Status'];
createdBy = json['CreatedBy'];
authorizedby = json['Authorizedby'];
pharmacyRemarks = json['PharmacyRemarks'];
statusDescription = json['StatusDescription'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['CS'] = this.cS;
data['IHR'] = this.iHR;
data['SetupID'] = this.setupID;
data['ProjectID'] = this.projectID;
data['AccessLevel'] = this.accessLevel;
data['PatientID'] = this.patientID;
data['PatientName'] = this.patientName;
data['Description'] = this.description;
data['AdmissionNo'] = this.admissionNo;
data['OrderNo'] = this.orderNo;
data['PrescriptionNo'] = this.prescriptionNo;
data['LineItemNo'] = this.lineItemNo;
data['ItemID'] = this.itemID;
data['Medication'] = this.medication;
data['DoctorComments'] = this.doctorComments;
data['StartDatetime'] = this.startDatetime;
data['StopDatetime'] = this.stopDatetime;
data['Status'] = this.status;
data['CreatedBy'] = this.createdBy;
data['Authorizedby'] = this.authorizedby;
data['PharmacyRemarks'] = this.pharmacyRemarks;
data['StatusDescription'] = this.statusDescription;
return data;
}
}

@ -0,0 +1,267 @@
import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/app_bar/patient-profile-app-bar.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/card_with_bg_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../../../core/viewModel/profile/intervention_medication_view_model.dart';
import '../../../../widgets/transitions/fade_page.dart';
import 'intervention_medication_history_screen.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
class InterventionMedicationScreen extends StatefulWidget {
final PatiantInformtion patient;
final InterventionMedicationViewModel previousModel;
const InterventionMedicationScreen(this.patient, {Key key, this.previousModel}) : super(key: key);
@override
_InterventionMedicationScreenState createState() =>
_InterventionMedicationScreenState();
}
class _InterventionMedicationScreenState
extends State<InterventionMedicationScreen> {
bool isDischargedPatient = false;
AuthenticationViewModel authenticationViewModel;
ProjectViewModel projectViewModel;
@override
Widget build(BuildContext context) {
authenticationViewModel = Provider.of(context);
projectViewModel = Provider.of(context);
return BaseView<InterventionMedicationViewModel>(
onModelReady: (model) => model.getInterventionMedication(
patientId: widget.patient.patientId,
//admissionNo: int.parse(widget.patient.admissionNo),
fromDate: widget.previousModel.selectedFromDate,
toDate: widget.previousModel.selectedToDate,
),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
appBar: PatientProfileAppBar(
widget.patient,
isInpatient: true,
),
body: model.allInterventionList == null ||
model.allInterventionList.length == 0
? Center(
child: ErrorMessage(
error: TranslationBase.of(context).noDataAvailable,
),
)
: Container(
color: Colors.grey[200],
child: Column(
children: <Widget>[
Expanded(
child: Container(
child: ListView.builder(
itemCount: model.allInterventionList.length,
itemBuilder: (BuildContext ctxt, int index) {
return InkWell(
child: FractionallySizedBox(
widthFactor: 0.95,
child: CardWithBgWidget(
hasBorder: false,
bgColor: Colors.transparent,
widget: Column(
children: [
Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
SizedBox(
height: 10,
),
Row(
mainAxisAlignment:
MainAxisAlignment
.spaceBetween,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Container(
width: MediaQuery.of(context)
.size
.width *
0.60,
child: Column(
crossAxisAlignment:
CrossAxisAlignment
.start,
children: [
Row(
crossAxisAlignment:
CrossAxisAlignment
.start,
children: [
AppText(
model
.allInterventionList[
index]
.cS,
fontWeight:
FontWeight.w600,
fontSize: 14,
),
],
),
],
),
),
Column(
children: [
Row(
crossAxisAlignment:
CrossAxisAlignment
.start,
children: [
AppText(
AppDateUtils.getDayMonthYearDateFormatted(
AppDateUtils.convertStringToDate(model
.allInterventionList[
index]
.startDatetime),
isArabic:
projectViewModel
.isArabic,
isMonthShort:
true),
fontWeight:
FontWeight.w600,
fontSize: 14,
),
],
),
],
)
],
),
SizedBox(
height: 8,
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
'Description: ',
fontSize: 12,
),
Expanded(
child: AppText(
model
.allInterventionList[
index]
.description,
fontSize: 12,
isCopyable: true,
),
),
]),
SizedBox(
height: 8,
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
'Medication: ',
fontSize: 12,
),
Expanded(
child: AppText(
model
.allInterventionList[
index]
.medication,
fontSize: 12,
isCopyable: true,
),
),
]),
SizedBox(
height: 8,
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
'Doctor Comments: ',
fontSize: 12,
),
Expanded(
child: AppText(
model
.allInterventionList[
index]
.doctorComments,
fontSize: 12,
isCopyable: true,
),
),
]),
SizedBox(
height: 8,
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
'Status Description: ',
fontSize: 12,
),
Expanded(
child: AppText(
model
.allInterventionList[
index]
.statusDescription,
fontSize: 12,
isCopyable: true,
),
),
]),
],
),
SizedBox(
height: 20,
),
],
),
),
),
onTap: () {
Navigator.push(
context,
FadePage(
page: InterventionMedicationHistoryScreen(widget.patient, model.allInterventionList[index]),
),
);
},
);
}),
),
),
],
),
),
),
);
}
}

@ -0,0 +1,354 @@
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/pharmacy-intervention-model/new_medication_res_model.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.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/widgets/patients/profile/app_bar/patient-profile-app-bar.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/card_with_bg_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart';
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../../../config/config.dart';
import '../../../../core/viewModel/profile/intervention_medication_view_model.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
class InterventionMedicationHistoryScreen extends StatefulWidget {
final PatiantInformtion patient;
final InterventionMedicationResModel interventionMedication;
const InterventionMedicationHistoryScreen(this.patient, this.interventionMedication, {Key key}) : super(key: key);
@override
_InterventionMedicationHistoryScreenState createState() => _InterventionMedicationHistoryScreenState();
}
class _InterventionMedicationHistoryScreenState extends State<InterventionMedicationHistoryScreen> {
bool isDischargedPatient = false;
AuthenticationViewModel authenticationViewModel;
ProjectViewModel projectViewModel;
@override
Widget build(BuildContext context) {
authenticationViewModel = Provider.of(context);
projectViewModel = Provider.of(context);
return BaseView<InterventionMedicationViewModel>(
onModelReady: (model) => model.getInterventionMedicationHistory(
patientId: widget.patient.patientId,
projectId: widget.interventionMedication.projectID,
admissionNo: widget.interventionMedication.admissionNo,
prescriptionNo: widget.interventionMedication.prescriptionNo,
orderNo: widget.interventionMedication.orderNo,
),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
appBar: PatientProfileAppBar(
widget.patient,
isInpatient: true,
),
body: model.allInterventionHistoryList == null ||
model.allInterventionHistoryList.length == 0
? Center(
child: ErrorMessage(
error: TranslationBase.of(context).noDataAvailable,
),
)
: Container(
color: Colors.grey[200],
child: Column(
children: <Widget>[
Expanded(
child: Container(
child: ListView.builder(
itemCount: model.allInterventionHistoryList.length,
itemBuilder: (BuildContext ctxt, int index) {
return FractionallySizedBox(
widthFactor: 0.95,
child: CardWithBgWidget(
hasBorder: false,
bgColor: Colors.transparent,
widget: Column(
children: [
Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
SizedBox(
height: 10,
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Container(
width: MediaQuery.of(context)
.size
.width *
0.60,
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment:
CrossAxisAlignment
.start,
children: [
AppText(
model
.allInterventionHistoryList[
index].setupId,
fontWeight: FontWeight.w600,
fontSize: 14,
),
],
),
],
),
),
Column(
children: [
Row(
crossAxisAlignment:
CrossAxisAlignment
.start,
children: [
AppText(
AppDateUtils.getDayMonthYearDateFormatted(
AppDateUtils.convertStringToDate(
model
.allInterventionHistoryList[
index].createdOn)
,isArabic:
projectViewModel
.isArabic,
isMonthShort: true),
fontWeight: FontWeight.w600,
fontSize: 14,
),
],
),
],
)
],
),
SizedBox(
height: 8,
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
'Remark: ',
fontSize: 12,
),
Expanded(
child: AppText(
model
.allInterventionHistoryList[
index]
.remark,
fontSize: 12,
isCopyable: true,
),
),
]),
SizedBox(
height: 8,
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
'Created By Name: ',
fontSize: 12,
),
Expanded(
child: AppText(
model
.allInterventionHistoryList[
index]
.createdByName,
fontSize: 12,
isCopyable: true,
),
),
]),
SizedBox(
height: 8,
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
AppText(
'SetUp ID: ',
fontSize: 12,
),
Expanded(
child: AppText(
model
.allInterventionHistoryList[
index]
.setupId,
fontSize: 12,
isCopyable: true,
),
),
]),
SizedBox(
height: 8,
),
Row(
crossAxisAlignment:
CrossAxisAlignment.start,
mainAxisAlignment:
MainAxisAlignment.end,
children: [
InkWell(
onTap: () async {
GifLoaderDialogUtils.showMyDialog(context);
await model.setAcceptedOrRejected(
remarks: "",
memberId: model.allInterventionHistoryList[index].commentedBy,
prescriptionNo: model.allInterventionHistoryList[index].prescriptionId,
patientID: model.allInterventionHistoryList[index].patientId,
orderNo: model.allInterventionHistoryList[index].orderNo,
admissionNo: model.allInterventionHistoryList[index].admissionNo,
interventionStatus: 1,
);
if(model.state == ViewState.ErrorLocal) {
GifLoaderDialogUtils.hideDialog(context);
Helpers.showErrorToast(model.error);
} else {
await model.getInterventionMedicationHistory(patientId: widget.patient.patientId,
projectId: widget.interventionMedication.projectID,
admissionNo: widget.interventionMedication.admissionNo,
prescriptionNo: widget.interventionMedication.prescriptionNo,
orderNo: widget.interventionMedication.orderNo,);
GifLoaderDialogUtils.hideDialog(context);
DrAppToastMsg.showSuccesToast(
"Has been Successfully accepted");
}
},
child: Container(
decoration: BoxDecoration(
color: AppGlobal.appGreenColor,
borderRadius:
BorderRadius.circular(10),
),
// color:Colors.red[600],
child: Row(
children: [
SizedBox(
width: 2,
),
AppText(
TranslationBase.of(context)
.accept,
fontSize: 10,
color: Colors.white,
),
],
),
padding: EdgeInsets.all(6),
),
),
SizedBox(
width: 10,
),
InkWell(
onTap: () async {
GifLoaderDialogUtils.showMyDialog(context);
await model.setAcceptedOrRejected(
remarks: "",
memberId: model.allInterventionHistoryList[index].commentedBy,
prescriptionNo: model.allInterventionHistoryList[index].prescriptionId,
patientID: model.allInterventionHistoryList[index].patientId,
orderNo: model.allInterventionHistoryList[index].orderNo,
admissionNo: model.allInterventionHistoryList[index].admissionNo,
interventionStatus: 2
);
if(model.state == ViewState.ErrorLocal) {
GifLoaderDialogUtils.hideDialog(context);
Helpers.showErrorToast(model.error);
} else {
await model.getInterventionMedicationHistory(patientId: widget.patient.patientId,
projectId: widget.interventionMedication.projectID,
admissionNo: widget.interventionMedication.admissionNo,
prescriptionNo: widget.interventionMedication.prescriptionNo,
orderNo: widget.interventionMedication.orderNo,);
GifLoaderDialogUtils.hideDialog(context);
DrAppToastMsg.showSuccesToast(
"Has been Successfully Rejected");
}
},
child: Container(
decoration: BoxDecoration(
color: AppGlobal.appRedColor,
borderRadius:
BorderRadius.circular(10),
),
// color:Colors.red[600],
child: Row(
children: [
SizedBox(
width: 2,
),
AppText(
TranslationBase.of(context)
.reject,
fontSize: 10,
color: Colors.white,
),
],
),
padding: EdgeInsets.all(6),
),
),
],
),
],
),
SizedBox(
height: 20,
),
],
),
),
);
}),
),
),
],
),
),
),
);
}
}

@ -0,0 +1,262 @@
import 'package:doctor_app_flutter/core/enum/filter_type.dart';
import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/bottom_sheet_title.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/helpers.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/buttons/app_buttons_widget.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import '../../../../core/viewModel/profile/intervention_medication_view_model.dart';
import '../../../../models/patient/patiant_info_model.dart';
import '../../../base/base_view.dart';
import 'intervention_medication.dart';
class PharmacyInterventionScreen extends StatefulWidget {
final OutPatientFilterType outPatientFilterType;
const PharmacyInterventionScreen({
Key key,
this.outPatientFilterType,
}) : super(key: key);
@override
_PharmacyInterventionScreenState createState() =>
_PharmacyInterventionScreenState();
}
class _PharmacyInterventionScreenState
extends State<PharmacyInterventionScreen> {
@override
void initState() {
// TODO: implement initState
super.initState();
}
@override
Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient'];
return BaseView<InterventionMedicationViewModel>(
builder: (_, model, w) => AppScaffold(
isShowAppBar: false,
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
body: SingleChildScrollView(
child: Container(
height: MediaQuery.of(context).size.height * 1.0,
child: Padding(
padding: EdgeInsets.all(0.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BottomSheetTitle(
title: (OutPatientFilterType.Previous ==
widget.outPatientFilterType)
? ""
: " Pharmacy Intervention",
),
SizedBox(
height: 10.0,
),
Center(
child: FractionallySizedBox(
widthFactor: 0.9,
child: Column(
children: [
Container(
color: Colors.white,
child: InkWell(
onTap: () => selectDate(
context,
model,
firstDate: DateTime(
DateTime.now().year - 20,
DateTime.now().month,
DateTime.now().day),
lastDate: DateTime(
DateTime.now().year,
DateTime.now().month,
DateTime.now().day + 100),
selectedDate: DateTime(
DateTime.now().year,
DateTime.now().month,
DateTime.now().day),
),
child: TextField(
decoration: textFieldSelectorDecoration(
TranslationBase.of(context).fromDate,
model.selectedFromDate != null
? "${AppDateUtils.convertStringToDateFormat(model.selectedFromDate.toString(), "yyyy-MM-dd")}"
: null,
true,
suffixIcon: Icon(
Icons.calendar_today,
color: Colors.black,
)),
enabled: false,
),
),
),
SizedBox(
height: 10,
),
Container(
color: Colors.white,
child: InkWell(
onTap: () => selectDate(
context,
model,
isFromDate: false,
firstDate: DateTime(
DateTime.now().year - 20,
DateTime.now().month,
DateTime.now().day),
lastDate: DateTime(
DateTime.now().year,
DateTime.now().month,
DateTime.now().day + 100),
selectedDate: DateTime(
DateTime.now().year,
DateTime.now().month,
DateTime.now().day),
),
child: TextField(
decoration: textFieldSelectorDecoration(
TranslationBase.of(context).toDate,
model.selectedToDate != null
? "${AppDateUtils.convertStringToDateFormat(model.selectedToDate.toString(), "yyyy-MM-dd")}"
: null,
true,
suffixIcon: Icon(
Icons.calendar_today,
color: Colors.black,
)),
enabled: false,
),
),
),
],
),
),
),
],
),
),
),
),
bottomSheet: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(0.0),
),
border: Border.all(color: HexColor('#707070'), width: 0),
),
height: MediaQuery.of(context).size.height * 0.1,
width: double.infinity,
child: Column(
children: [
SizedBox(
height: 10,
),
Container(
child: FractionallySizedBox(
widthFactor: .80,
child: Center(
child: AppButton(
title: TranslationBase.of(context).search,
padding: 5,
color: Color(0xFF359846),
onPressed: () async {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
InterventionMedicationScreen(patient,previousModel: model,)),
);
},
),
),
),
),
SizedBox(
height: 5,
),
],
),
)));
}
selectDate(BuildContext context, InterventionMedicationViewModel model,
{bool isFromDate = true,
DateTime firstDate,
lastDate,
selectedDate}) async {
Helpers.hideKeyboard(context);
final DateTime picked = await showDatePicker(
context: context,
initialDate: selectedDate,
firstDate: firstDate,
lastDate: lastDate,
initialEntryMode: DatePickerEntryMode.calendar,
);
if (picked != null) {
if (isFromDate) {
setState(() {
model.selectedFromDate = picked;
var date = picked.add(Duration(days: 1));
if (date.isBefore(lastDate)) {
model.selectedToDate = date;
} else
model.selectedToDate = lastDate;
});
} else {
setState(() {
model.selectedToDate = picked;
});
}
}
}
InputDecoration textFieldSelectorDecoration(
String hintText, String selectedText, bool isDropDown,
{Icon suffixIcon}) {
return InputDecoration(
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFEFEFEF), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFEFEFEF), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
hintText: selectedText != null ? selectedText : hintText,
suffixIcon: isDropDown
? suffixIcon != null
? suffixIcon
: Icon(
Icons.keyboard_arrow_down_sharp,
color: Color(0xff2E303A),
)
: null,
hintStyle: TextStyle(
fontSize: 13,
color: Color(0xff2E303A),
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
),
labelText: selectedText != null ? '$hintText\n$selectedText' : null,
labelStyle: TextStyle(
fontSize: 13,
color: Color(0xff2E303A),
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
),
);
}
}

@ -166,15 +166,21 @@ class ProfileGridForInPatient extends StatelessWidget {
DIABETIC_CHART_VALUES,
'assets/images/svgs/profile_screen/diabetic chart.svg',
isInPatient: isInpatient,
)
,
PatientProfileCardModel(
"VTE",
"Assessment",
VTE_ASSESSMENT,
'assets/images/svgs/profile_screen/diabetic chart.svg',
isInPatient: isInpatient,
),
),
PatientProfileCardModel(
"VTE",
"Assessment",
VTE_ASSESSMENT,
'assets/images/svgs/profile_screen/diabetic chart.svg',
isInPatient: isInpatient,
),
PatientProfileCardModel(
TranslationBase.of(context).pharmacy,
TranslationBase.of(context).intervention,
PHARMACY_INTERVENTION,
'assets/images/svgs/profile_screen/medical report.svg',
isInPatient: isInpatient,
),
];
return Padding(

@ -28,6 +28,10 @@ class AppDateUtils {
return '/Date(${DateFormat(dateFormat).parse(date).millisecondsSinceEpoch})/';
}
static String convertDateToServerFormat(DateTime date) {
return '/Date(${date.millisecondsSinceEpoch})/';
}
static convertDateFromServerFormat(String str, dateFormat) {
var date = getDateTimeFromServerFormat(str);

@ -1725,6 +1725,10 @@ class TranslationBase {
String get diabetic => localizedValues['diabetic'][locale.languageCode];
String get pharmacy => localizedValues['pharmacy'][locale.languageCode];
String get intervention => localizedValues['intervention'][locale.languageCode];
String get chart => localizedValues['chart'][locale.languageCode];
String get investigation =>

@ -489,6 +489,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.5.0"
flutter_datetime_picker:
dependency: "direct main"
description:
name: flutter_datetime_picker
url: "https://pub.dartlang.org"
source: hosted
version: "1.5.1"
flutter_device_type:
dependency: "direct main"
description:

@ -112,6 +112,7 @@ dependencies:
# Hijri
# hijri: ^2.0.3
hijri_picker: ^3.0.0
flutter_datetime_picker: ^1.5.1
# flutter_math_fork: ^0.6.0
# flutter_math_fork: ^0.6.0

Loading…
Cancel
Save