diff --git a/assets/images/svg/search_by_clinic_icon.svg b/assets/images/svg/search_by_clinic_icon.svg
new file mode 100644
index 0000000..ce00f8c
--- /dev/null
+++ b/assets/images/svg/search_by_clinic_icon.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/svg/search_by_doctor_icon.svg b/assets/images/svg/search_by_doctor_icon.svg
new file mode 100644
index 0000000..2ca5eb9
--- /dev/null
+++ b/assets/images/svg/search_by_doctor_icon.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/svg/search_by_region_icon.svg b/assets/images/svg/search_by_region_icon.svg
new file mode 100644
index 0000000..00abe12
--- /dev/null
+++ b/assets/images/svg/search_by_region_icon.svg
@@ -0,0 +1,5 @@
+
diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart
index c6e6a3c..106a5ad 100644
--- a/lib/core/app_assets.dart
+++ b/lib/core/app_assets.dart
@@ -103,6 +103,9 @@ class AppAssets {
   static const String all_medications_icon = '$svgBasePath/all_medications_icon.svg';
   static const String allergy_info_icon = '$svgBasePath/allergy_info_icon.svg';
   static const String vaccine_info_icon = '$svgBasePath/vaccine_info_icon.svg';
+  static const String search_by_clinic_icon = '$svgBasePath/search_by_clinic_icon.svg';
+  static const String search_by_doctor_icon = '$svgBasePath/search_by_doctor_icon.svg';
+  static const String search_by_region_icon = '$svgBasePath/search_by_region_icon.svg';
 
   //bottom navigation//
   static const String homeBottom = '$svgBasePath/home_bottom.svg';
diff --git a/lib/core/dependencies.dart b/lib/core/dependencies.dart
index 3518abe..f86ec97 100644
--- a/lib/core/dependencies.dart
+++ b/lib/core/dependencies.dart
@@ -6,6 +6,7 @@ import 'package:hmg_patient_app_new/core/location_util.dart';
 import 'package:hmg_patient_app_new/features/authentication/authentication_repo.dart';
 import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart';
 import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_repo.dart';
+import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart';
 import 'package:hmg_patient_app_new/features/common/common_repo.dart';
 import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_repo.dart';
 import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart';
@@ -158,6 +159,13 @@ class AppDependencies {
       ),
     );
 
+    getIt.registerLazySingleton(
+      () => BookAppointmentsViewModel(
+        bookAppointmentsRepo: getIt(),
+        errorHandlerService: getIt(),
+      ),
+    );
+
     getIt.registerLazySingleton(
       () => AuthenticationViewModel(
           authenticationRepo: getIt(), cacheService: getIt(), navigationService: getIt(), dialogService: getIt(), appState: getIt(), errorHandlerService: getIt(), localAuthService: getIt()),
diff --git a/lib/core/utils/utils.dart b/lib/core/utils/utils.dart
index 90a810c..e228591 100644
--- a/lib/core/utils/utils.dart
+++ b/lib/core/utils/utils.dart
@@ -342,7 +342,8 @@ class Utils {
     ).center;
   }
 
-  static bool isVidaPlusProject(AppState appState, int projectID) {
+  static bool isVidaPlusProject(int projectID) {
+    AppState appState = getIt.get();
     bool isVidaPlus = false;
     for (var element in appState.vidaPlusProjectList) {
       if (element.projectID == projectID) {
diff --git a/lib/features/book_appointments/book_appointments_view_model.dart b/lib/features/book_appointments/book_appointments_view_model.dart
index e69de29..8f096dd 100644
--- a/lib/features/book_appointments/book_appointments_view_model.dart
+++ b/lib/features/book_appointments/book_appointments_view_model.dart
@@ -0,0 +1,17 @@
+import 'package:flutter/material.dart';
+import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_repo.dart';
+import 'package:hmg_patient_app_new/services/error_handler_service.dart';
+
+class BookAppointmentsViewModel extends ChangeNotifier {
+  int selectedTabIndex = 0;
+
+  BookAppointmentsRepo bookAppointmentsRepo;
+  ErrorHandlerService errorHandlerService;
+
+  BookAppointmentsViewModel({required this.bookAppointmentsRepo, required this.errorHandlerService});
+
+  void onTabChanged(int index) {
+    selectedTabIndex = index;
+    notifyListeners();
+  }
+}
diff --git a/lib/features/medical_file/medical_file_repo.dart b/lib/features/medical_file/medical_file_repo.dart
index 6d30adc..affe564 100644
--- a/lib/features/medical_file/medical_file_repo.dart
+++ b/lib/features/medical_file/medical_file_repo.dart
@@ -3,6 +3,8 @@ import 'package:hmg_patient_app_new/core/api/api_client.dart';
 import 'package:hmg_patient_app_new/core/api_consts.dart';
 import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart';
 import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart';
+import 'package:hmg_patient_app_new/core/utils/date_util.dart';
+import 'package:hmg_patient_app_new/core/utils/utils.dart';
 import 'package:hmg_patient_app_new/features/medical_file/models/patient_medical_response_model.dart';
 import 'package:hmg_patient_app_new/features/medical_file/models/patient_sickleave_response_model.dart';
 import 'package:hmg_patient_app_new/features/medical_file/models/patient_vaccine_response_model.dart';
@@ -18,6 +20,8 @@ abstract class MedicalFileRepo {
   Future>> getPatientSickLeavePDF(PatientSickLeavesResponseModel patientSickLeavesResponseModel, AuthenticatedUser authenticatedUser);
 
   Future>>> getPatientMedicalReportsList();
+
+  Future>> getPatientMedicalReportPDF(PatientMedicalReportResponseModel patientMedicalReportResponseModel, AuthenticatedUser authenticatedUser);
 }
 
 class MedicalFileRepoImp implements MedicalFileRepo {
@@ -205,4 +209,62 @@ class MedicalFileRepoImp implements MedicalFileRepo {
       return Left(UnknownFailure(e.toString()));
     }
   }
+
+  @override
+  Future> getPatientMedicalReportPDF(PatientMedicalReportResponseModel patientMedicalReportResponseModel, AuthenticatedUser authenticatedUser) async {
+    Map mapDevice = {
+      "SetupID": patientMedicalReportResponseModel.setupId,
+      "PrintDate": patientMedicalReportResponseModel.requestDate!,
+      "ProcedureID": "05005009",
+      "Reporttype": "MEDICAL REPORT",
+      "stamp": patientMedicalReportResponseModel.requestDate!,
+      "To": authenticatedUser.emailAddress,
+      "DateofBirth": authenticatedUser.dateofBirth,
+      "PatientIditificationNum": authenticatedUser.patientIdentificationNo,
+      "PatientMobileNumber": authenticatedUser.mobileNumber,
+      "PatientName": "${authenticatedUser.firstName!} ${authenticatedUser.lastName!}",
+      "ProjectName": patientMedicalReportResponseModel.projectName,
+      "ClinicName": patientMedicalReportResponseModel.clinicDescription,
+      "ProjectID": patientMedicalReportResponseModel.projectID,
+      "InvoiceNo": Utils.isVidaPlusProject(patientMedicalReportResponseModel.projectID!) ? patientMedicalReportResponseModel.invoiceNoVP : patientMedicalReportResponseModel.invoiceNo,
+      "InvoiceNo_VP": Utils.isVidaPlusProject(patientMedicalReportResponseModel.projectID!) ? patientMedicalReportResponseModel.invoiceNoVP : patientMedicalReportResponseModel.invoiceNo,
+      "PrintedByName": "${authenticatedUser.firstName!} ${authenticatedUser.lastName!}",
+    };
+
+    try {
+      GenericApiModel? apiResponse;
+      Failure? failure;
+      await apiClient.post(
+        GET_MEDICAL_REPORT_PDF,
+        body: mapDevice,
+        onFailure: (error, statusCode, {messageStatus, failureType}) {
+          failure = failureType;
+        },
+        onSuccess: (response, statusCode, {messageStatus, errorMessage}) {
+          try {
+            // final list = response['List_SickLeave'];
+            // if (list == null || list.isEmpty) {
+            //   throw Exception("lab list is empty");
+            // }
+
+            // final vaccinesList = list.map((item) => PatientSickLeavesResponseModel.fromJson(item as Map)).toList().cast();
+
+            apiResponse = GenericApiModel(
+              messageStatus: messageStatus,
+              statusCode: statusCode,
+              errorMessage: null,
+              data: response["MedicalReportBase64"],
+            );
+          } catch (e) {
+            failure = DataParsingFailure(e.toString());
+          }
+        },
+      );
+      if (failure != null) return Left(failure!);
+      if (apiResponse == null) return Left(ServerFailure("Unknown error"));
+      return Right(apiResponse!);
+    } catch (e) {
+      return Left(UnknownFailure(e.toString()));
+    }
+  }
 }
diff --git a/lib/features/medical_file/medical_file_view_model.dart b/lib/features/medical_file/medical_file_view_model.dart
index bcc7ed2..73167bb 100644
--- a/lib/features/medical_file/medical_file_view_model.dart
+++ b/lib/features/medical_file/medical_file_view_model.dart
@@ -26,6 +26,7 @@ class MedicalFileViewModel extends ChangeNotifier {
   List patientMedicalReportCancelledList = [];
 
   String patientSickLeavePDFBase64 = "";
+  String patientMedicalReportPDFBase64 = "";
 
   int selectedMedicalReportsTabIndex = 0;
 
@@ -62,6 +63,7 @@ class MedicalFileViewModel extends ChangeNotifier {
   setIsPatientSickLeaveListLoading(bool val) {
     if (val) {
       patientSickLeaveList.clear();
+      patientSickLeavePDFBase64 = "";
     }
     isPatientSickLeaveListLoading = val;
     notifyListeners();
@@ -70,6 +72,7 @@ class MedicalFileViewModel extends ChangeNotifier {
   setIsPatientMedicalReportsLoading(bool val) {
     if (val) {
       patientMedicalReportList.clear();
+      patientMedicalReportPDFBase64 = "";
     }
     isPatientMedicalReportsListLoading = val;
     notifyListeners();
@@ -179,6 +182,7 @@ class MedicalFileViewModel extends ChangeNotifier {
             patientMedicalReportReadyList = patientMedicalReportList.where((element) => element.status == 2).toList();
             patientMedicalReportCancelledList = patientMedicalReportList.where((element) => element.status == 4).toList();
           }
+          onMedicalReportTabChange(0);
           isPatientMedicalReportsListLoading = false;
           notifyListeners();
           if (onSuccess != null) {
@@ -188,4 +192,29 @@ class MedicalFileViewModel extends ChangeNotifier {
       },
     );
   }
+
+  Future getPatientMedicalReportPDF(PatientMedicalReportResponseModel patientMedicalReportResponseModel, AuthenticatedUser authenticatedUser,
+      {Function(dynamic)? onSuccess, Function(String)? onError}) async {
+    final result = await medicalFileRepo.getPatientMedicalReportPDF(patientMedicalReportResponseModel, authenticatedUser);
+
+    result.fold(
+      (failure) async => await errorHandlerService.handleError(
+        failure: failure,
+        onOkPressed: () {
+          onError!(failure.message);
+        },
+      ),
+      (apiResponse) {
+        if (apiResponse.messageStatus == 2) {
+          // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {});
+        } else if (apiResponse.messageStatus == 1) {
+          patientMedicalReportPDFBase64 = apiResponse.data!;
+          notifyListeners();
+          if (onSuccess != null) {
+            onSuccess(apiResponse);
+          }
+        }
+      },
+    );
+  }
 }
diff --git a/lib/main.dart b/lib/main.dart
index 8c6e05b..901c529 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -9,6 +9,7 @@ import 'package:hmg_patient_app_new/core/app_state.dart';
 import 'package:hmg_patient_app_new/core/dependencies.dart';
 import 'package:hmg_patient_app_new/core/utils/utils.dart';
 import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart';
+import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart';
 import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart';
 import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart';
 import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart';
@@ -119,6 +120,12 @@ void main() async {
             errorHandlerService: getIt(),
           ),
         ),
+        ChangeNotifierProvider(
+          create: (_) => BookAppointmentsViewModel(
+            bookAppointmentsRepo: getIt(),
+            errorHandlerService: getIt(),
+          ),
+        ),
         ChangeNotifierProvider(
           create: (_) => AuthenticationViewModel(
             authenticationRepo: getIt(),
diff --git a/lib/presentation/appointments/appointment_payment_page.dart b/lib/presentation/appointments/appointment_payment_page.dart
index baa2af3..a617647 100644
--- a/lib/presentation/appointments/appointment_payment_page.dart
+++ b/lib/presentation/appointments/appointment_payment_page.dart
@@ -370,7 +370,7 @@ class _AppointmentPaymentPageState extends State {
                 onSuccess: (value) async {
                   print(value);
                   await myAppointmentsViewModel.addAdvanceNumberRequest(
-                      advanceNumber: Utils.isVidaPlusProject(appState, widget.patientAppointmentHistoryResponseModel.projectID)
+                      advanceNumber: Utils.isVidaPlusProject(widget.patientAppointmentHistoryResponseModel.projectID)
                           ? value.data['OnlineCheckInAppointments'][0]['AdvanceNumber_VP'].toString()
                           : value.data['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(),
                       paymentReference: payfortViewModel.payfortCheckPaymentStatusResponseModel!.fortId!,
diff --git a/lib/presentation/book_appointment/book_appointment_page.dart b/lib/presentation/book_appointment/book_appointment_page.dart
new file mode 100644
index 0000000..0f9a325
--- /dev/null
+++ b/lib/presentation/book_appointment/book_appointment_page.dart
@@ -0,0 +1,159 @@
+import 'package:easy_localization/easy_localization.dart';
+import 'package:flutter/material.dart';
+import 'package:hmg_patient_app_new/core/app_assets.dart';
+import 'package:hmg_patient_app_new/core/app_state.dart';
+import 'package:hmg_patient_app_new/core/dependencies.dart';
+import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
+import 'package:hmg_patient_app_new/core/utils/utils.dart';
+import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
+import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
+import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart';
+import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
+import 'package:hmg_patient_app_new/presentation/book_appointment/select_clinic_page.dart';
+import 'package:hmg_patient_app_new/presentation/lab/collapsing_list_view.dart';
+import 'package:hmg_patient_app_new/theme/colors.dart';
+import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart';
+import 'package:hmg_patient_app_new/widgets/transitions/fade_page.dart';
+import 'package:provider/provider.dart';
+
+class BookAppointmentPage extends StatefulWidget {
+  const BookAppointmentPage({super.key});
+
+  @override
+  State createState() => _BookAppointmentPageState();
+}
+
+class _BookAppointmentPageState extends State {
+  late AppState appState;
+
+  @override
+  Widget build(BuildContext context) {
+    appState = getIt.get();
+    return Scaffold(
+      backgroundColor: AppColors.bgScaffoldColor,
+      body: CollapsingListView(
+        title: LocaleKeys.bookAppo.tr(context: context),
+        child: SingleChildScrollView(
+          child: Consumer(builder: (context, bookAppointmentsVM, child) {
+            return Column(
+              crossAxisAlignment: CrossAxisAlignment.start,
+              children: [
+                SizedBox(height: 16.h),
+                CustomTabBar(
+                  activeTextColor: Color(0xffED1C2B),
+                  activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1),
+                  tabs: [
+                    CustomTabBarModel(null, "General".needTranslation),
+                    CustomTabBarModel(null, "LiveCare".needTranslation),
+                  ],
+                  onTabChange: (index) {
+                    bookAppointmentsVM.onTabChanged(index);
+                  },
+                ).paddingSymmetrical(24.h, 0.h),
+                SizedBox(height: 24.h),
+                getSelectedTabData(bookAppointmentsVM.selectedTabIndex),
+              ],
+            );
+          }),
+        ),
+      ),
+    );
+  }
+
+  Widget getSelectedTabData(int index) {
+    switch (index) {
+      case 0:
+        return Column(
+          children: [
+            Container(
+              decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
+                color: AppColors.whiteColor,
+                borderRadius: 24.h,
+                hasShadow: false,
+              ),
+              child: Padding(
+                padding: EdgeInsets.all(16.h),
+                child: Column(
+                  crossAxisAlignment: CrossAxisAlignment.start,
+                  children: [
+                    Row(
+                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                      children: [
+                        Row(
+                          children: [
+                            Utils.buildSvgWithAssets(icon: AppAssets.search_by_clinic_icon, width: 40.h, height: 40.h),
+                            SizedBox(width: 12.h),
+                            Column(
+                              crossAxisAlignment: CrossAxisAlignment.start,
+                              children: [
+                                "Search By Clinic".needTranslation.toText14(color: AppColors.textColor, weight: FontWeight.w500),
+                                "Tap to select clinic".needTranslation.toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500),
+                              ],
+                            ),
+                          ],
+                        ),
+                        Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon, iconColor: AppColors.textColor, width: 15.h, height: 15.h),
+                      ],
+                    ).onPress(() {
+                      Navigator.of(context).push(
+                        FadePage(
+                          page: SelectClinicPage(),
+                        ),
+                      );
+                    }),
+                    SizedBox(height: 16.h),
+                    Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h),
+                    SizedBox(height: 16.h),
+                    Row(
+                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                      children: [
+                        Row(
+                          children: [
+                            Utils.buildSvgWithAssets(icon: AppAssets.search_by_doctor_icon, width: 40.h, height: 40.h),
+                            SizedBox(width: 12.h),
+                            Column(
+                              crossAxisAlignment: CrossAxisAlignment.start,
+                              children: [
+                                "Search By Doctor".needTranslation.toText14(color: AppColors.textColor, weight: FontWeight.w500),
+                                "Tap to select".needTranslation.toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500),
+                              ],
+                            ),
+                          ],
+                        ),
+                        Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon, iconColor: AppColors.textColor, width: 15.h, height: 15.h),
+                      ],
+                    ).onPress(() {}),
+                    SizedBox(height: 16.h),
+                    Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h),
+                    SizedBox(height: 16.h),
+                    Row(
+                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                      children: [
+                        Row(
+                          children: [
+                            Utils.buildSvgWithAssets(icon: AppAssets.search_by_region_icon, width: 40.h, height: 40.h),
+                            SizedBox(width: 12.h),
+                            Column(
+                              crossAxisAlignment: CrossAxisAlignment.start,
+                              children: [
+                                "Search By Region".needTranslation.toText14(color: AppColors.textColor, weight: FontWeight.w500),
+                                "Central Region".needTranslation.toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500),
+                              ],
+                            ),
+                          ],
+                        ),
+                        Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon, iconColor: AppColors.textColor, width: 15.h, height: 15.h),
+                      ],
+                    ).onPress(() {}),
+                  ],
+                ),
+              ),
+            ),
+          ],
+        ).paddingSymmetrical(24.h, 0.h);
+      default:
+        SizedBox.shrink();
+    }
+    return Container();
+  }
+}
diff --git a/lib/presentation/book_appointment/select_clinic_page.dart b/lib/presentation/book_appointment/select_clinic_page.dart
new file mode 100644
index 0000000..496f7d5
--- /dev/null
+++ b/lib/presentation/book_appointment/select_clinic_page.dart
@@ -0,0 +1,29 @@
+import 'package:easy_localization/easy_localization.dart';
+import 'package:flutter/material.dart';
+import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
+import 'package:hmg_patient_app_new/presentation/lab/collapsing_list_view.dart';
+import 'package:hmg_patient_app_new/theme/colors.dart';
+
+class SelectClinicPage extends StatefulWidget {
+  const SelectClinicPage({super.key});
+
+  @override
+  State createState() => _SelectClinicPageState();
+}
+
+class _SelectClinicPageState extends State {
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      backgroundColor: AppColors.bgScaffoldColor,
+      body: CollapsingListView(
+        title: LocaleKeys.selectClinic.tr(context: context),
+        child: SingleChildScrollView(
+          child: Column(
+            children: [],
+          ),
+        ),
+      ),
+    );
+  }
+}
diff --git a/lib/presentation/home/navigation_screen.dart b/lib/presentation/home/navigation_screen.dart
index 152bbd2..bdce393 100644
--- a/lib/presentation/home/navigation_screen.dart
+++ b/lib/presentation/home/navigation_screen.dart
@@ -1,4 +1,5 @@
 import 'package:flutter/material.dart';
+import 'package:hmg_patient_app_new/presentation/book_appointment/book_appointment_page.dart';
 import 'package:hmg_patient_app_new/presentation/home/landing_page.dart';
 import 'package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart';
 import 'package:hmg_patient_app_new/widgets/bottom_navigation/bottom_navigation.dart';
@@ -23,7 +24,7 @@ class _LandingNavigationState extends State {
         children: [
           const LandingPage(),
           MedicalFilePage(),
-          const LandingPage(),
+          const BookAppointmentPage(),
           const LandingPage(),
           const LandingPage(),
         ],
diff --git a/lib/presentation/home/widgets/small_service_card.dart b/lib/presentation/home/widgets/small_service_card.dart
index f988e18..6e1c588 100644
--- a/lib/presentation/home/widgets/small_service_card.dart
+++ b/lib/presentation/home/widgets/small_service_card.dart
@@ -2,8 +2,10 @@ import 'package:flutter/material.dart';
 import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
 import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
 import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
+import 'package:hmg_patient_app_new/presentation/appointments/my_doctors_page.dart';
 import 'package:hmg_patient_app_new/presentation/insurance/insurance_home_page.dart';
 import 'package:hmg_patient_app_new/presentation/lab/lab_orders_page.dart';
+import 'package:hmg_patient_app_new/presentation/medical_file/patient_sickleaves_list_page.dart';
 import 'package:hmg_patient_app_new/presentation/prescriptions/prescriptions_list_page.dart';
 import 'package:hmg_patient_app_new/widgets/transitions/fade_page.dart';
 
@@ -85,6 +87,22 @@ class SmallServiceCard extends StatelessWidget {
             ),
           );
           break;
