Plan Implementasi Tabel Pemetaan Primayan (Path Persis Dokumen, Tanpa Prefix Versi) #2

Closed
opened 2026-05-15 08:14:04 +07:00 by tbfajri · 0 comments
Owner

Plan Implementasi Tabel Pemetaan Primayan (Path Persis Dokumen, Tanpa Prefix Versi)

Ringkasan

  • Endpoint akan dibuat persis seperti dokumentasi APLN, tanpa api/v1.
  • Scope: 1 controller baru untuk 7 fungsi wajib + mapping tabel yang diminta.
  • Referensi:
    • docs/APLN FESBRID PROVIDER rev04 (RS).pdf
    • docs/tasklist-integrasi-fesbrid-provider-tabel.md

Update Plan (Tambahan)

  1. Refactor controller yang sebelumnya ada di Modules/HospitalPortal/Http/Controllers/Api/ProviderOnlineController.php menjadi modul baru bernama ProviderIntegrations, mengikuti pola modul existing seperti Client, Internal, HospitalPortal, dan Primaya.
  2. Tambahkan notifikasi email pada setiap event berikut di flow ProviderOnline (setelah dipindahkan ke modul ProviderIntegrations):
    • pendaftaran baru
    • pengesahan
    • upsert billing sementara

Endpoint dan Function (Final, Persis Dokumen)

Base path final: api/v1/bridging-service/ProviderOnline*

  1. POST /api/v1/bridging-service/ProviderOnline/HeaderKey -> getHeaderKey()
  2. POST /api/v1/bridging-service/ProviderOnline/EligibilitasPeserta -> checkEligibilitasPeserta()
  3. POST /api/v1/bridging-service/ProviderOnline/Pendaftaran -> createPendaftaran()
  4. POST /api/v1/bridging-service/ProviderOnline/Pengesahan -> createPengesahan()
  5. POST /api/v1/bridging-service/ProviderOnline/BillingSementara -> upsertBillingSementara()
  6. POST /api/v1/bridging-service/ProviderOnline/RincianBiayaKlaim -> getRincianBiayaKlaim()
  7. POST /api/v1/bridging-service/ProviderOnline/StrukPendaftaran -> downloadStrukPendaftaran()
  8. POST /api/v1/bridging-service/ProviderOnline/StrukPengesahan -> downloadStrukPengesahan()

Standar LMS untuk Controller dan Function

Lokasi dan nama controller

  • File controller: Modules/HospitalPortal/Http/Controllers/Api/ProviderOnlineController.php
  • Class name: ProviderOnlineController
  • Namespace: Modules\HospitalPortal\Http\Controllers\Api

Standar penamaan function (ikuti pola LMS existing)

  • Gunakan camelCase seperti controller API lain (login, requestLog, getFinalLog).
  • Prefix function berdasarkan tujuan:
    • get* untuk read/retrieve
    • check* untuk validasi/cek
    • create* untuk create/mutasi utama
    • download* untuk stream file/pdf
  • Nama function final yang dipakai:
    • getHeaderKey()
    • checkEligibilitasPeserta()
    • createPendaftaran()
    • createPengesahan()
    • upsertBillingSementara()
    • getRincianBiayaKlaim()
    • downloadStrukPendaftaran()
    • downloadStrukPengesahan()

Perubahan Implementasi Utama

1) Header Key + Provider

  • Gunakan tabel providers existing.
  • Simpan/mapping:
    • organization_id
    • username
    • password
    • code (kodeprovider)
    • status
    • header_token (dan/atau token jika dipisah)

2) API Cek Eligibilitas Peserta

  • Input minimal: nokartu, kodeprovider, p_user_no, p_token.
  • Mapping:
    • nokartu -> members.member_id -> ambil members.id
    • kodeprovider -> organizations.code -> ambil organizations.id
  • Mapping response Benefit[]:
    • Sumber relasi: members -> member_plans -> plans
    • kodebenefit -> plans.code
    • namabenefit -> plans.corporate_plan_id (nama plan di LMS)
    • planid -> plans.code

3) API Pendaftaran (Acuan 2.6.2 REQUEST)

  • Mapping:
    • kodeprovider -> organizations.id -> simpan request_logs.organization_id
    • nokartu -> members.id -> simpan request_logs.member_id
    • cobbpjs -> request_logs.total_cob
    • kodebenefit -> rawat inap/rawat jalan (IP/OP)
    • keterangan -> request_logs.keterangan
    • kelaskamar -> request_logs.penempatan_kamar
    • source -> 'api'
    • status -> 'approved'
  • Tambah kolom di request_logs jika belum ada:
    • nomor_sep
    • inacbgs_code
    • inacbgs_amount
    • no_transaksi_provider
  • Buat request_logs.code otomatis sesuai standar existing.
  • Mapping response LimitSubBenefit[]:
    • Sumber relasi: members -> member_plans -> plans -> corporate_benefits -> benefits
    • kodesubbenefit -> benefits.code
    • namasubbenefit -> benefits.description
    • batasan -> corporate_benefits.limit_amount

4) API Pengesahan (Acuan 2.7.2 REQUEST)

  • noklaim jadi acuan update by request_logs.code.
  • Update request_logs:
    • status_final_log = 'approve'
    • final_log = 1
    • discharge_date dari tanggalkeluar
    • diagnosis dari kodediagnosa
  • Update request_log_benefits by request_log_id:
    • kodesubbenefit -> mapping benefits.code -> ambil benefits.id
    • biayaaju -> update amount_incurred
    • mekanisme upsert per request_log_id + benefit_id
  • Mapping response Biaya[]:
    • kodesubbenefit -> request_log_benefits -> benefit -> code
    • namasubbenefit -> request_log_benefits -> benefit -> description
    • kodebenefit -> request_log -> plan -> code
    • namabenefit -> request_log -> plan -> corporate_plan_id
    • biayaaju -> request_log_benefits.amount_incurred
    • jaminanasuransi -> request_log_benefits.amount_approved
    • jaminanpeserta -> request_log_benefits.excess_paid

5) API Upsert Billing Sementara (Acuan 2.15.2 REQUEST)

  • Endpoint: POST /api/v1/bridging-service/ProviderOnline/BillingSementara.
  • Input utama: noklaim, kodeprovider, tanggalkeluar, kodediagnosa, daftarbiaya[], p_user_no, p_token.
  • Proses:
    • Validasi provider via kodeprovider, p_user_no, p_token.
    • Cari klaim dari request_logs.code = noklaim dan scope organization_id.
    • Update sementara data klaim: discharge_date, diagnosis.
    • Upsert request_log_benefits per kombinasi request_log_id + benefit_id dari mapping kodesubbenefit -> benefits.code.
  • Catatan behavior:
    • Tidak mengubah finalisasi klaim (final_log / status_final_log) karena ini billing sementara.
    • Response mengikuti dokumen 2.15.3: cukup object Status.

6) API Rincian Biaya Klaim

  • Ambil data gabungan:
    • Header dari request_logs
    • Detail biaya dari request_log_benefits

7) API Cetak LOG (Struk Pendaftaran)

  • Input: noklaim, kodeprovider, p_user_no, p_token.
  • Proses:
    • noklaim -> cari request_logs.code -> ambil request_logs.id
    • kodeprovider -> validasi ke organizations.code
    • return stream PDF (reuse mekanisme existing download log)

8) API Cetak Final LOG (Struk Pengesahan)

  • Input: noklaim, kodeprovider, p_user_no, p_token.
  • Proses:
    • noklaim -> cari request_logs.code -> ambil request_logs.id
    • kodeprovider -> validasi ke organizations.code
    • return stream PDF (reuse mekanisme existing download final log)

Contoh Payload per Endpoint

A. HeaderKey (2.1.2)

POST /bridging-service/api/ProviderOnline/HeaderKey

{
  "username": "string",
  "password": "string",
  "kodeprovider": "RS001"
}

Contoh response (2.1.3):

{
  "header-token": "string",
  "userid": 0,
  "usertoken": "string",
  "kodeprovider": "string",
  "namaprovider": "string",
  "errornumber": 0,
  "messagestring": "string"
}

B. EligibilitasPeserta

POST /bridging-service/api/ProviderOnline/EligibilitasPeserta

{
  "nokartu": "CARD001",
  "kodeprovider": "RS001",
  "p_user_no": 1001,
  "p_token": "usertoken_xxx"
}

Contoh response (2.2.3):

{
  "Status": {
    "errornumber": 0,
    "messagestring": "string"
  },
  "Data": {
    "nokartu": "string",
    "memberid": "string",
    "namapeserta": "string",
    "nomorbpjs": "string",
    "jeniskelamin": "string",
    "tanggallahir": "2023-11-22T04:52:06.690Z",
    "hubungankeluarga": "string",
    "namaperusahaan": "string",
    "pesertavip": "string",
    "namapenjamin": "string",
    "nomorpolis": "string",
    "tglmulaipolis": "2023-11-22T04:52:06.690Z",
    "tglberakhirpolis": "2023-11-22T04:52:06.690Z",
    "phone": "string",
    "email": "string"
  },
  "Benefit": [
    {
      "kodebenefit": "string",
      "namabenefit": "string",
      "planid": "string"
    }
  ]
}

C. Pendaftaran (2.6.2)

POST /bridging-service/api/ProviderOnline/Pendaftaran

{
  "kodeprovider": "RS001",
  "kodebenefit": "IP",
  "statusrujukan": "Y",
  "nomorrujukan": "RJ-001",
  "keterangan": "Rawat inap emergensi",
  "nomorsep": "SEP001",
  "nokartu": "CARD001",
  "kelaskamar": "KELAS-1",
  "asalrujukan": "FASKES-1",
  "cobbpjs": 150000,
  "notransaksiprovider": "TRX-RS-0001",
  "inacbgscode": "E-4-10-I",
  "inacbgsamount": 3200000,
  "p_user_no": 1001,
  "p_token": "usertoken_xxx"
}

Contoh response (2.6.3):

{
  "Status": {
    "errornumber": 0,
    "messagestring": "string"
  },
  "Data": [
    {
      "noklaim": "string",
      "namapeserta": "string",
      "tanggallahir": "2023-11-22T04:52:06.693Z",
      "nokartu": "string",
      "nopolis": "string",
      "nobpjs": "string",
      "nosep": "string",
      "nomorrujukan": "string",
      "planid": "string",
      "masapolis": "string",
      "namaperusahaan": "string",
      "namapenjamin": "string",
      "tanggalmasuk": "2023-11-22T04:52:06.693Z",
      "tanggalkeluar": "2023-11-22T04:52:06.693Z",
      "hakkamar": "string",
      "hakicu": "string",
      "nosuratjaminan": "string",
      "namapegawai": "string",
      "namabenefit": "string",
      "kodediagnosa": "string",
      "keterangan": "string",
      "catatanTC1": "string",
      "catatanTC2": "string",
      "catatanTC3": "string",
      "catatanTC4": "string",
      "catatanTC5": "string",
      "catatanTC6": "string",
      "catatanTC7": "string",
      "catatanTC8": "string",
      "catatanTC9": "string",
      "catatanTC10": "string",
      "statusrujukan": "string",
      "statusklaim": 0,
      "notransaksiprovider": "string",
      "inacbgscode": "string",
      "inacbgsamount": 0
    }
  ],
  "LimitSubBenefit": [
    {
      "kodesubbenefit": "string",
      "namasubbenefit": "string",
      "batasan": "string"
    }
  ]
}

D. Pengesahan (2.7.2)

POST /bridging-service/api/ProviderOnline/Pengesahan

{
  "noklaim": "CLAIM-20260513-0001",
  "kodeprovider": "RS001",
  "tanggalkeluar": "2026-05-13T10:00:00Z",
  "kodediagnosa": "I10",
  "kodepoli": 12,
  "statusresep": "Y",
  "statusrujukan": "N",
  "rujukanke": "",
  "izinsakit": 0,
  "inacbgscode": "E-4-10-I",
  "inacbgsamount": 3200000,
  "daftarbiaya": [
    { "kodesubbenefit": "SB001", "biayaaju": 1500000 },
    { "kodesubbenefit": "SB002", "biayaaju": 1700000 }
  ],
  "p_user_no": 1001,
  "p_token": "usertoken_xxx"
}

Contoh response (2.7.3):

{
  "Status": {
    "errornumber": 0,
    "messagestring": "string"
  },
  "Data": [
    {
      "noklaim": "string",
      "namapeserta": "string",
      "tanggallahir": "2023-11-22T04:52:06.696Z",
      "nokartu": "string",
      "nopolis": "string",
      "nobpjs": "string",
      "nosep": "string",
      "nomorrujukan": "string",
      "planid": "string",
      "masapolis": "string",
      "namaperusahaan": "string",
      "namapenjamin": "string",
      "tanggalmasuk": "2023-11-22T04:52:06.696Z",
      "tanggalkeluar": "2023-11-22T04:52:06.696Z",
      "hakkamar": "string",
      "hakicu": "string",
      "nosuratjaminan": "string",
      "namapegawai": "string",
      "namabenefit": "string",
      "kodediagnosa": "string",
      "keterangan": "string",
      "catatanTC1": "string",
      "catatanTC2": "string",
      "catatanTC3": "string",
      "catatanTC4": "string",
      "catatanTC5": "string",
      "catatanTC6": "string",
      "catatanTC7": "string",
      "catatanTC8": "string",
      "catatanTC9": "string",
      "catatanTC10": "string",
      "statusrujukan": "string",
      "statusklaim": 0,
      "notransaksiprovider": "string",
      "inacbgscode": "string",
      "inacbgsamount": 0
    }
  ],
  "Biaya": [
    {
      "noklaim": "string",
      "kodesubbenefit": "string",
      "namasubbenefit": "string",
      "kodebenefit": "string",
      "namabenefit": "string",
      "biayaaju": 0,
      "jaminanasuransi": 0,
      "jaminanpeserta": 0,
      "keterangan": "string"
    }
  ]
}

E. BillingSementara (2.15.2)

POST /bridging-service/api/ProviderOnline/BillingSementara

{
  "noklaim": "CLAIM-20260513-0001",
  "kodeprovider": "RS001",
  "tanggalkeluar": "2026-05-13T10:00:00Z",
  "kodediagnosa": "I10",
  "daftarbiaya": [
    { "kodesubbenefit": "SB001", "biayaaju": 1500000 },
    { "kodesubbenefit": "SB002", "biayaaju": 1700000 }
  ],
  "p_user_no": 1001,
  "p_token": "usertoken_xxx"
}

Contoh response (2.15.3):

{
  "Status": {
    "errornumber": 0,
    "messagestring": "string"
  }
}

F. RincianBiayaKlaim

POST /bridging-service/api/ProviderOnline/RincianBiayaKlaim

{
  "noklaim": "CLAIM-20260513-0001",
  "kodeprovider": "RS001",
  "p_user_no": 1001,
  "p_token": "usertoken_xxx"
}

Contoh response (2.9.3):

{
  "Status": {
    "errornumber": 0,
    "messagestring": "string"
  },
  "Data": [
    {
      "noklaim": "string",
      "namapeserta": "string",
      "tanggallahir": "2023-11-22T04:52:06.724Z",
      "nokartu": "string",
      "nopolis": "string",
      "nobpjs": "string",
      "nosep": "string",
      "nomorrujukan": "string",
      "planid": "string",
      "masapolis": "string",
      "namaperusahaan": "string",
      "namapenjamin": "string",
      "tanggalmasuk": "2023-11-22T04:52:06.724Z",
      "tanggalkeluar": "2023-11-22T04:52:06.724Z",
      "hakkamar": "string",
      "hakicu": "string",
      "nosuratjaminan": "string",
      "namapegawai": "string",
      "namabenefit": "string",
      "kodediagnosa": "string",
      "keterangan": "string",
      "catatanTC1": "string",
      "catatanTC2": "string",
      "catatanTC3": "string",
      "catatanTC4": "string",
      "catatanTC5": "string",
      "catatanTC6": "string",
      "catatanTC7": "string",
      "catatanTC8": "string",
      "catatanTC9": "string",
      "catatanTC10": "string",
      "statusrujukan": "string",
      "statusklaim": 0,
      "notransaksiprovider": "string",
      "inacbgscode": "string",
      "inacbgsamount": 0
    }
  ],
  "Biaya": [
    {
      "noklaim": "string",
      "kodesubbenefit": "string",
      "namasubbenefit": "string",
      "kodebenefit": "string",
      "namabenefit": "string",
      "biayaaju": 0,
      "jaminanasuransi": 0,
      "jaminanpeserta": 0,
      "keterangan": "string"
    }
  ]
}

G. StrukPendaftaran (2.11.2)

POST /bridging-service/api/ProviderOnline/StrukPendaftaran

{
  "noklaim": "CLAIM-20260513-0001",
  "kodeprovider": "RS001",
  "p_user_no": 1001,
  "p_token": "usertoken_xxx"
}

Contoh response (2.11.3):

{}

Keterangan response: HTTP 200, Content-Type: application/octet-stream, body berupa stream PDF.

H. StrukPengesahan (2.12.2)

POST /bridging-service/api/ProviderOnline/StrukPengesahan

{
  "noklaim": "CLAIM-20260513-0001",
  "kodeprovider": "RS001",
  "p_user_no": 1001,
  "p_token": "usertoken_xxx"
}

Contoh response (2.12.3):

{}

Keterangan response: HTTP 200, Content-Type: application/octet-stream, body berupa stream PDF.

Test Plan

  1. Route test exact path /bridging-service/api/ProviderOnline/* (tanpa prefix versi).
  2. Validasi mapping DB:
    • members (member_id -> id)
    • organizations (code -> id)
    • request_logs
    • request_log_benefits
    • benefits
  3. Uji pendaftaran: status default approved, source api, code otomatis, kolom INA-CBG/SEP/transaksi terisi.
  4. Uji pengesahan: update by noklaim, update final log + diagnosis + discharge + biaya detail.
  5. Uji cetak: StrukPendaftaran dan StrukPengesahan mengembalikan stream PDF.
  6. Negative case:
    • nokartu tidak ditemukan
    • kodeprovider tidak valid
    • noklaim tidak ditemukan
    • kodesubbenefit tidak valid
    • payload wajib kosong

Asumsi

  • Route non-versioned dipasang paralel, tidak menimpa endpoint existing.
  • Status final mengikuti arahan: approve.
  • Jika field tertentu sudah ada di tabel existing, migration hanya bersifat conditional (hindari duplikasi).
# Plan Implementasi Tabel Pemetaan Primayan (Path Persis Dokumen, Tanpa Prefix Versi) ## Ringkasan - Endpoint akan dibuat **persis** seperti dokumentasi APLN, tanpa `api/v1`. - Scope: 1 controller baru untuk 7 fungsi wajib + mapping tabel yang diminta. - Referensi: - `docs/APLN FESBRID PROVIDER rev04 (RS).pdf` - `docs/tasklist-integrasi-fesbrid-provider-tabel.md` ## Update Plan (Tambahan) 1. Refactor controller yang sebelumnya ada di `Modules/HospitalPortal/Http/Controllers/Api/ProviderOnlineController.php` menjadi modul baru bernama `ProviderIntegrations`, mengikuti pola modul existing seperti `Client`, `Internal`, `HospitalPortal`, dan `Primaya`. 2. Tambahkan notifikasi email pada setiap event berikut di flow `ProviderOnline` (setelah dipindahkan ke modul `ProviderIntegrations`): - pendaftaran baru - pengesahan - upsert billing sementara ## Endpoint dan Function (Final, Persis Dokumen) Base path final: `api/v1/bridging-service/ProviderOnline*` 1. `POST /api/v1/bridging-service/ProviderOnline/HeaderKey` -> `getHeaderKey()` 2. `POST /api/v1/bridging-service/ProviderOnline/EligibilitasPeserta` -> `checkEligibilitasPeserta()` 3. `POST /api/v1/bridging-service/ProviderOnline/Pendaftaran` -> `createPendaftaran()` 4. `POST /api/v1/bridging-service/ProviderOnline/Pengesahan` -> `createPengesahan()` 5. `POST /api/v1/bridging-service/ProviderOnline/BillingSementara` -> `upsertBillingSementara()` 6. `POST /api/v1/bridging-service/ProviderOnline/RincianBiayaKlaim` -> `getRincianBiayaKlaim()` 7. `POST /api/v1/bridging-service/ProviderOnline/StrukPendaftaran` -> `downloadStrukPendaftaran()` 8. `POST /api/v1/bridging-service/ProviderOnline/StrukPengesahan` -> `downloadStrukPengesahan()` ## Standar LMS untuk Controller dan Function ### Lokasi dan nama controller - File controller: `Modules/HospitalPortal/Http/Controllers/Api/ProviderOnlineController.php` - Class name: `ProviderOnlineController` - Namespace: `Modules\HospitalPortal\Http\Controllers\Api` ### Standar penamaan function (ikuti pola LMS existing) - Gunakan `camelCase` seperti controller API lain (`login`, `requestLog`, `getFinalLog`). - Prefix function berdasarkan tujuan: - `get*` untuk read/retrieve - `check*` untuk validasi/cek - `create*` untuk create/mutasi utama - `download*` untuk stream file/pdf - Nama function final yang dipakai: - `getHeaderKey()` - `checkEligibilitasPeserta()` - `createPendaftaran()` - `createPengesahan()` - `upsertBillingSementara()` - `getRincianBiayaKlaim()` - `downloadStrukPendaftaran()` - `downloadStrukPengesahan()` ## Perubahan Implementasi Utama ### 1) Header Key + Provider - Gunakan tabel `providers` existing. - Simpan/mapping: - `organization_id` - `username` - `password` - `code` (kodeprovider) - `status` - `header_token` (dan/atau `token` jika dipisah) ### 2) API Cek Eligibilitas Peserta - Input minimal: `nokartu`, `kodeprovider`, `p_user_no`, `p_token`. - Mapping: - `nokartu` -> `members.member_id` -> ambil `members.id` - `kodeprovider` -> `organizations.code` -> ambil `organizations.id` - Mapping response `Benefit[]`: - Sumber relasi: `members -> member_plans -> plans` - `kodebenefit` -> `plans.code` - `namabenefit` -> `plans.corporate_plan_id` (nama plan di LMS) - `planid` -> `plans.code` ### 3) API Pendaftaran (Acuan 2.6.2 REQUEST) - Mapping: - `kodeprovider` -> `organizations.id` -> simpan `request_logs.organization_id` - `nokartu` -> `members.id` -> simpan `request_logs.member_id` - `cobbpjs` -> `request_logs.total_cob` - `kodebenefit` -> rawat inap/rawat jalan (`IP`/`OP`) - `keterangan` -> `request_logs.keterangan` - `kelaskamar` -> `request_logs.penempatan_kamar` - `source` -> `'api'` - `status` -> `'approved'` - Tambah kolom di `request_logs` jika belum ada: - `nomor_sep` - `inacbgs_code` - `inacbgs_amount` - `no_transaksi_provider` - Buat `request_logs.code` otomatis sesuai standar existing. - Mapping response `LimitSubBenefit[]`: - Sumber relasi: `members -> member_plans -> plans -> corporate_benefits -> benefits` - `kodesubbenefit` -> `benefits.code` - `namasubbenefit` -> `benefits.description` - `batasan` -> `corporate_benefits.limit_amount` ### 4) API Pengesahan (Acuan 2.7.2 REQUEST) - `noklaim` jadi acuan update by `request_logs.code`. - Update `request_logs`: - `status_final_log = 'approve'` - `final_log = 1` - `discharge_date` dari `tanggalkeluar` - `diagnosis` dari `kodediagnosa` - Update `request_log_benefits` by `request_log_id`: - `kodesubbenefit` -> mapping `benefits.code` -> ambil `benefits.id` - `biayaaju` -> update `amount_incurred` - mekanisme `upsert` per `request_log_id + benefit_id` - Mapping response `Biaya[]`: - `kodesubbenefit` -> `request_log_benefits -> benefit -> code` - `namasubbenefit` -> `request_log_benefits -> benefit -> description` - `kodebenefit` -> `request_log -> plan -> code` - `namabenefit` -> `request_log -> plan -> corporate_plan_id` - `biayaaju` -> `request_log_benefits.amount_incurred` - `jaminanasuransi` -> `request_log_benefits.amount_approved` - `jaminanpeserta` -> `request_log_benefits.excess_paid` ### 5) API Upsert Billing Sementara (Acuan 2.15.2 REQUEST) - Endpoint: `POST /api/v1/bridging-service/ProviderOnline/BillingSementara`. - Input utama: `noklaim`, `kodeprovider`, `tanggalkeluar`, `kodediagnosa`, `daftarbiaya[]`, `p_user_no`, `p_token`. - Proses: - Validasi provider via `kodeprovider`, `p_user_no`, `p_token`. - Cari klaim dari `request_logs.code = noklaim` dan scope `organization_id`. - Update sementara data klaim: `discharge_date`, `diagnosis`. - Upsert `request_log_benefits` per kombinasi `request_log_id + benefit_id` dari mapping `kodesubbenefit -> benefits.code`. - Catatan behavior: - Tidak mengubah finalisasi klaim (`final_log` / `status_final_log`) karena ini billing sementara. - Response mengikuti dokumen 2.15.3: cukup object `Status`. ### 6) API Rincian Biaya Klaim - Ambil data gabungan: - Header dari `request_logs` - Detail biaya dari `request_log_benefits` ### 7) API Cetak LOG (Struk Pendaftaran) - Input: `noklaim`, `kodeprovider`, `p_user_no`, `p_token`. - Proses: - `noklaim` -> cari `request_logs.code` -> ambil `request_logs.id` - `kodeprovider` -> validasi ke `organizations.code` - return stream PDF (reuse mekanisme existing download log) ### 8) API Cetak Final LOG (Struk Pengesahan) - Input: `noklaim`, `kodeprovider`, `p_user_no`, `p_token`. - Proses: - `noklaim` -> cari `request_logs.code` -> ambil `request_logs.id` - `kodeprovider` -> validasi ke `organizations.code` - return stream PDF (reuse mekanisme existing download final log) ## Contoh Payload per Endpoint ### A. HeaderKey (2.1.2) `POST /bridging-service/api/ProviderOnline/HeaderKey` ```json { "username": "string", "password": "string", "kodeprovider": "RS001" } ``` Contoh response (2.1.3): ```json { "header-token": "string", "userid": 0, "usertoken": "string", "kodeprovider": "string", "namaprovider": "string", "errornumber": 0, "messagestring": "string" } ``` ### B. EligibilitasPeserta `POST /bridging-service/api/ProviderOnline/EligibilitasPeserta` ```json { "nokartu": "CARD001", "kodeprovider": "RS001", "p_user_no": 1001, "p_token": "usertoken_xxx" } ``` Contoh response (2.2.3): ```json { "Status": { "errornumber": 0, "messagestring": "string" }, "Data": { "nokartu": "string", "memberid": "string", "namapeserta": "string", "nomorbpjs": "string", "jeniskelamin": "string", "tanggallahir": "2023-11-22T04:52:06.690Z", "hubungankeluarga": "string", "namaperusahaan": "string", "pesertavip": "string", "namapenjamin": "string", "nomorpolis": "string", "tglmulaipolis": "2023-11-22T04:52:06.690Z", "tglberakhirpolis": "2023-11-22T04:52:06.690Z", "phone": "string", "email": "string" }, "Benefit": [ { "kodebenefit": "string", "namabenefit": "string", "planid": "string" } ] } ``` ### C. Pendaftaran (2.6.2) `POST /bridging-service/api/ProviderOnline/Pendaftaran` ```json { "kodeprovider": "RS001", "kodebenefit": "IP", "statusrujukan": "Y", "nomorrujukan": "RJ-001", "keterangan": "Rawat inap emergensi", "nomorsep": "SEP001", "nokartu": "CARD001", "kelaskamar": "KELAS-1", "asalrujukan": "FASKES-1", "cobbpjs": 150000, "notransaksiprovider": "TRX-RS-0001", "inacbgscode": "E-4-10-I", "inacbgsamount": 3200000, "p_user_no": 1001, "p_token": "usertoken_xxx" } ``` Contoh response (2.6.3): ```json { "Status": { "errornumber": 0, "messagestring": "string" }, "Data": [ { "noklaim": "string", "namapeserta": "string", "tanggallahir": "2023-11-22T04:52:06.693Z", "nokartu": "string", "nopolis": "string", "nobpjs": "string", "nosep": "string", "nomorrujukan": "string", "planid": "string", "masapolis": "string", "namaperusahaan": "string", "namapenjamin": "string", "tanggalmasuk": "2023-11-22T04:52:06.693Z", "tanggalkeluar": "2023-11-22T04:52:06.693Z", "hakkamar": "string", "hakicu": "string", "nosuratjaminan": "string", "namapegawai": "string", "namabenefit": "string", "kodediagnosa": "string", "keterangan": "string", "catatanTC1": "string", "catatanTC2": "string", "catatanTC3": "string", "catatanTC4": "string", "catatanTC5": "string", "catatanTC6": "string", "catatanTC7": "string", "catatanTC8": "string", "catatanTC9": "string", "catatanTC10": "string", "statusrujukan": "string", "statusklaim": 0, "notransaksiprovider": "string", "inacbgscode": "string", "inacbgsamount": 0 } ], "LimitSubBenefit": [ { "kodesubbenefit": "string", "namasubbenefit": "string", "batasan": "string" } ] } ``` ### D. Pengesahan (2.7.2) `POST /bridging-service/api/ProviderOnline/Pengesahan` ```json { "noklaim": "CLAIM-20260513-0001", "kodeprovider": "RS001", "tanggalkeluar": "2026-05-13T10:00:00Z", "kodediagnosa": "I10", "kodepoli": 12, "statusresep": "Y", "statusrujukan": "N", "rujukanke": "", "izinsakit": 0, "inacbgscode": "E-4-10-I", "inacbgsamount": 3200000, "daftarbiaya": [ { "kodesubbenefit": "SB001", "biayaaju": 1500000 }, { "kodesubbenefit": "SB002", "biayaaju": 1700000 } ], "p_user_no": 1001, "p_token": "usertoken_xxx" } ``` Contoh response (2.7.3): ```json { "Status": { "errornumber": 0, "messagestring": "string" }, "Data": [ { "noklaim": "string", "namapeserta": "string", "tanggallahir": "2023-11-22T04:52:06.696Z", "nokartu": "string", "nopolis": "string", "nobpjs": "string", "nosep": "string", "nomorrujukan": "string", "planid": "string", "masapolis": "string", "namaperusahaan": "string", "namapenjamin": "string", "tanggalmasuk": "2023-11-22T04:52:06.696Z", "tanggalkeluar": "2023-11-22T04:52:06.696Z", "hakkamar": "string", "hakicu": "string", "nosuratjaminan": "string", "namapegawai": "string", "namabenefit": "string", "kodediagnosa": "string", "keterangan": "string", "catatanTC1": "string", "catatanTC2": "string", "catatanTC3": "string", "catatanTC4": "string", "catatanTC5": "string", "catatanTC6": "string", "catatanTC7": "string", "catatanTC8": "string", "catatanTC9": "string", "catatanTC10": "string", "statusrujukan": "string", "statusklaim": 0, "notransaksiprovider": "string", "inacbgscode": "string", "inacbgsamount": 0 } ], "Biaya": [ { "noklaim": "string", "kodesubbenefit": "string", "namasubbenefit": "string", "kodebenefit": "string", "namabenefit": "string", "biayaaju": 0, "jaminanasuransi": 0, "jaminanpeserta": 0, "keterangan": "string" } ] } ``` ### E. BillingSementara (2.15.2) `POST /bridging-service/api/ProviderOnline/BillingSementara` ```json { "noklaim": "CLAIM-20260513-0001", "kodeprovider": "RS001", "tanggalkeluar": "2026-05-13T10:00:00Z", "kodediagnosa": "I10", "daftarbiaya": [ { "kodesubbenefit": "SB001", "biayaaju": 1500000 }, { "kodesubbenefit": "SB002", "biayaaju": 1700000 } ], "p_user_no": 1001, "p_token": "usertoken_xxx" } ``` Contoh response (2.15.3): ```json { "Status": { "errornumber": 0, "messagestring": "string" } } ``` ### F. RincianBiayaKlaim `POST /bridging-service/api/ProviderOnline/RincianBiayaKlaim` ```json { "noklaim": "CLAIM-20260513-0001", "kodeprovider": "RS001", "p_user_no": 1001, "p_token": "usertoken_xxx" } ``` Contoh response (2.9.3): ```json { "Status": { "errornumber": 0, "messagestring": "string" }, "Data": [ { "noklaim": "string", "namapeserta": "string", "tanggallahir": "2023-11-22T04:52:06.724Z", "nokartu": "string", "nopolis": "string", "nobpjs": "string", "nosep": "string", "nomorrujukan": "string", "planid": "string", "masapolis": "string", "namaperusahaan": "string", "namapenjamin": "string", "tanggalmasuk": "2023-11-22T04:52:06.724Z", "tanggalkeluar": "2023-11-22T04:52:06.724Z", "hakkamar": "string", "hakicu": "string", "nosuratjaminan": "string", "namapegawai": "string", "namabenefit": "string", "kodediagnosa": "string", "keterangan": "string", "catatanTC1": "string", "catatanTC2": "string", "catatanTC3": "string", "catatanTC4": "string", "catatanTC5": "string", "catatanTC6": "string", "catatanTC7": "string", "catatanTC8": "string", "catatanTC9": "string", "catatanTC10": "string", "statusrujukan": "string", "statusklaim": 0, "notransaksiprovider": "string", "inacbgscode": "string", "inacbgsamount": 0 } ], "Biaya": [ { "noklaim": "string", "kodesubbenefit": "string", "namasubbenefit": "string", "kodebenefit": "string", "namabenefit": "string", "biayaaju": 0, "jaminanasuransi": 0, "jaminanpeserta": 0, "keterangan": "string" } ] } ``` ### G. StrukPendaftaran (2.11.2) `POST /bridging-service/api/ProviderOnline/StrukPendaftaran` ```json { "noklaim": "CLAIM-20260513-0001", "kodeprovider": "RS001", "p_user_no": 1001, "p_token": "usertoken_xxx" } ``` Contoh response (2.11.3): ```json {} ``` Keterangan response: HTTP `200`, `Content-Type: application/octet-stream`, body berupa stream PDF. ### H. StrukPengesahan (2.12.2) `POST /bridging-service/api/ProviderOnline/StrukPengesahan` ```json { "noklaim": "CLAIM-20260513-0001", "kodeprovider": "RS001", "p_user_no": 1001, "p_token": "usertoken_xxx" } ``` Contoh response (2.12.3): ```json {} ``` Keterangan response: HTTP `200`, `Content-Type: application/octet-stream`, body berupa stream PDF. ## Test Plan 1. Route test exact path `/bridging-service/api/ProviderOnline/*` (tanpa prefix versi). 2. Validasi mapping DB: - `members` (`member_id` -> `id`) - `organizations` (`code` -> `id`) - `request_logs` - `request_log_benefits` - `benefits` 3. Uji pendaftaran: status default `approved`, source `api`, code otomatis, kolom INA-CBG/SEP/transaksi terisi. 4. Uji pengesahan: update by `noklaim`, update final log + diagnosis + discharge + biaya detail. 5. Uji cetak: `StrukPendaftaran` dan `StrukPengesahan` mengembalikan stream PDF. 6. Negative case: - `nokartu` tidak ditemukan - `kodeprovider` tidak valid - `noklaim` tidak ditemukan - `kodesubbenefit` tidak valid - payload wajib kosong ## Asumsi - Route non-versioned dipasang paralel, tidak menimpa endpoint existing. - Status final mengikuti arahan: `approve`. - Jika field tertentu sudah ada di tabel existing, migration hanya bersifat conditional (hindari duplikasi).
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tbfajri/aso#2