package com.jasamedika.medifirst2000.vo;

import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
import org.hibernate.validator.constraints.NotEmpty;

import com.jasamedika.medifirst2000.base.vo.BaseMasterVO;
import com.jasamedika.medifirst2000.entities.AsuransiPasien;
import com.jasamedika.medifirst2000.entities.DataAsuransi;
import com.jasamedika.medifirst2000.entities.Diagnosa;
import com.jasamedika.medifirst2000.entities.GolonganAsuransi;
import com.jasamedika.medifirst2000.entities.HubunganPesertaAsuransi;
import com.jasamedika.medifirst2000.entities.JenisKelamin;
import com.jasamedika.medifirst2000.entities.Kelas;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Rekanan;
import com.jasamedika.medifirst2000.entities.Ruangan;

import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.internal.util.logging.Messages;

import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.jasamedika.medifirst2000.base.vo.BaseMasterVO;
import com.jasamedika.medifirst2000.helper.Caption;

public class AsuransiPasienVO extends BaseMasterVO {
	
	@Caption(value = "Alamat Lengkap")
	private String alamatLengkap;

	@ManyToOne(fetch = FetchType.LAZY)
	@Caption(value = "Object Golongan Asuransi")
	private GolonganAsuransiVO golonganAsuransi;

	@ManyToOne(fetch = FetchType.LAZY)
	@NotNull(message = "Kd Hubungan Peserta tidak boleh kosong")
	@Caption(value = "Object Hubungan Peserta")
	private HubunganPesertaAsuransiVO hubunganPeserta;

	@Caption(value = "Kode Institusi Asal")
	private Integer kdInstitusiAsal;

	@ManyToOne(fetch = FetchType.LAZY)
	@NotNull(message = "Kd Jenis Kelamin tidak boleh kosong")
	@Caption(value = "Object Jenis Kelamin")
	private JenisKelaminVO jenisKelamin;

	@ManyToOne(fetch = FetchType.LAZY)
	@NotNull(message = "Kd Kelas Di Jamin tidak boleh kosong")
	@Caption(value = "Object Kelas Di Jamin")
	private KelasVO kelasDiJamin;

	@Caption(value = "Kode Last Unit Bagian")
	private Integer kdLastUnitBagian;

	@ManyToOne(fetch = FetchType.LAZY)
	@Caption(value = "Object Pegawai")
	private PegawaiVO pegawai;

	@ManyToOne(fetch = FetchType.LAZY)
	@Caption(value = "Object Rekanan")
	private RekananVO rekanan;

	@ManyToOne(fetch = FetchType.LAZY)
	@Caption(value = "Last Unit Bagian")
	private RuanganVO lastUnitBagian;
	
	@NotNull(message = "Nama Peserta tidak boleh kosong")
	@Caption(value = "Nama Peserta")
	private String namaPeserta;

	@Caption(value = "NIK Institusi Asal")
	private String nikInstitusiAsal;

	@Caption(value = "NIP PNS")
	private String nipPns;

	@NotNull(message = "No Asuransi tidak boleh kosong")
	@Caption(value = "No Asuransi")
	private String noAsuransi;

	@Caption(value = "No Asuransi Head")
	private String noAsuransiHead;

	@ManyToOne(fetch = FetchType.LAZY)
	@Caption(value = "No C M")
	private PasienVO noCm;

	@Caption(value = "No Identitas")
	private String noIdentitas;

	@Caption(value = "No Telp Fixed")
	private String noTelpFixed;

	@Caption(value = "No Telp Mobile")
	private String noTelpMobile;

	@Caption(value = "QAsuransi")
	private Integer qAsuransi;

	@Caption(value = "Tanggal Akhir Berlaku Last")
	private Date tglAkhirBerlakuLast;

	@Caption(value = "Tanggal Lahir")
	@NotNull(message = "Tgl Lahir tidak boleh kosong")
	private Date tglLahir;

	@Caption(value = "Tanggal Mulai Berlaku Last")
	private Date tglMulaiBerlakuLast;
	
