package com.jasamedika.medifirst2000.entities;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.helper.Caption;import org.hibernate.envers.Audited;

@Entity //@Audited
@Table(name="PapGinekologi_T")
public class PapGinekologi extends BaseTransaction{
	@ManyToOne
	@JoinColumn(name = "ObjectRegistrasiPelayananPasienFk")
	//@NotNull(message = "RegistrasiPelayananPasien tidak boleh kosong")
	private RegistrasiPelayananPasien registrasiPelayananPasien;	
	
	@Column(name = "ObjectRegistrasiPelayananPasienFk", columnDefinition = "CHAR(32)", insertable = false, updatable = false, nullable = true)
	private String registrasiPelayananPasienId;

	@ManyToOne
	@JoinColumn(name = "ObjectPasienFk")
	//@NotNull(message = "Pasien tidak boleh kosong")
	private Pasien pasien;	
	
	@Column(name = "ObjectPasienFk", insertable = false, updatable = false, nullable = true)
	private Integer pasienId;
	
	@NotNull(message = "Tgl Input tidak boleh kosong")
	@Column(name = "tglInput", nullable = false)
	@Caption(value = "Tgl Input")
	private Date tglInput;
	
	@Column(name = "kawin")
	@Caption(value = "Kawin")
	private String kawin;

	@Column(name = "umurKawinPertama")
	@Caption(value = "Umur Kawin Pertama")
	private String umurKawinPertama;

	@Column(name = "umurSuami")
	@Caption(value = "Umur Suami")
	private String umurSuami;

	@Column(name = "umurKawinKedua")
	@Caption(value = "Umur Kawin Kedua")
	private String umurKawinKedua;

	@Column(name = "abortus")
	@Caption(value = "Abortus")
	private String abortus;
	
	@Column(name = "kehamilan")
	@Caption(value = "Kehamilan")	
	private String kehamilan;

	@Column(name = "banyaknya")
	@Caption(value = "Banyaknya")	
	private String banyaknya;
	
	@ManyToOne
	@JoinColumn(name = "ObjectMasihKawinFk")
	@NotNull(message = "Masih Kawin tidak boleh kosong")
	private StatusYaTidak masihKawin;

	@Column(name = "ObjectMasihKawinFk", insertable = false, updatable = false, nullable = false)
	private Integer masihKawinId;

	@Column(name = "kejadianKe1")
	@Caption(value = "KejadianKe 1")	
	private String kejadianKe1;

	@Column(name = "kejadianKe2")
	@Caption(value = "KejadianKe 2")	
	private String kejadianKe2;

	@Column(name = "kejadianKe3")
	@Caption(value = "KejadianKe 3")	
	private String kejadianKe3;

	@Column(name = "kejadianKe4")
	@Caption(value = "KejadianKe 4")	
	private String kejadianKe4;
	
	@Column(name = "kejadianKe5")
	@Caption(value = "KejadianKe 5")	
	private String kejadianKe5;

	@Column(name = "kejadianKe6")
	@Caption(value = "KejadianKe 6")	
	private String kejadianKe6;
	
	@Column(name = "kejadianKe7")
	@Caption(value = "KejadianKe 7")	
	private String kejadianKe7;

	@Column(name = "kejadianKe8")
	@Caption(value = "KejadianKe 8")	
	private String kejadianKe8;

	@Column(name = "kejadianKe9")
	@Caption(value = "KejadianKe 9")	
	private String kejadianKe9;

	@Column(name = "kejadianKe10")
	@Caption(value = "KejadianKe 10")	
	private String kejadianKe10;

	@Column(name = "umurHaidPertama")
	@Caption(value = "Umur Haid Pertama")	
	private String umurHaidPertama;
	
	@Column(name = "lamanya")
	@Caption(value = "Lamanya")	
	private String lamanya;
	
	@Column(name = "banyaknyaHaid")
	@Caption(value = "Banyaknya Haid")	
	private String banyaknyaHaid;
	
	@Column(name = "isBertambah")
	@Caption(value = "Is Bertambah")	
	private Boolean isBertambah;
	
	@ManyToOne
	@JoinColumn(name = "ObjectSakitWaktuHaidFk")
	@NotNull(message = "Sakit Waktu Haid tidak boleh kosong")
	private StatusYaTidak sakitWaktuHaid;

	@Column(name = "ObjectMasihKawinFk", insertable = false, updatable = false, nullable = false)
	private Integer sakitWaktuHaidId;

	@ManyToOne
	@JoinColumn(name = "ObjectTeraturFk")
	@NotNull(message = "Teratur tidak boleh kosong")
	private StatusYaTidak teratur;

	@Column(name = "ObjectTeraturFk", insertable = false, updatable = false, nullable = false)
	private Integer teraturId;

	@Column(name = "tglHaidPertama")
	@Caption(value = "Tgl Haid Pertama")	
	private Date tglHaidPertama;

	@ManyToOne
	@JoinColumn(name = "ObjectGatalKeputihanFk")
	@NotNull(message = "Gatal Keputihan tidak boleh kosong")
	private StatusYaTidak gatalKeputihan;

	@Column(name = "ObjectMasihKawinFk", insertable = false, updatable = false, nullable = false)
	private Integer gatalKeputihanId;

	@ManyToOne
	@JoinColumn(name = "ObjectSakitKeputihanFk")
	@NotNull(message = "Sakit Keputihan tidak boleh kosong")
	private StatusYaTidak sakitKeputihan;

	@Column(name = "ObjectMasihKawinFk", insertable = false, updatable = false, nullable = false)
	private Integer sakitKeputihanId;
	
	@ManyToOne
	@JoinColumn(name = "ObjectBauKeputihanFk")
	@NotNull(message = "Bau Keputihan tidak boleh kosong")
	private StatusYaTidak bauKeputihan;

	@Column(name = "ObjectMasihKawinFk", insertable = false, updatable = false, nullable = false)
	private Integer bauKeputihanId;

	@Column(name = "warnaKeputihan")
	@Caption(value = "Warna Keputihan")	
	private String warnaKeputihan;
	
//	@JsonManagedReference
	@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "papGinekologi")
	@Caption(value = "papDataTandaVitalSet")
	private List<PapDataTandaVital> papDataTandaVitalSet=new ArrayList<PapDataTandaVital>();	
	
    /*
	@Column(name = "keadaanUmum")
	@Caption(value = "Keadaan Umum")	
	private String keadaanUmum;

	@Column(name = "jantung")
	@Caption(value = "Jantung")	
	private String jantung;

	@Column(name = "paruParu")
	@Caption(value = "Paru Paru")	
	private String paruParu;

	@Column(name = "beratBadan")
	@Caption(value = "Berat Badan")	
	private String beratBadan;

	@Column(name = "perubahanLainLain")
	@Caption(value = "Perubahan Lain Lain")	
	private String perubahanLainLain;
	
	@Column(name = "tekananDarah")
	@Caption(value = "Tekanan Darah")	
	private String tekananDarah;
	*/
	@Column(name = "inspeksi")
	@Caption(value = "Inspeksi")	
	private String inspeksi;

	@Column(name = "inspekulo")
	@Caption(value = "Inspekulo")	
	private String inspekulo;

	@Column(name = "vaginalToucher")
	@Caption(value = "Vaginal Toucher")	
	private String vaginalToucher;
	
	@Column(name = "pengobatan")
	@Caption(value = "Pengobatan")	
	private String pengobatan;

//	@JsonManagedReference
	@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "papGinekologi")
	@Caption(value = "laboratoriumSet")
	Set<PapLaboratorium> laboratoriumSet=new HashSet<PapLaboratorium>();
	
	public RegistrasiPelayananPasien getRegistrasiPelayananPasien() {
		return registrasiPelayananPasien;
	}

	public void setRegistrasiPelayananPasien(RegistrasiPelayananPasien registrasiPelayananPasien) {
		this.registrasiPelayananPasien = registrasiPelayananPasien;
	}

	public Pasien getPasien() {
		return pasien;
	}

	public void setPasien(Pasien pasien) {
		this.pasien = pasien;
	}

	public Date getTglInput() {
		return tglInput;
	}

	public void setTglInput(Date tglInput) {
		this.tglInput = tglInput;
	}

	public String getKawin() {
		return kawin;
	}

	public void setKawin(String kawin) {
		this.kawin = kawin;
	}

	public String getUmurKawinPertama() {
		return umurKawinPertama;
	}

	public void setUmurKawinPertama(String umurKawinPertama) {
		this.umurKawinPertama = umurKawinPertama;
	}

	public String getUmurSuami() {
		return umurSuami;
	}

	public void setUmurSuami(String umurSuami) {
		this.umurSuami = umurSuami;
	}

	public String getUmurKawinKedua() {
		return umurKawinKedua;
	}

	public void setUmurKawinKedua(String umurKawinKedua) {
		this.umurKawinKedua = umurKawinKedua;
	}

	public String getAbortus() {
		return abortus;
	}

	public void setAbortus(String abortus) {
		this.abortus = abortus;
	}

	public String getKehamilan() {
		return kehamilan;
	}

	public void setKehamilan(String kehamilan) {
		this.kehamilan = kehamilan;
	}

	public String getBanyaknya() {
		return banyaknya;
	}

	public void setBanyaknya(String banyaknya) {
		this.banyaknya = banyaknya;
	}

	public StatusYaTidak getMasihKawin() {
		return masihKawin;
	}

	public void setMasihKawin(StatusYaTidak masihKawin) {
		this.masihKawin = masihKawin;
	}

	public String getKejadianKe1() {
		return kejadianKe1;
	}

	public void setKejadianKe1(String kejadianKe1) {
		this.kejadianKe1 = kejadianKe1;
	}

	public String getKejadianKe2() {
		return kejadianKe2;
	}

	public void setKejadianKe2(String kejadianKe2) {
		this.kejadianKe2 = kejadianKe2;
	}

	public String getKejadianKe3() {
		return kejadianKe3;
	}

	public void setKejadianKe3(String kejadianKe3) {
		this.kejadianKe3 = kejadianKe3;
	}

	public String getKejadianKe4() {
		return kejadianKe4;
	}

	public void setKejadianKe4(String kejadianKe4) {
		this.kejadianKe4 = kejadianKe4;
	}

	public String getKejadianKe5() {
		return kejadianKe5;
	}

	public void setKejadianKe5(String kejadianKe5) {
		this.kejadianKe5 = kejadianKe5;
	}

	public String getKejadianKe6() {
		return kejadianKe6;
	}

	public void setKejadianKe6(String kejadianKe6) {
		this.kejadianKe6 = kejadianKe6;
	}

	public String getKejadianKe7() {
		return kejadianKe7;
	}

	public void setKejadianKe7(String kejadianKe7) {
		this.kejadianKe7 = kejadianKe7;
	}

	public String getKejadianKe8() {
		return kejadianKe8;
	}

	public void setKejadianKe8(String kejadianKe8) {
		this.kejadianKe8 = kejadianKe8;
	}

	public String getKejadianKe9() {
		return kejadianKe9;
	}

	public void setKejadianKe9(String kejadianKe9) {
		this.kejadianKe9 = kejadianKe9;
	}

	public String getKejadianKe10() {
		return kejadianKe10;
	}

	public void setKejadianKe10(String kejadianKe10) {
		this.kejadianKe10 = kejadianKe10;
	}

	public String getUmurHaidPertama() {
		return umurHaidPertama;
	}

	public void setUmurHaidPertama(String umurHaidPertama) {
		this.umurHaidPertama = umurHaidPertama;
	}

	public String getLamanya() {
		return lamanya;
	}

	public void setLamanya(String lamanya) {
		this.lamanya = lamanya;
	}

	public Boolean getIsBertambah() {
		return isBertambah;
	}

	public void setIsBertambah(Boolean isBertambah) {
		this.isBertambah = isBertambah;
	}

	public StatusYaTidak getTeratur() {
		return teratur;
	}

	public void setTeratur(StatusYaTidak teratur) {
		this.teratur = teratur;
	}

	public Date getTglHaidPertama() {
		return tglHaidPertama;
	}

	public void setTglHaidPertama(Date tglHaidPertama) {
		this.tglHaidPertama = tglHaidPertama;
	}

	public StatusYaTidak getGatalKeputihan() {
		return gatalKeputihan;
	}

	public void setGatalKeputihan(StatusYaTidak gatalKeputihan) {
		this.gatalKeputihan = gatalKeputihan;
	}

	public StatusYaTidak getSakitKeputihan() {
		return sakitKeputihan;
	}

	public void setSakitKeputihan(StatusYaTidak sakitKeputihan) {
		this.sakitKeputihan = sakitKeputihan;
	}

	public StatusYaTidak getBauKeputihan() {
		return bauKeputihan;
	}

	public void setBauKeputihan(StatusYaTidak bauKeputihan) {
		this.bauKeputihan = bauKeputihan;
	}

	public String getWarnaKeputihan() {
		return warnaKeputihan;
	}

	public void setWarnaKeputihan(String warnaKeputihan) {
		this.warnaKeputihan = warnaKeputihan;
	}

	public String getInspeksi() {
		return inspeksi;
	}

	public void setInspeksi(String inspeksi) {
		this.inspeksi = inspeksi;
	}

	public String getInspekulo() {
		return inspekulo;
	}

	public void setInspekulo(String inspekulo) {
		this.inspekulo = inspekulo;
	}

	public String getVaginalToucher() {
		return vaginalToucher;
	}

	public void setVaginalToucher(String vaginalToucher) {
		this.vaginalToucher = vaginalToucher;
	}

	public String getPengobatan() {
		return pengobatan;
	}

	public void setPengobatan(String pengobatan) {
		this.pengobatan = pengobatan;
	}

	public Set<PapLaboratorium> getLaboratoriumSet() {
		return laboratoriumSet;
	}

	public void setLaboratoriumSet(Set<PapLaboratorium> laboratoriumSet) {
		this.laboratoriumSet = laboratoriumSet;
	}

	public List<PapDataTandaVital> getPapDataTandaVitalSet() {
		return papDataTandaVitalSet;
	}

	public void setPapDataTandaVitalSet(List<PapDataTandaVital> papDataTandaVitalSet) {
		this.papDataTandaVitalSet = papDataTandaVitalSet;
	}

}