+
+        case "my_doctors":
+          Navigator.of(context).push(
+            FadePage(
+              page: MyDoctorsPage(),
+            ),
+          );
+          break;
+
+        case "sick_leaves":
+          Navigator.of(context).push(
+            FadePage(
+              page: PatientSickleavesListPage(),
+            ),
+          );
+          break;
         default:
           // Handle unknown service
           break;
diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart
index 22aff4d..48193e8 100644
--- a/lib/presentation/medical_file/medical_file_page.dart
+++ b/lib/presentation/medical_file/medical_file_page.dart
@@ -24,6 +24,7 @@ import 'package:hmg_patient_app_new/presentation/insurance/insurance_home_page.d
 import 'package:hmg_patient_app_new/presentation/insurance/widgets/patient_insurance_card.dart';
 import 'package:hmg_patient_app_new/presentation/lab/collapsing_list_view.dart';
 import 'package:hmg_patient_app_new/presentation/medical_file/medical_reports_page.dart';
+import 'package:hmg_patient_app_new/presentation/medical_file/patient_sickleaves_list_page.dart';
 import 'package:hmg_patient_app_new/presentation/medical_file/vaccine_list_page.dart';
 import 'package:hmg_patient_app_new/presentation/medical_file/widgets/lab_rad_card.dart';
 import 'package:hmg_patient_app_new/presentation/medical_file/widgets/medical_file_card.dart';
