Skip to content

Latest commit

Β 

History

69 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

INAMSOS - Indonesia National Cancer Database System

Sistem Basis Data Kanker Nasional Indonesia

License NestJS TypeScript PostgreSQL Prisma

Ringkasan Proyek

INAMSOS (Indonesia National Cancer Database System) adalah platform terpadu untuk pengumpulan, manajemen, dan analisis data kanker secara nasional. Sistem ini dirancang khusus untuk mendukung penelitian kanker di Indonesia dengan fitur keamanan tingkat tinggi dan kepatuhan terhadap regulasi kesehatan.

🎯 Tujuan Utama

  • Sentralisasi Data: Mengumpulkan data kanker dari seluruh rumah sakit kolegium di Indonesia
  • Penelitian: Mendukung peneliti dengan akses data terstandardisasi dan anonim
  • Analisis Prediktif: Memberikan wawasan tentang tren kanker di Indonesia
  • Kebijakan: Mendukung pembuatan kebijakan kesehatan berbasis data
  • Kolaborasi: Memfasilitasi kolaborasi penelitian multi-pusat

πŸ—οΈ Arsitektur Sistem

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Frontend      β”‚    β”‚   Backend API   β”‚    β”‚   Database      β”‚
β”‚   (Next.js)     │◄──►│   (NestJS)      │◄──►│   (PostgreSQL)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                       β”‚
         β”‚                       β”‚                       β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚  Redis  β”‚            β”‚ MinIO   β”‚            β”‚ Elastic β”‚
    β”‚ (Cache) β”‚            β”‚ (Files) β”‚            β”‚ (Logs)  β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Fitur Utama

πŸ“Š Manajemen Data Pasien

  • Pendaftaran pasien tumor yang komprehensif
  • Formulir entry data dengan validasi real-time
  • Upload gambar medis dan dokumen pendukung
  • Quality assurance dan data validation
  • Audit trail lengkap untuk semua perubahan

πŸ” Keamanan & Privasi

  • Multi-Factor Authentication (MFA)
  • Role-based Access Control (RBAC)
  • Enkripsi data end-to-end (AES-256)
  • Audit logging yang komprehensif
  • Kepatuhan HIPAA dan regulasi kesehatan Indonesia

πŸ” Akses Penelitian

  • Browser data agregat anonim
  • Sistem permintaan data dengan approval workflow
  • Export data dalam format penelitian standar
  • Kolaborasi multi-pusat
  • Tracking impact penelitian

πŸ“ˆ Analytics & Dashboard

  • Real-time cancer distribution mapping
  • Trend analysis dengan visualisasi time-series
  • Center comparison analytics
  • Predictive analytics untuk emerging patterns
  • Performance metrics dan KPI tracking

πŸ‘₯ Manajemen Pengguna

  • 4 tingkat akses pengguna yang berbeda
  • Multi-center tenant architecture
  • User lifecycle management
  • Training dan onboarding workflows

πŸ› οΈ Teknologi Stack

Backend

  • Framework: NestJS 10.0.0
  • Bahasa: TypeScript 5.1.3
  • Database: PostgreSQL 15+
  • ORM: Prisma 5.6.0
  • Authentication: JWT + Passport
  • Validation: class-validator + class-transformer
  • Documentation: Swagger/OpenAPI 3.0
  • Queue: Bull Queue dengan Redis
  • File Storage: MinIO (S3-compatible)
  • Monitoring: Winston + Prometheus
  • Security: Helmet, CORS, Rate Limiting

Database Architecture

  • Multi-schema: audit, medical, system schemas
  • Data separation: Logical separation per center
  • Audit trails: Complete change tracking
  • Backup strategy: Automated backups with retention

Integration & APIs

  • RESTful API: OpenAPI 3.0 documentation
  • Authentication: JWT with refresh tokens
  • File handling: Multer dengan MinIO
  • Email: Nodemailer dengan templates
  • SMS: Twilio integration
  • Healthcare standards: HL7/FHIR ready

πŸ“‹ Prerequisites

System Requirements

  • Node.js: 18.0+ LTS
  • PostgreSQL: 15+
  • Redis: 6.0+
  • MinIO: Latest release
  • Memory: Minimum 8GB RAM
  • Storage: Minimum 100GB SSD

Development Tools

  • Git: Version control
  • Docker: Containerization (optional)
  • VS Code: Recommended IDE
  • Postman: API testing

πŸš€ Quick Start

1. Clone Repository

git clone https://github.com/indonesia-health/inamsos.git
cd inamsos

2. Install Dependencies

# Backend dependencies
cd backend
npm install

# Generate Prisma client
npx prisma generate

3. Environment Setup

# Copy environment template
cp .env.example .env

# Edit environment variables
nano .env

4. Database Setup

# Run migrations
npx prisma migrate dev

# Seed initial data
npm run db:seed

5. Start Development Server

# Start backend
npm run start:dev

# API Documentation available at:
# http://localhost:3000/api-docs

πŸ“š Dokumentasi

