package com.jasamedika.medifirst2000.entities;

import java.util.Date;
import java.util.HashSet;
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.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.helper.Caption;import org.hibernate.envers.Audited;

@Entity
@Table(name = "PapSkriningNyeri_T")
public class PapSkriningNyeri extends BaseTransaction {

	
	@ManyToOne
	@JoinColumn(name = "registrasipelayananpasienfk")
	@Caption(value = "Object RegistrasiPelayananPasien")
	private RegistrasiPelayananPasien registrasiPelayananPasien;

	@Column(name = "registrasipelayananpasienfk", columnDefinition = "CHAR(32)", insertable = false, updatable = false, nullable = true)
	private String registrasiPelayananPasienId;

	@ManyToOne
	@JoinColumn(name = "ObjectPasienFk")
	@NotNull(message = "Pasien tidak boleh kosong")
	@Caption(value = "Object Pasien")
	private AntrianPasienDiPeriksa pasien;

	@Column(name = "ObjectPasienFk", columnDefinition = "CHAR(32)", insertable = false, updatable = false, nullable = true)
	private String pasienId;

	@NotNull(message = "tglInput tidak boleh kosong")
	@Column(name = "tglInput")
	@Caption(value = "tglInput")
	private Date tglInput;

	@ManyToOne
	@JoinColumn(name = "ObjectRasaNyeriFk")
	@NotNull(message = "Rasa Nyeri tidak boleh kosong")
	@Caption(value = "Object Rasa Nyeri")
	private StatusAdaTidakAda rasaNyeri;

	@Column(name = "ObjectRasaNyeriFk", insertable = false, updatable = false, nullable = true)
	private Integer rasaNyeriId;

	@ManyToOne
	@JoinColumn(name = "ObjectLokasiNyeriFk")
	@Caption(value = "Lokasi Nyeri Pasien")
	private DataLokasiNyeri lokasiNyeri;
	
	@Column(name = "ObjectLokasiNyeriFk", insertable = false, updatable = false, nullable = true)
	private Integer lokasiNyeriId;

	@NotNull(message = "frekuensi tidak boleh kosong")
	@Column(name = "frekuensi")
	@Caption(value = "frekuensi")
	private String frekuensi;
	
	@NotNull(message = "durasi tidak boleh kosong")
	@Column(name = "durasi")
	@Caption(value = "durasi")
	private String durasi;
	
	@ManyToOne
	@JoinColumn(name = "ObjectTypeNyeriFk")
	@Caption(value = "TypeNyeri Pasien")
	private DataTipeNyeri typeNyeri;
	
	@Column(name = "ObjectTypeNyeriFk", insertable = false, updatable = false, nullable = true)
	private Integer typeNyeriId;
	
	@JsonManagedReference
	@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "papSkriningNyeri")
	@Caption(value = "karakteristikNyeriSet")
	Set<PapKarakteristikNyeri> karakteristikNyeriSet=new HashSet<PapKarakteristikNyeri>();
	
	@JsonManagedReference
	@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "papSkriningNyeri")
	@Caption(value = "pengaruhNyeriSet")
	Set<PapPengaruhNyeri> pengaruhNyeriSet=new HashSet<PapPengaruhNyeri>();
	
	@ManyToOne
	@JoinColumn(name = "ObjectSkalaNyeriFk")
	@Caption(value = "Object Skala Nyeri")
	private SkalaNyeri skalaNyeri;
	
	@Column(name = "ObjectSkalaNyeriFk", insertable = false, updatable = false, nullable = true)
	private Integer skalaNyeriId;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@Caption(value = "pengkajianAwalBaru")
	@JoinColumn(name = "ObjectPengkajianAwalBaruFk")
	private PengkajianAwalBaru pengkajianAwalBaru;
	
	@Column(name = "ObjectPengkajianAwalBaruFk", columnDefinition = "CHAR(32)", insertable = false, updatable = false)
	private String pengkajianAwalBaruId;
	
	public Date getTglInput() {
		return tglInput;
	}

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

	public RegistrasiPelayananPasien getRegistrasiPelayananPasien() {
		return registrasiPelayananPasien;
	}

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

	public AntrianPasienDiPeriksa getPasien() {
		return pasien;
	}

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

	public String getFrekuensi() {
		return frekuensi;
	}

	public void setFrekuensi(String frekuensi) {
		this.frekuensi = frekuensi;
	}

	public String getDurasi() {
		return durasi;
	}

	public void setDurasi(String durasi) {
		this.durasi = durasi;
	}

	public Set<PapKarakteristikNyeri> getKarakteristikNyeriSet() {
		return karakteristikNyeriSet;
	}

	public void setKarakteristikNyeriSet(Set<PapKarakteristikNyeri> karakteristikNyeriSet) {
		this.karakteristikNyeriSet = karakteristikNyeriSet;
	}

	public Set<PapPengaruhNyeri> getPengaruhNyeriSet() {
		return pengaruhNyeriSet;
	}

	public void setPengaruhNyeriSet(Set<PapPengaruhNyeri> pengaruhNyeriSet) {
		this.pengaruhNyeriSet = pengaruhNyeriSet;
	}

	public StatusAdaTidakAda getRasaNyeri() {
		return rasaNyeri;
	}

	public void setRasaNyeri(StatusAdaTidakAda rasaNyeri) {
		this.rasaNyeri = rasaNyeri;
	}

	public DataLokasiNyeri getLokasiNyeri() {
		return lokasiNyeri;
	}

	public void setLokasiNyeri(DataLokasiNyeri lokasiNyeri) {
		this.lokasiNyeri = lokasiNyeri;
	}

	public DataTipeNyeri getTypeNyeri() {
		return typeNyeri;
	}

	public void setTypeNyeri(DataTipeNyeri typeNyeri) {
		this.typeNyeri = typeNyeri;
	}

	public String getRegistrasiPelayananPasienId() {
		return registrasiPelayananPasienId;
	}

	public void setRegistrasiPelayananPasienId(String registrasiPelayananPasienId) {
		this.registrasiPelayananPasienId = registrasiPelayananPasienId;
	}

	public String getPasienId() {
		return pasienId;
	}

	public void setPasienId(String pasienId) {
		this.pasienId = pasienId;
	}

	public Integer getRasaNyeriId() {
		return rasaNyeriId;
	}

	public void setRasaNyeriId(Integer rasaNyeriId) {
		this.rasaNyeriId = rasaNyeriId;
	}

	public Integer getLokasiNyeriId() {
		return lokasiNyeriId;
	}

	public void setLokasiNyeriId(Integer lokasiNyeriId) {
		this.lokasiNyeriId = lokasiNyeriId;
	}

	public Integer getTypeNyeriId() {
		return typeNyeriId;
	}

	public void setTypeNyeriId(Integer typeNyeriId) {
		this.typeNyeriId = typeNyeriId;
	}

	public SkalaNyeri getSkalaNyeri() {
		return skalaNyeri;
	}

	public void setSkalaNyeri(SkalaNyeri skalaNyeri) {
		this.skalaNyeri = skalaNyeri;
	}

	public Integer getSkalaNyeriId() {
		return skalaNyeriId;
	}

	public void setSkalaNyeriId(Integer skalaNyeriId) {
		this.skalaNyeriId = skalaNyeriId;
	}

	public PengkajianAwalBaru getPengkajianAwalBaru() {
		return pengkajianAwalBaru;
	}

	public void setPengkajianAwalBaru(PengkajianAwalBaru pengkajianAwalBaru) {
		this.pengkajianAwalBaru = pengkajianAwalBaru;
	}

	public String getPengkajianAwalBaruId() {
		return pengkajianAwalBaruId;
	}

	public void setPengkajianAwalBaruId(String pengkajianAwalBaruId) {
		this.pengkajianAwalBaruId = pengkajianAwalBaruId;
	}

}
