working with admission request and some changes in vital signs

merge-requests/210/head
mosazaid 4 years ago
parent f35eff1220
commit 433b2933c4

@ -375,4 +375,7 @@ const Map<String, Map<String, String>> localizedValues = {
'fio2': {'en': "FIO2(%)", 'ar': 'FIO2(%)'},
'sao2': {'en': "SAO2(%)", 'ar': 'SAO2(%)'},
'painManagement': {'en': "Pain Management", 'ar': 'إدارة الألم'},
'admission': {'en': "Admission", 'ar': 'قبول'},
'request': {'en': "Request", 'ar': 'طلب'},
'admissionRequest': {'en': "Admission Request", 'ar': 'طلب قبول'},
};

@ -0,0 +1,5 @@
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
class AdmissionRequestService extends BaseService {
}

@ -0,0 +1,9 @@
import 'package:doctor_app_flutter/core/service/admission-request-service.dart';
import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart';
import '../../locator.dart';
class AdmissionRequestViewModel extends BaseViewModel{
AdmissionRequestService _admissionRequestService = locator<AdmissionRequestService>();
}

@ -18,14 +18,16 @@ class VitalSignsViewModel extends BaseViewModel {
Future getPatientArrivalList(String date, PatiantInformtion patient,
{String fromDate}) async {
setState(ViewState.Busy);
// TODO when arrival list work un comment below lines
/* setState(ViewState.Busy);
await _vitalSignService.getPatientArrivalList(date, fromDate: fromDate);
if (_vitalSignService.hasError) {
error = _vitalSignService.error;
setState(ViewState.Error);
} else {
await getPatientVitalSign(patient);
}
}*/
makeVitalSignDemoData();
}
PatientArrivalEntity getPatientAppointmentEntity(PatiantInformtion patient) {
@ -60,41 +62,73 @@ class VitalSignsViewModel extends BaseViewModel {
setState(ViewState.Error);
} else {
if (patientVitalSigns == null) {
_vitalSignService.patientVitalSigns = VitalSignData(
appointmentNo: 2016053265,
bloodPressureCuffLocation: 0,
bloodPressureCuffSize: 0,
bloodPressureHigher: 38,
bloodPressureLower: 32,
bloodPressurePatientPosition: 1,
bodyMassIndex: 31.11,
fio2: 0,
headCircumCm: 0,
heightCm: 150,
idealBodyWeightLbs: -2,
isPainManagementDone: false,
isVitalsRequired: true,
leanBodyWeightLbs: 0,
painCharacter: null,
painDuration: null,
painFrequency: null,
painLocation: null,
painScore: 0,
patientMRN: 3333274,
patientType: 1,
pulseBeatPerMinute: 0,
pulseRhythm: 0,
respirationBeatPerMinute: 0,
respirationPattern: 0,
sao2: 0,
status: 47,
temperatureCelcius: 40,
temperatureCelciusMethod: 1,
waistSizeInch: 39,
weightKg: 70,
);
makeVitalSignDemoData();
}
setState(ViewState.Idle);
}
}
makeVitalSignDemoData(){
_vitalSignService.patientVitalSigns = VitalSignData(
appointmentNo: 2016053265,
bloodPressureCuffLocation: 0,
bloodPressureCuffSize: 0,
bloodPressureHigher: 38,
bloodPressureLower: 32,
bloodPressurePatientPosition: 1,
bodyMassIndex: 31.11,
fio2: 0,
headCircumCm: 0,
heightCm: 150,
idealBodyWeightLbs: -2,
isPainManagementDone: false,
isVitalsRequired: true,
leanBodyWeightLbs: 0,
painCharacter: null,
painDuration: null,
painFrequency: null,
painLocation: null,
painScore: 0,
patientMRN: 3333274,
patientType: 1,
pulseBeatPerMinute: 0,
pulseRhythm: 0,
respirationBeatPerMinute: 0,
respirationPattern: 0,
sao2: 0,
status: 47,
temperatureCelcius: 40,
temperatureCelciusMethod: 1,
waistSizeInch: 39,
weightKg: 70,
);
}
String getBMI(double bodyMassIndex) {
if (bodyMassIndex <= 18.5) {
return "Underweight";
} else if (bodyMassIndex <= 25.0) {
return "Normal";
} else if (bodyMassIndex <= 30) {
return "Overweight";
} else { // > 30.0
return "Obese";
}
}
String getTempratureMethod(int temperatureCelciusMethod){
// temperatureCelciusMethod ( vital sign response field )- master 2005
if(temperatureCelciusMethod == 1){
return "Oral";
} else if(temperatureCelciusMethod == 2){
return "Axilla";
} else if(temperatureCelciusMethod == 3){
return "Rectal";
} else if(temperatureCelciusMethod == 4){
return "Tympanic";
} else if(temperatureCelciusMethod == 5){
return "Temporal";
}
}
}

