From e9c26ee85f68156e06f022b2e64538823d0304f5 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 29 Aug 2021 15:12:41 +0300 Subject: [PATCH] Dental procedures implemented --- lib/config/config.dart | 7 +- lib/config/localized_values.dart | 11 +- .../Appointments/DentalProceduresModel.dart | 76 ++++++ .../BookAppointment/DentalComplaints.dart | 218 ++++++++++++++++-- .../doctor_post_pre_images_page.dart | 125 ++++------ .../appointment_services/GetDoctorsList.dart | 28 ++- lib/uitl/translations_delegate_base.dart | 5 +- 7 files changed, 352 insertions(+), 118 deletions(-) create mode 100644 lib/models/Appointments/DentalProceduresModel.dart diff --git a/lib/config/config.dart b/lib/config/config.dart index 40cd68bb..329d4218 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -13,8 +13,8 @@ const PACKAGES_CUSTOMER = '/api/customers'; const PACKAGES_SHOPPING_CART = '/api/shopping_cart_items'; const PACKAGES_ORDERS = '/api/orders'; -// const BASE_URL = 'https://uat.hmgwebservices.com/'; -const BASE_URL = 'https://hmgwebservices.com/'; +const BASE_URL = 'https://uat.hmgwebservices.com/'; +// const BASE_URL = 'https://hmgwebservices.com/'; // Pharmacy UAT URLs const BASE_PHARMACY_URL = 'https://uat.hmgwebservices.com/epharmacy/api/'; @@ -338,6 +338,9 @@ const GET_PATIENT_HEALTH_STATS = const SEND_CHECK_IN_NFC_REQUEST = 'Services/Patients.svc/REST/Patient_CheckAppointmentValidation_ForNFC'; +const HAS_DENTAL_PLAN = + 'Services/Doctors.svc/REST/Dental_IsPatientHasOnGoingEstimation'; + //URL to get medicine and pharmacies list const CHANNEL = 3; const GENERAL_ID = 'Cs2020@2016\$2958'; diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 682c73d9..f445c8b3 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -224,7 +224,7 @@ const Map localizedValues = { "companyName": {"en": "Company Name ", "ar": "اسم الشركة: "}, "receiptOn": {"en": "Receipt on: ", "ar": "تاريخ الفاتورة: "}, "expiryDate": {"en": "Expiry Date: ", "ar": "تاريخ الانتهاء: "}, - "procedureName": {"en": "Procedure Name", "ar": "اسم الاجراء"}, + "procedureName": {"en": "Procedure Name:", "ar": "اسم الاجراء:"}, "procedureStatus": {"en": "Procedure Status: ", "ar": "حالة الاجراء"}, "usageStatus": {"en": "Usage Status", "ar": "جالة الاستخدام"}, "unusedCount": {"en": "Unused Count: ", "ar": "غير مستخدم: "}, @@ -423,10 +423,7 @@ const Map localizedValues = { "en": "Please select treatment start day and time to be notified when it\'s time to take the medicine", "ar": " يرجى تحديد يوم بدء العلاج والوقت ليتم ارسال تنبيه عندما يحين الوقت لتناول الدواء" }, - "pleaseSelectAllQuestionToContinue": { - "en": "Please answer all questions to continue...", - "ar": "يرجى الإجابة على جميع الأسئلة للمتابعة..." - }, + "pleaseSelectAllQuestionToContinue": {"en": "Please answer all questions to continue...", "ar": "يرجى الإجابة على جميع الأسئلة للمتابعة..."}, "StartDay": {"en": "Start Day", "ar": "يوم البداية"}, "EndDay": {"en": "End Day", "ar": "يوم الانتهاء"}, "Days": {"en": "Days ", "ar": "أيام"}, @@ -1354,4 +1351,8 @@ const Map localizedValues = { "passport-number": {"en": "Passport Number", "ar": "رقم جواز السفر"}, "enter-passport-number": {"en": "Please confirm or update your passport number:", "ar": "الرجاء تأكيد أو تحديث رقم جواز السفر الخاص بك:"}, "valid-passport-number": {"en": "Please enter valid passport number", "ar": "الرجاء إدخال رقم جواز سفر صالح"}, + "continue-plan": {"en": "Continue with the treatment plan?", "ar": "إكمال الخطة العلاجية؟"}, + "dental-procedure-list": {"en": "Dental Procedures for this Appointment: ", "ar": "إجراءات الأسنان لهذا الموعد:"}, + "time-needed": {"en": "Time Needed:", "ar": "الوقت اللازم:"}, + "total-time-needed": {"en": "Total Appointment Time:", "ar": "وقت المواعيد الكلي:"}, }; diff --git a/lib/models/Appointments/DentalProceduresModel.dart b/lib/models/Appointments/DentalProceduresModel.dart new file mode 100644 index 00000000..a66be8d1 --- /dev/null +++ b/lib/models/Appointments/DentalProceduresModel.dart @@ -0,0 +1,76 @@ +class DentalProceduresModel { + List listIsPatientHasOnGoingEstimation; + + DentalProceduresModel({this.listIsPatientHasOnGoingEstimation}); + + DentalProceduresModel.fromJson(Map json) { + if (json['List_IsPatientHasOnGoingEstimation'] != null) { + listIsPatientHasOnGoingEstimation = + new List(); + json['List_IsPatientHasOnGoingEstimation'].forEach((v) { + listIsPatientHasOnGoingEstimation + .add(new ListIsPatientHasOnGoingEstimation.fromJson(v)); + }); + } + } + + Map toJson() { + final Map data = new Map(); + if (this.listIsPatientHasOnGoingEstimation != null) { + data['List_IsPatientHasOnGoingEstimation'] = this + .listIsPatientHasOnGoingEstimation + .map((v) => v.toJson()) + .toList(); + } + return data; + } +} + +class ListIsPatientHasOnGoingEstimation { + dynamic setupID; + dynamic estimationNo; + int projectID; + String procedureId; + int patientID; + int sequenceNo; + int neededTime; + String procedureName; + dynamic procedureNameN; + + ListIsPatientHasOnGoingEstimation( + {this.setupID, + this.estimationNo, + this.projectID, + this.procedureId, + this.patientID, + this.sequenceNo, + this.neededTime, + this.procedureName, + this.procedureNameN}); + + ListIsPatientHasOnGoingEstimation.fromJson(Map json) { + setupID = json['SetupID']; + estimationNo = json['EstimationNo']; + projectID = json['ProjectID']; + procedureId = json['ProcedureId']; + patientID = json['PatientID']; + sequenceNo = json['sequenceNo']; + neededTime = json['NeededTime']; + procedureName = json['ProcedureName']; + procedureNameN = json['ProcedureNameN']; + } + + Map toJson() { + final Map data = new Map(); + data['SetupID'] = this.setupID; + data['EstimationNo'] = this.estimationNo; + data['ProjectID'] = this.projectID; + data['ProcedureId'] = this.procedureId; + data['PatientID'] = this.patientID; + data['sequenceNo'] = this.sequenceNo; + data['NeededTime'] = this.neededTime; + data['ProcedureName'] = this.procedureName; + data['ProcedureNameN'] = this.procedureNameN; + return data; + } +} diff --git a/lib/pages/BookAppointment/DentalComplaints.dart b/lib/pages/BookAppointment/DentalComplaints.dart index 614189e0..0fbfa624 100644 --- a/lib/pages/BookAppointment/DentalComplaints.dart +++ b/lib/pages/BookAppointment/DentalComplaints.dart @@ -1,11 +1,18 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/models/Appointments/DentalChiefComplaintsModel.dart'; +import 'package:diplomaticquarterapp/models/Appointments/DentalProceduresModel.dart'; +import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/SearchInfoModel.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/DentalComplaintCard.dart'; -import 'package:diplomaticquarterapp/pages/livecare/widgets/clinic_card.dart'; +import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/DoctorView.dart'; +import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; @@ -22,12 +29,18 @@ class _DentalComplaintsState extends State { List complaintsList = []; AppSharedPreferences sharedPref = AppSharedPreferences(); bool isDataLoaded = false; + bool hasDentalPlan = false; var languageID; + int totalAppointmentTime = 0; + + List doctorsList = []; + + DentalProceduresModel dentalProceduresModel; + List patientDoctorAppointmentListHospital = List(); @override void initState() { - WidgetsBinding.instance - .addPostFrameCallback((_) => getChiefComplaintsList()); + WidgetsBinding.instance.addPostFrameCallback((_) => checkIfHasDentalPlan()); super.initState(); } @@ -38,37 +51,206 @@ class _DentalComplaintsState extends State { appBarTitle: "Symptoms", body: Container( margin: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 0.0), - child: ListView.builder( - itemCount: complaintsList.length, - itemBuilder: (BuildContext context, int index) { - return Container( - margin: EdgeInsets.only(bottom: 10.0), - child: DentalComplaintCard( - listDentalChiefComplain: complaintsList[index], - languageID: languageID, + child: !hasDentalPlan + ? ListView.builder( + itemCount: complaintsList.length, + itemBuilder: (BuildContext context, int index) { + return Container( + margin: EdgeInsets.only(bottom: 10.0), + child: DentalComplaintCard( + listDentalChiefComplain: complaintsList[index], + languageID: languageID, + ), + ); + }, + ) + : Container( + child: SingleChildScrollView( + child: Column( + children: [ + Container( + margin: EdgeInsets.only(top: 10.0), + child: Text(TranslationBase.of(context).dentalProcedureList, textAlign: TextAlign.center, style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold, letterSpacing: 0.5)), + ), + Container( + margin: EdgeInsets.only(top: 20.0), + child: Table( + children: getProceduresData(), + ), + ), + ...List.generate( + patientDoctorAppointmentListHospital.length, + (index) => AppExpandableNotifier( + isExpand: true, + title: patientDoctorAppointmentListHospital[index].filterName + " - " + patientDoctorAppointmentListHospital[index].distanceInKMs + " " + TranslationBase.of(context).km, + bodyWidget: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList.map((doctor) { + return DoctorView( + doctor: doctor, + isLiveCareAppointment: false, + ); + }).toList(), + )), + ) + ], + ), ), - ); - }, + ), + ), + ); + } + + List getProceduresData() { + List tableRow = []; + + tableRow.add( + TableRow( + children: [ + Container( + child: Container( + child: Center( + child: Text(TranslationBase.of(context).procedureName, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 14.0)), + ), + ), + ), + Container( + child: Container( + margin: EdgeInsets.only(bottom: 10.0), + child: Center( + child: Text(TranslationBase.of(context).timeNeeded, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 14.0)), + ), + ), + ), + ], + ), + ); + dentalProceduresModel.listIsPatientHasOnGoingEstimation.forEach((procedure) { + tableRow.add(TableRow(children: [ + Container( + child: Container( + child: Center( + child: Text(procedure.procedureName, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontSize: 14.0)), + ), + ), ), + Container( + child: Container( + child: Center( + child: Text(procedure.neededTime.toString() + " mins", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontSize: 14.0)), + ), + ), + ), + ])); + }); + tableRow.add( + TableRow( + children: [ + Container( + child: Container( + child: Center( + child: Text(TranslationBase.of(context).totalTimeNeeded, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 14.0)), + ), + ), + ), + Container( + child: Container( + margin: EdgeInsets.only(bottom: 10.0), + child: Center( + child: Text(totalAppointmentTime.toString() + " mins", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 14.0)), + ), + ), + ), + ], ), ); + return tableRow; } getLanguageID() async { languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); } + checkIfHasDentalPlan() { + DoctorsListService service = new DoctorsListService(); + GifLoaderDialogUtils.showMyDialog(context); + service.checkIfHasDentalPlan(widget.searchInfo.ProjectID, context).then((res) { + GifLoaderDialogUtils.hideDialog(context); + if (res['MessageStatus'] == 1) { + if (res['List_IsPatientHasOnGoingEstimation'].length != 0) { + ConfirmDialog dialog = new ConfirmDialog( + context: context, + confirmMessage: TranslationBase.of(context).continuePlan, + okText: TranslationBase.of(context).yes, + cancelText: TranslationBase.of(context).no, + okFunction: () => {Navigator.of(context).pop(), continueDentalPlan()}, + cancelFunction: () => {getChiefComplaintsList()}); + dialog.showAlertDialog(context); + } else { + getChiefComplaintsList(); + } + } + }).catchError((err) { + print(err); + }); + } + + continueDentalPlan() { + DoctorsListService service = new DoctorsListService(); + + GifLoaderDialogUtils.showMyDialog(context); + int appoTime = 0; + service.getDoctorsList(int.parse("17"), widget.searchInfo.ProjectID, false, context, isContinueDentalPlan: true).then((res) { + GifLoaderDialogUtils.hideDialog(context); + if (res['MessageStatus'] == 1) { + print(res['List_IsPatientHasOnGoingEstimation']); + dentalProceduresModel = DentalProceduresModel.fromJson(res); + dentalProceduresModel.listIsPatientHasOnGoingEstimation.forEach((procedure) { + appoTime += procedure.neededTime; + }); + setState(() { + hasDentalPlan = true; + totalAppointmentTime = appoTime; + }); + + if (res['DoctorList'].length != 0) { + doctorsList.clear(); + res['DoctorList'].forEach((v) { + doctorsList.add(new DoctorList.fromJson(v)); + }); + doctorsList.forEach((element) { + List doctorByHospital = patientDoctorAppointmentListHospital + .where( + (elementClinic) => elementClinic.filterName == element.projectName, + ) + .toList(); + + if (doctorByHospital.length != 0) { + patientDoctorAppointmentListHospital[patientDoctorAppointmentListHospital.indexOf(doctorByHospital[0])].patientDoctorAppointmentList.add(element); + } else { + patientDoctorAppointmentListHospital + .add(PatientDoctorAppointmentList(filterName: element.projectName, distanceInKMs: element.projectDistanceInKiloMeters.toString(), patientDoctorAppointment: element)); + } + }); + } else {} + } else { + AppToast.showErrorToast(message: res['ErrorEndUserMessage']); + } + }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + print(err); + AppToast.showErrorToast(message: err); + }); + } + getChiefComplaintsList() { GifLoaderDialogUtils.showMyDialog(context); getLanguageID(); ClinicListService service = new ClinicListService(); - service - .getChiefComplaintsList( - widget.searchInfo.ClinicID, widget.searchInfo.ProjectID, context) - .then((res) { + service.getChiefComplaintsList(widget.searchInfo.ClinicID, widget.searchInfo.ProjectID, context).then((res) { GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { - print(res['List_DentalChiefComplain']); setState(() { res['List_DentalChiefComplain'].forEach((v) { complaintsList.add(new ListDentalChiefComplain.fromJson(v)); diff --git a/lib/pages/BookAppointment/doctor_post_pre_images_page.dart b/lib/pages/BookAppointment/doctor_post_pre_images_page.dart index b97d58ac..85e37308 100644 --- a/lib/pages/BookAppointment/doctor_post_pre_images_page.dart +++ b/lib/pages/BookAppointment/doctor_post_pre_images_page.dart @@ -1,67 +1,10 @@ -import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart'; import 'package:diplomaticquarterapp/models/Appointments/doctor_pre_post_image.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -class DoctorPostPreImagesPage extends StatefulWidget{ - final DoctorPrePostImages doctorPrePostImages; - - const DoctorPostPreImagesPage({this.doctorPrePostImages}); - - @override - State createState() => DoctorPostPreImagesPageState(); -} - -class DoctorPostPreImagesPageState extends State{ - - @override - Widget build(BuildContext context) { - var images = widget.doctorPrePostImages; - return AppScaffold( - appBarTitle: TranslationBase.of(context).beforeAfterImages, - isShowAppBar: true, - isShowDecPage: false, - body: Padding( - padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 10), - child: Row( - children: [ - Expanded( - child: Column( - children: [ - Text("Before Image", style: TextStyle(color: Colors.black, fontSize: 17, fontWeight: FontWeight.bold, letterSpacing: 1),), - Image.memory(images.getPreBytes(), errorBuilder: (ctx,err, trace){ - return Container( - color: Colors.grey.withOpacity(0.25), - ); - },) - ], - ) - ), - Divider(color: Colors.grey.withOpacity(0.5)), - Expanded( - child: Column( - children: [ - Text("After Image", style: TextStyle(color: Colors.black, fontSize: 17, fontWeight: FontWeight.bold, letterSpacing: 1),), - Image.memory(images.getPostBytes(),errorBuilder: (ctx,err, trace){ - return Container( - color: Colors.grey.withOpacity(0.25), - ); - },) - ], - ) - ) - ], - ), - ) - ); - } - -} - - -class DoctorPostPreImagesContent extends StatefulWidget{ +class DoctorPostPreImagesContent extends StatefulWidget { final DoctorPrePostImages doctorPrePostImages; const DoctorPostPreImagesContent({this.doctorPrePostImages}); @@ -70,14 +13,13 @@ class DoctorPostPreImagesContent extends StatefulWidget{ DoctorPostPreImagesContentState createState() => DoctorPostPreImagesContentState(); } -class DoctorPostPreImagesContentState extends State{ - +class DoctorPostPreImagesContentState extends State { @override Widget build(BuildContext context) { var images = widget.doctorPrePostImages; - return Material( - color: Colors.transparent, - child: Center( + return Center( + child: Material( + color: Colors.transparent, child: Column( mainAxisSize: MainAxisSize.min, children: [ @@ -85,31 +27,45 @@ class DoctorPostPreImagesContentState extends State{ children: [ Expanded( child: Column( - children: [ - Text("Before", style: TextStyle(color: Colors.white, fontSize: 17, fontWeight: FontWeight.bold, letterSpacing: 1),), - SizedBox(height: 10,), - Image.memory(images.getPreBytes(), errorBuilder: (ctx,err, trace){ - return Container( - color: Colors.grey.withOpacity(0.25), - ); - },) - ], + children: [ + Text( + "Before", + style: TextStyle(color: Colors.white, fontSize: 17, fontWeight: FontWeight.bold, letterSpacing: 1), + ), + SizedBox( + height: 10, + ), + Image.memory( + images.getPreBytes(), + errorBuilder: (ctx, err, trace) { + return Container( + color: Colors.grey.withOpacity(0.25), + ); + }, ) - ), + ], + )), Divider(color: Colors.grey.withOpacity(0.5)), Expanded( child: Column( - children: [ - Text("After", style: TextStyle(color: Colors.white, fontSize: 17, fontWeight: FontWeight.bold, letterSpacing: 1),), - SizedBox(height: 10,), - Image.memory(images.getPostBytes(),errorBuilder: (ctx,err, trace){ - return Container( - color: Colors.grey.withOpacity(0.25), - ); - },) - ], + children: [ + Text( + "After", + style: TextStyle(color: Colors.white, fontSize: 17, fontWeight: FontWeight.bold, letterSpacing: 1), + ), + SizedBox( + height: 10, + ), + Image.memory( + images.getPostBytes(), + errorBuilder: (ctx, err, trace) { + return Container( + color: Colors.grey.withOpacity(0.25), + ); + }, ) - ) + ], + )) ], ), ], @@ -117,5 +73,4 @@ class DoctorPostPreImagesContentState extends State{ ), ); } - -} \ No newline at end of file +} diff --git a/lib/services/appointment_services/GetDoctorsList.dart b/lib/services/appointment_services/GetDoctorsList.dart index c691123e..888efd30 100644 --- a/lib/services/appointment_services/GetDoctorsList.dart +++ b/lib/services/appointment_services/GetDoctorsList.dart @@ -30,7 +30,7 @@ class DoctorsListService extends BaseService { Future getDoctorsList( int clinicID, int projectID, bool isNearest, BuildContext context, - {doctorId, doctorName}) async { + {doctorId, doctorName, isContinueDentalPlan = false}) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { @@ -61,20 +61,18 @@ class DoctorsListService extends BaseService { "ClinicID": clinicID, "ProjectID": projectID, "DoctorName": doctorName, //!= null ? doctorId : 0, - "ContinueDentalPlan": false, - "IsSearchAppointmnetByClinicID": true, + "ContinueDentalPlan": isContinueDentalPlan, + "IsSearchAppointmnetByClinicID": isContinueDentalPlan ? false : true, "PatientID": authUser.patientID != null ? authUser.patientID : 0, "gender": authUser.gender != null ? authUser.gender : 0, "age": authUser.age != null ? authUser.age : 0, "IsGetNearAppointment": false, - // "Latitude": 0, - // "Longitude": 0, - // "License": true, "SearchForVoiceCommand": doctorId != null && doctorId.length > 0 ? true : false, "DoctorIDsList": doctorId, "Latitude": lat != null ? lat.toString() : 0, "Longitude": long != null ? long.toString() : 0, + "isDentalAllowedBackend": isContinueDentalPlan, "IsGetNearAppointment": isNearest, if (isNearest) "SelectedDate": DateUtil.convertDateToString(DateTime.now()), @@ -1483,7 +1481,6 @@ class DoctorsListService extends BaseService { int projectId, BuildContext context) async { Map request; - Request req = appGlobal.getPublicRequest(); request = { "AppointmentNo": appointmentNo, "NFC_Code": nfcCode, @@ -1498,4 +1495,21 @@ class DoctorsListService extends BaseService { }, body: request); return Future.value(localRes); } + + Future checkIfHasDentalPlan(int projectID, BuildContext context) async { + Map request; + + request = { + "ProjectID": projectID, + }; + dynamic localRes; + await baseAppClient.post(HAS_DENTAL_PLAN, + onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); + return Future.value(localRes); + } + } diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index cd7a1c7d..7ead312a 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -1223,7 +1223,10 @@ class TranslationBase { String get passportNumber => localizedValues["passport-number"][locale.languageCode]; String get enterPassportNumber => localizedValues["enter-passport-number"][locale.languageCode]; String get validPassportNumber => localizedValues["valid-passport-number"][locale.languageCode]; - + String get continuePlan => localizedValues["continue-plan"][locale.languageCode]; + String get dentalProcedureList => localizedValues["dental-procedure-list"][locale.languageCode]; + String get timeNeeded => localizedValues["time-needed"][locale.languageCode]; + String get totalTimeNeeded => localizedValues["total-time-needed"][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate {