Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PACS Simulator

Aplikasi web berbasis PHP untuk simulasi dan integrasi dengan PACS (Picture Archiving and Communication System) server menggunakan dcm4chee-arc dan integrasi dengan API SatuSehat FHIR untuk manajemen data kesehatan di Indonesia.

πŸ“‹ Deskripsi

PACS Simulator adalah aplikasi yang dirancang untuk memfasilitasi interaksi antara sistem radiologi dengan PACS server dan platform SatuSehat. Aplikasi ini menyediakan antarmuka web untuk mengirim dan menerima data DICOM, serta mengintegrasikan data medis dengan standar FHIR melalui API SatuSehat.

✨ Fitur Utama

1. Manajemen Patient

  • Mengirim data patient ke PACS server (dcm4chee-arc)
  • Menyimpan history pengiriman patient
  • Validasi data sebelum pengiriman

2. Modality Worklist (MWL)

  • Membuat dan mengirim MWL items ke PACS server
  • Integrasi dengan master data (AET, Practitioner, Location, Modality)
  • Tracking status pengiriman MWL

3. Master Data Management

  • Manajemen AET (Application Entity Title)
  • Manajemen Practitioner (Referring & Performing Physicians)
  • Manajemen Location
  • Manajemen Modality
  • Manajemen Station Name

4. Integrasi SatuSehat FHIR

  • GET Resources:

    • Patient
    • Practitioner
    • Organization
    • Location
    • Encounter
    • ServiceRequest
    • ImagingStudy
  • POST Resources:

    • Observation (dengan auto-fill dari ImagingStudy)
    • DiagnosticReport (dengan referensi ke Observation)
    • ServiceRequest (dengan auto-fill dari Encounter)
  • Fitur Khusus:

    • Auto-fill form berdasarkan referensi resource yang dipilih
    • Penyimpanan history submission ke database
    • Validasi data sebelum pengiriman
    • Error handling yang komprehensif

5. Database Management

  • Penyimpanan data ImagingStudy dari SatuSehat
  • Penyimpanan history Observation dan DiagnosticReport submissions
  • Penyimpanan data Encounter
  • Tracking ServiceRequest submissions

πŸ› οΈ Requirements

  • PHP: >= 7.4 (disarankan PHP 8.0+)
  • Database: MySQL 8.0+ atau MariaDB 10.11+
  • Web Server: Apache atau Nginx
  • PHP Extensions:
    • curl (untuk API calls)
    • pdo dan pdo_mysql (untuk database)
    • json (untuk JSON handling)
    • mbstring (untuk string handling)

πŸ“¦ Instalasi

  1. Clone repository:
git clone https://github.com/your-username/pacs-simulator.git
cd pacs-simulator
  1. Setup database:
# Import schema database
mysql -u root -p < database/schema.sql
  1. Konfigurasi aplikasi:
# Edit file config/config.php
# Sesuaikan dengan environment Anda:
# - Database credentials
# - PACS server URL
# - SatuSehat API credentials
  1. Set permissions (jika diperlukan):
# Pastikan web server memiliki akses read ke direktori aplikasi
chmod -R 755 .
  1. Akses aplikasi:
http://localhost/pacs-simulator/

βš™οΈ Konfigurasi

Edit file config/config.php untuk mengatur konfigurasi aplikasi:

return [
    'pacs' => [
        'base_url' => 'http://your-pacs-server:8081/dcm4chee-arc/aets/WORKLIST',
        'patient_endpoint' => '/rs/patients',
        'mwl_endpoint' => '/rs/mwlitems',
        'timeout' => 30,
    ],
    'database' => [
        'host' => 'localhost',
        'port' => 3306,
        'dbname' => 'pacs_simulator',
        'username' => 'your_username',
        'password' => 'your_password',
        'charset' => 'utf8mb4',
    ],
    'satusehat' => [
        'auth_url' => 'https://api-satusehat.kemkes.go.id/oauth2/v1/',
        'base_url' => 'https://api-satusehat.kemkes.go.id/fhir-r4/v1/',
        'client_id' => 'your_client_id',
        'client_secret' => 'your_client_secret',
        'organization_id' => 'your_organization_id',
    ],
];

Catatan Keamanan

⚠️ PENTING: Jangan commit file config/config.php yang berisi credentials ke repository publik. Gunakan .gitignore atau environment variables untuk production.

πŸ“ Struktur Direktori

pacs-simulator/
β”œβ”€β”€ assets/                 # Asset files (icons, images)
β”œβ”€β”€ config/                 # File konfigurasi
β”‚   β”œβ”€β”€ bootstrap.php      # Bootstrap file untuk autoloading
β”‚   └── config.php         # Konfigurasi aplikasi
β”œβ”€β”€ database/               # File SQL schema dan migration
β”‚   β”œβ”€β”€ schema.sql         # Schema database utama
β”‚   └── ...
β”œβ”€β”€ src/                    # Source code PHP classes
β”‚   β”œβ”€β”€ Database.php       # Database connection handler
β”‚   β”œβ”€β”€ PacsClient.php      # Client untuk PACS server
β”‚   β”œβ”€β”€ SatuSehatService.php # Service untuk SatuSehat API
β”‚   β”œβ”€β”€ ImagingStudyRepository.php
β”‚   β”œβ”€β”€ EncounterRepository.php
β”‚   └── ...
β”œβ”€β”€ index.php              # Halaman utama
β”œβ”€β”€ patient.php            # Halaman Patient management
β”œβ”€β”€ mwl.php                # Halaman MWL management
β”œβ”€β”€ master.php             # Halaman Master Data management
β”œβ”€β”€ satusehat.php          # Halaman SatuSehat integration
└── README.md              # Dokumentasi ini

πŸš€ Penggunaan

1. Mengirim Patient ke PACS

  1. Buka halaman Patient (patient.php)
  2. Isi form dengan data patient
  3. Klik Kirim Patient
  4. Cek status pengiriman di history

2. Membuat MWL Item

  1. Buka halaman MWL (mwl.php)
  2. Pilih AET, Practitioner, Location, dan Modality dari dropdown
  3. Isi informasi study
  4. Klik Kirim MWL
  5. Cek status di history

3. Mengelola Master Data

  1. Buka halaman Master Data (master.php)
  2. Pilih tab sesuai data yang ingin dikelola (AET, Practitioner, Location, dll)
  3. Tambah, edit, atau nonaktifkan data

4. Integrasi SatuSehat

GET Resources

  • Pilih tab sesuai resource yang ingin diambil (Patient, Practitioner, Encounter, dll)
  • Masukkan ID atau parameter pencarian
  • Klik Get untuk mengambil data
  • Data akan ditampilkan dalam format JSON

POST Resources

POST Observation:

  1. Pilih ImagingStudy dari dropdown (opsional)
  2. Form akan terisi otomatis jika ImagingStudy dipilih
  3. Isi field yang diperlukan (Code, Subject, Encounter, Value String, dll)
  4. Status, Identifier, dan Category akan diisi otomatis
  5. Klik Post Observation

POST DiagnosticReport:

  1. Pilih Observation IDs dari dropdown (multi-select)
  2. Form akan terisi otomatis berdasarkan Observation yang dipilih
  3. Isi field yang diperlukan
  4. Klik Post DiagnosticReport

POST ServiceRequest:

  1. Pilih Encounter ID dari dropdown
  2. Form akan terisi otomatis (Patient ID, Occurrence DateTime, Requester)
  3. Isi field yang diperlukan
  4. Klik Post ServiceRequest

πŸ”§ Teknologi yang Digunakan

  • Backend:

    • PHP 7.4+
    • PDO untuk database access
    • cURL untuk HTTP requests
  • Frontend:

    • Bootstrap 5
    • jQuery
    • Select2 (untuk dropdown yang lebih baik)
    • Bootstrap Icons
  • Database:

    • MySQL/MariaDB
  • Standar:

    • DICOM (untuk PACS)
    • FHIR R4 (untuk SatuSehat)

πŸ“Š Database Schema

Aplikasi menggunakan beberapa tabel utama:

  • patient_submissions - History pengiriman patient
  • mwl_submissions - History pengiriman MWL
  • aets - Master data AET
  • practitioners - Master data Practitioner
  • locations - Master data Location
  • modalities - Master data Modality
  • station_names - Master data Station Name
  • imaging_studies - Data ImagingStudy dari SatuSehat
  • observations - History Observation submissions
  • diagnostic_reports - History DiagnosticReport submissions
  • encounters - Data Encounter dari SatuSehat
  • servicerequest_submissions - History ServiceRequest submissions

πŸ” Keamanan

  • Credential Management: Simpan credentials di config/config.php dan jangan commit ke repository publik
  • SQL Injection: Menggunakan prepared statements (PDO)
  • XSS Protection: Output di-escape sebelum ditampilkan
  • SSL Verification: Untuk production, aktifkan SSL verification di SatuSehatService.php

πŸ› Troubleshooting

Error: "Extension cURL tidak diaktifkan"

Solusi: Aktifkan extension curl di php.ini:

extension=curl

Error: "Database connection failed"

Solusi:

  • Periksa credentials di config/config.php
  • Pastikan MySQL/MariaDB service berjalan
  • Pastikan database pacs_simulator sudah dibuat

Error: "SatuSehat API authentication failed"

Solusi:

  • Periksa client_id dan client_secret di config/config.php
  • Pastikan credentials valid dan tidak expired
  • Periksa koneksi internet ke API SatuSehat

Error: "PACS server connection timeout"

Solusi:

  • Periksa URL PACS server di config/config.php
  • Pastikan PACS server dapat diakses dari server aplikasi
  • Periksa firewall settings

πŸ“ Changelog

Version 1.0.0

  • Fitur dasar Patient dan MWL management
  • Integrasi dengan dcm4chee-arc
  • Integrasi dengan SatuSehat FHIR API
  • Master Data Management
  • Auto-fill form untuk Observation, DiagnosticReport, dan ServiceRequest
  • Penyimpanan history submissions ke database

Catatan: Aplikasi ini dikembangkan untuk keperluan simulasi dan testing. Pastikan untuk melakukan testing yang memadai sebelum digunakan di environment production.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages