package encounter

import (
	"database/sql"
)

// PendaftaranDB merepresentasikan struktur gabungan dari tabel transaksi SIMRS dan master SATUDATA
type PendaftaranDB struct {
	// --- Sumber: Database SIMRS (PostgreSQL) ---
	IdxDaftar   int64          `db:"idxdaftar"`
	NoMR        sql.NullString `db:"nomr"`
	TglReg      sql.NullTime   `db:"tglreg"`
	KdDokter    sql.NullInt64  `db:"kddokter"`
	KdPoly      sql.NullInt64  `db:"kdpoly"`
	KdCaraBayar sql.NullInt64  `db:"kdcarabayar"`
	Status      sql.NullInt64  `db:"status"`
	Batal       sql.NullString `db:"batal"`
	JamReg      sql.NullTime   `db:"jamreg"`
	MasukPoly   sql.NullTime   `db:"masukpoly"`
	KeluarPoly  sql.NullTime   `db:"keluarpoly"`

	// --- Sumber: Database SIMRS (public.m_pasien) ---
	PatientName sql.NullString `db:"nama"`
	NIK         sql.NullString `db:"nik"`

	// --- Sumber: Database SIMRS Master Data (PostgreSQL) ---
	PatientIHS      sql.NullString `db:"patient_ihs"`
	PractitionerIHS sql.NullString `db:"practitioner_ihs"`
	PractitionerNIK sql.NullString `db:"practitioner_nik"`
	LocationIHS     sql.NullString `db:"location_ihs"`
}

// EncounterSyncLog merepresentasikan struktur log sinkronisasi API SatuSehat.
// Struktur ini mempermudah pembacaan payload (Request/Response) serta mendukung proses pengiriman ulang (rollback/resend).
type EncounterSyncLog struct {
	IdxDaftar       int64  `db:"idxdaftar"`
	EncounterID     string `db:"encounter_id"`     // ID dari SatuSehat jika status SUCCESS
	RequestPayload  string `db:"request_payload"`  // Teks JSON raw request
	ResponsePayload string `db:"response_payload"` // Teks JSON raw response
	Status          string `db:"status"`           // Status: SUCCESS / FAILED
	ErrorMessage    string `db:"error_message"`    // Pesan kegagalan (jika FAILED)
}
