-
-
-
- {item.patient!.name?.charAt(0)}
-
-
- {item.patient!.name}
- {item.patient!.email}
-
-
-
- {item.status}
-
+ return (
+
+
Medical History
+ {data?.items && data?.items.length > 0 ? (
+ data?.items.map((item, index) => (
+
+
+
+
+
+
+ {item.patient!.name?.charAt(0)}
+
+
+ {item.patient!.name}
+ {item.patient!.email}
+
-
-
-
-
-
-
- {format(new Date(item.appointmentDate!), 'PPP')}
-
-
-
- {item.appointmentType}
-
-
-
-
-
- Reason: {item.reason}
-
-
-
- Notes: {item.notes}
-
-
+
{item.status}
+
+
+
+
+
+
+
+ {format(new Date(item.appointmentDate!), "PPP")}
+
+
+
+ {item.appointmentType}
+
- {item.prescription && (
-
-
Prescription
-
- {item.prescription.medications?.map((med, medIndex) => (
-
-
-
-
{med.name}
-
- {med.dosage}, {med.frequency}, {med.duration}
- {med.additionalInstructions!.length > 0 && (
-
{med.additionalInstructions}
- )}
-
-
- ))}
-
-
- )}
-
-
- )):(
-
-
- Patient has no medical history yet
-
-
- )}
-
-
- )
-}
\ No newline at end of file
+
+
+
+ Reason: {item.reason}
+
+
+
+ Notes: {item.notes}
+
+
+
+ {item.prescription && (
+
+
Prescription
+
+ {item.prescription.medications?.map((med, medIndex) => (
+
+
+
+
{med.name}
+
+ {" "}
+ - {med.dosage}, {med.frequency}, {med.duration}
+
+ {med.additionalInstructions!.length > 0 && (
+
{med.additionalInstructions}
+ )}
+
+
+ ))}
+
+
+ )}
+
+
+ ))
+ ) : (
+
+ Patient has no medical history yet
+
+ )}
+
+
+ );
+}
diff --git a/client/app/doctor/(pages)/patients/page.tsx b/client/app/doctor/(pages)/patients/page.tsx
index f1a931f9..85ae4ba0 100644
--- a/client/app/doctor/(pages)/patients/page.tsx
+++ b/client/app/doctor/(pages)/patients/page.tsx
@@ -1,16 +1,14 @@
-import DoctorPatientsTable from "@/components/view/table/DoctorPatientsTable"
-import { Metadata } from "next"
+import DoctorPatientsTable from "@/components/view/table/DoctorPatientsTable";
+import { Metadata } from "next";
-export const metadata:Metadata = {
- title:"Patients",
- description:"Medical records of patient ",
- keywords:"medical record, patients, appointments"
-}
+export const metadata: Metadata = {
+ title: "Patients",
+ description: "Medical records of patient ",
+ keywords: "medical record, patients, appointments",
+};
const page = ({ searchParams }: { searchParams: { page: number } }) => {
- const page = searchParams.page || 1;
- return (
-
- )
-}
+ const page = searchParams.page || 1;
+ return
;
+};
-export default page
\ No newline at end of file
+export default page;
diff --git a/client/app/doctor/(pages)/video-call/[sectionId]/page.tsx b/client/app/doctor/(pages)/video-call/[sectionId]/page.tsx
index 8d1f5cc2..d5c17b19 100644
--- a/client/app/doctor/(pages)/video-call/[sectionId]/page.tsx
+++ b/client/app/doctor/(pages)/video-call/[sectionId]/page.tsx
@@ -1,46 +1,46 @@
-'use client'
+"use client";
-import { useParams } from 'next/navigation';
-import JoinVideoCallPage from '@/components/page-components/video/JoinVideoCallPage';
-import VideoChat from '@/components/page-components/video/VideoChat';
-import { useGetSectionByIdDoctor } from '@/lib/hooks/video/useDoctor';
-import { useVideoCall } from '@/lib/hooks/useVideoCall';
+import { useParams } from "next/navigation";
+import JoinVideoCallPage from "@/components/page-components/video/JoinVideoCallPage";
+import VideoChat from "@/components/page-components/video/VideoChat";
+import { useGetSectionByIdDoctor } from "@/lib/hooks/video/useDoctor";
+import { useVideoCall } from "@/lib/hooks/useVideoCall";
export default function DoctorVideoCallPage() {
- const { sectionId } = useParams();
- const { data, isLoading } = useGetSectionByIdDoctor(sectionId as string);
- const section = data?.section;
+ const { sectionId } = useParams();
+ const { data, isLoading } = useGetSectionByIdDoctor(sectionId as string);
+ const section = data?.section;
- const {
- hasJoined,
- localStream,
- remoteStream,
- isMuted,
- isVideoOff,
- handleJoin,
- handleEndCall,
- toggleMute,
- toggleVideo,
- } = useVideoCall(section, 'doctor');
+ const {
+ hasJoined,
+ localStream,
+ remoteStream,
+ isMuted,
+ isVideoOff,
+ handleJoin,
+ handleEndCall,
+ toggleMute,
+ toggleVideo,
+ } = useVideoCall(section, "doctor");
- if (isLoading) return
Loading...
;
+ if (isLoading) return
Loading...
;
- if (!hasJoined) {
- return
;
- }
+ if (!hasJoined) {
+ return
;
+ }
- return (
-
- );
+ return (
+
+ );
}
diff --git a/client/app/doctor/(pages)/video-sections/page.tsx b/client/app/doctor/(pages)/video-sections/page.tsx
index c5772d5d..6253747a 100644
--- a/client/app/doctor/(pages)/video-sections/page.tsx
+++ b/client/app/doctor/(pages)/video-sections/page.tsx
@@ -1,15 +1,13 @@
-import VideoSectionsTable from '@/components/view/table/DoctorVideoSectionsTable';
-import { Metadata } from 'next';
+import VideoSectionsTable from "@/components/view/table/DoctorVideoSectionsTable";
+import { Metadata } from "next";
-export const metadata:Metadata = {
- title:"Video Sections",
- keywords:["video call", 'video sections', 'doctor dashboard','ayurvedic']
-}
+export const metadata: Metadata = {
+ title: "Video Sections",
+ keywords: ["video call", "video sections", "doctor dashboard", "ayurvedic"],
+};
const Page = () => {
- return (
-
- );
+ return
;
};
export default Page;
diff --git a/client/app/doctor/@auth/default.tsx b/client/app/doctor/@auth/default.tsx
index 213f4944..61ae1582 100644
--- a/client/app/doctor/@auth/default.tsx
+++ b/client/app/doctor/@auth/default.tsx
@@ -1,2 +1,2 @@
-import Page from './page';
-export default Page;
\ No newline at end of file
+import Page from "./page";
+export default Page;
diff --git a/client/app/doctor/layout.tsx b/client/app/doctor/layout.tsx
index d4e471ed..955bd646 100644
--- a/client/app/doctor/layout.tsx
+++ b/client/app/doctor/layout.tsx
@@ -1,8 +1,7 @@
import { ReactNode, FC } from "react";
import { Metadata } from "next";
import Layout from "@/components/layout/DoctorLayout";
-import { metadata as rootMeta } from '@/app/layout';
-
+import { metadata as rootMeta } from "@/app/layout";
interface AdminLayoutWrapperProps {
children: ReactNode;
diff --git a/client/app/doctor/not-found.tsx b/client/app/doctor/not-found.tsx
index 09c9b50d..810297ac 100644
--- a/client/app/doctor/not-found.tsx
+++ b/client/app/doctor/not-found.tsx
@@ -4,7 +4,7 @@ import { Button } from "@/components/ui/button";
import useRedirect from "@/lib/hooks/useRedirect";
export default function NotFound() {
- const redirect = useRedirect()
+ const redirect = useRedirect();
return (
diff --git a/client/app/layout.tsx b/client/app/layout.tsx
index 2b44e267..4880cbcb 100644
--- a/client/app/layout.tsx
+++ b/client/app/layout.tsx
@@ -1,16 +1,17 @@
import type { Metadata } from "next";
import { ThemeProvider } from "@/lib/providers/ThemeProvider";
import { AuthProvider } from "@/lib/providers/auth-provider";
-import { SpeedInsights } from '@vercel/speed-insights/next';
+import { SpeedInsights } from "@vercel/speed-insights/next";
import QueryProvider from "@/lib/providers/query-provider";
import { Plus_Jakarta_Sans } from "next/font/google";
-import { Analytics } from "@vercel/analytics/react"
+import { Analytics } from "@vercel/analytics/react";
import { Toaster } from "@/components/ui/toaster";
import NavBar from "@/components/layout/NavBar";
import Footer from "@/components/layout/Footer";
import { cn } from "@/lib/utils";
import "../styles/globals.css";
import "../styles/chart.css";
+import { MetaKeyWords } from "@/constants";
const inter = Plus_Jakarta_Sans({
subsets: ["latin"],
@@ -18,10 +19,63 @@ const inter = Plus_Jakarta_Sans({
variable: "--font-sans",
});
+export const metadata: Metadata = {
+ metadataBase: new URL("https://avm-ayurvedic.online"),
+ title: {
+ template: "%s | AVM Ayurvedic",
+ default: "AVM Ayurvedic - Holistic Ayurveda Health Care & Wellness",
+ },
+ description:
+ "Experience authentic Ayurvedic treatments at AVM Ayurvedic Hospital. Book online appointments, access video consultations, and embrace holistic healing for a balanced life.",
+ openGraph: {
+ title: "AVM Ayurvedic - Holistic Ayurveda Health & Wellness",
+ description:
+ "Discover personalized Ayurvedic care with AVM Ayurvedic. Book consultations and experience the benefits of natural healing.",
+ type: "website",
+ url: "/",
+ siteName: "AVM Ayurvedic",
+ locale: "en_US",
+ images: [
+ {
+ url: "/og-image.webp",
+ width: 1200,
+ height: 630,
+ alt: "AVM Ayurvedic - Holistic Ayurveda Health Care",
+ },
+ ],
+ },
+ twitter: {
+ card: "summary_large_image",
+ title: "AVM Ayurvedic - Holistic Health & Wellness",
+ description:
+ "Book Ayurvedic treatments & consultations online. Embrace natural healing and wellness through authentic Ayurveda.",
+ images: ["/og-image.webp"],
+ },
+ robots: {
+ index: true,
+ follow: true,
+ googleBot: {
+ index: true,
+ follow: true,
+ "max-video-preview": -1,
+ "max-image-preview": "large",
+ "max-snippet": -1,
+ },
+ },
+ keywords: MetaKeyWords,
+ alternates: {
+ canonical: "/",
+ },
+ icons: {
+ icon: "/favicon.ico",
+ apple: "/favicon.ico",
+ },
+ category: "health",
+};
export default function RootLayout({
children,
- chatbot
+ chatbot,
}: Readonly<{
children: React.ReactNode;
chatbot: React.ReactNode;
@@ -46,76 +100,3 @@ export default function RootLayout({