You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RSGDoctorApp/lib/screens/live_care/live_care_patient_screen.dart

237 lines
9.2 KiB
Dart

import 'dart:async';
import 'package:doctor_app_flutter/core/enum/view_state.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/core/viewModel/LiveCarePatientViewModel.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/patient_search/patient_search_header.dart';
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
import 'package:doctor_app_flutter/widgets/patients/patient_card/PatientCard.dart';
import 'package:doctor_app_flutter/widgets/shared/app_loader_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app_text_field_custom_serach.dart';
import 'package:flutter/material.dart';
import '../../utils/translations_delegate_base_utils.dart';
import '../../widgets/shared/errors/error_message.dart';
class LiveCarePatientScreen extends StatefulWidget {
@override
_LiveCarePatientScreenState createState() => _LiveCarePatientScreenState();
}
class _LiveCarePatientScreenState extends State<LiveCarePatientScreen> {
final _controller = TextEditingController();
Timer? timer;
LiveCarePatientViewModel? _liveCareViewModel;
@override
void initState() {
super.initState();
timer = Timer.periodic(Duration(seconds: 10), (Timer t) {
if (_liveCareViewModel != null) {
_liveCareViewModel!.getPendingPatientERForDoctorApp(isFromTimer: true);
}
});
}
@override
void dispose() {
_liveCareViewModel!.isLogin(0);
_liveCareViewModel = null;
timer?.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return BaseView<LiveCarePatientViewModel>(
onModelReady: (model) async {
_liveCareViewModel = model;
await model.getPendingPatientERForDoctorApp();
await model.isLogin(1);
},
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
isShowAppBar: true,
appBar: PatientSearchHeader(
title: "LiveCare Patients",
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
padding: EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5),
decoration: BoxDecoration(
color: Colors.white,
),
child: Container(),
),
SizedBox(
height: 20,
),
AppTextFieldCustomSearch(
searchController: _controller,
onChangeFun: (value) {
model.searchData(value);
},
marginTop: 5,
suffixIcon: IconButton(
icon: Icon(
DoctorApp.filter_1,
color: Colors.black,
),
iconSize: 20,
onPressed: () {},
),
onFieldSubmitted: () {},
),
model.state == ViewState.Idle
? Expanded(
child: Container(
child: model.filterData.isEmpty
? Center(
child: ErrorMessage(
error: TranslationBase.of(context).youDontHaveAnyPatient,
),
)
: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: model.filterData.length,
itemBuilder: (BuildContext ctxt, int index) {
//
String jsonString = '''
{
"PatientID": 1231755,
"SetupID": "010266",
"PatientType": 1,
"FirstName": "TAMER",
"MiddleName": "MUSA",
"LastName": "FANASHEH",
"FirstNameN": "",
"MiddleNameN": "موسى",
"LastNameN": "",
"Gender": 1,
"DateofBirth": "/Date(558910800000+0300)/",
"DateofBirthN": "25/01/1408",
"NationalityID": "JOR",
"PhoneResi": "",
"PhoneOffice": "",
"MobileNumber": "0537503378",
"FaxNumber": "",
"EmailAddress": "sultan.khan@cloudsolutions.com.sa",
"IsEmailAlertRequired": true,
"IsSMSAlertRequired": true,
"PreferredLanguage": "1",
"EmergencyContactName": "MOH",
"EmergencyContactNo": "0507845867",
"PatientIdentificationType": 2,
"PatientIdentificationNo": "2344670985",
"ProjectID": 15,
"ReceiveHealthSummaryReport": true,
"NoShowCount": 0,
"IsPatientHasMobileDeviceToken": true,
"EditedBy": 102,
"IsIVRStopped": true,
"CRSClientIdentifierID": null,
"CRSVerificationStatus": null,
"CRSVerifiedBy": null,
"CRSVerificationStatusDesc": "Sent for Manual Verification",
"CRSVerificationStatusDescN": "Sent for Manual Verification",
"NumberPosition": 1,
"Status": 2,
"IsPrivilegedMember": null,
"Address": "gffffff al malga",
"Age": 36,
"EmaiLAddress": "sultan.khan@cloudsolutions.com.sa",
"GenderDescription": "Male",
"GenderImage": "https://hmgwebservices.com/Images/GenderAvtar/Male.jpg",
"IsPatientDataVerified": false,
"IsPatientPrivilegedMember": false,
"NationalityDescription": "Jordanian",
"NationalityFlagURL": "https://hmgwebservices.com/Images/flag/JOR.png",
"POBox": "",
"PatientDataVerified": 3,
"PatientName": "TAMER MUSA FANASHEH",
"PatientTypeDescription": "Permanent File",
"PatientTypeDescriptionN": null,
"StatusDscription": "Active ",
"TempAddress": "",
"UpcomingAppointmentsNumber": 0,
"ZipCode": "966"
}
''';
// Map<String, dynamic> jsonObject = json.decode(jsonString);
//
return Padding(
padding: EdgeInsets.all(8.0),
child: PatientCard(
patientInfo: PatiantInformtion.fromJson(model.filterData[index].toJson()),
patientType: "0",
arrivalType: "0",
isFromSearch: false,
isInpatient: false,
isFromLiveCare: true,
onTap: () {
// TODO change the parameter to daynamic
Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: {
"patient": PatiantInformtion.fromJson(model.filterData[index].toJson()),
"patientType": "0",
"isSearch": false,
"isInpatient": false,
"arrivalType": "0",
"isSearchAndOut": false,
"isFromLiveCare": true,
});
// AppPermissionsUtils.requestVideoCallPermission(
// context: context,
// onTapGrant: () {
// locator<VideoCallService>().openVideo(model.startCallRes!, PatiantInformtion.fromJson(model.filterData[index].toJson()),
// model.startCallRes != null ? model.startCallRes!.isRecording! : true, callConnected, callDisconnected);
// });
},
// isFromSearch: widget.isSearch,
),
);
})),
)
: Expanded(
child: AppLoaderWidget(
containerColor: Colors.transparent,
)),
// AppButton(
// fontWeight: FontWeight.w700,
// color:AppGlobal.appGreenColor[600],
// title: TranslationBase.of(context).initiateCall,
// disabled: model.state == ViewState.BusyLocal,
// onPressed: () async {
// AppPermissionsUtils.requestVideoCallPermission(context: context,onTapGrant: (){
// locator<VideoCallService>().openVideo(model.startCallRes, PatiantInformtion(
// vcId: 454353,
// fullName: "test mosa"
// ), callConnected, callDisconnected);
// });
//
// },
// ),
],
),
),
);
}
callConnected() {}
callDisconnected() {}
}