Merge branch 'patient_app_services' into 'development'

Patient app services

See merge request Cloud_Solution/doctor_app_flutter!547
merge-requests/548/merge
Mohammad Aljammal 5 years ago
commit 6007421629

@ -100,7 +100,7 @@ class BaseAppClient {
}); });
final int statusCode = response.statusCode; final int statusCode = response.statusCode;
if (statusCode < 200 || statusCode >= 400) { if (statusCode < 200 || statusCode >= 400) {
onFailure('Error While Fetching data', statusCode); onFailure(Helpers.generateContactAdminMsg(), statusCode);
} else { } else {
var parsed = json.decode(response.body.toString()); var parsed = json.decode(response.body.toString());

@ -0,0 +1,108 @@
class ReferralRequest {
String roomID;
String referralClinic;
String referralDoctor;
int createdBy;
int editedBy;
int patientID;
int patientTypeID;
int referringClinic;
int referringDoctor;
int projectID;
int admissionNo;
String referringDoctorRemarks;
String priority;
String frequency;
String extension;
int languageID;
String stamp;
String iPAdress;
double versionID;
int channel;
String tokenID;
String sessionID;
bool isLoginForDoctorApp;
bool patientOutSA;
ReferralRequest(
{this.roomID,
this.referralClinic,
this.referralDoctor,
this.createdBy,
this.editedBy,
this.patientID,
this.patientTypeID,
this.referringClinic,
this.referringDoctor,
this.projectID,
this.admissionNo,
this.referringDoctorRemarks,
this.priority,
this.frequency,
this.extension,
this.languageID,
this.stamp,
this.iPAdress,
this.versionID,
this.channel,
this.tokenID,
this.sessionID,
this.isLoginForDoctorApp,
this.patientOutSA});
ReferralRequest.fromJson(Map<String, dynamic> json) {
roomID = json['RoomID'];
referralClinic = json['ReferralClinic'];
referralDoctor = json['ReferralDoctor'];
createdBy = json['CreatedBy'];
editedBy = json['EditedBy'];
patientID = json['PatientID'];
patientTypeID = json['PatientTypeID'];
referringClinic = json['ReferringClinic'];
referringDoctor = json['ReferringDoctor'];
projectID = json['ProjectID'];
admissionNo = json['AdmissionNo'];
referringDoctorRemarks = json['ReferringDoctorRemarks'];
priority = json['Priority'];
frequency = json['Frequency'];
extension = json['Extension'];
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'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['RoomID'] = this.roomID;
data['ReferralClinic'] = this.referralClinic;
data['ReferralDoctor'] = this.referralDoctor;
data['CreatedBy'] = this.createdBy;
data['EditedBy'] = this.editedBy;
data['PatientID'] = this.patientID;
data['PatientTypeID'] = this.patientTypeID;
data['ReferringClinic'] = this.referringClinic;
data['ReferringDoctor'] = this.referringDoctor;
data['ProjectID'] = this.projectID;
data['AdmissionNo'] = this.admissionNo;
data['ReferringDoctorRemarks'] = this.referringDoctorRemarks;
data['Priority'] = this.priority;
data['Frequency'] = this.frequency;
data['Extension'] = this.extension;
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;
return data;
}
}

@ -1,48 +1,46 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/model/ReferralRequest.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart'; import 'package:doctor_app_flutter/core/service/base/base_service.dart';
class ReferralService extends BaseService { class ReferralService extends BaseService {
//TODO Jammal
Future referralPatient( Future referralPatient(
{String admissionNo, {int admissionNo,
String roomID, String roomID,
String referralClinic, int referralClinic,
String referralDoctor, int referralDoctor,
String patientID, int patientID,
String patientTypeID, int patientTypeID,
String referringClinic, int priority,
int frequency,
String referringDoctorRemarks, String referringDoctorRemarks,
String priority,String frequency,String extension}) async { String extension}) async {
await getDoctorProfile(); await getDoctorProfile();
hasError = false; ReferralRequest referralRequest = ReferralRequest();
Map<String, dynamic> body = Map(); referralRequest.admissionNo = admissionNo;
body['ProjectID'] = doctorProfile.projectID; referralRequest.roomID = roomID;
body['AdmissionNo'] = admissionNo; referralRequest.referralClinic = referralClinic.toString();
body['RoomID'] = roomID; referralRequest.referralDoctor = referralDoctor.toString();
body['ReferralClinic'] = referralClinic; referralRequest.patientID = patientID;
body['ReferralDoctor'] = referralDoctor; referralRequest.patientTypeID = patientTypeID;
body['CreatedBy'] = doctorProfile.doctorID; referralRequest.priority = priority.toString();
body['EditedBy'] = doctorProfile.doctorID; referralRequest.frequency = frequency.toString();
body['PatientID'] = patientID; referralRequest.referringDoctorRemarks = referringDoctorRemarks;
body['PatientTypeID'] = patientTypeID; referralRequest.referringClinic = doctorProfile.clinicID;
body['ReferringClinic'] = referringClinic; referralRequest.referringDoctor = doctorProfile.doctorID;
body['ReferringDoctor'] = doctorProfile.doctorID; referralRequest.extension = extension;
body['ReferringDoctorRemarks'] = referringDoctorRemarks; referralRequest.editedBy = doctorProfile.doctorID;
body['Priority'] = priority; referralRequest.createdBy = doctorProfile.doctorID;
body['Frequency'] = frequency; referralRequest.patientOutSA = false;
body['Extension'] = extension;
await baseAppClient.post( await baseAppClient.post(
REFER_TO_DOCTOR, REFER_TO_DOCTOR,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {},
},
onFailure: (String error, int statusCode) { onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, },
body: body, body: referralRequest.toJson(),
); );
} }
} }

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart'; import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/service/ReferralService.dart';
import 'package:doctor_app_flutter/core/service/patient-doctor-referral-service.dart'; import 'package:doctor_app_flutter/core/service/patient-doctor-referral-service.dart';
import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart';
import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
@ -16,6 +17,9 @@ class PatientReferralViewModel extends BaseViewModel {
PatientReferralService _referralPatientService = PatientReferralService _referralPatientService =
locator<PatientReferralService>(); locator<PatientReferralService>();
ReferralService _referralService =
locator<ReferralService>();
List<dynamic> get branchesList => _referralPatientService.projectsList; List<dynamic> get branchesList => _referralPatientService.projectsList;
List<dynamic> get clinicsList => _referralPatientService.clinicsList; List<dynamic> get clinicsList => _referralPatientService.clinicsList;
@ -173,7 +177,25 @@ class PatientReferralViewModel extends BaseViewModel {
String referralDate, String referralDate,
String remarks, String remarks,
String ext}) async { String ext}) async {
setState(ViewState.Busy);
await _referralService.referralPatient(
patientID: patient.patientId,
roomID: patient.roomId,
referralClinic: clinicID,
admissionNo: patient.appointmentNo,
referralDoctor: doctorID,
patientTypeID: patient.patientType,
referringDoctorRemarks:remarks,
priority: priority,
frequency: frequencyCode,
extension: ext,
);
if (_referralService.hasError) {
error = _referralService.error;
setState(ViewState.ErrorLocal);
} else {
setState(ViewState.Idle);
}
} }
Future getPatientDetails( Future getPatientDetails(

@ -16,6 +16,7 @@ import 'package:get_it/get_it.dart';
import 'core/service/InsuranceCardService.dart'; import 'core/service/InsuranceCardService.dart';
import 'core/service/PatientMuseService.dart'; import 'core/service/PatientMuseService.dart';
import 'core/service/ReferralService.dart';
import 'core/service/SOAP_service.dart'; import 'core/service/SOAP_service.dart';
import 'core/service/labs_service.dart'; import 'core/service/labs_service.dart';
import 'core/service/patient-admission-request-service.dart'; import 'core/service/patient-admission-request-service.dart';
@ -72,6 +73,7 @@ void setupLocator() {
locator.registerLazySingleton(() => InsuranceCardService()); locator.registerLazySingleton(() => InsuranceCardService());
locator.registerLazySingleton(() => RadiologyService()); locator.registerLazySingleton(() => RadiologyService());
locator.registerLazySingleton(() => PrescriptionsService()); locator.registerLazySingleton(() => PrescriptionsService());
locator.registerLazySingleton(() => ReferralService());
/// View Model /// View Model
locator.registerFactory(() => DoctorReplayViewModel()); locator.registerFactory(() => DoctorReplayViewModel());

@ -175,25 +175,25 @@ class PatiantInformtion {
startTime: json["startTime"], startTime: json["startTime"],
appointmentNo: json['appointmentNo'] ?? json['AppointmentNo'], appointmentNo: json['appointmentNo'] ?? json['AppointmentNo'],
appointmentType: json['appointmentType'], appointmentType: json['appointmentType'],
appointmentTypeId: json['appointmentTypeId'], appointmentTypeId: json['appointmentTypeId']?? json['appointmentTypeid'],
arrivedOn: json['arrivedOn'], arrivedOn: json['arrivedOn'],
clinicGroupId: json['clinicGroupId'], clinicGroupId: json['clinicGroupId'],
companyName: json['companyName'], companyName: json['companyName'],
dischargeStatus: json['dischargeStatus'], dischargeStatus: json['dischargeStatus'],
doctorDetails: json['doctorDetails'], doctorDetails: json['doctorDetails'],
endTime: json['endTime'], endTime: json['endTime'],
episodeNo: json['episodeNo'] ?? json['EpisodeID'], episodeNo: json['episodeNo'] ?? json['EpisodeID'] ?? json['EpisodeNo'],
fallRiskScore: json['fallRiskScore'], fallRiskScore: json['fallRiskScore'],
isSigned: json['isSigned'], isSigned: json['isSigned'],
medicationOrders: json['medicationOrders'], medicationOrders: json['medicationOrders'],
nationality: json['nationality'] ?? json['NationalityNameN'], nationality: json['nationality'] ?? json['NationalityNameN'],
patientMRN: json['patientMRN'] ?? json['PatientMRN'], patientMRN: json['patientMRN'] ?? json['PatientMRN'],
visitType: json['visitType'] ?? json['visitType'], visitType: json['visitType'] ?? json['visitType']?? json['visitType'],
nationalityFlagURL: nationalityFlagURL:
json['NationalityFlagURL'] ?? json['NationalityFlagURL'], json['NationalityFlagURL'] ?? json['NationalityFlagURL'],
patientStatusType: patientStatusType:
json['patientStatusType'] ?? json['patientStatusType'], json['patientStatusType'] ?? json['PatientStatusType'],
visitTypeId: json['visitTypeId'] ?? json['visitTypeId'], visitTypeId: json['visitTypeId'] ?? json['visitTypeId'] ?? json['visitTypeid'],
startTimes: json['StartTime'] ?? json['StartTime'], startTimes: json['StartTime'] ?? json['StartTime'],
); );
} }

