package sep

import (
	"api-service/internal/models"
	"api-service/internal/models/vclaim/peserta"
)

// === SEP (Surat Eligibilitas Peserta) MODELS ===

// SEPRequest represents SEP creation/update request
type SepRequest struct {
	models.BaseRequest
	NoKartu      string      `json:"noKartu" validate:"required"`
	TglSep       string      `json:"tglSep" validate:"required"`
	PPKPelayanan string      `json:"ppkPelayanan" validate:"required"`
	JnsPelayanan string      `json:"jnsPelayanan" validate:"required,oneof=1 2"`
	KlsRawat     string      `json:"klsRawat" validate:"required,oneof=1 2 3"`
	NoMR         string      `json:"noMR" validate:"required"`
	Rujukan      *SepRujukan `json:"rujukan"`
	Catatan      string      `json:"catatan,omitempty"`
	Diagnosa     string      `json:"diagnosa" validate:"required"`
	PoliTujuan   string      `json:"poli" validate:"required"`
	ExternalUser string      `json:"user" validate:"required"`
	NoTelp       string      `json:"noTelp,omitempty"`
}

// SEPRujukan represents rujukan information in SEP
type SepRujukan struct {
	AsalRujukan string `json:"asalRujukan" validate:"required,oneof=1 2"`
	TglRujukan  string `json:"tglRujukan" validate:"required"`
	NoRujukan   string `json:"noRujukan" validate:"required"`
	PPKRujukan  string `json:"ppkRujukan" validate:"required"`
}

// SEPData represents SEP response data
type SepData struct {
	NoSep        string              `json:"noSep"`
	TglSep       string              `json:"tglSep"`
	JnsPelayanan string              `json:"jnsPelayanan"`
	PoliTujuan   string              `json:"poli"`
	KlsRawat     string              `json:"klsRawat"`
	NoMR         string              `json:"noMR"`
	Rujukan      SepRujukan          `json:"rujukan"`
	Catatan      string              `json:"catatan"`
	Diagnosa     string              `json:"diagnosa"`
	Peserta      peserta.PesertaData `json:"peserta"`
	Informasi    struct {
		NoSKDP       string `json:"noSKDP,omitempty"`
		DPJPLayan    string `json:"dpjpLayan"`
		NoTelepon    string `json:"noTelp"`
		SubSpesialis string `json:"subSpesialis,omitempty"`
	} `json:"informasi"`
}

// SEPResponse represents SEP API response
type SepResponse struct {
	models.BaseResponse
	Data *SepData `json:"data,omitempty"`
}
