package rujukan

import "api-service/internal/models"

// === RUJUKAN MODELS ===

// RujukanRequest represents rujukan lookup request
type RujukanRequest struct {
	models.BaseRequest
	NoRujukan string `json:"noRujukan" validate:"required"`
	NoKartu   string `json:"noKartu,omitempty"`
}

// RujukanData represents rujukan information
type RujukanData struct {
	Diagnosa     DiagnosaData    `json:"diagnosa"`
	Keluhan      string          `json:"keluhan"`
	NoKunjungan  string          `json:"noKunjungan"`
	Pelayanan    PelayananData   `json:"pelayanan"`
	Peserta      DataPeserta     `json:"peserta"`
	PoliRujukan  PoliRujukanData `json:"poliRujukan"`
	ProvPerujuk  ProvPerujukData `json:"provPerujuk"`
	TglKunjungan string          `json:"tglKunjungan"`
}

type DiagnosaData struct {
	Kode string `json:"kode"`
	Nama string `json:"nama"`
}

type PelayananData struct {
	Kode string `json:"kode"`
	Nama string `json:"nama"`
}

type PoliRujukanData struct {
	Kode string `json:"kode"`
	Nama string `json:"nama"`
}

type ProvPerujukData struct {
	Kode string `json:"kode"`
	Nama string `json:"nama"`
}

type DataPeserta struct {
	NoKartu       string `json:"noKartu"`
	NIK           string `json:"nik"`
	Nama          string `json:"nama"`
	Pisa          string `json:"pisa"`
	Sex           string `json:"sex"`
	TanggalLahir  string `json:"tglLahir"`
	TglCetakKartu string `json:"tglCetakKartu"`
	TglTAT        string `json:"tglTAT"`
	TglTMT        string `json:"tglTMT"`
	StatusPeserta struct {
		Kode       string `json:"kode"`
		Keterangan string `json:"keterangan"`
	} `json:"statusPeserta"`
	ProvUmum struct {
		KdProvider string `json:"kdProvider"`
		NmProvider string `json:"nmProvider"`
	} `json:"provUmum"`
	JenisPeserta struct {
		Kode       string `json:"kode"`
		Keterangan string `json:"keterangan"`
	} `json:"jenisPeserta"`
	HakKelas struct {
		Kode       string `json:"kode"`
		Keterangan string `json:"keterangan"`
	} `json:"hakKelas"`
	Umur struct {
		UmurSekarang      string `json:"umurSekarang"`
		UmurSaatPelayanan string `json:"umurSaatPelayanan"`
	} `json:"umur"`
	Informasi struct {
		Dinsos      interface{} `json:"dinsos"`
		ProlanisPRB interface{} `json:"prolanisPRB"`
		NoSKTM      interface{} `json:"noSKTM"`
	} `json:"informasi"`
	Cob struct {
		NoAsuransi interface{} `json:"noAsuransi"`
		NmAsuransi interface{} `json:"nmAsuransi"`
		TglTMT     interface{} `json:"tglTMT"`
		TglTAT     interface{} `json:"tglTAT"`
	} `json:"cob"`
	MR struct {
		NoMR      string      `json:"noMR"`
		NoTelepon interface{} `json:"noTelepon"`
	} `json:"mr"`
}

// RujukanResponse represents rujukan API response
type RujukanResponse struct {
	models.BaseResponse
	Data     *RujukanData  `json:"data,omitempty"`
	List     []RujukanData `json:"list,omitempty"`
	MetaData interface{}   `json:"metaData,omitempty"`
}