@ -31,7 +31,7 @@ class LabsHomePage extends StatelessWidget {
arrivalType = routeArgs['arrivalType']; arrivalType = routeArgs['arrivalType'];
print(arrivalType); print(arrivalType);
return BaseView<ProcedureViewModel>( return BaseView<ProcedureViewModel>(
onModelReady: (model) => model.getLabs(patient,isArrived: (patientType != null && patientType == '7' && patient.patientStatusType == 43)), onModelReady: (model) => model.getLabs(patient,isArrived: ( patient.patientStatusType == 43)),
builder: (context, ProcedureViewModel model, widget) => AppScaffold( builder: (context, ProcedureViewModel model, widget) => AppScaffold(
baseViewModel: model, baseViewModel: model,
backgroundColor: Colors.grey[100], backgroundColor: Colors.grey[100],

@ -65,34 +65,24 @@ class PatientProfileScreen extends StatelessWidget {
IsLoginForDoctorApp: true, IsLoginForDoctorApp: true,
PatientOutSA: false); PatientOutSA: false);
if(patient.patientType ==1 || patient.admissionNo==null || patient.admissionNo =="0" ) { if (patientType == "1" &&
patientViewModel.getPatientList(patientReq, "1", isBusyLocal: false).then((response) { (patient.admissionNo == null ||
patient.admissionNo == "0")) {
patientViewModel
.getPatientList(patientReq, "1", isBusyLocal: false)
.then((response) {
if (response['MessageStatus'] == 1) { if (response['MessageStatus'] == 1) {
if (response['List_MyInPatient'] != null) { if (response['List_MyInPatient'] != null) {
List<PatiantInformtion> patientList = ModelResponse.fromJson(response['List_MyInPatient']).list;
List<PatiantInformtion> patientList =
ModelResponse.fromJson(response['List_MyInPatient'])
.list;
patient.admissionNo = patientList[0].admissionNo; patient.admissionNo = patientList[0].admissionNo;
patient.admissionDate = patientList[0].admissionDate; patient.admissionDate = patientList[0].admissionDate;
} else { } else {
DrAppToastMsg.showErrorToast('No patient'); DrAppToastMsg.showErrorToast('No patient');
} }
} }
}).catchError((error) { }).catchError((error) {
// setState(() { print(error);
// isLoading = false;
// });
Helpers.showErrorToast(error.message);
//DrAppToastMsg.showErrorToast(error);
}); });
} }
}, },
builder: (_, patientViewModel, w) => AppScaffold( builder: (_, patientViewModel, w) => AppScaffold(
@ -149,11 +139,9 @@ class PatientProfileScreen extends StatelessWidget {
], ],
), ),
), ),
if (int.parse(patientType) == 7 || if (patient.patientStatusType !=null && patient.patientStatusType == 43 )
int.parse(patientType) == 6)
BaseView<SOAPViewModel>( BaseView<SOAPViewModel>(
onModelReady: (model) async { onModelReady: (model) async {},
},
builder: (_, model, w) => Positioned( builder: (_, model, w) => Positioned(
top: 175, top: 175,
left: 20, left: 20,
@ -181,19 +169,25 @@ class PatientProfileScreen extends StatelessWidget {
), ),
onPressed: () async { onPressed: () async {
if (patient.patientStatusType == 43) { if (patient.patientStatusType == 43) {
PostEpisodeReqModel postEpisodeReqModel = PostEpisodeReqModel
postEpisodeReqModel =
PostEpisodeReqModel( PostEpisodeReqModel(
appointmentNo: appointmentNo:
patient.appointmentNo, patient.appointmentNo,
patientMRN: patient.patientMRN); patientMRN:
GifLoaderDialogUtils.showMyDialog(context); patient.patientMRN);
await model GifLoaderDialogUtils.showMyDialog(
.postEpisode(postEpisodeReqModel); context);
GifLoaderDialogUtils.hideDialog(context); await model.postEpisode(
postEpisodeReqModel);
GifLoaderDialogUtils.hideDialog(
context);
patient.episodeNo = model.episodeID; patient.episodeNo = model.episodeID;
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
CREATE_EPISODE, CREATE_EPISODE,
arguments: {'patient': patient}); arguments: {
'patient': patient
});
} }
}, },
), ),
@ -216,10 +210,13 @@ class PatientProfileScreen extends StatelessWidget {
height: 30, height: 30,
), ),
onPressed: () { onPressed: () {
if (patient.patientStatusType == 43) { if (patient.patientStatusType ==
43) {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
UPDATE_EPISODE, UPDATE_EPISODE,
arguments: {'patient': patient}); arguments: {
'patient': patient
});
} }
}), }),
], ],
@ -254,4 +251,3 @@ class AvatarWidget extends StatelessWidget {
); );
} }
} }

