first step from live care fixes

merge-requests/729/head
Elham Rababah 5 years ago
parent b1062dd537
commit 176c0ab97c

@ -11,6 +11,7 @@ class AlternativeService {
AlternativeService.fromJson(Map<String, dynamic> json) { AlternativeService.fromJson(Map<String, dynamic> json) {
serviceID = json['ServicID']; serviceID = json['ServicID'];
serviceName = json['ServiceName']; serviceName = json['ServiceName'];
isSelected = false;
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {

@ -18,7 +18,7 @@ class LiveCarePatientServices extends BaseService {
bool _isFinished = false; bool _isFinished = false;
bool _isLive = true; bool _isLive = false;
bool get isFinished => _isFinished; bool get isFinished => _isFinished;
@ -74,7 +74,7 @@ class LiveCarePatientServices extends BaseService {
}, body: startCallReq.toJson(), isLiveCare: _isLive); }, body: startCallReq.toJson(), isLiveCare: _isLive);
} }
Future endCallWithCharge(int vcID, String altServiceList) async { Future endCallWithCharge(int vcID, List<int> altServiceList) async {
hasError = false; hasError = false;
await baseAppClient.post(END_CALL_WITH_CHARGE, onSuccess: (dynamic response, int statusCode) { await baseAppClient.post(END_CALL_WITH_CHARGE, onSuccess: (dynamic response, int statusCode) {
endCallResponse = response; endCallResponse = response;
@ -84,6 +84,7 @@ class LiveCarePatientServices extends BaseService {
}, body: { }, body: {
"VC_ID": vcID, "VC_ID": vcID,
"AltServiceList": altServiceList, "AltServiceList": altServiceList,
"generalid":GENERAL_ID
}, isLiveCare: _isLive); }, isLiveCare: _isLive);
} }
@ -110,7 +111,7 @@ class LiveCarePatientServices extends BaseService {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, body: { }, body: {
"VC_ID": vcID, "VC_ID": vcID, "generalid": GENERAL_ID
}, isLiveCare: _isLive); }, isLiveCare: _isLive);
} }
@ -140,6 +141,7 @@ class LiveCarePatientServices extends BaseService {
super.error = error; super.error = error;
}, body: { }, body: {
"VC_ID": vcID, "VC_ID": vcID,
"generalid": GENERAL_ID
}, isLiveCare: _isLive); }, isLiveCare: _isLive);
} }
} }