	@Caption(value = "JenisPeserta")
	private String jenisPeserta;
	
	@Caption(value = "NmProvider")
	private String nmProvider;
	
	@Caption(value = "KdProvider")
	private String kdProvider;
	
	//----------------------------------------------Pemakaian Asuransi-----------------------------------------------------
	
	@Caption(value = "PpkRujukan")
	private String ppkRujukan;

	@Caption(value = "Diagnosis")
	private DiagnosaVO diagnosis;

	@Caption(value = "NoKepesertaan")
	private String noKepesertaan;

	@Caption(value = "Lakalantas")
	private Integer lakalantas;

	@Caption(value = "TglRujukan")
	private Date tglRujukan;

	@Caption(value = "NoRujukan")
	private String noRujukan;

	@Caption(value = "NoSep")
	private String noSep;
	
	@Caption(value = "ObjectDiagnosaFK")
	private DiagnosaVO diagnosa;
	
	@Column(name = "TanggalSep", nullable = true )
	private Date tanggalSep;
	
	private String catatan;
	
	public String getCatatan() {
		return catatan;
	}
	public void setCatatan(String catatan) {
		this.catatan = catatan;
	}
	
	public String getAlamatLengkap() {
		return alamatLengkap;
	}

	public void setAlamatLengkap(String alamatLengkap) {
		this.alamatLengkap = alamatLengkap;
	}

	public GolonganAsuransiVO getGolonganAsuransi() {
		return golonganAsuransi;
	}

	public void setGolonganAsuransi(GolonganAsuransiVO golonganAsuransi) {
		this.golonganAsuransi = golonganAsuransi;
	}

	public HubunganPesertaAsuransiVO getHubunganPeserta() {
		return hubunganPeserta;
	}

	public void setHubunganPeserta(HubunganPesertaAsuransiVO hubunganPeserta) {
		this.hubunganPeserta = hubunganPeserta;
	}

	public Integer getKdInstitusiAsal() {
		return kdInstitusiAsal;
	}

	public void setKdInstitusiAsal(Integer kdInstitusiAsal) {
		this.kdInstitusiAsal = kdInstitusiAsal;
	}

	public JenisKelaminVO getJenisKelamin() {
		return jenisKelamin;
	}

	public void setJenisKelamin(JenisKelaminVO jenisKelamin) {
		this.jenisKelamin = jenisKelamin;
	}

	public KelasVO getKelasDiJamin() {
		return kelasDiJamin;
	}

	public void setKelasDiJamin(KelasVO kelasDiJamin) {
		this.kelasDiJamin = kelasDiJamin;
	}

	public Integer getKdLastUnitBagian() {
		return kdLastUnitBagian;
	}

	public void setKdLastUnitBagian(Integer kdLastUnitBagian) {
		this.kdLastUnitBagian = kdLastUnitBagian;
	}

	public PegawaiVO getPegawai() {
		return pegawai;
	}

	public void setPegawai(PegawaiVO pegawai) {
		this.pegawai = pegawai;
	}

	public RekananVO getRekanan() {
		return rekanan;
	}

	public void setRekanan(RekananVO rekanan) {
		this.rekanan = rekanan;
	}

	public RuanganVO getLastUnitBagian() {
		return lastUnitBagian;
	}

	public void setLastUnitBagian(RuanganVO lastUnitBagian) {
		this.lastUnitBagian = lastUnitBagian;
	}

	public String getNamaPeserta() {
		return namaPeserta;
	}

	public void setNamaPeserta(String namaPeserta) {
		this.namaPeserta = namaPeserta;
	}

	public String getNikInstitusiAsal() {
		return nikInstitusiAsal;
	}

	public void setNikInstitusiAsal(String nikInstitusiAsal) {
		this.nikInstitusiAsal = nikInstitusiAsal;
	}

	public String getNipPns() {
		return nipPns;
	}

	public void setNipPns(String nipPns) {
		this.nipPns = nipPns;
	}

	public String getNoAsuransi() {
		return noAsuransi;
	}

