live care done.

flutter_3.16.0_zoom
sultan khan 10 months ago
parent cc0450a188
commit f7e378ba4a

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

@ -0,0 +1,22 @@
export const icons = {
chatSend: require('./chat-send.png'),
defaultAvatar: require('./default-avatar.png'),
locked: require('./locked.png'),
more: require('./more.png'),
mute: require('./mute.png'),
muted: require('./muted.png'),
shareOn: require('./share-on.png'),
shareOff: require('./share-off.png'),
speakerOn: require('./speaker-on.png'),
speakerOff: require('./speaker-off.png'),
switchCamera: require('./switch-camera.png'),
hamburger: require('./hamburger.png'),
questionBalloon: require('./question-ballon.png'),
talking: require('./talking.png'),
unmute: require('./unmute.png'),
unlocked: require('./unlocked.png'),
videoOn: require('./video-on.png'),
videoOff: require('./video-off.png'),
};
export type IconTypes = keyof typeof icons;

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

@ -6,10 +6,11 @@ const ONLY_LETTERS = "[a-zA-Z &'\"]";
const ONLY_DATE = "[0-9/]";
// const BASE_URL_LIVE_CARE = 'https://livecare.hmg.com/';
const DOCTOR_ROTATION = 'https://doctorrota.hmg.com/';
const BASE_URL_LIVE_CARE = 'https://livecareuat.hmg.com/';
const BASE_URL = 'https://hmgwebservices.com/';
// const BASE_URL_LIVE_CARE = 'https://livecareuat.hmg.com/';
const BASE_URL_LIVE_CARE = 'https://uat.hmgwebservices.com/';
// const BASE_URL = 'https://hmgwebservices.com/';
// const BASE_URL = 'http://10.20.200.111:1010/';
// const BASE_URL = 'https://uat.hmgwebservices.com/';
const BASE_URL = 'https://uat.hmgwebservices.com/';
// const BASE_URL = 'https://webservices.hmg.com/';

@ -40,7 +40,7 @@ class LiveCarePatientServices extends BaseService {
GET_PENDING_PATIENT_ER_FOR_DOCTOR_APP,
onSuccess: (dynamic response, int statusCode) {
List<PatiantInformtion> localPatientList = [];
_patientList =[];
response['List_PendingPatientList'].forEach((v) {
localPatientList.add(PatiantInformtion.fromJson(v));
});

@ -269,4 +269,7 @@ class LiveCarePatientViewModel extends BaseViewModel {
setState(ViewState.Idle);
}
}
}

