package com.jasamedika.medifirst2000.vo;

import java.util.Date;
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.jasamedika.medifirst2000.entities.SatuanStandar;
import com.jasamedika.medifirst2000.helper.Caption;

public class PelayananPasienVO extends MedicalRecordTransactionVO {

	@ManyToOne
	@Caption(value = "Generik")
	private GenerikVO generik;

	@Caption(value = "statusOrder")
	private Byte statusOrder;

	@Caption(value = "Jasa Farmasi")
	private Double jasa;

	@ManyToOne
	@Caption(value = "Produk")
	private KelasVO kelas;

	@Caption(value = "Is Pasien")
	private Boolean isPasien;

	@Caption(value = "Is Pasien")
	private Boolean isObat;

	@Caption(value = "Is Pasien")
	private Boolean isDosis;

	@Caption(value = "Is Pasien")
	private Boolean isRoute;

	@Caption(value = "Is Pasien")
	private Boolean isDokumentasi;

	@Caption(value = "Is Pasien")
	private Boolean isWaktu;

	@Caption(value = "Is Pasien")
	private Boolean isInformasi;

	@Caption(value = "Is Benar")
	private Boolean isBenar;

	@ManyToOne(fetch = FetchType.LAZY)
	private StrukPelayananVO strukPelayanan;

	@Caption(value = "Status")
	private String status;

	@Caption(value = "Tanggal Pelayanan")
	private Date tglPelayanan;

	@Caption(value = "Harga Satuan")
	private Double hargaSatuan;

	@Caption(value = "Harga Jual")
	private Double hargaJual;

	@Caption(value = "Nilai Normal")
	private Byte nilaiNormal;

	@Caption(value = "Piutang Penjamin")
	private Double piutangPenjamin;

	@Caption(value = "Piutang Rumah Sakit")
	private Double piutangRumahSakit;

	@ManyToOne
	@Caption(value = "Struk Order")
	private StrukPelayananDNoBatchVO noBatch;

	@ManyToOne(fetch = FetchType.LAZY)
	@Caption(value = "Struk Order")
	private StrukOrderVO strukOrder;

	@ManyToOne
	@JoinColumn(name = "JenisObatFk")
	@Caption(value = "Jenis Obat")
	private JenisObatVO jenisObat;

	@ManyToOne
	@NotNull(message = "Produk Harus Diisi")
	@Caption(value = "Produk")
	private ProdukVO produk;

	@Caption(value = "Stock")
	private Double stock;

	@Caption(value = "Jumlah")
	private Double jumlah;

	@Caption(value = "AturanPakai")
	private String aturanPakai;

	@ManyToOne
	@Caption(value = "Route")
	private RouteFarmasiVO route;

	@ManyToOne
	@Caption(value = "Keterangan Pakai")
	private StigmaVO keteranganPakai;

	@Caption(value = "KeteranganPakai2")
	private String keteranganPakai2;

	@ManyToOne
	@Caption(value = "Kelompok Transaksi")
	private KelompokTransaksiVO kelompokTransaksi;

	@Caption(value = "KeteranganLain")
	private String keteranganLain;

	@Caption(value = "Harga Discount")
	private Double hargaDiscount;

	@Caption(value = "hargaNetto")
	private Double hargaNetto;

	@Caption(value = "NoRecTriger")
	private String noRecTriger;

	@Column(name = "qty", nullable = false, length = 100)
	@Caption(value = "qty")
	private Double qty;

	@Caption(value = "totalHarga")
	private Double totalHarga;

	@Caption(value = "resepKe")
	private Integer resepKe;

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pelayananPasien")
	private Set<PelayananPasienPetugasVO> pelayananPasienPetugasSet = new HashSet<>();

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pelayananPasien")
	private Set<RacikanDetailVO> racikan = new HashSet<>();

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pelayananPasien")
	private Set<PelayananPasienDetailVO> pelayananPasienDetailSet = new HashSet<>();

	@Caption(value = "petugas")
	private Set<PelayananPasienPetugasVO> petugas = new HashSet<>();

	private SatuanStandar satuanView;

	private Integer satuanViewId;

	public SatuanStandar getSatuanView() {
		return satuanView;
	}

	public void setSatuanView(SatuanStandar satuanView) {
		this.satuanView = satuanView;
	}

	public Integer getSatuanViewId() {
		return satuanViewId;
	}

	public void setSatuanViewId(Integer satuanViewId) {
		this.satuanViewId = satuanViewId;
	}

	public GenerikVO getGenerik() {
		return generik;
	}

	public void setGenerik(GenerikVO generik) {
		this.generik = generik;
	}

	public Byte getStatusOrder() {
		return statusOrder;
	}

	public void setStatusOrder(Byte statusOrder) {
		this.statusOrder = statusOrder;
	}

	public KelasVO getKelas() {
		return kelas;
	}

	public void setKelas(KelasVO kelas) {
		this.kelas = kelas;
	}

	public Boolean getIsPasien() {
		return isPasien;
	}

	public void setIsPasien(Boolean isPasien) {
		this.isPasien = isPasien;
	}

	public Boolean getIsObat() {
		return isObat;
	}

	public void setIsObat(Boolean isObat) {
		this.isObat = isObat;
	}

	public Boolean getIsDosis() {
		return isDosis;
	}

	public void setIsDosis(Boolean isDosis) {
		this.isDosis = isDosis;
	}

	public Boolean getIsRoute() {
		return isRoute;
	}

	public void setIsRoute(Boolean isRoute) {
		this.isRoute = isRoute;
	}

	public Boolean getIsDokumentasi() {
		return isDokumentasi;
	}

	public void setIsDokumentasi(Boolean isDokumentasi) {
		this.isDokumentasi = isDokumentasi;
	}

	public Boolean getIsWaktu() {
		return isWaktu;
	}

	public void setIsWaktu(Boolean isWaktu) {
		this.isWaktu = isWaktu;
	}

	public Boolean getIsInformasi() {
		return isInformasi;
	}

	public void setIsInformasi(Boolean isInformasi) {
		this.isInformasi = isInformasi;
	}

	public Boolean getIsBenar() {
		return isBenar;
	}

	public void setIsBenar(Boolean isBenar) {
		this.isBenar = isBenar;
	}

	public StrukPelayananVO getStrukPelayanan() {
		return strukPelayanan;
	}