	public void setNoAsuransi(String noAsuransi) {
		this.noAsuransi = noAsuransi;
	}

	public String getNoAsuransiHead() {
		return noAsuransiHead;
	}

	public void setNoAsuransiHead(String noAsuransiHead) {
		this.noAsuransiHead = noAsuransiHead;
	}

	public PasienVO getNoCm() {
		return noCm;
	}

	public void setNoCm(PasienVO noCm) {
		this.noCm = noCm;
	}

	public String getNoIdentitas() {
		return noIdentitas;
	}

	public void setNoIdentitas(String noIdentitas) {
		this.noIdentitas = noIdentitas;
	}

	public String getNoTelpFixed() {
		return noTelpFixed;
	}

	public void setNoTelpFixed(String noTelpFixed) {
		this.noTelpFixed = noTelpFixed;
	}

	public String getNoTelpMobile() {
		return noTelpMobile;
	}

	public void setNoTelpMobile(String noTelpMobile) {
		this.noTelpMobile = noTelpMobile;
	}

	public Integer getqAsuransi() {
		return qAsuransi;
	}

	public void setqAsuransi(Integer qAsuransi) {
		this.qAsuransi = qAsuransi;
	}

	public Date getTglAkhirBerlakuLast() {
		return tglAkhirBerlakuLast;
	}

	public void setTglAkhirBerlakuLast(Date tglAkhirBerlakuLast) {
		this.tglAkhirBerlakuLast = tglAkhirBerlakuLast;
	}

	public Date getTglLahir() {
		return tglLahir;
	}

	public void setTglLahir(Date tglLahir) {
		this.tglLahir = tglLahir;
	}

	public Date getTglMulaiBerlakuLast() {
		return tglMulaiBerlakuLast;
	}

	public void setTglMulaiBerlakuLast(Date tglMulaiBerlakuLast) {
		this.tglMulaiBerlakuLast = tglMulaiBerlakuLast;
	}

	public String getPpkRujukan() {
		return ppkRujukan;
	}

	public void setPpkRujukan(String ppkRujukan) {
		this.ppkRujukan = ppkRujukan;
	}

	public DiagnosaVO getDiagnosis() {
		return diagnosis;
	}

	public void setDiagnosis(DiagnosaVO diagnosis) {
		this.diagnosis = diagnosis;
	}

	public String getNoKepesertaan() {
		return noKepesertaan;
	}

	public void setNoKepesertaan(String noKepesertaan) {
		this.noKepesertaan = noKepesertaan;
	}

	public Integer getLakalantas() {
		return lakalantas;
	}

	public void setLakalantas(Integer lakalantas) {
		this.lakalantas = lakalantas;
	}

	public Date getTglRujukan() {
		return tglRujukan;
	}

	public void setTglRujukan(Date tglRujukan) {
		this.tglRujukan = tglRujukan;
	}

	public String getNoRujukan() {
		return noRujukan;
	}

	public void setNoRujukan(String noRujukan) {
		this.noRujukan = noRujukan;
	}

	public String getNoSep() {
		return noSep;
	}

	public void setNoSep(String noSep) {
		this.noSep = noSep;
	}

	public String getJenisPeserta() {
		return jenisPeserta;
	}

	public void setJenisPeserta(String jenisPeserta) {
		this.jenisPeserta = jenisPeserta;
	}

	public String getNmProvider() {
		return nmProvider;
	}

	public void setNmProvider(String nmProvider) {
		this.nmProvider = nmProvider;
	}

	public String getKdProvider() {
		return kdProvider;
	}

	public void setKdProvider(String kdProvider) {
		this.kdProvider = kdProvider;
	}

	public DiagnosaVO getDiagnosa() {
		return diagnosa;
	}

	public void setDiagnosa(DiagnosaVO diagnosa) {
		this.diagnosa = diagnosa;
	}

	public Date getTanggalSep() {
		return tanggalSep;
	}

	public void setTanggalSep(Date tanggalSep) {
		this.tanggalSep = tanggalSep;
	}
}