@@ -700,7 +701,7 @@ class _MedicalFilePageState extends State {
                 ).onPress(() {
                   Navigator.of(context).push(
                     FadePage(
-                      page: VaccineListPage(),
+                      page: PatientSickleavesListPage(),
                     ),
                   );
                 }),
diff --git a/lib/presentation/medical_file/medical_reports_page.dart b/lib/presentation/medical_file/medical_reports_page.dart
index c30f9af..ea3c34d 100644
--- a/lib/presentation/medical_file/medical_reports_page.dart
+++ b/lib/presentation/medical_file/medical_reports_page.dart
@@ -57,6 +57,7 @@ class _MedicalReportsPageState extends State {
                     return medicalFileViewModel.isPatientMedicalReportsListLoading
                         ? PatientMedicalReportCard(
                             patientMedicalReportResponseModel: PatientMedicalReportResponseModel(),
+                            medicalFileViewModel: medicalFileVM,
                             isLoading: true,
                           ).paddingSymmetrical(24.h, 0.h)
                         : AnimationConfiguration.staggeredList(
@@ -71,6 +72,8 @@ class _MedicalReportsPageState extends State {
                                   decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true),
                                   child: PatientMedicalReportCard(
                                     patientMedicalReportResponseModel: medicalFileVM.patientMedicalReportList[index],
+                                    medicalFileViewModel: medicalFileVM,
+
                                     isLoading: false,
                                   ),
                                 ).paddingSymmetrical(24.h, 0.h),
diff --git a/lib/presentation/medical_file/widgets/patient_medical_report_card.dart b/lib/presentation/medical_file/widgets/patient_medical_report_card.dart
index 3f890e6..eb1730c 100644
--- a/lib/presentation/medical_file/widgets/patient_medical_report_card.dart
+++ b/lib/presentation/medical_file/widgets/patient_medical_report_card.dart
@@ -1,25 +1,35 @@
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:hmg_patient_app_new/core/app_assets.dart';
+import 'package:hmg_patient_app_new/core/app_state.dart';
+import 'package:hmg_patient_app_new/core/dependencies.dart';
 import 'package:hmg_patient_app_new/core/utils/date_util.dart';
 import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
+import 'package:hmg_patient_app_new/core/utils/utils.dart';
 import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
 import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
+import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart';
 import 'package:hmg_patient_app_new/features/medical_file/models/patient_medical_response_model.dart';
 import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
 import 'package:hmg_patient_app_new/theme/colors.dart';
 import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
 import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart';
+import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart';
+import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart';
+import 'package:open_filex/open_filex.dart';
+import 'package:share_plus/share_plus.dart';
 
 class PatientMedicalReportCard extends StatelessWidget {
-  PatientMedicalReportCard({super.key, required this.patientMedicalReportResponseModel, this.isLoading = false});
+  PatientMedicalReportCard({super.key, required this.patientMedicalReportResponseModel, required this.medicalFileViewModel, this.isLoading = false});
 
   PatientMedicalReportResponseModel patientMedicalReportResponseModel;
+  MedicalFileViewModel medicalFileViewModel;
 
   bool isLoading = true;
 
   @override
   Widget build(BuildContext context) {
+    AppState _appState = getIt.get();
     return Container(
       decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
         color: AppColors.whiteColor,
@@ -78,7 +88,9 @@ class PatientMedicalReportCard extends StatelessWidget {
                         Expanded(
                           child: CustomButton(
                             text: "Share",
-                            onPressed: () {},
+                            onPressed: () {
+                              getMedicalReportPDF(true, context, _appState);
+                            },
                             backgroundColor: AppColors.secondaryLightRedColor,
                             borderColor: AppColors.secondaryLightRedColor,
                             textColor: AppColors.primaryRedColor,
@@ -95,7 +107,9 @@ class PatientMedicalReportCard extends StatelessWidget {
                         Expanded(
                           child: CustomButton(
                             text: "Download",
-                            onPressed: () {},
+                            onPressed: () async {
+                              getMedicalReportPDF(false, context, _appState);
+                            },
                             backgroundColor: AppColors.secondaryLightRedColor,
                             borderColor: AppColors.secondaryLightRedColor,
                             textColor: AppColors.primaryRedColor,
@@ -117,4 +131,29 @@ class PatientMedicalReportCard extends StatelessWidget {
       ),
     );
   }
+
+  void getMedicalReportPDF(bool isShare, BuildContext context, AppState _appState) async {
+    LoaderBottomSheet.showLoader();
+    await medicalFileViewModel.getPatientMedicalReportPDF(patientMedicalReportResponseModel, _appState.getAuthenticatedUser()!).then((val) async {
+      LoaderBottomSheet.hideLoader();
+      if (medicalFileViewModel.patientMedicalReportPDFBase64.isNotEmpty) {
+        String path = await Utils.createFileFromString(medicalFileViewModel.patientMedicalReportPDFBase64, "pdf");
+        if (isShare) {
+          Share.shareXFiles([XFile(path)], text: "Medical Report");
+        } else {
+          try {
+            OpenFilex.open(path);
+          } catch (ex) {
+            showCommonBottomSheetWithoutHeight(
+              context,
+              child: Utils.getErrorWidget(loadingText: "Cannot open file".needTranslation),
+              callBackFunc: () {},
+              isFullScreen: false,
+              isCloseButtonVisible: true,
+            );
+          }
+        }
+      }
+    });
+  }
 }