πŸ”§ Development

Available Scripts

# Development
npm run start:dev          # Start in development mode
npm run start:debug        # Start with debugging
npm run test               # Run unit tests
npm run test:e2e          # Run end-to-end tests
npm run test:cov          # Run tests with coverage

# Building
npm run build             # Build for production
npm run start:prod        # Start production build

# Database
npm run db:generate       # Generate Prisma client
npm run db:migrate        # Run database migrations
npm run db:seed          # Seed database with initial data

# Code Quality
npm run lint              # Run ESLint
npm run format           # Format code with Prettier

Project Structure

inamsos/
β”œβ”€β”€ backend/                 # NestJS backend application
β”œβ”€β”€ frontend/                # Next.js frontend application
β”œβ”€β”€ desktop/                 # Wails-based desktop application
β”‚   β”œβ”€β”€ cmd/runner/          # Standalone runner for offline mode
β”‚   β”œβ”€β”€ pkg/process/         # Go-based process manager for Postgres and Backend
β”‚   β”œβ”€β”€ scripts/             # Setup and binary management scripts
β”‚   └── wails.json           # Wails configuration
β”œβ”€β”€ docs/                   # Documentation files
β”œβ”€β”€ scripts/               # Build and deployment scripts
└── docker-compose.yml     # Docker configuration

πŸ’» Desktop Application (Offline Mode)

INAMSOS includes a desktop wrapper built with Wails, enabling offline data collection and synchronization.

Key Features:

  • Standalone Runner: Bundles PostgreSQL and the NestJS backend into a single executable.
  • Offline Sync: Automatically queues mutations when offline and syncs with the remote server when a connection is available.
  • Native Experience: Native window management and file system access.

Setup for Development:

# Install Wails
go install github.com/wailsapp/wails/v2/cmd/wails@latest

# Setup binaries (PostgreSQL)
cd desktop/scripts
./setup-binaries.sh

# Build & Run desktop app
cd desktop
wails dev

πŸ” Keamanan

Data Protection

  • βœ… AES-256 encryption untuk data sensitif
  • βœ… TLS 1.3 untuk data transmission
  • βœ… Multi-factor authentication
  • βœ… Role-based access control
  • βœ… Audit logging lengkap
  • βœ… Regular security patches

Compliance

  • βœ… HIPAA compliance
  • βœ… Indonesian data protection laws
  • βœ… Medical ethics standards
  • βœ… IRB approval workflows
  • βœ… Data retention policies

🌐 API Endpoints

Authentication

  • POST /auth/register - User registration
  • POST /auth/login - User login
  • POST /auth/verify-mfa - MFA verification
  • GET /auth/profile - Get user profile

Patients

  • GET /patients - Get patients list
  • POST /patients - Create new patient
  • GET /patients/:id - Get patient details
  • PUT /patients/:id - Update patient data

Research

  • GET /research/data - Browse aggregated data
  • POST /research/requests - Submit data request
  • GET /research/collaborations - View collaborations

Analytics

  • GET /analytics/dashboard - Dashboard metrics
  • GET /analytics/trends - Cancer trends
  • GET /analytics/reports - Generate reports

Untuk dokumentasi API lengkap, lihat API Documentation

🀝 Kontribusi

Kami menyambut kontribusi dari komunitas pengembang dan peneliti kesehatan. Silakan baca CONTRIBUTING.md untuk panduan kontribusi.

Development Workflow

  1. Fork repository
  2. Create feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push ke branch (git push origin feature/amazing-feature)
  5. Create Pull Request

πŸ“ž Dukungan

Technical Support

User Support

  • Training Programs: Program pelatihan tersedia untuk semua user types
  • User Manuals: Dokumentasi pengguna lengkap
  • Help Desk: Dukungan teknis 24/7 untuk critical issues

πŸ“„ License

Proyek ini dilisensikan under MIT License - lihat LICENSE file untuk detail.

πŸ† Acknowledgments

  • Kolegium Onkologi Indonesia - Partner utama
  • Kementerian Kesehatan RI - Support regulasi
  • Rumah Sakit Kolegium - Data providers
  • Tim Pengembang INAMSOS - Development team

πŸ“ˆ Roadmap

Phase 1 (Current)

  • βœ… Core data collection system
  • βœ… Basic authentication & authorization
  • βœ… Simple analytics dashboard
  • βœ… Research request workflow

Phase 2 (Q1 2025)

  • πŸ”„ Advanced AI-powered analytics
  • πŸ”„ Mobile applications
  • πŸ”„ Integration dengan international databases
  • πŸ”„ Enhanced collaboration platform

Phase 3 (Q3 2025)

  • πŸ“‹ Predictive treatment outcomes
  • πŸ“‹ Real-time clinical decision support
  • πŸ“‹ International research partnerships
  • πŸ“‹ Advanced genetic analysis

INAMSOS - Membangun masa depan penelitian kanker Indonesia melalui data dan teknologi.

Untuk informasi lebih lanjut, hubungi:

About

Tumor Registry Database

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages