186 lines
5.3 KiB
Markdown
186 lines
5.3 KiB
Markdown
# GO-OHIF-Proxy
|
|
|
|
## 1. Gambaran Umum
|
|
|
|
### Tujuan
|
|
|
|
App ini dibuat untuk menyalurkan **dicomWeb** request dari OHIF ke Google Healthcare. Proxy berperan hanya sebagai authenticator ke Google dengan `service-account.json`, **tanpa merubah / menambah request**
|
|
|
|
Berikut adalah cara clone project ini:
|
|
|
|
|
|
## 2. Alur Kerja Aplikasi
|
|
|
|
```
|
|
+----------------+ +----------------+ +----------------------+
|
|
| | | | | |
|
|
| OHIF Viewer |----->| GO-OHIF-Proxy |----->| Google Healthcare |
|
|
| (Web Client) |<-----| |<-----| DICOM API |
|
|
| | | | | |
|
|
+----------------+ +----------------+ +----------------------+
|
|
```
|
|
|
|
1. **Permintaan Klien**: OHIF Viewer mengirimkan permintaan DICOMweb (misalnya, untuk mengambil studi).
|
|
2. **Pemrosesan Proxy**:
|
|
- Proxy mencegat permintaan.
|
|
- Menambahkan header autentikasi yang sesuai.
|
|
- Meneruskan permintaan ke Google Cloud Healthcare API.
|
|
3. **Pemrosesan Google Cloud**: Healthcare API memproses permintaan DICOM.
|
|
4. **Penanganan Respons**: Proxy meneruskan respons kembali ke klien.
|
|
|
|
## 2b. Arsitektur
|
|
```txt
|
|
go-ohif-proxy/
|
|
│
|
|
├── cmd/
|
|
│ └── server/ # Application entry point
|
|
│ └── main.go # Main server initialization
|
|
│
|
|
├── config/ # Configuration management
|
|
│ ├── config.go # Configuration loader
|
|
│ └── config.yaml # Application configuration
|
|
│
|
|
├── credentials/ # Authentication credentials
|
|
│ └── service-account.json # Google Cloud service account
|
|
│
|
|
├── internal/
|
|
│ ├── api/ # API endpoints
|
|
│ │ ├── handler.go # HTTP request handlers
|
|
│ │ ├── middleware.go # Request middleware
|
|
│ │ └── routes.go # API route definitions
|
|
│ │
|
|
│ ├── auth/ # Authentication services
|
|
│ │ └── google.go # Google Cloud authentication
|
|
│ │
|
|
│ ├── proxy/ # Proxy service
|
|
│ │ └── dicomweb.go # DICOMweb request handling
|
|
│ │
|
|
│ └── utils/ # Utility functions
|
|
│ ├── http.go # HTTP utilities
|
|
│ └── logger.go # Logging functionality
|
|
│
|
|
├── test/ # Testing resources
|
|
│ └── http/ # HTTP test requests
|
|
│
|
|
├── Dockerfile # Container definition
|
|
├── docker-compose.yml # Multi-container orchestration
|
|
├── go.mod # Go module definition
|
|
├── go.sum # Module dependency checksums
|
|
└── README.md # Project documentation
|
|
```
|
|
|
|
## 3. Instalasi dan Penggunaan
|
|
|
|
### Prasyarat
|
|
|
|
- Go versi 1.19 atau lebih tinggi.
|
|
- Akun Google Cloud dengan Healthcare API diaktifkan.
|
|
- Kredensial akun layanan dengan akses ke DICOM store.
|
|
|
|
### Clone dan Setup
|
|
|
|
```bash
|
|
# Clone repositori
|
|
git clone https://devone.aplikasi.web.id/gitea/mario/go-ohif-proxy.git
|
|
cd go-ohif-proxy
|
|
|
|
# Install dependencies
|
|
go mod download
|
|
```
|
|
|
|
### Konfigurasi
|
|
|
|
1. Salin file konfigurasi contoh:
|
|
```bash
|
|
cp config/config.yaml.example config/config.yaml
|
|
```
|
|
|
|
2. Edit `config/config.yaml` sesuai kebutuhan:
|
|
```yaml
|
|
server:
|
|
port: 5555
|
|
read_timeout_seconds: 30
|
|
write_timeout_seconds: 30
|
|
idle_timeout_seconds: 60
|
|
|
|
log_level: "info" # debug, info, warn, error
|
|
|
|
google:
|
|
project_id: "id-proyek-gcp-anda"
|
|
location: "lokasi-anda"
|
|
dataset: "nama-dataset-anda"
|
|
dicom_store: "nama-dicom-store-anda"
|
|
credentials_path: "./credentials/service-account.json"
|
|
|
|
allowed_origins:
|
|
- "http://localhost:3000" # URL OHIF Viewer
|
|
```
|
|
|
|
3. Letakkan kredensial akun layanan Google Cloud Anda di `credentials/service-account.json`.
|
|
|
|
### Menjalankan Aplikasi
|
|
|
|
#### Build dan Jalankan Secara Langsung
|
|
|
|
```bash
|
|
# Build aplikasi
|
|
go build -o ohif-proxy ./cmd/server
|
|
|
|
# Jalankan aplikasi
|
|
./ohif-proxy
|
|
```
|
|
|
|
#### Menggunakan Docker
|
|
|
|
```bash
|
|
# Build image Docker
|
|
docker build -t go-ohif-proxy .
|
|
|
|
# Jalankan dengan Docker
|
|
docker run -p 5555:5555 -v $(pwd)/config:/app/config -v $(pwd)/credentials:/app/credentials go-ohif-proxy
|
|
```
|
|
|
|
#### Menggunakan Docker Compose
|
|
|
|
```bash
|
|
docker-compose up
|
|
```
|
|
|
|
### Run Aplikasi Tanpa Build
|
|
|
|
1. Transfer `./ohif-proxy` ke server tujuan. Contoh:
|
|
```sh
|
|
scp ohif-proxy pacs@152.42.173.210:/home/pacs/google-ohif-proxy
|
|
```
|
|
2. Pastikan server tujuan terinstall **go versi >1.19**. Cek dengan:
|
|
3. Buat direktori:
|
|
```sh
|
|
mkdir -p ~/google-ohif-proxy
|
|
mkdir -p ~/google-ohif-proxy/config
|
|
mkdir -p ~/google-ohif-proxy/credentials
|
|
```
|
|
4. Tambahkan `config.go` dan `config.yaml`.
|
|
```sh
|
|
scp -r config/* pacs@152.42.173.210:/home/pacs/google-ohif-proxy/config/
|
|
```
|
|
5. Tambahkan credential `/credentials/service-account.json`
|
|
```
|
|
nano credentials/service-account.json
|
|
# atau
|
|
# scp dari local
|
|
```
|
|
|
|
|
|
### Pengujian
|
|
|
|
Aplikasi ini menyertakan permintaan HTTP uji di direktori `test/http` yang dapat digunakan dengan klien REST seperti ekstensi REST Client di VSCode.
|
|
|
|
```bash
|
|
# Jalankan pengujian yang disertakan
|
|
make test
|
|
```
|
|
|
|
---
|
|
|
|
Untuk informasi lebih lanjut tentang OHIF: [https://ohif.org/](https://ohif.org/)
|
|
Untuk informasi lebih lanjut tentang Google Cloud Healthcare API: [https://cloud.google.com/healthcare](https://cloud.google.com/healthcare) |