package com.jasamedika.medifirst2000.vo;

import java.util.HashSet;
import java.util.Set;

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

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO;
import com.jasamedika.medifirst2000.entities.Pelaksana;
import com.jasamedika.medifirst2000.entities.StatusYaTidak;
import com.jasamedika.medifirst2000.helper.Caption;

public class TimeOutControlVO extends BaseTransactionVO {

	@ManyToOne
	@NotNull(message = "Pasien tidak boleh kosong")
	private AntrianPasienDiPeriksaVO pasienDaftar;
	
	@NotNull(message = "Hal Khusus tidak boleh kosong")
	@Column(name = "HalKhusus", nullable = false)
	@Caption(value = "Hal Khusus")
	private String halKhusus;

	@NotNull(message = "Nama Antibiotik tidak boleh kosong")
	@Column(name = "NamaAntibiotik", nullable = false)
	@Caption(value = "Nama Antibiotik")
	private String namaAntibiotik;

	@NotNull(message = "Dosis Antibiotik tidak boleh kosong")
	@Column(name = "DosisAntibiotik", nullable = false)
	@Caption(value = "Dosis Antibiotik")
	private String dosisAntibiotik;

	@ManyToOne
	@JoinColumn(name = "ObjectFotoRadiologiFk")
	@NotNull(message = "Foto Radiologi tidak boleh kosong")
	private StatusYaTidakVO fotoRadiologi; // Ya atau tidak

	@Column(name = "ObjectFotoRadiologiFk", insertable = false, updatable = false, nullable = false)
	private Integer fotoRadiologiId;

	@ManyToOne
	@JoinColumn(name = "ObjectStatusAntibiotikProfilaksisFk")
	@NotNull(message = "Status Antibiotik Profilaksis tidak boleh kosong")
	private StatusYaTidakVO statusAntibiotikProfilaksis; // Ya atau tidak

	@Column(name = "ObjectStatusAntibiotikProfilaksisFk", insertable = false, updatable = false, nullable = false)
	private Integer statusAntibiotikProfilaksisId;

	//@JsonBackReference
	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "timeOutControl")
	private Set<PelaksanaVO> pelaksana = new HashSet<PelaksanaVO>();

	public Set<PelaksanaVO> getPelaksana() {
		return pelaksana;
	}

	public void setPelaksana(Set<PelaksanaVO> pelaksana) {
		this.pelaksana = pelaksana;
	}

	public String getHalKhusus() {
		return halKhusus;
	}

	public void setHalKhusus(String halKhusus) {
		this.halKhusus = halKhusus;
	}

	public String getNamaAntibiotik() {
		return namaAntibiotik;
	}

	public void setNamaAntibiotik(String namaAntibiotik) {
		this.namaAntibiotik = namaAntibiotik;
	}

	public String getDosisAntibiotik() {
		return dosisAntibiotik;
	}

	public void setDosisAntibiotik(String dosisAntibiotik) {
		this.dosisAntibiotik = dosisAntibiotik;
	}

	public StatusYaTidakVO getFotoRadiologi() {
		return fotoRadiologi;
	}

	public void setFotoRadiologi(StatusYaTidakVO fotoRadiologi) {
		this.fotoRadiologi = fotoRadiologi;
	}

	public Integer getFotoRadiologiId() {
		return fotoRadiologiId;
	}

	public void setFotoRadiologiId(Integer fotoRadiologiId) {
		this.fotoRadiologiId = fotoRadiologiId;
	}

	public StatusYaTidakVO getStatusAntibiotikProfilaksis() {
		return statusAntibiotikProfilaksis;
	}

	public void setStatusAntibiotikProfilaksis(StatusYaTidakVO statusAntibiotikProfilaksis) {
		this.statusAntibiotikProfilaksis = statusAntibiotikProfilaksis;
	}

	public Integer getStatusAntibiotikProfilaksisId() {
		return statusAntibiotikProfilaksisId;
	}

	public void setStatusAntibiotikProfilaksisId(Integer statusAntibiotikProfilaksisId) {
		this.statusAntibiotikProfilaksisId = statusAntibiotikProfilaksisId;
	}

	public AntrianPasienDiPeriksaVO getPasienDaftar() {
		return pasienDaftar;
	}

	public void setPasienDaftar(AntrianPasienDiPeriksaVO pasienDaftar) {
		this.pasienDaftar = pasienDaftar;
	}
	
	

}
