Total Patients
0
↑ 12% this month
Today's Appts
0
Scheduled today
Doctors On Duty
0
Available now
Revenue (Month)
₹0
↑ 8% vs last month
Monthly Revenue (₹000s)2025
Today's Schedule
Recent Patients
| Patient | Age/Sex | Condition |
|---|
Pending Bills
| Patient | Amount | Status |
|---|
Patient Registry0 records
| Patient | Age/Sex | Phone | Condition | Blood | Actions |
|---|
Medical Staff Directory
| Doctor | Specialization | Availability | Timing | Status | Actions |
|---|
Appointments
| Patient | Doctor | Date & Time | Type | Status | Actions |
|---|
Collected
₹0
Pending
₹0
Total Bills
0
Billing Records
| Bill # | Patient | Services | Amount | Mode | Status | Actions |
|---|
Prescriptions
| Rx # | Patient | Doctor | Diagnosis | Date | Actions |
|---|
Lab Reports
| Report # | Patient | Test | Lab | Date | Actions |
|---|
Admins
0
Doctors
0
Receptionists
0
Staff Management
| Name | Department | Role | Actions |
|---|
Firebase Configuration
Get config from Firebase Console → Project Settings → Your Apps → SDK setup and configuration
Cloud Function — AI Backend (functions/index.js)
const functions = require("firebase-functions");
const admin = require("firebase-admin");
const Anthropic = require("@anthropic-ai/sdk");
admin.initializeApp();
exports.askAI = functions.https.onCall(async (data, context) => {
if (!context.auth)
throw new functions.https.HttpsError("unauthenticated", "Login required");
const role = (await admin.firestore()
.collection("users").doc(context.auth.uid).get()).data()?.role;
if (!["admin","doctor"].includes(role))
throw new functions.https.HttpsError("permission-denied", "Restricted");
const client = new Anthropic({ apiKey: functions.config().ai.key });
const { question, summaryData } = data; // ← only aggregate stats, never PII
const res = await client.messages.create({
model: "claude-opus-4-5", max_tokens: 512,
messages: [{ role:"user", content:`Stats:${JSON.stringify(summaryData)}\nQ:${question}` }]
});
return { answer: res.content[0].text };
});