Platform komprehensif untuk deteksi fraud dan monitoring klaim BPJS kesehatan yang terintegrasi dengan berbagai sistem seperti P-Care, V-Claim, dan Mobile JKN.
- Arsitektur Sistem
- Prasyarat
- Instalasi & Setup
- Konfigurasi Environment Variables
- Menjalankan Aplikasi
- Struktur Project
- Troubleshooting
Project ini terdiri dari beberapa service yang saling terintegrasi:
| Service | Teknologi | Port | Deskripsi |
|---|---|---|---|
| Brain | FastAPI (Python) | 20501 | AI engine untuk fraud detection dan judge analysis |
| Dashboard | Next.js (TypeScript) | 20502 | Command center dashboard untuk monitoring real-time |
| Docs | Astro | 20503 | Dokumentasi project |
| P-Care | Next.js | 20504 | Interface untuk sistem P-Care BPJS |
| V-Claim | Next.js | 20505 | Interface untuk sistem V-Claim BPJS |
| Mobile JKN | Flutter | - | Aplikasi mobile untuk pasien |
| Notification Service | Go | 8080 | Service untuk push notification via FCM |
Pastikan sistem Anda telah menginstall tools berikut:
- Node.js >= 18.x (Download)
- npm atau yarn atau pnpm
- Python >= 3.9 (Download)
- pip (biasanya sudah terinstall dengan Python)
- Docker & Docker Compose (Download)
- Git (Download)
- Go >= 1.20 (untuk notification service) (Download)
- Flutter >= 3.x (untuk mobile app) (Download)
- Supabase CLI (opsional, untuk database management) (Docs)
- Supabase Account (untuk database & realtime features)
- Firebase Account (untuk push notifications)
- API Keys BPJS (P-Care & V-Claim)
git clone https://github.com/rakit-digital/bpjs-healthkaton.git
cd bpjs-healthkatoncd brain
# Install Python dependencies
pip install -r requirements.txt
# atau gunakan virtual environment (recommended)
python -m venv venv
source venv/bin/activate # di Windows: venv\Scripts\activate
pip install -r requirements.txt
# Copy environment template
cp .env.example .env
# Edit file .env dengan kredensial Supabase Anda
nano .env # atau gunakan text editor favorit AndaIsi file .env untuk Brain:
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-supabase-anon-keycd ../dashboard
# Install dependencies
npm install
# atau: yarn install
# atau: pnpm install
# Copy environment template
cp .env.local.example .env.local
# Edit file .env.local
nano .env.localIsi file .env.local untuk Dashboard:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-keycd ../p-care
# Install dependencies
npm install
# Copy environment template
cp .env.local.example .env.local
# Edit file .env.local
nano .env.localIsi file .env.local untuk P-Care:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
# Tambahkan API keys P-Care jika diperlukan
PCARE_API_KEY=your-pcare-api-key
PCARE_API_SECRET=your-pcare-api-secretcd ../vclaim
# Install dependencies
npm install
# Copy environment template
cp .env.local.example .env.local
# Edit file .env.local
nano .env.localIsi file .env.local untuk V-Claim:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
# Tambahkan API keys V-Claim jika diperlukan
VCLAIM_API_KEY=your-vclaim-api-key
VCLAIM_API_SECRET=your-vclaim-api-secretcd ../docs
# Install dependencies
npm installcd ../notification-service
# Download service account JSON dari Firebase Console
# Simpan sebagai service-account.json di directory ini
# Test locally (opsional)
GOOGLE_APPLICATION_CREDENTIALS=./service-account.json go run .cd ../mobilejkn
# Install Flutter dependencies
flutter pub get
# Jalankan code generation jika diperlukan
flutter pub run build_runner build --delete-conflicting-outputs
# Setup database (lihat setup-database.md untuk detail)Berikut adalah daftar lengkap environment variables yang digunakan:
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-supabase-anon-key
MODEL_NAME=sentence-transformers/all-MiniLM-L6-v2NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-keyNEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
PCARE_API_KEY=your-pcare-api-key
PCARE_API_SECRET=your-pcare-api-secret
PCARE_BASE_URL=https://api.pcare.bpjs-kesehatan.go.idNEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
VCLAIM_API_KEY=your-vclaim-api-key
VCLAIM_API_SECRET=your-vclaim-api-secret
VCLAIM_BASE_URL=https://api.vclaim.bpjs-kesehatan.go.idGOOGLE_APPLICATION_CREDENTIALS=./service-account.json
PORT=8080Buka terminal terpisah untuk setiap service:
cd brain
source venv/bin/activate # jika menggunakan virtual environment
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000cd dashboard
npm run devcd p-care
npm run dev -- --port 3001cd vclaim
npm run dev -- --port 3002cd docs
npm run devcd notification-service
GOOGLE_APPLICATION_CREDENTIALS=./service-account.json go run .# Build semua services
docker-compose build
# Jalankan semua services
docker-compose up
# Atau jalankan di background
docker-compose up -d
# Untuk melihat logs
docker-compose logs -f
# Untuk stop semua services
docker-compose down# Jalankan hanya dashboard
docker-compose up dashboard
# Jalankan brain dan dashboard
docker-compose up brain dashboard
# Rebuild dan jalankan service tertentu
docker-compose up --build dashboardSetelah semua service berjalan, Anda dapat mengakses:
| Service | URL Development | URL Docker | Deskripsi |
|---|---|---|---|
| Brain API | http://localhost:8000 | http://localhost:20501 | API endpoints & docs di /docs |
| Dashboard | http://localhost:3000 | http://localhost:20502 | Command Center Dashboard |
| P-Care | http://localhost:3001 | http://localhost:20504 | P-Care Interface |
| V-Claim | http://localhost:3002 | http://localhost:20505 | V-Claim Interface |
| Docs | http://localhost:4321 | http://localhost:20503 | Dokumentasi |
| Notification | http://localhost:8080 | - | FCM Push Notification Service |
API Documentation:
- Brain API Docs: http://localhost:8000/docs (Swagger UI)
- Brain API Redoc: http://localhost:8000/redoc (Alternative docs)
bpjs-healthkaton/
βββ brain/ # AI Engine (FastAPI + ML models)
β βββ app/
β β βββ fraud_detection/ # Fraud detection logic
β β βββ judge_analysis/ # Judge analysis logic
β βββ migrations/ # Database migrations
β βββ requirements.txt # Python dependencies
β βββ Dockerfile
β
βββ dashboard/ # Command Center (Next.js)
β βββ app/ # Next.js app directory
β β βββ command-center/ # Command center pages
β β βββ fraud-flags/ # Fraud flags management
β β βββ api/ # API routes
β βββ components/ # React components
β βββ lib/ # Utilities & helpers
β β βββ supabase-browser.ts
β β βββ supabase-server.ts
β β βββ types/
β βββ migrations/ # SQL migrations
β
βββ p-care/ # P-Care Interface (Next.js)
β βββ app/ # Application pages
β βββ components/ # React components
β βββ lib/ # Supabase clients
β
βββ vclaim/ # V-Claim Interface (Next.js)
β βββ app/ # Application pages
β βββ components/ # React components
β βββ types/ # TypeScript types
β
βββ mobilejkn/ # Mobile App (Flutter)
β βββ lib/ # Dart source code
β βββ android/ # Android specific
β βββ ios/ # iOS specific
β
βββ notification-service/ # Push Notification Service (Go)
β βββ main.go
β βββ service-account.json
β
βββ docs/ # Documentation Site (Astro)
β βββ src/
β
βββ data/ # Data files & ingestion scripts
β βββ icd10.csv
β βββ ingest.py
β
βββ n8n/ # n8n workflow definitions
β
βββ docker-compose.yml # Docker orchestration
- Buka Supabase Dashboard
- Klik "New Project"
- Isi nama project, database password, dan pilih region
- Tunggu hingga project selesai dibuat
- Di dashboard project, buka Settings β API
- Copy Project URL dan anon/public key
- Simpan ke file
.envdan.env.localsesuai service
cd brain
# Pastikan SUPABASE_URL dan SUPABASE_KEY sudah diset
./apply_migration.sh
# atau manual:
# psql -h db.your-project.supabase.co -U postgres -d postgres -f migrations/001_enhance_claim_analysis_results.sqlcd dashboard
# Jalankan migrations di Supabase SQL Editor atau via CLI
cat migrations/001_create_fraud_flag_master.sql | supabase db execute
cat migrations/002_sample_fraud_flags.sql | supabase db executecd data
pip install -r requirements.txt
python ingest.pySolusi:
# Cek process yang menggunakan port
lsof -i :3000 # ganti dengan port yang bermasalah
# Kill process
kill -9 <PID>
# Atau gunakan port yang berbeda
npm run dev -- --port 3001Solusi:
- Pastikan file
.envatau.env.localada di directory yang benar - Restart development server setelah mengubah environment variables
- Untuk Next.js, pastikan variables dimulai dengan
NEXT_PUBLIC_untuk client-side - Jangan commit file
.envke git (sudah ada di.gitignore)
Solusi:
# Upgrade pip
pip install --upgrade pip
# Install dengan flag spesifik jika error
pip install --no-cache-dir -r requirements.txt
# Atau gunakan conda
conda create -n bpjs python=3.9
conda activate bpjs
pip install -r requirements.txtSolusi:
# Clear docker cache
docker system prune -a
# Build ulang tanpa cache
docker-compose build --no-cache
# Check logs untuk error spesifik
docker-compose logs <service-name>Solusi:
- Verifikasi URL dan API key benar
- Pastikan Supabase project aktif (tidak paused)
- Check network/firewall settings
- Test connection di browser:
https://your-project.supabase.co/rest/v1/
Solusi:
# Clear cache dan reinstall
rm -rf node_modules .next
npm install
# Atau rebuild
npm run buildSolusi:
# Clear cache
flutter clean
# Get dependencies
flutter pub get
# Jika masih error, upgrade Flutter
flutter upgradecd brain
pytest
# atau untuk coverage
pytest --cov=app tests/cd dashboard # atau p-care, vclaim
npm test
npm run test:watch # watch mode# Import collection dari brain/api-tests.json ke Postman atau Thunder Client
# Atau gunakan curl:
curl http://localhost:8000/health- FastAPI Documentation
- Next.js Documentation
- Supabase Documentation
- Flutter Documentation
- Docker Documentation
- Lihat folder
docs/untuk dokumentasi detail - API endpoints: http://localhost:8000/docs (saat brain service running)
- Setup database:
mobilejkn/setup-database.md - API documentation:
mobilejkn/API_DOCS.md
Untuk berkontribusi:
- Fork repository ini
- Buat branch feature (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push ke branch (
git push origin feature/AmazingFeature) - Buat Pull Request
Project ini menggunakan lisensi sesuai ketentuan BPJS Kesehatan dan Rakit Digital.
Untuk pertanyaan atau bantuan:
- Buat issue di GitHub repository
- Contact: info@rakit.digital
- Clone repository
- Install Node.js, Python, Docker
- Buat Supabase project
- Copy & isi semua file
.env/.env.local - Install dependencies untuk setiap service
- Jalankan migrations database
- Start development servers
- Akses dashboard di http://localhost:3000
Selamat coding! π