package com.jasamedika.medifirst2000.service;

import com.jasamedika.medifirst2000.dto.*;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.vo.PasienVO;

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

public interface ReportService extends BaseVoService<Pasien, PasienVO, Integer> {

	KwitansiDto generateKwitansi(String noKwitansi, String token);

	KartuPulangPasienDto generateKartuPasienPulang(String noRegistrasi, String token);

	List<RekapPendapatanHarianPoliklinikDto> generateRekapPendapatanHarianPoliklinik(String noRegistrasi);

	KartuPengendaliDto generateKartuPengendali(String noRec);

	HPSDto generateHPS(String noRec);

	SuratPesananSementaraDto generateSPS(String noRecKartuPengendaliId, Integer supplierId);

	LampiranSPPHDto generateLampiranSPPH(String noRec);

	HeadKasirDto generateBilling(String noRegistrasi, String token);

	BuktiPenerimaanBarangDto generateBuktiPenerimaan(String noRec);

	BuktiPenerimaanBarangDto generateBuktiPengeluaranBarang(String noRec);

	HeadDto generateQRCode(String noRec);

	HeadDto generateQRCodeAset(String noRec);

	Map<String, Object> generateSlipPenghasilan(Integer idPegawai, String periode);

	List<Map<String, Object>> generateLapRekapitulasiKehadiran(Integer idRuangan, String startDate, String endDate);

	Map<String, Object> generateSPMRS(String noRegistrasi);

	Map<String, Object> generateSasaranMutuPoliklinik(String startDate, String endDate, Integer ruanganId,
			Integer dokterId);

	Map<String, Object> pengkajianAwalNeonatusRawatJalan(String kdPap, String noRec);

	Map<String, Object> pengkajianAwalNeonatusRawatInap(String kdPap, String noRec);

	Map<String, Object> pengkajianAwalAnakRawatInap(String kdPap, String noRec);

	Map<String, Object> pengkajianAwalAnakRawatJalan(String kdPap, String noRec);

	Map<String, Object> pengkajianAwalDewasaRawatJalan(String kdPap, String noRec);

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

	Map<String, Object> tracer(String noRegistrasi);

	Map<String, Object> ringkasanKeluarMasuk(String noRegistrasi);

	Map<String, Object> labelPasien(String noRegistrasi);

	List<Map<String, Object>> generateLapRekapitulasiIndexKehadiran(String periode);

	Map<String, Object> generateLapPermohonanCuti(String noRecPlanning, Integer idJabatan, Integer idAtasan1,
			Integer idAtasan2, Integer kaRu);

	Map<String, Object> generateSuratIzinSementara(String noRecPlanning, Integer idJabatan, Integer idUnitKerja,
			Integer idAtasan1, Integer idAtasan2, Integer kaRu, Integer idJabatanAtasan1, Integer idJabatanAtasan2);

	Map<String, Object> generateSuratIzinSementara(String noRecPlanning, Integer idJabatan, Integer idUnitKerja,
			Integer idAtasan1, Integer idJabatanAtasan1);

	Map<String, Object> generateSuratTugas(String noRecPlanning, Integer idJabatan, Integer idUnitKerja,
			Integer idAtasan1, Integer idAtasan2, Integer kaRu, Integer idJabatanAtasan1, Integer idJabatanAtasan2);

	Map<String, Object> generateLapPermohonanCuti(String noRecPlanning, Integer idJabatan, Integer idUnitKerja,
			Integer idAtasan1, Integer idAtasan2, Integer kaRu, Integer idJabatanAtasan1, Integer idJabatanAtasan2,
			String atasanDireksi);

	Map<String, Object> generateLapPermohonanCuti(String noRecPlanning, String atasan1, String nipPnsAtasan1,
			String jabatanAtasan1, String atasan2, String nipPnsAtasan2, String jabatanAtasan2, Integer idKaRu);

	Map<String, Object> generateLapSuratIzinCuti(String noRecPlanning, Integer idJabatan, Integer atasanId,
			Integer jabatanAtasanId);

	Map<String, Object> generateLapPelayanan(String startDate, String endDate, Integer idproduk, Integer idRuangan,
			Integer jenisPasien);

	Map<String, Object> generateLapPelayananByDokter(String startDate, String endDate, Integer idproduk,
			Integer idRuangan, Integer jenisPasien, Integer idDokter);

	Map<String, Object> generateLapPelayananByDokterWithKarcis(String startDate, String endDate, Integer idproduk,
			Integer idRuangan, Integer jenisPasien, Integer idDokter, Integer idDepartemen);

	Map<String, Object> generatelapLogbookLimbahB3Report(String startDate, String endDate);

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

	Map<String, Object> generateJadwalPerUnitKerja(Integer ruangan, Integer tahun, Integer bulan);

	Map<String, Object> generateRekapitulasiCorrectiveMaintenance(String startDate, String endDate,
			Integer idJenisProduk);

	Map<String, Object> generateSuratPelimpahanTugas(String noRecPlanning, Integer idPegawaiPelimpah,
			Integer idJabatanPelimpah, Integer idPegawaiDilimpah);

	Map<String, Object> generateReportPencatatanSuhuMesin(Integer idMesin, Integer idMappingMesin,
			String tglCatSuhuMesin, Integer idSupervisor);

	List<Map<String, Object>> generateReportGrafikSuhuMesin(Integer idMesin, Integer idMappingMesin,
			String tglCatSuhuMesin);

	Map<String, Object> findDataCetakLuarNegeri(String norec);

	List<Map<String, Object>> getHistoriUsulanRincianKegiatan(Integer idPelaksanaanTugas, Integer idRincianKegiatan);

	Map<String, Object> defineSlipGajiDataSource(Integer pegawaiId, Long bulan);

	List<SlipHeaderDto> allSlipGajiDataSource(Long bulan);
}
