Multi-role healthcare operations app for patients, doctors, lab techs, and admins with real-time workflows on Firebase RTDB.
Built by Shashank Preetham Pendyala
PulseGrid is a production-ready healthcare operations app with role-specific workflows for Admins, Doctors, Lab Technicians, and Patients. It streamlines intake, lab testing, prescriptions, risk monitoring, and payment flows while keeping every role synced in real time using Firebase RTDB, Functions, and FCM. AI modules (TFLite + ML Kit) support on-device intelligence and assisted workflows.
- Why It Matters
- Key Features
- Roles and Permissions
- Architecture
- Tech Stack
- Project Structure
- Firebase Data Model
- Getting Started
- Environment Variables
- Run, Build, Test
- Configuration
- Deployment
- Monitoring and Logging
- Security Notes
- Troubleshooting
- License
- Multi-role clinical workflows are fragmented across tools and teams.
- Labs and clinicians need fast, reliable coordination for critical results.
- Patients need a clear, trusted path for reports, prescriptions, and payments.
| Capability | Description |
|---|---|
| Role-based UX | Distinct flows for Admin, Doctor, Lab Tech, Patient. |
| Real-time sync | Firebase RTDB keeps assignments, alerts, and statuses live. |
| Lab lifecycle | Test ordering, entry, validation, and report delivery. |
| Critical alerts | Alerts and notifications via FCM. |
| Prescriptions | Structured entry, history, and sharing. |
| Payments | Razorpay checkout and invoice workflows. |
| AI utilities | On-device models + assisted decision support UI. |
| Audit trail | Operational logging for clinical actions. |
- Admin: onboarding, assignments, invoice oversight, operational stats.
- Doctor: patient lists, risk panels, alerts, prescriptions, follow-ups.
- Lab Tech: test intake, parameters, validation, report delivery.
- Patient: onboarding, history, prescriptions, payments, risk insights.
flowchart LR
U[Users\nAdmin / Doctor / Lab / Patient] --> AND[Android App\nPulseGrid]
AND -->|HTTPS + SDK| RTDB[(Firebase RTDB)]
AND --> FCM[Firebase Cloud Messaging]
AND --> FUNC[Firebase Functions]
AND --> PAY[Razorpay Checkout]
AND --> ML[TFLite + ML Kit]
subgraph Firebase
RTDB
FCM
FUNC
end
- Mobile: Android (Java/Kotlin), Material 3, Gradle
- Backend: Firebase (RTDB, Functions, FCM)
- AI/ML: TFLite, ML Kit (Translate)
- Networking: OkHttp
- Security: AndroidX Security Crypto
- Payments: Razorpay
.
|-- app/ # Android client
| |-- src/main/
| | |-- AndroidManifest.xml
| | |-- java/com/pulsegrid/app/
| | |-- res/
| |-- build.gradle.kts
|-- functions/ # Firebase Cloud Functions
|-- assets/ # Repo assets (logo, docs)
|-- gradle/ # Gradle wrapper
|-- settings.gradle.kts
|-- README.md
criticalNotifications/{doctorId}/{alertId}
patients/{patientId}
patientHistory/{patientId}/{entryId}
labTests/{labId}/{testId}
labReports/{patientId}/{reportId}
prescriptions/{patientId}/{rxId}
assignments/{doctorId}/{patientId}
- Android Studio (recent stable)
- JDK 17
- Firebase project (RTDB, FCM, Functions enabled)
git clone <REPO_URL>
cd pulsegrid-androidOpen in Android Studio and let Gradle sync.
Add these to gradle.properties (or local CI secrets):
| Key | Purpose | Example |
|---|---|---|
GEMINI_API_KEY |
Optional AI calls | AI... |
OPENAI_API_KEY |
Optional AI calls | sk-... |
OPENAI_API_KEY_1..5 |
Optional key rotation | sk-... |
./gradlew :app:assembleDebug
./gradlew :app:installDebug
./gradlew testapp/google-services.json: Firebase config (replace with your project keys)app/src/main/res/values/strings.xml: branding + UI copyfunctions/: Firebase Functions deployment
./gradlew :app:bundleReleasecd functions
npm install
firebase deploy --only functions- Android: Logcat
- Firebase: Functions logs, RTDB usage, Crashlytics (if enabled)
- Never commit real API keys or service credentials.
- Use Firebase Security Rules to scope patient/role access.
- Validate inputs for all write paths and protect critical alert flows.
- Build errors: ensure JDK 17 and Gradle sync.
- Firebase issues: replace
app/google-services.jsonwith your own. - Payments: verify Razorpay keys and configuration.
MIT License. See LICENSE.