@ -383,11 +383,7 @@ class _PatientMakeInPatientReferralScreenState
AppTextFieldCustom( AppTextFieldCustom(
hintText: TranslationBase.of(context).ext, hintText: TranslationBase.of(context).ext,
controller: _extController, controller: _extController,
inputType: TextInputType.number, inputType: TextInputType.text,
inputFormatters: [
FilteringTextInputFormatter.allow(
RegExp(ONLY_NUMBERS))
],
), ),
SizedBox( SizedBox(
height: 10, height: 10,
@ -411,7 +407,7 @@ class _PatientMakeInPatientReferralScreenState
title: TranslationBase.of(context).refer, title: TranslationBase.of(context).refer,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
color: Color(0XFF359846), color: Color(0XFF359846),
onPressed: () { onPressed: () async{
setState(() { setState(() {
if (_referTo == null) { if (_referTo == null) {
branchError = branchError =
@ -449,9 +445,9 @@ class _PatientMakeInPatientReferralScreenState
_selectedClinic == null || _selectedClinic == null ||
_selectedDoctor == null || _selectedDoctor == null ||
_remarksController.text == null || _remarksController.text == null ||
_extController.text == null) return; _extController.text == null) return;{
model
.makeInPatientReferral( await model.makeInPatientReferral(
patient: patient, patient: patient,
projectID: _selectedBranch['facilityId'], projectID: _selectedBranch['facilityId'],
clinicID: _selectedClinic['ClinicID'], clinicID: _selectedClinic['ClinicID'],
@ -461,12 +457,15 @@ class _PatientMakeInPatientReferralScreenState
remarks: _remarksController.text, remarks: _remarksController.text,
priority: _activePriority, priority: _activePriority,
referralDate: appointmentDate referralDate: appointmentDate
) );
.then((_) { if(model.state == ViewState.ErrorLocal)
DrAppToastMsg.showSuccesToast( DrAppToastMsg.showErrorToast(model.error);
TranslationBase.of(context).referralSuccessMsg); else{
DrAppToastMsg.showSuccesToast(TranslationBase.of(context).referralSuccessMsg);
Navigator.pop(context); Navigator.pop(context);
}); }
}
}, },
), ),
) )

Loading…
Cancel
Save