package com.jasamedika.medifirst2000.service;

import java.util.List;
import java.util.Map;

import com.jasamedika.medifirst2000.entities.AntrianPasienDiPeriksa;
import com.jasamedika.medifirst2000.entities.PelayananPasien;
import com.jasamedika.medifirst2000.entities.Produk;
import com.jasamedika.medifirst2000.vo.DetailJenisProdukVO;
import com.jasamedika.medifirst2000.vo.JenisLimbahB3MasukVO;
import com.jasamedika.medifirst2000.vo.JenisProdukVO;
import com.jasamedika.medifirst2000.vo.KelompokProdukVO;
import com.jasamedika.medifirst2000.vo.ProdukDetailLaboratoriumHasilVO;
import com.jasamedika.medifirst2000.vo.ProdukVO;
import com.jasamedika.medifirst2000.vo.SatuanStandarVO;

/**
 * Product Service
 * 
 * @author
 */
public interface ProdukService extends BaseVoService<Produk, ProdukVO, Integer> {

	List<JenisProdukVO> findJenisProdukByKelompokProduk(Integer idKelompokProduk);

	List<DetailJenisProdukVO> findDetailJenisProdukByJenisProduk(Integer idJenisProduk);

	List<ProdukVO> findDetailProdukByDetailJenisProduk(Integer idDetailJenisProduk);

	List<ProdukVO> findObatByName(String namaObat);

	List<ProdukVO> findTindakanByName(String values, Integer idRuangan);

	Integer findStokProdukService(Integer idProduk, Integer idRuangan);

	List<PelayananPasien> postDiagnosa(String kdDiagnosa, AntrianPasienDiPeriksa pasienDaftar);

	List<ProdukVO> findTindakanByName(String namaTindakan);

	Map<String, Object> addBarangMedis(ProdukVO vo);

	Map<String, Object> updateBarangMedis(ProdukVO vo);

	Map<String, Object> updateBarangNonMedis(ProdukVO vo);

	Map<String, Object> addBarangNonMedis(ProdukVO vo);

	Map<String, Object> addProductFromInputKantongBarang(ProdukVO vo);

	List<ProdukVO> findDetailProdukByDetailJenisProdukAndNamaProduk(Integer idDetailJenisProduk, String namaProduk);

	List<ProdukVO> findProdukByKelompokProduk(int kdKelompokProduk, String keyWord);

	Map<String, Object> addJenisLimbahB3(JenisLimbahB3MasukVO vo);

	Map<String, Object> findAllJenisLimbah();

	Produk findByBentukProdukIdAndRhesusIdAndGolonganDarahId(Integer idBentuk, Integer idRhesus,
			Integer idGolonganDarah);

	Map<String, Object> findByProdukId(Integer id);

	Map<String, Object> addDetailHasil(List<ProdukDetailLaboratoriumHasilVO> vos);

	List<Map<String, Object>> findByGenericId(Integer idGeneric);

	List<ProdukVO> findProdukByKelompokProduk(String id, String values);

	List<KelompokProdukVO> findKelompokProdukHaveStok();

	List<SatuanStandarVO> findAllSatuanStandardProduk(String id);

	Map<String, Object> saveDeposite(String noRec, Double deposite, String tanggal);

	Map<String, Object> saveTotalBiaya(String noRec, Double total);

	Map<String, Object> findProdukByDetailJenisProdukAndNamaProduk(Integer idDetailJenisProduk);

	Map<String, Object> detailJenisProduk();

	Map<String, Object> findProdukByKelompok(Integer id, String values);

	Double findStokProdukServiceKonversi(Integer idProduk, Integer idRuangan, Integer satuanStandarId);

	Map<String, Object> getSatuanProduk(Integer id);

	List<ProdukVO> findProdukByDetailJenisProduk(Integer id);

	Map<String, Object> findProdukByJenisProdukAndNamaProduk(Integer idDetailJenisProduk, String values);

	Map<String, Object> setAkomodasiRawatInap(String noRec);

	Map<String, Object> findProdukAset(String values);

	Map<String, Object> findAsetByProduk(Integer id, String values);

	Map<String, Object> findProduk(String values);

	Map<String, Object> findSupplier(String values);

	List<Map<String, Object>> findObat();

	List<JenisProdukVO> findJenisProdukLaboratorium();

	List<Map<String, Object>> findTarifLayanan(Integer idRuangan, Integer idKelas, Integer idProduk);
	
	List<Map<String, Object>> findTarifLayananLama(Integer idRuangan, Integer idKelas, Integer idProduk);

	Map<String, Object> validateNamaProduk(Integer idProduk, String namaProduk);

	Map<String, Object> getMappingPaketToProduk(Integer idMapping);

	List<Map<String, Object>> getAllPaketToProduk();

	List<Map<String, Object>> findExistingMapHargaKelas(Integer idKelas, Integer idProduk, Integer idMapping);

}