@ -11,6 +11,7 @@ import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart';
import 'package:get_it/get_it.dart';
import 'core/service/SOAP_service.dart';
import 'core/service/admission-request-service.dart';
import 'core/service/doctor_reply_service.dart';
import 'core/service/medicine_service.dart';
import 'core/service/patient-vital-signs-service.dart';
@ -21,6 +22,7 @@ import 'core/service/schedule_service.dart';
import 'core/viewModel/SOAP_view_model.dart';
import 'core/viewModel/doctor_replay_view_model.dart';
import 'core/viewModel/medicine_view_model.dart';
import 'core/viewModel/patient-admission-request-viewmodel.dart';
import 'core/viewModel/patient-vital-sign-viewmodel.dart';
import 'core/viewModel/patient-referral-viewmodel.dart';
import 'core/viewModel/referral_view_model.dart';
@ -45,6 +47,7 @@ void setupLocator() {
locator.registerLazySingleton(() => PrescriptionService());
locator.registerLazySingleton(() => ProcedureService());
locator.registerLazySingleton(() => VitalSignsService());
locator.registerLazySingleton(() => AdmissionRequestService());
/// View Model
locator.registerFactory(() => DoctorReplayViewModel());
@ -60,4 +63,5 @@ void setupLocator() {
locator.registerFactory(() => PrescriptionViewModel());
locator.registerFactory(() => ProcedureViewModel());
locator.registerFactory(() => VitalSignsViewModel());
locator.registerFactory(() => AdmissionRequestViewModel());
}

@ -41,6 +41,7 @@ import './screens/settings/settings_screen.dart';
import 'landing_page.dart';
import 'screens/doctor/doctor_reply_screen.dart';
import 'screens/live_care/panding_list.dart';
import 'screens/patients/profile/admission-request/admission-request-detail-screen.dart';
import 'screens/patients/profile/referral/my-referral-detail-screen.dart';
import 'screens/patients/profile/referral/refer-patient-screen.dart';
import 'screens/prescription/prescription_screen.dart';
@ -81,6 +82,7 @@ const String PATIENT_INSURANCE_APPROVALS =
const String VITAL_SIGN_DETAILS = 'patients/vital-sign-details';
const String CREATE_EPISODE = 'patients/create-episode';
const String PATIENT_VITAL_SIGN = 'patients/vital-sign-data';
const String PATIENT_ADMISSION_REQUEST = 'patients/admission-request';
const String BODY_MEASUREMENTS = 'patients/body-measurements';
const String IN_PATIENT_PRESCRIPTIONS_DETAILS = 'patients/prescription-details';
@ -124,6 +126,7 @@ var routes = {
PATIENT_INSURANCE_APPROVALS: (_) => InsuranceApprovalsScreen(),
VITAL_SIGN_DETAILS: (_) => VitalSignDetailsScreen(),
PATIENT_VITAL_SIGN: (_) => PatientVitalSignScreen(),
PATIENT_ADMISSION_REQUEST: (_) => AdmissionRequestDetailScreen(),
CREATE_EPISODE: (_) => AddSOAPIndex(),
BODY_MEASUREMENTS: (_) => VitalSignItemDetailsScreen(),
IN_PATIENT_PRESCRIPTIONS_DETAILS: (_) => InpatientPrescriptionDetailsScreen(),

@ -0,0 +1,49 @@
import 'package:doctor_app_flutter/core/viewModel/patient-admission-request-viewmodel.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/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
class AdmissionRequestDetailScreen extends StatefulWidget {
@override
_AdmissionRequestDetailScreenState createState() => _AdmissionRequestDetailScreenState();
}
class _AdmissionRequestDetailScreenState extends State<AdmissionRequestDetailScreen> {
@override
Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient'];
return BaseView<AdmissionRequestViewModel>(
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).admissionRequest,
body: Column(
children: [
SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
PatientPageHeaderWidget(patient),
],
),
),
Container(
margin: EdgeInsets.symmetric(horizontal: 16, vertical: 8),
child: AppButton(
title: TranslationBase.of(context).refer,
color: HexColor("#B8382B"),
onPressed: null,
),
),
],
),
),
);
}
}

