Files
cpone_midleware/README.md

3.4 KiB

CPONE Middleware Go

Service Go untuk endpoint:

GET /api/cpone/paket
GET /api/cpone/paket/{id}
Authorization: Bearer <your-secure-token>

GET /api/cpone/tarif-kerjasama?search=&perusahaan_id=&tarif_id=&page=1&per_page=15
Authorization: Bearer <your-secure-token>

GET /api/cpone/tarif-kerjasama/{id}?group_tarif_id=&active=N&effective_date=2026-08-22
Authorization: Bearer <your-secure-token>

GET /api/cpone/layanan-mapping-harga?periodeTarifID=10&layananID=6413,6414,1309
Authorization: Bearer <your-secure-token>

POST /api/cpone/patients/lab-registration
Authorization: Bearer <your-secure-token>
Content-Type: application/json

POST /api/cpone/patients/lab-registration/{regId}/services
Authorization: Bearer <your-secure-token>
Content-Type: application/json

POST /api/cpone/patients/medrec
Authorization: Bearer <your-secure-token>
Content-Type: application/json

Format payload dan response dibuat mengikuti controller PHP CPONE terkait.

Contoh payload pembuatan pasien HIS:

{
  "rs": "PRIMAYA",
  "nama": "BUDI SANTOS",
  "jenis_kelamin": "L",
  "tgl_lahir": "1990-01-15",
  "jenis_nomer_sosial": "KTP",
  "nomer_sosial": "3174011501900001",
  "telepon": "081234567890",
  "ponsel": "081234567890",
  "email": "budi@example.com",
  "tempat_lahir": "JAKARTA",
  "alamat": "JL. CONTOH NO. 1",
  "propinsi": "DKI JAKARTA",
  "kabupaten": "JAKARTA",
  "kecamatan": "KECAMATAN CONTOH",
  "kelurahan": "KELURAHAN CONTOH",
  "kode_pos": "12345",
  "channel": "CPONE"
}

Endpoint mengembalikan created, already_exists, atau possible_duplicate sesuai hasil pemeriksaan identitas dan kemiripan data pasien di HIS.

Contoh payload registrasi laboratorium:

{
  "medrec_id": "00001234",
  "tanggal": "2026-08-18",
  "departemen_id": "LAB",
  "dokter_id": "DR01",
  "dokter_pengirim_id": "DR02",
  "perujuk": null,
  "jenis_pasien_id": "0",
  "periode_tarif_id": 10,
  "kelas_id": "Default",
  "shift_harian_id": null,
  "diagnosa_kerja": "Pemeriksaan laboratorium",
  "catatan": null,
  "channel": "CPONE"
}

dokter_pengirim_id atau perujuk wajib diisi. Endpoint ini membuat registrasi laboratorium tanpa layanan, sama seperti PatientController::registerLab; layanan ditambahkan melalui endpoint terpisah.

Contoh payload penambahan layanan:

{
  "layanan": [
    {
      "layanan_id": "6413",
      "jumlah": 1,
      "cito": false,
      "markup_cito": 0,
      "catatan": null
    }
  ],
  "channel": "CPONE"
}

Harga, diskon publik, share, unit cost, layanan multiple, dan spesimen diambil langsung dari master HIS. Layanan yang sudah ada akan dilewati dan dilaporkan melalui skipped_layanan_ids.

Config

Copy .env.example menjadi .env, lalu isi koneksi MySQL:

APP_HOST=0.0.0.0
APP_PORT=8080
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=primaya
DB_USERNAME=root
DB_PASSWORD=
CPONE_BEARER_TOKEN=replace-with-a-secure-token

Run

cd cpone-middleware
go mod tidy
go run ./cmd/server

SQLC

File sqlc.yaml, sqlc/schema.sql, dan sqlc/query.sql sudah disiapkan.

Catatan penting: sqlc tidak bisa menerima nama tabel dinamis seperti harga_layanan_{periodeTarifID}. Implementasi runtime saat ini tetap memakai database/sql untuk menyusun nama tabel setelah periodeTarifID divalidasi angka, sama seperti PHP memakai HargaLayanan::makeTableName(). Kalau semua periode ingin digenerate oleh sqlc, buat query konkret per tabel periode, misalnya harga_layanan_10, harga_layanan_11, dan seterusnya.