How chandanhastantram/low-cost-telehealth-solution-for-villages-gramcare- works
GramCare is an offline-first telehealth platform for rural care teams and patients. The main workflow is to authenticate, register or find a patient, book an appointment, conduct a consultation, and record clinical notes; triage, media, chat, and audit support that care. Clients can also submit and retrieve offline changes through sync, while store-and-forward supports delayed consultation work. The README documents these capabilities; sampled source confirms app routing, auth, storage URL generation, and live call/chat behavior, but most endpoint internals and offline client storage were not sampled.
Main entry points: router.py API router · session.py Database sessions · App.jsx Web application · api.js HTTP client
Components 28
Web client
- Web application
frontend/src/App.jsx - Sign in
frontend/src/pages/Login.jsx - Care workflows
frontend/src/pages/Dashboard.jsx - Appointment room
frontend/src/pages/AppointmentRoom.jsx - Patient records
frontend/src/pages/PatientRecords.jsx - Store-forward queue
frontend/src/pages/StoreForwardQueue.jsx - HTTP client
frontend/src/api.js
REST care API
- FastAPI app
backend/app/main.py - API router
backend/app/api/v1/router.py - Authentication
backend/app/api/v1/endpoints/auth.py - Patient registration
backend/app/api/v1/endpoints/patients.py - Appointments
backend/app/api/v1/endpoints/appointments.py - Clinical records
backend/app/api/v1/endpoints/encounters.py - Rule-based triage
backend/app/api/v1/endpoints/triage.py - Offline sync
backend/app/api/v1/endpoints/sync.py - Media access
backend/app/api/v1/endpoints/media.py - Message history
backend/app/api/v1/endpoints/messages.py - Consultation rooms
backend/app/api/v1/endpoints/teleconsult.py - User and audit
backend/app/api/v1/endpoints/users.py
Live consultation
- Socket.IO signaling
backend/app/realtime/socketio_app.py
Persistence and services
- Database sessions
backend/app/db/session.py - Care data models
backend/app/models/models.py - PostgreSQL
- Redis
- OTP delivery
backend/app/services/otp_service.py - MinIO object storage
- Presigned URLs
backend/app/services/storage_service.py
Other components
- Patients and care team
Connections 42
- Patients and care team → Web application: use
- Web application → Sign in: routes to
- Web application → Care workflows: routes to
- Web application → Appointment room: routes to
- Web application → Patient records: routes to
- Web application → Store-forward queue: routes to
- Sign in → HTTP client: requests auth
- Care workflows → HTTP client: requests care
- Patient records → HTTP client: requests records
- Store-forward queue → HTTP client: syncs changes
- Appointment room → HTTP client: loads room data
- Appointment room → Socket.IO signaling: signals and chats
- HTTP client → FastAPI app: HTTPS requests
- FastAPI app → API router: mounts routes
- API router → Authentication: dispatches
- API router → Patient registration: dispatches
- API router → Appointments: dispatches
- API router → Clinical records: dispatches
- API router → Rule-based triage: dispatches
- API router → Offline sync: dispatches
- API router → Media access: dispatches
- API router → Message history: dispatches
- API router → Consultation rooms: dispatches
- API router → User and audit: dispatches
- Authentication → OTP delivery: sends OTP
- Authentication → Redis: rate limits
- Authentication → Database sessions: reads and writes
- Patient registration → Database sessions: reads and writes
- Appointments → Database sessions: reads and writes
- Clinical records → Database sessions: reads and writes
- Rule-based triage → Database sessions: evaluates records
- Offline sync → Database sessions: syncs changes
- Media access → Presigned URLs: requests URLs
- Message history → Database sessions: reads history
- Consultation rooms → Database sessions: loads appointments
- User and audit → Database sessions: reads and writes
- Presigned URLs → MinIO object storage: signs object access
- Database sessions → PostgreSQL: queries
- Database sessions → Care data models: maps entities
- Socket.IO signaling → Database sessions: authenticates and persists chat
- Socket.IO signaling → Patients and care team: relays peer signals
- OTP delivery → Patients and care team: delivers OTP