Database Schema & Structure
Visual representation of the WootHealth database collections and their structure
📦 Users Database
Database ID: users — Contains all user-related collections
👤 users
- userId string (ID) Unique Appwrite user ID
- email string User email address
- firstName string First name
- lastName string Last name
- phone string Phone number
- createdAt string (datetime) Account creation timestamp
Sample Document
{
"$id": "user_123",
"userId": "auth_user_123",
"email": "quadri@example.com",
"firstName": "Quadri",
"lastName": "Adekunle",
"phone": "+234800000000",
"createdAt": "2025-12-23 10:30:00"
}
📋 plans
- userId string Owner of the plan
- name string Plan name (e.g., Retail Quantum Plan)
- monthlyPremium number Monthly premium in Naira
- coveredMembers number Number of family members covered
- nextRenewal string (date) Plan renewal date
- planType string Coverage type (Individual/Family)
- hmoId string HMO identifier
Sample Document
{
"$id": "plan_456",
"userId": "user_123",
"name": "Retail Quantum Plan",
"monthlyPremium": 34100,
"coveredMembers": 4,
"nextRenewal": "2025-01-10",
"planType": "Family Coverage",
"hmoId": "111076"
}
🏥 benefits
- userId string User who has this benefit
- planId string Associated plan ID
- title string Benefit name (e.g., Hospital Care)
- annualLimit number Annual coverage limit
- used number Amount already used
Sample Document
{
"$id": "benefit_789",
"userId": "user_123",
"planId": "plan_456",
"title": "Hospital Care",
"annualLimit": 5000000,
"used": 450000
}
👥 enrollees
- userId string Primary enrollee
- dependentName string Name of dependent
- relationship string Relationship (Spouse/Child/Parent)
- dateOfBirth string (date) DOB of dependent
- enrollmentStatus string Active/Pending/Inactive
Sample Document
{
"$id": "enrollee_001",
"userId": "user_123",
"dependentName": "Jane Adekunle",
"relationship": "Spouse",
"dateOfBirth": "1985-06-15",
"enrollmentStatus": "Active"
}
🏢 clients
- companyName string Organization name
- contactEmail string Company contact email
- contactPhone string Contact phone number
- employees number Number of employees covered
- status string Active/Inactive
Sample Document
{
"$id": "client_001",
"companyName": "TechCorp Nigeria",
"contactEmail": "hr@techcorp.ng",
"contactPhone": "+234123456789",
"employees": 250,
"status": "Active"
}
💰 finance
- userId string User associated with transaction
- transactionType string Premium/Refund/Claim
- amount number Transaction amount
- transactionDate string (datetime) When transaction occurred
- status string Pending/Completed/Failed
Sample Document
{
"$id": "fin_001",
"userId": "user_123",
"transactionType": "Premium",
"amount": 34100,
"transactionDate": "2025-12-23 10:00:00",
"status": "Completed"
}
🏥 providers
- name string Provider name
- specialization string Medical specialty
- address string Facility address
- phone string Contact number
- status string Active/Inactive
📝 claims
- userId string Claimant user ID
- claimAmount number Claim amount requested
- status string Submitted/Approved/Rejected
- dateSubmitted string (date) Submission date
- notes string Additional notes
💬 feedback
- userId string User providing feedback
- subject string Feedback topic
- message string Feedback message
- rating number (1-5) Satisfaction rating
- submittedAt string (datetime) Submission timestamp
Additional Collections
The following collections are also available in the Users database and follow similar patterns with userId references:
📋 tickets
Support/issue tickets
👔 employees
Employee records
💵 reimbursement
Reimbursement requests
✅ validations
Data validation rules
🔐 pa_codes
Prior Authorization codes
🏥 telemedicine_requests
Virtual consultation requests
📦 Providers Database
Database ID: providers — Separate database for provider management
🏥 providers
- name string Provider/facility name
- specialization string Medical specialty
- address string Complete address
- phone string Contact phone
- email string Email address
- latitude number Location latitude
- longitude number Location longitude
Sample Document
{
"$id": "provider_456",
"name": "Ikeja Medical Center",
"specialization": "General Hospital",
"address": "123 Kodesho St, Ikeja",
"phone": "+234700000000",
"email": "info@ikejamedical.com",
"latitude": 6.5833,
"longitude": 3.3500
}
Data Model Relationships
Key Relationships:
- 🔗 users has many plans (one-to-many via userId)
- 🔗 plans has many benefits (one-to-many via planId)
- 🔗 users has many enrollees (dependents via userId)
- 🔗 users has many claims, feedback, tickets, etc.
- 🔗 providers database is independent (separate from users database)
API Endpoint to Collection Mapping
| Endpoint | Database | Collection |
|---|---|---|
/plans |
users | plans + benefits |
/admin/overview |
users | users, enrollees, clients, telemedicine_requests |
/admin/users |
users | users |
/admin/enrollees |
users | enrollees |
/admin/clients |
users | clients |
/admin/benefits |
users | benefits |
/admin/finance |
users | finance |
/admin/providers |
providers | providers |
/admin/claims |
users | claims |
/providers |
providers | providers (all collections) |