Files
cpone_midleware/README.md

4.1 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/lab-registration/{regId}/packages
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",
  "perusahaan_id": "PE260700001",
  "nik_karyawan": "TSB2026002",
  "dependant_id": "D001",
  "nama_karyawan": "BUDI SANTOS",
  "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.

Contoh payload penambahan Paket Dispenser HIS:

{
  "paket_id": "DISP-260800011",
  "cito": false,
  "markup_cito": 0,
  "catatan": "",
  "channel": "CPONE"
}

Paket harus aktif, disetujui, berlaku untuk rawat jalan, dan belum memiliki layanan yang sama pada registrasi. Request ulang untuk paket yang sudah masuk bersifat idempoten dan tidak membuat transaksi ganda.

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.