@ -101,13 +101,13 @@ class LiveCarePatientViewModel extends BaseViewModel {
Future endCallWithCharge(int vcID, bool isConfirmed) async { Future endCallWithCharge(int vcID, bool isConfirmed) async {
setState(ViewState.BusyLocal); setState(ViewState.BusyLocal);
String selectedServicesString = ""; List<int> selectedServices = [];
if (isConfirmed) { if (isConfirmed) {
selectedServicesString = getSelectedAlternativeServices(); selectedServices = getSelectedAlternativeServices();
} }
await _liveCarePatientServices.endCallWithCharge( await _liveCarePatientServices.endCallWithCharge(
vcID, selectedServicesString); vcID, selectedServices);
if (_liveCarePatientServices.hasError) { if (_liveCarePatientServices.hasError) {
error = _liveCarePatientServices.error; error = _liveCarePatientServices.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);
@ -117,14 +117,14 @@ class LiveCarePatientViewModel extends BaseViewModel {
} }
} }
String getSelectedAlternativeServices() { List<int> getSelectedAlternativeServices() {
List<int> selectedServices = List(); List<int> selectedServices = List();
for (AlternativeService service in alternativeServicesList) { for (AlternativeService service in alternativeServicesList) {
if (service.isSelected) { if (service.isSelected) {
selectedServices.add(service.serviceID); selectedServices.add(service.serviceID);
} }
} }
return selectedServices.toString(); return selectedServices;
} }
Future getAlternativeServices(int vcID) async { Future getAlternativeServices(int vcID) async {

@ -1,56 +1,56 @@
class StartCallReq { class StartCallReq {
int vCID; String clincName;
bool isrecall; int clinicId;
String tokenID; String docSpec;
String generalid; String docotrName;
int doctorId; int doctorId;
String generalid;
bool isOutKsa; bool isOutKsa;
bool isrecall;
String projectName; String projectName;
String docotrName; String tokenID;
String clincName; int vCID;
String docSpec;
int clinicId;
StartCallReq( StartCallReq(
{this.vCID, {this.clincName,
this.isrecall, this.clinicId,
this.tokenID, this.docSpec,
this.generalid, this.docotrName,
this.doctorId, this.doctorId,
this.generalid,
this.isOutKsa, this.isOutKsa,
this.isrecall,
this.projectName, this.projectName,
this.docotrName, this.tokenID,
this.clincName, this.vCID});
this.docSpec,
this.clinicId});
StartCallReq.fromJson(Map<String, dynamic> json) { StartCallReq.fromJson(Map<String, dynamic> json) {
vCID = json['VC_ID']; clincName = json['clincName'];
isrecall = json['isrecall']; clinicId = json['ClinicId'];
tokenID = json['TokenID']; docSpec = json['Doc_Spec'];
generalid = json['generalid']; docotrName = json['DocotrName'];
doctorId = json['DoctorId']; doctorId = json['DoctorId'];
generalid = json['generalid'];
isOutKsa = json['IsOutKsa']; isOutKsa = json['IsOutKsa'];
isrecall = json['isrecall'];
projectName = json['projectName']; projectName = json['projectName'];
docotrName = json['DocotrName']; tokenID = json['TokenID'];
clincName = json['clincName']; vCID = json['VC_ID'];
docSpec = json['Doc_Spec'];
clinicId = json['ClinicId'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = new Map<String, dynamic>();
data['VC_ID'] = this.vCID; data['clincName'] = this.clincName;
data['isrecall'] = this.isrecall; data['ClinicId'] = this.clinicId;
data['TokenID'] = this.tokenID; data['Doc_Spec'] = this.docSpec;
data['generalid'] = this.generalid; data['DocotrName'] = this.docotrName;
data['DoctorId'] = this.doctorId; data['DoctorId'] = this.doctorId;
data['generalid'] = this.generalid;
data['IsOutKsa'] = this.isOutKsa; data['IsOutKsa'] = this.isOutKsa;
data['isrecall'] = this.isrecall;
data['projectName'] = this.projectName; data['projectName'] = this.projectName;
data['DocotrName'] = this.docotrName; data['TokenID'] = this.tokenID;
data['clincName'] = this.clincName; data['VC_ID'] = this.vCID;
data['Doc_Spec'] = this.docSpec;
data['ClinicId'] = this.clinicId;
return data; return data;
} }
} }

@ -36,11 +36,10 @@ class HomePatientCard extends StatelessWidget {
Expanded( Expanded(
child: Stack( child: Stack(
children: [ children: [
Positioned( Container(
bottom: 0.1, margin: EdgeInsets.only(top: 18, left: 10),
right: 0.5, color:Colors.transparent,
width: 23.0,
height: 25.0,
child: Icon( child: Icon(
cardIcon, cardIcon,
size: iconSize * 2, size: iconSize * 2,

@ -329,7 +329,7 @@ class _HomeScreenState extends State<HomeScreen> {
backgroundIconColor: backgroundIconColors[colorIndex], backgroundIconColor: backgroundIconColors[colorIndex],
cardIcon: DoctorApp.livecare, cardIcon: DoctorApp.livecare,
textColor: textColors[colorIndex], textColor: textColors[colorIndex],
iconSize: 24, iconSize: 21,
text: text:
"${TranslationBase.of(context).liveCare}\n${TranslationBase.of(context).patients}", "${TranslationBase.of(context).liveCare}\n${TranslationBase.of(context).patients}",
onTap: () { onTap: () {

@ -142,25 +142,22 @@ class _EndCallScreenState extends State<EndCallScreen> {
'patient/health_summary.png', 'patient/health_summary.png',
onTap: () { onTap: () {
Helpers.showConfirmationDialog(context, Helpers.showConfirmationDialog(context,
"${TranslationBase.of(context).areYouSureYouWantTo} ${TranslationBase.of(context).sendLC}${TranslationBase.of(context).instruction} ?", "${TranslationBase.of(context).areYouSureYouWantTo} ${TranslationBase.of(context).sendLC} ${TranslationBase.of(context).instruction} ?",
() async { () async {
Navigator.of(context).pop(); Navigator.of(context).pop();
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
liveCareModel.sendSMSInstruction(widget.patient.vcId); await liveCareModel.sendSMSInstruction(widget.patient.vcId);
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (liveCareModel.state == ViewState.ErrorLocal) { if (liveCareModel.state == ViewState.ErrorLocal) {
DrAppToastMsg.showErrorToast(liveCareModel.error); DrAppToastMsg.showErrorToast(liveCareModel.error);
} else { } else {
DrAppToastMsg.showSuccesToast("You successfully sent SMS instructions"); DrAppToastMsg.showSuccesToast("You successfully sent SMS instructions");
Navigator.of(context).pop();
Navigator.of(context).pop();
Navigator.of(context).pop();
} }
}); });
}, },
isInPatient: isInpatient, isInPatient: isInpatient,
isDartIcon: true, isDartIcon: true,
isDisable: true, // isDisable: true,
dartIcon: DoctorApp.send_instruction), dartIcon: DoctorApp.send_instruction),
PatientProfileCardModel( PatientProfileCardModel(
TranslationBase.of(context).transferTo, TranslationBase.of(context).transferTo,

@ -120,7 +120,7 @@ class _LivaCareTransferToAdminState extends State<LivaCareTransferToAdmin> {
() async { () async {
Navigator.of(context).pop(); Navigator.of(context).pop();
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
model.transferToAdmin(widget.patient.vcId, noteController.text); await model.transferToAdmin(widget.patient.vcId, noteController.text);
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (model.state == ViewState.ErrorLocal) { if (model.state == ViewState.ErrorLocal) {
DrAppToastMsg.showErrorToast(model.error); DrAppToastMsg.showErrorToast(model.error);

@ -31,7 +31,7 @@ class _LiveCarePatientScreenState extends State<LiveCarePatientScreen> {
super.initState(); super.initState();
timer = Timer.periodic(Duration(seconds: 10), (Timer t) { timer = Timer.periodic(Duration(seconds: 10), (Timer t) {
if (_liveCareViewModel != null) { if (_liveCareViewModel != null) {
_liveCareViewModel.getPendingPatientERForDoctorApp(isFromTimer: true); // _liveCareViewModel.getPendingPatientERForDoctorApp(isFromTimer: true);
} }
}); });
} }

@ -1,18 +1,13 @@
import 'package:doctor_app_flutter/config/config.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/viewModel/LiveCarePatientViewModel.dart'; import 'package:doctor_app_flutter/core/viewModel/LiveCarePatientViewModel.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/PostEpisodeReqModel.dart'; import 'package:doctor_app_flutter/models/SOAP/PostEpisodeReqModel.dart';
import 'package:doctor_app_flutter/models/livecare/session_status_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/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/live_care/end_call_screen.dart'; import 'package:doctor_app_flutter/screens/live_care/end_call_screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart'; import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart';
import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_other.dart'; import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_other.dart';
import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_search.dart'; import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_search.dart';
import 'package:doctor_app_flutter/util/VideoChannel.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/patients/profile/patient-profile-header-new-design-app-bar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
@ -159,10 +154,11 @@ class _PatientProfileScreenState extends State<PatientProfileScreen>
], ],
), ),
), ),
], ],
), ),
if (patient.patientStatusType != null && if (isFromLiveCare
? patient.episodeNo != null
: patient.patientStatusType != null &&
patient.patientStatusType == 43) patient.patientStatusType == 43)
BaseView<SOAPViewModel>( BaseView<SOAPViewModel>(
onModelReady: (model) async {}, onModelReady: (model) async {},
@ -177,7 +173,9 @@ class _PatientProfileScreenState extends State<PatientProfileScreen>
AppButton( AppButton(
title: title:
"${TranslationBase.of(context).createNew}\n${TranslationBase.of(context).episode}", "${TranslationBase.of(context).createNew}\n${TranslationBase.of(context).episode}",
color: patient.patientStatusType == 43 color: isFromLiveCare
? Colors.red.shade700
: patient.patientStatusType == 43
? Colors.red.shade700 ? Colors.red.shade700
: Colors.grey.shade700, : Colors.grey.shade700,
fontColor: Colors.white, fontColor: Colors.white,
@ -192,7 +190,10 @@ class _PatientProfileScreenState extends State<PatientProfileScreen>
height: 30, height: 30,
), ),
onPressed: () async { onPressed: () async {
if (patient.patientStatusType == if ((isFromLiveCare &&
patient.appointmentNo != null &&
patient.appointmentNo != 0) ||
patient.patientStatusType ==
43) { 43) {
PostEpisodeReqModel PostEpisodeReqModel
postEpisodeReqModel = postEpisodeReqModel =
@ -220,9 +221,16 @@ class _PatientProfileScreenState extends State<PatientProfileScreen>
if (patient.episodeNo != 0) if (patient.episodeNo != 0)
AppButton( AppButton(
title: title:
"${TranslationBase.of(context).update}\n${TranslationBase.of(context).episode}", "${TranslationBase
.of(context)
.update}\n${TranslationBase
.of(context)
.episode}",
color: color:
patient.patientStatusType == 43 isFromLiveCare
? Colors.red.shade700
: patient.patientStatusType ==
43
? Colors.red.shade700 ? Colors.red.shade700
: Colors.grey.shade700, : Colors.grey.shade700,
fontColor: Colors.white, fontColor: Colors.white,
@ -237,7 +245,11 @@ class _PatientProfileScreenState extends State<PatientProfileScreen>
height: 30, height: 30,
), ),
onPressed: () { onPressed: () {
if (patient.patientStatusType == if ((isFromLiveCare &&
patient.appointmentNo !=
null &&
patient.appointmentNo != 0) ||
patient.patientStatusType ==
43) { 43) {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
UPDATE_EPISODE, UPDATE_EPISODE,
@ -283,65 +295,70 @@ class _PatientProfileScreenState extends State<PatientProfileScreen>
TranslationBase.of(context).initiateCall, TranslationBase.of(context).initiateCall,
disabled: model.state == ViewState.BusyLocal, disabled: model.state == ViewState.BusyLocal,
onPressed: () async { onPressed: () async {
if(isCallFinished) {
Navigator.push(context, MaterialPageRoute( Navigator.push(context, MaterialPageRoute(
builder: (BuildContext context) => builder: (BuildContext context) =>
EndCallScreen(patient:patient))); EndCallScreen(patient:patient)));
} else {
GifLoaderDialogUtils.showMyDialog(context);
await model.startCall( isReCall : false, vCID: patient.vcId);
if(model.state == ViewState.ErrorLocal) {
GifLoaderDialogUtils.hideDialog(context);
Helpers.showErrorToast(model.error);
} else {
await model.getDoctorProfile();
patient.appointmentNo = model.startCallRes.appointmentNo;
patient.episodeNo = 0;
GifLoaderDialogUtils.hideDialog(context); // if(isCallFinished) {
await VideoChannel.openVideoCallScreen( // Navigator.push(context, MaterialPageRoute(
kToken: model.startCallRes.openTokenID, // builder: (BuildContext context) =>
kSessionId: model.startCallRes.openSessionID, // EndCallScreen(patient:patient)));
kApiKey: '46209962', // } else {
vcId: patient.vcId, // GifLoaderDialogUtils.showMyDialog(context);
tokenID: await model.getToken(), // await model.startCall( isReCall : false, vCID: patient.vcId);
generalId: GENERAL_ID, //
doctorId: model.doctorProfile.doctorID, // if(model.state == ViewState.ErrorLocal) {
onFailure: (String error) { // GifLoaderDialogUtils.hideDialog(context);
DrAppToastMsg.showErrorToast(error); // Helpers.showErrorToast(model.error);
}, // } else {
onCallEnd: () { // await model.getDoctorProfile();
WidgetsBinding.instance.addPostFrameCallback((_) { // patient.appointmentNo = model.startCallRes.appointmentNo;
GifLoaderDialogUtils.showMyDialog(context); // patient.episodeNo = 0;
model.endCall(patient.vcId, false,).then((value) { //
GifLoaderDialogUtils.hideDialog(context); // GifLoaderDialogUtils.hideDialog(context);
if (model.state == ViewState.ErrorLocal) { // await VideoChannel.openVideoCallScreen(
DrAppToastMsg.showErrorToast(model.error); // kToken: model.startCallRes.openTokenID,
} // kSessionId: model.startCallRes.openSessionID,
setState(() { // kApiKey: '46209962',
isCallFinished = true; // vcId: patient.vcId,
}); // tokenID: await model.getToken(),
}); // generalId: GENERAL_ID,
}); // doctorId: model.doctorProfile.doctorID,
}, // onFailure: (String error) {
onCallNotRespond: (SessionStatusModel sessionStatusModel) { // DrAppToastMsg.showErrorToast(error);
WidgetsBinding.instance.addPostFrameCallback((_) { // },
GifLoaderDialogUtils.showMyDialog(context); // onCallEnd: () {
model.endCall(patient.vcId, sessionStatusModel.sessionStatus == 3,).then((value) { // WidgetsBinding.instance.addPostFrameCallback((_) {
GifLoaderDialogUtils.hideDialog(context); // GifLoaderDialogUtils.showMyDialog(context);
if (model.state == ViewState.ErrorLocal) { // model.endCall(patient.vcId, false,).then((value) {
DrAppToastMsg.showErrorToast(model.error); // GifLoaderDialogUtils.hideDialog(context);
} // if (model.state == ViewState.ErrorLocal) {
setState(() { // DrAppToastMsg.showErrorToast(model.error);
isCallFinished = true; // }
}); // setState(() {
}); // isCallFinished = true;
// });
}); // });
}); // });
} // },
} // onCallNotRespond: (SessionStatusModel sessionStatusModel) {
// WidgetsBinding.instance.addPostFrameCallback((_) {
// GifLoaderDialogUtils.showMyDialog(context);
// model.endCall(patient.vcId, sessionStatusModel.sessionStatus == 3,).then((value) {
// GifLoaderDialogUtils.hideDialog(context);
// if (model.state == ViewState.ErrorLocal) {
// DrAppToastMsg.showErrorToast(model.error);
// }
// setState(() {
// isCallFinished = true;
// });
// });
//
// });
// });
// }
// }
}, },
), ),

Loading…
Cancel
Save