Firestore Database Schema
Struktur dokumen NoSQL Cloud Firestore, koleksi utama, subkoleksi, dan indeks komposit.
Status: Stablev1.0.0Source Verified: Yes
Source:
firestore.rules, firestore.indexes.json, src/types/firestore.tsTests: tests/rules/firestore.test.tsFirestore Database Schema#
OrthoBreath menggunakan Google Cloud Firestore dalam mode Native sebagai database NoSQL terdistribusi.
1. Entity Relationship Diagram#
Diagram Arsitektur / Alur Data
Merender diagram alur terstruktur...
2. Daftar Koleksi Utama#
| Koleksi | Path Dokumen | Deskripsi | Otorisasi Akses |
|---|---|---|---|
clinics | /clinics/{clinicId} | Data identitas dan status operasional fasilitas kesehatan | Super Admin |
users | /users/{uid} | Profil akun, role RBAC, dan asosiasi clinicId | Admin & Owner |
patients | /patients/{patientId} | Identitas demografis pasien dan relasi wali/orang tua | Staf Klinik & Orang Tua |
clinicalSessions | /clinicalSessions/{sessionId} | State machine pemeriksaan sensor & dental aktif | Staf Klinik |
medicalRecords | /medicalRecords/{recordId} | Rekam medis final yang telah divalidasi dokter | Staf Klinik & Orang Tua |
hardwareProfiles | /hardwareProfiles/{deviceId} | Konfigurasi kalibrasi sensor tekanan XGZP6847A | Staf Klinik & Admin |
auditLogs | /auditLogs/{logId} | Catatan audit trail tindakan administratif & medis | Admin (Read-only) |
parentInvitations | /parentInvitations/{invitationId} | Token klaim hak akses orang tua terhadap data anak | Publik / Orang Tua |
3. Indeks Komposit Firestore (firestore.indexes.json)#
json
json
1{2 "indexes": [3 {4 "collectionGroup": "clinicalSessions",5 "queryScope": "COLLECTION",6 "fields": [7 { "fieldPath": "clinicId", "order": "ASCENDING" },8 { "fieldPath": "createdAt", "order": "DESCENDING" }9 ]10 },11 {12 "collectionGroup": "patients",13 "queryScope": "COLLECTION",14 "fields": [15 { "fieldPath": "clinicId", "order": "ASCENDING" },16 { "fieldPath": "fullName", "order": "ASCENDING" }17 ]18 }19 ]20}