@ -74,7 +74,7 @@ class _HomeScreenState extends State<HomeScreen> {
model.startHomeScreenServices(projectsProvider, authenticationViewModel).then((value) {
if (model.radiologyCriticalFindingModel != null) {
print("onModelReady radiologyCriticalFindingModel!!!");
showRadiologyFindingDialog(model);
// showRadiologyFindingDialog(model);
} else {
print("onModelReady radiologyCriticalFindingModel EMPTYYYY!!!");
}
@ -107,22 +107,22 @@ class _HomeScreenState extends State<HomeScreen> {
Column(children: <Widget>[
InkWell(onTap: (){
AppPermissionsUtils.requestVideoCallPermission(
context: context,
onTapGrant: () {
Navigator.pushNamed(
context,
"zoom-call",
arguments: CallArguments("ZoomTestHMG", "123", "Doctor", "40", "0", true),
);
});
},
child: Text("Zoom Call"),
),
//
// InkWell(onTap: (){
// AppPermissionsUtils.requestVideoCallPermission(
// context: context,
// onTapGrant: () {
// Navigator.pushNamed(
// context,
// "zoom-call",
// arguments: CallArguments("ZoomTestHMG", "123", "Doctor", "40", "0", true),
// );
//
// });
//
// },
// child: Text("Zoom Call"),
// ),
ProfileWelcomeWidget(
Row(
mainAxisAlignment: MainAxisAlignment.start,

@ -34,9 +34,9 @@ class _ProgressNoteState extends State<DiagnosisScreen> {
{bool isLocalBusy = false}) async {
final routeArgs = ModalRoute.of(context)!.settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient'];
String type = await sharedPref.getString(SLECTED_PATIENT_TYPE);
print(type);
// String type = await sharedPref.getString(SLECTED_PATIENT_TYPE);
//
// print(type);
GetDiagnosisForInPatientRequestModel getDiagnosisForInPatientRequestModel =
GetDiagnosisForInPatientRequestModel(
admissionNo: int.parse(patient.admissionNo!),

@ -3,6 +3,7 @@ import 'dart:async';
import 'package:doctor_app_flutter/config/config.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/PatientRegistration/GetPatientInfoRequestModel.dart';
import 'package:doctor_app_flutter/core/model/SOAP/in_patient/post_episode_for_Inpatient_request_model.dart';
import 'package:doctor_app_flutter/core/model/SOAP/post_episode_req_model.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
@ -21,8 +22,11 @@ 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/patients/profile/app_bar/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_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:hexcolor/hexcolor.dart';
@ -31,6 +35,7 @@ import 'package:quiver/async.dart';
import '../../../../locator.dart';
import '../../../../routes.dart';
import '../../../video_call_zoom/zoom_video_call.dart';
class PatientProfileScreen extends StatefulWidget {
@override
@ -59,7 +64,8 @@ class _PatientProfileScreenState extends State<PatientProfileScreen> with Single
late TabController _tabController;
int index = 0;
int _activeTab = 0;
String noteValidation ="";
TextEditingController noteController = TextEditingController();
late StreamController<String> videoCallDurationStreamController;
late Stream<String> videoCallDurationStream;
@ -356,18 +362,33 @@ class _PatientProfileScreenState extends State<PatientProfileScreen> with Single
Utils.showErrorToast(model.error);
} else {
await model.getDoctorProfile();
patient.appointmentNo = int.parse(model.startCallRes!.appointmentNo.toString());
patient.appointmentNo = int.parse(model.startCallRes!.appointmentNo.toString());
patient.episodeNo = 0;
model.updateInCallPatient(patient: patient, appointmentNo: int.parse(model.startCallRes!.appointmentNo.toString()));
model.updateInCallPatient(patient: patient, appointmentNo: int.parse(model.startCallRes!.appointmentNo.toString()));
setState(() {
isCallStarted = true;
});
GifLoaderDialogUtils.hideDialog(context);
AppPermissionsUtils.requestVideoCallPermission(
// AppPermissionsUtils.requestVideoCallPermission(
// context: context,
// onTapGrant: () {
// locator<VideoCallService>()
// .openVideo(model.startCallRes!, patient, model.startCallRes != null ? model.startCallRes!.isRecording! : true, callConnected, callDisconnected);
// });
// model.startCallRes!.openTokenID!
AppPermissionsUtils.requestVideoCallPermission(
context: context,
onTapGrant: () {
locator<VideoCallService>()
.openVideo(model.startCallRes!, patient, model.startCallRes != null ? model.startCallRes!.isRecording! : true, callConnected, callDisconnected);
Navigator.pushNamed(
context,
"zoom-call",
arguments: CallArguments(model.startCallRes!.openSessionID!, "123", "doctor", "40", "0", true,1),
).then((completion) {
Future<void>.delayed(const Duration(seconds: 1))
.then((_) async {
_showEndCallPopup(context, model, patient, patient.vcId!);
});
});
});
}
}
@ -386,7 +407,65 @@ class _PatientProfileScreenState extends State<PatientProfileScreen> with Single
),
);
}
void _showEndCallPopup(BuildContext context,LiveCarePatientViewModel model, PatiantInformtion patient, int vcID) {
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Call Ended'),
content:SizedBox(
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
AppTextFieldCustom(onChanged: (val){}, onFieldSubmitted: (){}, hintText: "Please enter Notes", height: 100, validationError: noteValidation, controller: noteController, ),
],)),
actions: [
AppButton(
onPressed: () {
_transferToAdmin(model, patient, vcID);
},
title: 'Transfer to Admin',
color: Colors.grey,
fontColor: Colors.white,
fontSize: 14,
),
SizedBox(height: 15,),
AppButton(
onPressed: () {
_endWithCharge(model, patient, vcID);
},
title: 'End with Charge',
color: Colors.red,
fontColor: Colors.white,
fontSize: 14,
)
],
);
},
);
}
_transferToAdmin(LiveCarePatientViewModel model, PatiantInformtion patient, int vcID){
if(noteController.text.isEmpty){
noteValidation ='Please Enter Notes';
setState(() {
});
}else {
model.transferToAdmin(vcID,noteController.text );
Navigator.of(context).pop();
}
}
_endWithCharge(LiveCarePatientViewModel model, PatiantInformtion patient, int vcID){
model.endCallWithCharge(vcID, true);
Navigator.of(context).pop();
}
createEpisode({required PatiantInformtion patient, required SOAPViewModel model}) async {
await locator<AnalyticsService>().logEvent(
eventCategory: "Patient Profile",

@ -28,7 +28,7 @@ class NewPrescriptionsPage extends StatelessWidget {
return BaseView<PrescriptionViewModel>(
onModelReady: (model) async {
await model.getPrescriptionListNew(
mrn: patient.patientMRN, appNo: patient.appointmentNo);
mrn: patient.patientMRN, appNo: patient.appointmentNo??0);
await model.isPrincipalCovered(patient: patient);
},
builder: (_, model, w) => AppScaffold(

@ -182,7 +182,7 @@ class VideoView extends FlutterZoomView.ZoomView {
child: Image(
height: 12,
width: 12,
image: isMuted.value ? const AssetImage("assets/imgaes/zoom/muted@2x.png") : const AssetImage("assets/imgaes/zoom/talking@2x.png"),
image: isMuted.value ? const AssetImage("assets/images/zoom/muted@2x.png") : const AssetImage("assets/images/zoom/talking@2x.png"),
fit: BoxFit.cover,
),
)
@ -213,7 +213,7 @@ class VideoView extends FlutterZoomView.ZoomView {
child: const Image(
height: 60,
width: 60,
image: AssetImage("assets/imgaes/zoom/default-avatar.png"),
image: AssetImage("assets/images/zoom/default-avatar.png"),
)),
),
Align(
@ -245,7 +245,7 @@ class VideoView extends FlutterZoomView.ZoomView {
child: Image(
height: 12,
width: 12,
image: isMuted.value ? const AssetImage("assets/imgaes/zoom/muted@2x.png") : const AssetImage("assets/imgaes/zoom/talking@2x.png"),
image: isMuted.value ? const AssetImage("assets/images/zoom/muted@2x.png") : const AssetImage("assets/images/zoom/talking@2x.png"),
fit: BoxFit.cover,
),
),

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save