package sep

// CreateSEPRequest adalah data payload untuk insert pembuatan SEP.
// Strukturnya mengikuti format yang dibutuhkan oleh API VClaim 2.0.
type CreateSEPRequest struct {
	Request struct {
		Sep `json:"t_sep"`
	} `json:"request"`
}

// Sep adalah detail data untuk pembuatan SEP.
type Sep struct {
	NoKartu       string   `json:"noKartu"`
	TglSep        string   `json:"tglSep"`
	PpkPelayanan  string   `json:"ppkPelayanan"`
	JnsPelayanan  string   `json:"jnsPelayanan"`
	KlsRawat      KlsRawat `json:"klsRawat"`
	NoMR          string   `json:"noMR"`
	Rujukan       Rujukan  `json:"rujukan"`
	Catatan       string   `json:"catatan"`
	DiagAwal      string   `json:"diagAwal"`
	Poli          Poli     `json:"poli"`
	Cob           string   `json:"cob"`
	Katarak       string   `json:"katarak"`
	Jaminan       Jaminan  `json:"jaminan"`
	Tujuan        string   `json:"tujuan"`
	FlagProcedure string   `json:"flagProcedure"`
	KdPenunjang   string   `json:"kdPenunjang"`
	AssesmentPel  string   `json:"assesmentPel"`
	NoSurat       string   `json:"noSurat"`
	KodeDPJP      string   `json:"kodeDPJP"`
	DpjpLayan     string   `json:"dpjpLayan"`
	NoTelp        string   `json:"noTelp"`
	User          string   `json:"user"`
}

type KlsRawat struct {
	KlsRawatHak     string `json:"klsRawatHak"`
	KlsRawatNaik    string `json:"klsRawatNaik,omitempty"`
	Pembiayaan      string `json:"pembiayaan,omitempty"`
	PenanggungJawab string `json:"penanggungJawab,omitempty"`
}

type Rujukan struct {
	AsalRujukan string `json:"asalRujukan"`
	TglRujukan  string `json:"tglRujukan"`
	NoRujukan   string `json:"noRujukan"`
	PpkRujukan  string `json:"ppkRujukan"`
}

type Poli struct {
	Tujuan    string `json:"tujuan"`
	Eksekutif string `json:"eksekutif"`
}

type Jaminan struct {
	LakaLantas string   `json:"lakaLantas"`
	NoLP       string   `json:"noLP,omitempty"`
	Penjamin   Penjamin `json:"penjamin,omitempty"`
}

type Penjamin struct {
	TglKejadian string `json:"tglKejadian,omitempty"`
	Keterangan  string `json:"keterangan,omitempty"`
	Suplesi     struct {
		Suplesi      string `json:"suplesi"`
		NoSepSuplesi string `json:"noSepSuplesi,omitempty"`
		LokasiLaka   struct {
			KdPropinsi  string `json:"kdPropinsi"`
			KdKabupaten string `json:"kdKabupaten"`
			KdKecamatan string `json:"kdKecamatan"`
		} `json:"lokasiLaka,omitempty"`
	} `json:"suplesi,omitempty"`
}

// CreateSEPResponse adalah data balikan setelah SEP berhasil dicreate.
type CreateSEPResponse struct {
	Sep struct {
		NoSep    string `json:"noSep"`
		TglSep   string `json:"tglSep"`
		Poli     string `json:"poli"`
		Diagnosa string `json:"diagnosa"`
		Catatan  string `json:"catatan"`
		JnsRawat string `json:"jnsRawat"`
		KlsRawat string `json:"klsRawat"`
		Penjamin string `json:"penjamin"`
	} `json:"sep"`
}

// UpdateSEPRequest adalah data payload untuk update SEP.
type UpdateSEPRequest struct {
	Request struct {
		Sep struct {
			NoSep     string   `json:"noSep"`
			KlsRawat  KlsRawat `json:"klsRawat"`
			NoMR      string   `json:"noMR"`
			Catatan   string   `json:"catatan"`
			DiagAwal  string   `json:"diagAwal"`
			Poli      Poli     `json:"poli"`
			Eksekutif string   `json:"eksekutif"`
			Cob       string   `json:"cob"`
			Katarak   string   `json:"katarak"`
			Jaminan   Jaminan  `json:"jaminan"`
			NoTelp    string   `json:"noTelp"`
			User      string   `json:"user"`
		} `json:"t_sep"`
	} `json:"request"`
}

// DeleteSEPRequest adalah data payload untuk menghapus SEP.
type DeleteSEPRequest struct {
	Request struct {
		Sep struct {
			NoSep string `json:"noSep"`
			User  string `json:"user"`
		} `json:"t_sep"`
	} `json:"request"`
}

// SEPDetailResponse adalah data balikan untuk detail SEP.
type SEPDetailResponse struct {
	Catatan      string `json:"catatan"`
	Diagnosa     string `json:"diagnosa"`
	JnsPelayanan string `json:"jnsPelayanan"`
	KelasRawat   string `json:"kelasRawat"`
	NoRujukan    string `json:"noRujukan"`
	NoSep        string `json:"noSep"`
	Penjamin     string `json:"penjamin"`
	Peserta      struct {
		Nama    string `json:"nama"`
		NoKartu string `json:"noKartu"`
		NoMr    string `json:"noMr"`
	} `json:"peserta"`
	Poli   string `json:"poli"`
	TglSep string `json:"tglSep"`
}