@ -207,6 +207,21 @@ class PatientVitalSignScreen extends StatelessWidget {
color: Colors.grey.shade800,
fontWeight: FontWeight.normal,
),
SizedBox(
width: 8,
),
Container(
color: Colors.green,
child: Padding(
padding: EdgeInsets.symmetric(vertical: 2, horizontal: 8),
child: AppText(
"${model.getBMI(model.patientVitalSigns.bodyMassIndex)}",
fontSize: SizeConfig.textMultiplier * 2,
color: Colors.white,
fontWeight: FontWeight.bold,
),
),
)
],
),
],
@ -251,7 +266,7 @@ class PatientVitalSignScreen extends StatelessWidget {
SizedBox(
height: 16,
),
TemperatureWidget(model.patientVitalSigns),
TemperatureWidget(model, model.patientVitalSigns),
SizedBox(
height: 16,
),
@ -349,9 +364,10 @@ class PatientVitalSignScreen extends StatelessWidget {
}
class TemperatureWidget extends StatefulWidget {
final VitalSignsViewModel model;
final VitalSignData vitalSign;
TemperatureWidget(this.vitalSign);
TemperatureWidget(this.model, this.vitalSign);
@override
_TemperatureWidgetState createState() => _TemperatureWidgetState();
@ -450,7 +466,7 @@ class _TemperatureWidgetState extends State<TemperatureWidget> {
width: 8,
),
AppText(
"${widget.vitalSign.temperatureCelciusMethod}",
"${widget.model.getTempratureMethod(widget.vitalSign.temperatureCelciusMethod)}",
fontSize: SizeConfig.textMultiplier * 2,
color: Colors.grey.shade800,
fontWeight: FontWeight.normal,

@ -412,6 +412,9 @@ class TranslationBase {
String get fio2 => localizedValues['fio2'][locale.languageCode];
String get sao2 => localizedValues['sao2'][locale.languageCode];
String get painManagement => localizedValues['painManagement'][locale.languageCode];
String get admission => localizedValues['admission'][locale.languageCode];
String get request => localizedValues['request'][locale.languageCode];
String get admissionRequest => localizedValues['admissionRequest'][locale.languageCode];
}
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -75,10 +75,17 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
PatientProfileButton(
key: key,
patient: patient,
route: PATIENT_INSURANCE_APPROVALS,
nameLine1: TranslationBase.of(context).insurance,
nameLine2: TranslationBase.of(context).approvals,
icon: 'lab.png'),
route: PATIENT_ADMISSION_REQUEST,
nameLine1: TranslationBase.of(context).admission,
nameLine2: TranslationBase.of(context).request,
icon: 'heartbeat.png'),
// PatientProfileButton(
// key: key,
// patient: patient,
// route: PATIENT_INSURANCE_APPROVALS,
// nameLine1: TranslationBase.of(context).insurance,
// nameLine2: TranslationBase.of(context).approvals,
// icon: 'lab.png'),
PatientProfileButton(
key: key,
patient: patient,

Loading…
Cancel
Save