	public void setStrukPelayanan(StrukPelayananVO strukPelayanan) {
		this.strukPelayanan = strukPelayanan;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public Date getTglPelayanan() {
		return tglPelayanan;
	}

	public void setTglPelayanan(Date tglPelayanan) {
		this.tglPelayanan = tglPelayanan;
	}

	public Double getHargaSatuan() {
		return hargaSatuan;
	}

	public void setHargaSatuan(Double hargaSatuan) {
		this.hargaSatuan = hargaSatuan;
	}

	public Double getHargaJual() {
		return hargaJual;
	}

	public void setHargaJual(Double hargaJual) {
		this.hargaJual = hargaJual;
	}

	public Byte getNilaiNormal() {
		return nilaiNormal;
	}

	public void setNilaiNormal(Byte nilaiNormal) {
		this.nilaiNormal = nilaiNormal;
	}

	public Double getPiutangPenjamin() {
		return piutangPenjamin;
	}

	public void setPiutangPenjamin(Double piutangPenjamin) {
		this.piutangPenjamin = piutangPenjamin;
	}

	public Double getPiutangRumahSakit() {
		return piutangRumahSakit;
	}

	public void setPiutangRumahSakit(Double piutangRumahSakit) {
		this.piutangRumahSakit = piutangRumahSakit;
	}

	public StrukPelayananDNoBatchVO getNoBatch() {
		return noBatch;
	}

	public void setNoBatch(StrukPelayananDNoBatchVO noBatch) {
		this.noBatch = noBatch;
	}

	public StrukOrderVO getStrukOrder() {
		return strukOrder;
	}

	public void setStrukOrder(StrukOrderVO strukOrder) {
		this.strukOrder = strukOrder;
	}

	public JenisObatVO getJenisObat() {
		return jenisObat;
	}

	public void setJenisObat(JenisObatVO jenisObat) {
		this.jenisObat = jenisObat;
	}

	public ProdukVO getProduk() {
		return produk;
	}

	public void setProduk(ProdukVO produk) {
		this.produk = produk;
	}

	public Double getStock() {
		return stock;
	}

	public void setStock(Double stock) {
		this.stock = stock;
	}

	public Double getJumlah() {
		return jumlah;
	}

	public void setJumlah(Double jumlah) {
		this.jumlah = jumlah;
	}

	public String getAturanPakai() {
		return aturanPakai;
	}

	public void setAturanPakai(String aturanPakai) {
		this.aturanPakai = aturanPakai;
	}

	public RouteFarmasiVO getRoute() {
		return route;
	}

	public void setRoute(RouteFarmasiVO route) {
		this.route = route;
	}

	public StigmaVO getKeteranganPakai() {
		return keteranganPakai;
	}

	public void setKeteranganPakai(StigmaVO keteranganPakai) {
		this.keteranganPakai = keteranganPakai;
	}

	public String getKeteranganPakai2() {
		return keteranganPakai2;
	}

	public void setKeteranganPakai2(String keteranganPakai2) {
		this.keteranganPakai2 = keteranganPakai2;
	}

	public KelompokTransaksiVO getKelompokTransaksi() {
		return kelompokTransaksi;
	}

	public void setKelompokTransaksi(KelompokTransaksiVO kelompokTransaksi) {
		this.kelompokTransaksi = kelompokTransaksi;
	}

	public String getKeteranganLain() {
		return keteranganLain;
	}

	public void setKeteranganLain(String keteranganLain) {
		this.keteranganLain = keteranganLain;
	}

	public Double getHargaDiscount() {
		return hargaDiscount;
	}

	public void setHargaDiscount(Double hargaDiscount) {
		this.hargaDiscount = hargaDiscount;
	}

	public Double getHargaNetto() {
		return hargaNetto;
	}

	public void setHargaNetto(Double hargaNetto) {
		this.hargaNetto = hargaNetto;
	}

	public String getNoRecTriger() {
		return noRecTriger;
	}

	public void setNoRecTriger(String noRecTriger) {
		this.noRecTriger = noRecTriger;
	}

	public Double getQty() {
		return qty;
	}

	public void setQty(Double qty) {
		this.qty = qty;
	}

	public Set<PelayananPasienPetugasVO> getPelayananPasienPetugasSet() {
		return pelayananPasienPetugasSet;
	}

	public void setPelayananPasienPetugasSet(Set<PelayananPasienPetugasVO> pelayananPasienPetugasSet) {
		this.pelayananPasienPetugasSet = pelayananPasienPetugasSet;
	}

	public Set<RacikanDetailVO> getRacikan() {
		return racikan;
	}

	public void setRacikan(Set<RacikanDetailVO> racikan) {
		this.racikan = racikan;
	}

	public Set<PelayananPasienDetailVO> getPelayananPasienDetailSet() {
		return pelayananPasienDetailSet;
	}

	public void setPelayananPasienDetailSet(Set<PelayananPasienDetailVO> pelayananPasienDetailSet) {
		this.pelayananPasienDetailSet = pelayananPasienDetailSet;
	}

	public Set<PelayananPasienPetugasVO> getPetugas() {
		return petugas;
	}

	public void setPetugas(Set<PelayananPasienPetugasVO> petugas) {
		this.petugas = petugas;
	}

	public Double getTotalHarga() {
		return totalHarga;
	}

	public void setTotalHarga(Double totalHarga) {
		this.totalHarga = totalHarga;
	}

	public Integer getResepKe() {
		return resepKe;
	}

	public void setResepKe(Integer resepKe) {
		this.resepKe = resepKe;
	}

	public Double getJasa() {
		return jasa;
	}

	public void setJasa(Double jasa) {
		this.jasa = jasa;
	}

}