Merge branch 'dev/base' into dev/etl/pasien

This commit is contained in:
Salman Manoe 2024-05-31 08:58:30 +07:00
commit feb015db08
24 changed files with 2124 additions and 1891 deletions

View File

@ -1,11 +1,21 @@
package com.jasamedika.medifirst2000.dao;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.DetailLogbookDokter;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import java.sql.Date;
import java.util.List;
@Repository("DetailLogbookDokterDao")
public interface DetailLogbookDokterDao extends PagingAndSortingRepository<DetailLogbookDokter, String> {
@Modifying
@Query(value = "delete from remun.t_logbook_dokter_detail " + "where logbook_dokter_id in (select no_rec "
+ "from remun.t_logbook_dokter " + "where logbook_remun_id in (select no_rec "
+ "from remun.t_logbook_remun " + "where pegawai_id in (:idPegawai) "
+ "and bulan between :tglAwal and :tglAkhir))", nativeQuery = true)
void deleteByKelompokKerjaAndPeriod(@Param("idPegawai") List<Integer> idPegawai, @Param("tglAwal") Date tglAwal,
@Param("tglAkhir") Date tglAkhir);
}

View File

@ -1,11 +1,20 @@
package com.jasamedika.medifirst2000.dao;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.LogbookDokter;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
@Repository("LogbookDokterDao")
public interface LogbookDokterDao extends PagingAndSortingRepository<LogbookDokter, String> {
import java.sql.Date;
import java.util.List;
public interface LogbookDokterDao extends JpaRepository<LogbookDokter, String> {
@Modifying
@Query(value = "delete from remun.t_logbook_dokter " + "where logbook_remun_id in (select no_rec "
+ "from remun.t_logbook_remun where pegawai_id in (:idPegawai) "
+ "and bulan between :tglAwal and :tglAkhir)", nativeQuery = true)
void deleteByKelompokKerjaAndPeriod(@Param("idPegawai") List<Integer> idPegawai, @Param("tglAwal") Date tglAwal,
@Param("tglAkhir") Date tglAkhir);
}

View File

@ -0,0 +1,24 @@
package com.jasamedika.medifirst2000.dao;
import com.jasamedika.medifirst2000.entities.LogbookRemun;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.sql.Date;
import java.util.List;
/**
* @author salmanoe
* @version 1.0.0
* @since 25/04/2024
*/
public interface LogbookRemunDao extends JpaRepository<LogbookRemun, String> {
@Modifying
@Query(value = "delete from remun.t_logbook_remun " + "where pegawai_id in (:idPegawai) "
+ "and bulan between :tglAwal and :tglAkhir", nativeQuery = true)
void deleteByKelompokKerjaAndPeriod(@Param("idPegawai") List<Integer> idPegawai, @Param("tglAwal") Date tglAwal,
@Param("tglAkhir") Date tglAkhir);
}

View File

@ -10,6 +10,7 @@ import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
/**
* Repository class for AbsensiPegawai
@ -502,4 +503,9 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository<MapPegaw
+ "and mj.unitKerjaPegawaiId in (:unitKerjaId) " + "and mj.jabatanId in (:jabatanId)")
List<Integer> findPegawaiIdByUnitKerjaIdAndJabatanId(@Param("unitKerjaId") List<Integer> unitKerjaId,
@Param("jabatanId") List<Integer> jabatanId);
@Query("select mj.pegawaiId from MapPegawaiJabatanToUnitKerja mj " +
"where mj.statusEnabled is true " +
"and mj.subUnitKerjaPegawaiId in (:subUnitKerjaIdIn)")
Set<Integer> findPegawaiIdBySubUnitKerjaIn(@Param("subUnitKerjaIdIn") List<Integer> subUnitKerjaIdIn);
}

View File

@ -77,4 +77,8 @@ public interface SubUnitKerjaDao extends JpaRepository<SubUnitKerjaPegawai, Inte
+ "order by skj.id")
List<Map<String, Object>> findAllKelompokKerjaMedis();
@Query("select distinct skj.id " + "from SubUnitKerjaPegawai skj "
+ "inner join skj.unitKerja ukj " + "where skj.statusEnabled is true " + "and lower(skj.name) like 'kk%' "
+ "order by skj.id")
List<Integer> findAllKelompokKerjaMedisId();
}

View File

@ -1,16 +1,11 @@
package com.jasamedika.medifirst2000.service;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.vo.*;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.vo.IndekKinerjaVO;
import com.jasamedika.medifirst2000.vo.IndeksKinerjaIndividuCustomVO;
import com.jasamedika.medifirst2000.vo.IndeksKinerjaIndividuVO;
import com.jasamedika.medifirst2000.vo.MapKalenderToHariLiburVO;
import com.jasamedika.medifirst2000.vo.NilaiIndexKinerjaIndividuVO;
import com.jasamedika.medifirst2000.vo.TabelAcuanIndeksIKIVO;
public interface IndekKinerjaService {
Map<String, Object> saveIndekKinerja(List<IndekKinerjaVO> vo);
@ -58,7 +53,7 @@ public interface IndekKinerjaService {
Map<String, Object> rekapIKI(Integer ruanganId, String periode);
public List<Integer> splitIdProdukAdministrasi();
List<Integer> splitIdProdukAdministrasi();
Map<String, Object> rekapPoin(String periode, int idPegawai);
@ -84,17 +79,16 @@ public interface IndekKinerjaService {
List<Map<String, Object>> getAllTindakanByDokterReport(String periode, Integer idPegawai);
List<Map<String, Object>> getAllTindakanByDokterReportReview(String periode, Integer idPegawai, Integer idAlternatif);
List<Map<String, Object>> getAllTindakanByDokterReportReview(String periode, Integer idPegawai,
Integer idAlternatif);
List<Map<String, Object>> getAllTindakanDokter(String periode, Integer idPegawai);
void generateAllTindakanDokter();
List<Map<String, Object>> findPatientDetailForEveryTindakan(Integer idProduk, Integer idKelas, Integer idPegawai,
String tgl, Boolean ffs);
List<Map<String, Object>> findPatientDetailForEveryTindakanReview(Integer idProduk, Integer idKelompokPasien, Integer idKelas,
Integer idPegawai, String tgl, Boolean ffs, Double diskon, Integer statusDiskon);
List<Map<String, Object>> findPatientDetailForEveryTindakanReview(Integer idProduk, Integer idKelompokPasien,
Integer idKelas, Integer idPegawai, String tgl, Boolean ffs, Double diskon, Integer statusDiskon);
List<Map<String, Object>> findPatientDetailForEveryTindakanReview(Integer idPegawai, String tgl, Boolean ffs);

View File

@ -0,0 +1,14 @@
package com.jasamedika.medifirst2000.service;
import java.util.Date;
import java.util.Set;
/**
* @author salmanoe
* @version 1.0.0
* @since 25/04/2024
*/
public interface LogbookRemunService {
void deleteByPeriod(Set<Integer> idPegawai, Date tglAwal, Date tglAkhir);
}

View File

@ -0,0 +1,52 @@
package com.jasamedika.medifirst2000.service.impl;
import com.jasamedika.medifirst2000.dao.DetailLogbookDokterDao;
import com.jasamedika.medifirst2000.dao.LogbookDokterDao;
import com.jasamedika.medifirst2000.dao.LogbookRemunDao;
import com.jasamedika.medifirst2000.service.LogbookRemunService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
/**
* @author salmanoe
* @version 1.0.0
* @since 25/04/2024
*/
@Service
@Transactional
public class LogbookRemunServiceImpl implements LogbookRemunService {
private static final Logger LOGGER = LoggerFactory.getLogger(LogbookRemunServiceImpl.class);
@Autowired
private LogbookRemunDao logbookRemunDao;
@Autowired
private LogbookDokterDao logbookDokterDao;
@Autowired
private DetailLogbookDokterDao detailLogbookDokterDao;
@Override
public void deleteByPeriod(Set<Integer> idPegawai, Date tglAwal, Date tglAkhir) {
LOGGER.info("Start deleting previous data");
List<Integer> listIdPegawai = new ArrayList<>(idPegawai);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.sql.Date sqlTglAwal = new java.sql.Date(tglAwal.getTime());
java.sql.Date sqlTglAkhir = new java.sql.Date(tglAkhir.getTime());
detailLogbookDokterDao.deleteByKelompokKerjaAndPeriod(listIdPegawai, sqlTglAwal, sqlTglAkhir);
logbookDokterDao.deleteByKelompokKerjaAndPeriod(listIdPegawai, sqlTglAwal, sqlTglAkhir);
logbookRemunDao.deleteByKelompokKerjaAndPeriod(listIdPegawai, sqlTglAwal, sqlTglAkhir);
LOGGER.info("Deleting previous data successfully...!");
}
}

View File

@ -1103,6 +1103,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
*/
List<Map<String, Object>> listDataLuarJamKerja = new ArrayList<>();
for (Map<String, Object> d : listRatedPay) {
d.put("isJamKerja", false);
if (CommonUtil.isNotNullOrEmpty(d.get("tglPelayanan"))) {
LocalDate tglPelayanan = ((Date) d.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault())
.toLocalDate();
@ -1116,7 +1117,6 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
.contains(Integer.parseInt(d.get("idKelompokPasien").toString()))))
if (CommonUtil.isNullOrEmpty(j.get("jamMasuk"))) {
if (tglPelayanan.isEqual(tglMasuk)) {
d.put("isJamKerja", false);
if ("Reguler".equals(d.get("jenisRuangan").toString()))
d.put("isJamKerja", true);
listDataLuarJamKerja.add(d);
@ -1129,7 +1129,6 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
LocalDateTime tglJamPulang = LocalDateTime.of(tglMasuk, jamPulang);
if ((tglPelayanan.isEqual(tglMasuk) && tglJamPelayanan.isBefore(tglJamMasuk))
|| (tglPelayanan.isEqual(tglMasuk) && tglJamPelayanan.isAfter(tglJamPulang))) {
d.put("isJamKerja", false);
if ("Reguler".equals(d.get("jenisRuangan").toString()))
d.put("isJamKerja", true);
listDataLuarJamKerja.add(d);
@ -1141,7 +1140,6 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
/*
* Tanggal pelayanan null akan dianggap sebagai luar jam kerja
*/
d.put("isJamKerja", false);
if ("Reguler".equals(d.get("jenisRuangan").toString()))
d.put("isJamKerja", true);
listDataLuarJamKerja.add(d);

View File

@ -5,7 +5,7 @@ hibernate.hbm2ddl = none
hibernate.format_sql = false
hibernate.show_sql = false
hikari.config.maximum.pool.size = 25
hikari.config.maximum.pool.size = 75
# DB Production
jdbc.url = jdbc:postgresql://psql1.rsabhk.lan:5432/rsab_hk_production

View File

@ -0,0 +1,20 @@
package com.jasamedika.medifirst2000.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.ArrayList;
import java.util.List;
/**
* @author salmanoe
* @version 1.0.0
* @since 26/04/2024
*/
@Getter
@Setter
public class LogbookDokterDto {
private String noRec;
private List<String> pelayananPasienPetugasId = new ArrayList<>();
}

View File

@ -1,74 +1,73 @@
package com.jasamedika.medifirst2000.entities;
import com.jasamedika.medifirst2000.base.BaseActive;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.helper.Caption;
import static javax.persistence.FetchType.LAZY;
@Getter
@Setter
@Entity
@Table(name = "DetailLogbookDokter_T")
public class DetailLogbookDokter extends BaseTransaction {
@Table(name = "t_logbook_dokter_detail", schema = "remun")
public class DetailLogbookDokter extends BaseActive {
private static final long serialVersionUID = 8003361970314967209L;
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid")
@Column(name = "no_rec", columnDefinition = "CHAR(32)", unique = true)
protected String noRec;
@Column(name = "count", nullable = true)
@Caption(value = "Count")
private Long count;
@Column(name = "jenis_pelaksana")
@Caption(value = "Jenis Pelaksana")
private String jenisPelaksana;
@Column(name = "harga", nullable = true)
@Caption(value = "Harga")
private Double harga;
@Column(name = "jumlah_tindakan")
@Caption(value = "Jumlah Tindakan")
private Integer jumlahTindakan;
@Column(name = "tanggal", nullable = true)
@Caption(value = "Tanggal")
private Date tanggal;
@Column(name = "tarif")
@Caption(value = "Tarif")
private BigDecimal tarif;
@ManyToOne(fetch=FetchType.LAZY)
@Caption(value="Object Logbook Dokter")
@JoinColumn(name="ObjectLogbookDokterFK")
@Column(name = "diskon")
@Caption(value = "Diskon")
private BigDecimal diskon;
@Column(name = "kelas")
@Caption(value = "Kelas")
private String kelas;
@Column(name = "ruangan")
@Caption(value = "Ruangan")
private String ruangan;
@Column(name = "nama_pasien")
@Caption(value = "Nama Pasien")
private String namaPasien;
@Column(name = "no_rekam_medis")
@Caption(value = "No Rekam Medis")
private String noRekamMedis;
@Column(name = "no_registrasi")
@Caption(value = "No Registrasi")
private String noRegistrasi;
@Column(name = "tanggal_pelayanan")
@Caption(value = "Tanggal Pelayanan")
private Date tanggalPelayanan;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "logbook_dokter_id")
@NotNull(message = "Logbook dokter tidak boleh kosong")
@Caption(value = "Logbook Dokter")
private LogbookDokter logbookDokter;
public Long getCount() {
return count;
}
public void setCount(Long count) {
this.count = count;
}
public Double getHarga() {
return harga;
}
public void setHarga(Double harga) {
this.harga = harga;
}
public Date getTanggal() {
return tanggal;
}
public void setTanggal(Date tanggal) {
this.tanggal = tanggal;
}
public LogbookDokter getLogbookDokter() {
return logbookDokter;
}
public void setLogbookDokter(LogbookDokter logbookDokter) {
this.logbookDokter = logbookDokter;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}

View File

@ -0,0 +1,41 @@
package com.jasamedika.medifirst2000.entities;
import com.jasamedika.medifirst2000.base.BaseActive;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.NotBlank;
import javax.persistence.*;
import javax.validation.constraints.Size;
import static javax.persistence.GenerationType.SEQUENCE;
/**
* @author salmanoe
* @version 1.0.0
* @since 24/04/2024
*/
@Getter
@Setter
@Entity
@Table(name = "m_jenis_layanan_remun_medis", schema = "remun")
public class JenisLayananRemunMedis extends BaseActive {
@Id
@GeneratedValue(strategy = SEQUENCE, generator = "sg_jenis_layanan_remun_medis")
@SequenceGenerator(name = "sg_jenis_layanan_remun_medis", schema = "remun", sequenceName = "remun.m_jenis_layanan_remun_medis_seq", allocationSize = 1)
@Column(name = "id", columnDefinition = "bigint default nextval('remun.m_jenis_layanan_remun_medis_seq'::regclass)")
protected Long id;
/**
* Jenis Layanan Remunerasi : Konsultasi Poli, Visite Ranap, Penunjang Rehab
* Medik, Penunjang Radiologi, Penunjang PK, Penunjang PA, Tindakan
* Non-Operatif, Tindakan Operatif Lengkap, Tindakan Operatif Non Co-op
*/
@Column(name = "jenis_layanan", length = 150, unique = true, nullable = false)
@Size(max = 150, message = "Jenis layanan maksimal {max} karakter")
@NotBlank(message = "Jenis layanan tidak boleh kosong")
@Caption("Jenis Layanan")
private String jenisLayanan;
}

View File

@ -0,0 +1,39 @@
package com.jasamedika.medifirst2000.entities;
import com.jasamedika.medifirst2000.base.BaseActive;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.NotBlank;
import javax.persistence.*;
import javax.validation.constraints.Size;
import static javax.persistence.GenerationType.SEQUENCE;
/**
* @author salmanoe
* @version 1.0.0
* @since 24/04/2024
*/
@Getter
@Setter
@Entity
@Table(name = "m_jenis_logbook", schema = "remun")
public class JenisLogbook extends BaseActive {
@Id
@GeneratedValue(strategy = SEQUENCE, generator = "sg_jenis_logbook")
@SequenceGenerator(name = "sg_jenis_logbook", schema = "remun", sequenceName = "remun.m_jenis_logbook_seq", allocationSize = 1)
@Column(name = "id", columnDefinition = "bigint default nextval('remun.m_jenis_logbook_seq'::regclass)")
protected Long id;
/**
* Jenis Logbook : JKN, NON-JKN, FIXED-PAY, KLAIM MPP
*/
@Column(name = "jenis_logbook", length = 150, unique = true, nullable = false)
@Size(max = 150, message = "Jenis logbook maksimal {max} karakter")
@NotBlank(message = "Jenis logbook tidak boleh kosong")
@Caption("Jenis Logbook")
private String jenisLogbook;
}

View File

@ -1,192 +1,81 @@
package com.jasamedika.medifirst2000.entities;
import com.jasamedika.medifirst2000.base.BaseActive;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.helper.Caption;
import static javax.persistence.CascadeType.ALL;
import static javax.persistence.FetchType.LAZY;
@Getter
@Setter
@Entity
@Table(name = "LogbookDokter_T")
public class LogbookDokter extends BaseTransaction {
@Table(name = "t_logbook_dokter", schema = "remun")
public class LogbookDokter extends BaseActive {
private static final long serialVersionUID = -3993902298828376060L;
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid")
@Column(name = "no_rec", columnDefinition = "CHAR(32)", unique = true)
protected String noRec;
@Column(name = "objectProdukFk", nullable = true)
@Column(name = "jenis_logbook")
@Caption(value = "Jenis Logbook")
private String jenisLogbook;
@Column(name = "produk_id")
@Caption(value = "Id Produk")
private Integer idProduk;
private Integer produkId;
@Column(name = "objectPegawaiFk", nullable = true)
@Caption(value = "Id Pegawai")
private Integer idPegawai;
@Column(name = "produk")
@Caption(value = "Produk")
private String produk;
@Column(name = "objectDetailJenisProdukFk", nullable = true)
@Caption(value = "Id Detail Jenis Produk")
private Integer detailId;
@Column(name = "jenis_ruangan")
@Caption(value = "Jenis Ruangan")
private String jenisRuangan;
@Column(name = "detailJenisProduk", nullable = true)
@Caption(value = "Detail Jenis Produk")
private String detailJenisProduk;
@Column(name = "kelompok_pasien")
@Caption(value = "Kelompok Pasien")
private String kelompokPasien;
@Column(name = "harga", nullable = true)
@Caption(value = "Harga")
private Double harga;
@Column(name = "tarif")
@Caption(value = "Tarif")
private BigDecimal tarif;
@Column(name = "hargaKelasSatu", nullable = true)
@Caption(value = "Harga Kelas 1")
private Double hargaKelas1;
@Column(name = "persen_jasa")
@Caption(value = "Persentase Jasa")
private Double persenJasa;
@Column(name = "objectJenisPelaksanaFk", nullable = true)
@Caption(value = "Id Jenis Pelaksana")
private Integer idJenisPelaksana;
@Column(name = "remun_tindakan")
@Caption(value = "Remun / Tindakan")
private BigDecimal remunTindakan;
@Column(name = "objectKelasFk", nullable = true)
@Caption(value = "Id Kelas")
private Integer idKelas;
@Column(name = "keterangan")
@Caption(value = "Keterangan")
private String keterangan;
@Column(name = "namaKelas", nullable = true)
@Caption(value = "Nama Kelas")
private String namaKelas;
@Column(name = "namaProduk", nullable = true)
@Caption(value = "Nama Produk")
private String namaProduk;
@Column(name = "poin", nullable = true)
@Caption(value = "Poin")
private Double poin;
@Column(name = "poinQty", nullable = true)
@Caption(value = "Jumlah Poin")
private Double poinQty;
@Column(name = "totalTindakan", nullable = true)
@Column(name = "total_tindakan")
@Caption(value = "Total Tindakan")
private Long totalTindakan;
private Integer totalTindakan;
@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "logbookDokter")
@Column(name = "total_remun_tindakan")
@Caption(value = "Total Remunerasi")
private BigDecimal totalRemunTindakan;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "logbook_remun_id")
@NotNull(message = "Logbook remun tidak boleh kosong")
@Caption(value = "Logbook Remun")
private LogbookRemun logbookRemun;
@OneToMany(cascade = ALL, fetch = LAZY, mappedBy = "logbookDokter")
private Set<DetailLogbookDokter> detailLogbookDokter;
public Integer getIdProduk() {
return idProduk;
}
public void setIdProduk(Integer idProduk) {
this.idProduk = idProduk;
}
public Integer getIdPegawai() {
return idPegawai;
}
public void setIdPegawai(Integer idPegawai) {
this.idPegawai = idPegawai;
}
public Integer getDetailId() {
return detailId;
}
public void setDetailId(Integer detailId) {
this.detailId = detailId;
}
public String getDetailJenisProduk() {
return detailJenisProduk;
}
public void setDetailJenisProduk(String detailJenisProduk) {
this.detailJenisProduk = detailJenisProduk;
}
public Double getHarga() {
return harga;
}
public void setHarga(Double harga) {
this.harga = harga;
}
public Double getHargaKelas1() {
return hargaKelas1;
}
public void setHargaKelas1(Double hargaKelas1) {
this.hargaKelas1 = hargaKelas1;
}
public Integer getIdJenisPelaksana() {
return idJenisPelaksana;
}
public void setIdJenisPelaksana(Integer idJenisPelaksana) {
this.idJenisPelaksana = idJenisPelaksana;
}
public Integer getIdKelas() {
return idKelas;
}
public void setIdKelas(Integer idKelas) {
this.idKelas = idKelas;
}
public String getNamaKelas() {
return namaKelas;
}
public void setNamaKelas(String namaKelas) {
this.namaKelas = namaKelas;
}
public String getNamaProduk() {
return namaProduk;
}
public void setNamaProduk(String namaProduk) {
this.namaProduk = namaProduk;
}
public Double getPoin() {
return poin;
}
public void setPoin(Double poin) {
this.poin = poin;
}
public Double getPoinQty() {
return poinQty;
}
public void setPoinQty(Double poinQty) {
this.poinQty = poinQty;
}
public Long getTotalTindakan() {
return totalTindakan;
}
public void setTotalTindakan(Long totalTindakan) {
this.totalTindakan = totalTindakan;
}
public Set<DetailLogbookDokter> getDetailLogbookDokter() {
return detailLogbookDokter;
}
public void setDetailLogbookDokter(Set<DetailLogbookDokter> detailLogbookDokter) {
this.detailLogbookDokter = detailLogbookDokter;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}

View File

@ -0,0 +1,55 @@
package com.jasamedika.medifirst2000.entities;
import com.jasamedika.medifirst2000.base.BaseActive;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.Date;
import java.util.Set;
import static javax.persistence.CascadeType.ALL;
import static javax.persistence.FetchType.LAZY;
import static javax.persistence.TemporalType.DATE;
import static javax.persistence.TemporalType.TIMESTAMP;
/**
* @author salmanoe
* @version 1.0.0
* @since 25/04/2024
*/
@Getter
@Setter
@Entity
@Table(name = "t_logbook_remun", schema = "remun")
public class LogbookRemun extends BaseActive {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid")
@Column(name = "no_rec", columnDefinition = "CHAR(32)", unique = true)
protected String noRec;
@Column(name = "pegawai_id")
@Caption(value = "Id Pegawai")
private Integer pegawaiId;
@Column(name = "pegawai")
@Caption(value = "Pegawai")
private String pegawai;
@Column(name = "bulan")
@Caption(value = "Bulan")
@Temporal(DATE)
private Date bulan;
@Column(name = "tanggal_tarik_data")
@Caption(value = "Tanggal Tarik Data")
@Temporal(TIMESTAMP)
private Date tanggalTarikData;
@OneToMany(cascade = ALL, fetch = LAZY, mappedBy = "logbookRemun")
private Set<LogbookDokter> logbookDokter;
}

View File

@ -54,4 +54,10 @@ public class ObatLayananTindakan extends BaseTransaction implements Serializable
@JoinColumn(name = "diubah_pengguna_id")
@Caption(value = "Diubah oleh pegawai")
private Pegawai diubahOleh;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "ruanganfarmasifk", nullable = false)
@NotNull(message = "Ruangan farmasi Tidak boleh Kosong")
@Caption(value = "Ruangan Farmasi")
private Ruangan ruanganFarmasi;
}

View File

@ -0,0 +1,61 @@
package com.jasamedika.medifirst2000.entities;
import com.jasamedika.medifirst2000.base.BaseActive;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import static javax.persistence.FetchType.LAZY;
/**
* @author salmanoe
* @version 1.0.0
* @since 24/04/2024
*/
@Getter
@Setter
@Entity
@Table(name = "m_proporsi_jasa_layanan_remun_medis", schema = "remun")
public class ProporsiJasaLayananRemunMedis extends BaseActive {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid")
@Column(name = "no_rec", columnDefinition = "CHAR(32)", unique = true)
protected String noRec;
@NotNull(message = "Persentase tidak boleh kosong")
@Caption(value = "Persentase")
private Double persentase;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "id_jenis_logbook", nullable = false)
@NotNull(message = "Jenis logbook tidak boleh kosong")
@Caption(value = "Jenis Logbook")
private JenisLogbook jenisLogbook;
@Column(name = "id_jenis_logbook", insertable = false, updatable = false, nullable = false)
private Long jenisLogbookId;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "id_jenis_petugas_pelaksana")
@NotNull(message = "Jenis petugas pelaksana tidak boleh kosong")
@Caption(value = "Jenis Petugas Pelaksana")
private JenisPetugasPelaksana jenisPetugasPelaksana;
@Column(name = "id_jenis_petugas_pelaksana", insertable = false, updatable = false, nullable = false)
private Integer jenisPetugasPelaksanaId;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "id_jenis_layanan", nullable = false)
@NotNull(message = "Jenis layanan tidak boleh kosong")
@Caption(value = "Jenis Layanan Remun Medis")
private JenisLayananRemunMedis jenisLayanan;
@Column(name = "id_jenis_layanan", insertable = false, updatable = false, nullable = false)
private Long jenisLayananId;
}

View File

@ -0,0 +1,48 @@
package com.jasamedika.medifirst2000.entities;
import com.jasamedika.medifirst2000.base.BaseActive;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import static javax.persistence.FetchType.LAZY;
/**
* @author salmanoe
* @version 1.0.0
* @since 24/04/2024
*/
@Getter
@Setter
@Entity
@Table(name = "m_ruangan_jenis_layanan_remun_medis", schema = "remun")
public class RuanganJenisLayananRemunMedis extends BaseActive {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid")
@Column(name = "no_rec", columnDefinition = "CHAR(32)", unique = true)
protected String noRec;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "id_ruangan", nullable = false)
@NotNull(message = "Ruangan tidak boleh kosong")
@Caption(value = "Ruangan")
private Ruangan ruangan;
@Column(name = "id_ruangan", insertable = false, updatable = false, nullable = false)
private Integer ruanganId;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "id_jenis_layanan", nullable = false)
@NotNull(message = "Jenis layanan tidak boleh kosong")
@Caption(value = "Jenis Layanan Remun Medis")
private JenisLayananRemunMedis jenisLayanan;
@Column(name = "id_jenis_layanan", insertable = false, updatable = false, nullable = false)
private Long jenisLayananId;
}

View File

@ -1,10 +1,8 @@
package com.jasamedika.medifirst2000.task.schedule;
import com.jasamedika.medifirst2000.dao.PelayananPasienPetugasDao;
import com.jasamedika.medifirst2000.dao.RekapLogbookDokterDao;
import com.jasamedika.medifirst2000.entities.KelompokPasien;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.RekapLogbookDokter;
import com.jasamedika.medifirst2000.dao.*;
import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.service.LogbookRemunService;
import com.jasamedika.medifirst2000.service.PelayananPasienService;
import com.jasamedika.medifirst2000.service.RekapLogbookDokterService;
import com.jasamedika.medifirst2000.util.DateUtil;
@ -14,11 +12,17 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import static com.jasamedika.medifirst2000.constants.Master.Profesi.TERAPI;
/**
* @author salmanoe
@ -41,9 +45,30 @@ public class LogbookTask {
@Autowired
private RekapLogbookDokterService rekapLogbookDokterService;
@Autowired
private LogbookRemunService logbookRemunService;
@Autowired
private LogbookRemunDao logbookRemunDao;
@Autowired
private LogbookDokterDao logbookDokterDao;
@Autowired
private DetailLogbookDokterDao detailLogbookDokterDao;
@Autowired
private MapPegawaiJabatanToUnitKerjaDao mapPegawaiJabatanToUnitKerjaDao;
@Autowired
private SubUnitKerjaDao subUnitKerjaDao;
@Autowired
private MapJabatanProfesiDao mapJabatanProfesiDao;
@Scheduled(cron = "0 0 0 1-6 * ?")
public void saveRekapLogbookDokter() {
LOGGER.info("Simpan rekapitulasi logbook dokter");
LOGGER.info("Start simpan rekapitulasi logbook dokter");
LocalDate localDate = LocalDate.now().minusMonths(1);
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
@ -168,5 +193,343 @@ public class LogbookTask {
}
});
rekapLogbookDokterDao.save(models);
LOGGER.info("Simpan rekapitulasi logbook dokter berhasil...!");
}
@Scheduled(cron = "0 0 0 1-6 * ?")
public void saveRekapDetailLogbookDokter() {
LOGGER.info("Start simpan rekapitulasi detail logbook dokter");
LocalDate localDate = LocalDate.now().minusMonths(1);
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
Date tglAwal = DateUtil.startMonth(date);
Date tglAkhir = DateUtil.endMonth(date);
List<Integer> subUnitKerjaIn = subUnitKerjaDao.findAllKelompokKerjaMedisId();
Set<Integer> idPegawaiKelompokKerja = mapPegawaiJabatanToUnitKerjaDao
.findPegawaiIdBySubUnitKerjaIn(subUnitKerjaIn);
List<Integer> terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI));
idPegawaiKelompokKerja.addAll(terapisRehabMedik);
if (!idPegawaiKelompokKerja.isEmpty()) {
// Delete untuk pembaharuan data
logbookRemunService.deleteByPeriod(idPegawaiKelompokKerja, tglAwal, tglAkhir);
}
saveRekapDetailLogbookDokter(idPegawaiKelompokKerja, date);
}
private void saveRekapDetailLogbookDokter(Set<Integer> idPegawaiKelompokKerja, Date date) {
DateFormat df = new SimpleDateFormat("yyyy-MM");
String bulan = df.format(date);
ExecutorService executorService = Executors.newFixedThreadPool(50);
CountDownLatch latch = new CountDownLatch(50);
try {
for (Integer idPegawai : idPegawaiKelompokKerja) {
executorService.execute(() -> {
LOGGER.info("Simpan rekapitulasi detail logbook dokter id {}", idPegawai);
LogbookRemun logbookRemun = new LogbookRemun();
logbookRemun.setKdProfile((short) 0);
logbookRemun.setStatusEnabled(true);
logbookRemun.setPegawaiId(idPegawai);
logbookRemun.setBulan(date);
logbookRemun.setTanggalTarikData(new Date());
LogbookRemun savedRemun = logbookRemunDao.save(logbookRemun);
{
Map<String, Object> kinerjaDokter = pelayananPasienService.logbookRemunTarifDokter(idPegawai,
bulan);
List<Map<String, Object>> remun = (List<Map<String, Object>>) kinerjaDokter.get("data");
for (Map<String, Object> map : remun) {
List<String> listNorecPelayananPasienPetugas = new ArrayList<>();
{
List<Map<String, Object>> detail = (List<Map<String, Object>>) map.get("detail");
for (Map<String, Object> d : detail)
listNorecPelayananPasienPetugas.addAll((List<String>) d.get("norecs"));
}
LogbookDokter logbookDokter = new LogbookDokter();
logbookDokter.setKdProfile((short) 0);
logbookDokter.setStatusEnabled(true);
logbookDokter.setJenisLogbook("JKN");
logbookDokter.setKelompokPasien(map.get("kelompokPasien").toString());
logbookDokter.setKeterangan(map.get("keterangan").toString());
logbookDokter.setPersenJasa(
Double.parseDouble(map.get("persenJasa").toString().replace("%", "")));
logbookDokter.setProduk(map.get("namaProduk").toString());
logbookDokter.setProdukId(Integer.parseInt(map.get("idProduk").toString()));
double hargaJasa = Double.parseDouble(map.get("hargaJasa").toString());
logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa));
logbookDokter
.setTarif(BigDecimal.valueOf(Double.parseDouble(map.get("hargaJual").toString())));
int jumlah = Double.valueOf(map.get("jumlah").toString()).intValue();
logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah));
logbookDokter.setTotalTindakan(jumlah);
logbookDokter.setLogbookRemun(savedRemun);
LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter);
{
List<Map<String, Object>> detailLogbook = pelayananPasienService
.detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas);
List<DetailLogbookDokter> listDetailLogbookDokter = new ArrayList<>();
for (Map<String, Object> detail : detailLogbook) {
DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter();
detailLogbookDokter.setKdProfile((short) 0);
detailLogbookDokter.setStatusEnabled(true);
detailLogbookDokter.setDiskon(
BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString())));
detailLogbookDokter.setJumlahTindakan(
Double.valueOf(detail.get("jumlah").toString()).intValue());
detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString());
detailLogbookDokter.setKelas(detail.get("namaKelas").toString());
detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString());
detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString());
detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString());
detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString());
detailLogbookDokter
.setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString()));
detailLogbookDokter.setTarif(
BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString())));
detailLogbookDokter.setLogbookDokter(savedLogbookDokter);
listDetailLogbookDokter.add(detailLogbookDokter);
}
detailLogbookDokterDao.save(listDetailLogbookDokter);
}
}
}
{
List<Map<String, Object>> ffs = pelayananPasienService.logbookFfsTarifDokter(idPegawai, bulan);
for (Map<String, Object> fee : ffs) {
List<String> listNorecPelayananPasienPetugas = new ArrayList<>();
{
List<Map<String, Object>> detail = (List<Map<String, Object>>) fee.get("detail");
for (Map<String, Object> d : detail)
listNorecPelayananPasienPetugas.addAll((List<String>) d.get("norecs"));
}
LogbookDokter logbookDokter = new LogbookDokter();
logbookDokter.setKdProfile((short) 0);
logbookDokter.setStatusEnabled(true);
logbookDokter.setJenisLogbook("NON-JKN DALAM JAM KERJA");
logbookDokter.setJenisRuangan(fee.get("jenisRuangan").toString());
logbookDokter.setKelompokPasien(fee.get("kelompokPasien").toString());
logbookDokter.setKeterangan(fee.get("keterangan").toString());
logbookDokter.setPersenJasa(
Double.parseDouble(fee.get("persenJasa").toString().replace("%", "")));
logbookDokter.setProduk(fee.get("namaProduk").toString());
logbookDokter.setProdukId(Integer.parseInt(fee.get("idProduk").toString()));
double hargaJasa = Double.parseDouble(fee.get("hargaJasa").toString());
logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa));
logbookDokter
.setTarif(BigDecimal.valueOf(Double.parseDouble(fee.get("hargaJual").toString())));
int jumlah = Double.valueOf(fee.get("jumlah").toString()).intValue();
logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah));
logbookDokter.setTotalTindakan(jumlah);
logbookDokter.setLogbookRemun(savedRemun);
LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter);
{
List<Map<String, Object>> detailLogbook = pelayananPasienService
.detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas);
List<DetailLogbookDokter> listDetailLogbookDokter = new ArrayList<>();
for (Map<String, Object> detail : detailLogbook) {
DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter();
detailLogbookDokter.setKdProfile((short) 0);
detailLogbookDokter.setStatusEnabled(true);
detailLogbookDokter.setDiskon(
BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString())));
detailLogbookDokter.setJumlahTindakan(
Double.valueOf(detail.get("jumlah").toString()).intValue());
detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString());
detailLogbookDokter.setKelas(detail.get("namaKelas").toString());
detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString());
detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString());
detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString());
detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString());
detailLogbookDokter
.setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString()));
detailLogbookDokter.setTarif(
BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString())));
detailLogbookDokter.setLogbookDokter(savedLogbookDokter);
listDetailLogbookDokter.add(detailLogbookDokter);
}
detailLogbookDokterDao.save(listDetailLogbookDokter);
}
}
}
{
List<Map<String, Object>> ffs = pelayananPasienService.logbookFfsLuarTarifDokter(idPegawai,
bulan);
for (Map<String, Object> fee : ffs) {
List<String> listNorecPelayananPasienPetugas = new ArrayList<>();
{
List<Map<String, Object>> detail = (List<Map<String, Object>>) fee.get("detail");
for (Map<String, Object> d : detail)
listNorecPelayananPasienPetugas.addAll((List<String>) d.get("norecs"));
}
LogbookDokter logbookDokter = new LogbookDokter();
logbookDokter.setKdProfile((short) 0);
logbookDokter.setStatusEnabled(true);
logbookDokter.setJenisLogbook("NON-JKN LUAR JAM KERJA");
logbookDokter.setJenisRuangan(fee.get("jenisRuangan").toString());
logbookDokter.setKelompokPasien(fee.get("kelompokPasien").toString());
logbookDokter.setKeterangan(fee.get("keterangan").toString());
logbookDokter.setPersenJasa(
Double.parseDouble(fee.get("persenJasa").toString().replace("%", "")));
logbookDokter.setProduk(fee.get("namaProduk").toString());
logbookDokter.setProdukId(Integer.parseInt(fee.get("idProduk").toString()));
double hargaJasa = Double.parseDouble(fee.get("hargaJasa").toString());
logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa));
logbookDokter
.setTarif(BigDecimal.valueOf(Double.parseDouble(fee.get("hargaJual").toString())));
int jumlah = Double.valueOf(fee.get("jumlah").toString()).intValue();
logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah));
logbookDokter.setTotalTindakan(jumlah);
logbookDokter.setLogbookRemun(savedRemun);
LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter);
{
List<Map<String, Object>> detailLogbook = pelayananPasienService
.detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas);
List<DetailLogbookDokter> listDetailLogbookDokter = new ArrayList<>();
for (Map<String, Object> detail : detailLogbook) {
DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter();
detailLogbookDokter.setKdProfile((short) 0);
detailLogbookDokter.setStatusEnabled(true);
detailLogbookDokter.setDiskon(
BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString())));
detailLogbookDokter.setJumlahTindakan(
Double.valueOf(detail.get("jumlah").toString()).intValue());
detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString());
detailLogbookDokter.setKelas(detail.get("namaKelas").toString());
detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString());
detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString());
detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString());
detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString());
detailLogbookDokter
.setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString()));
detailLogbookDokter.setTarif(
BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString())));
detailLogbookDokter.setLogbookDokter(savedLogbookDokter);
listDetailLogbookDokter.add(detailLogbookDokter);
}
detailLogbookDokterDao.save(listDetailLogbookDokter);
}
}
}
{
List<Map<String, Object>> fixedPay = pelayananPasienService.logbookFixedPayDokter(idPegawai,
bulan);
for (Map<String, Object> pay : fixedPay) {
List<String> listNorecPelayananPasienPetugas = new ArrayList<>();
{
List<Map<String, Object>> detail = (List<Map<String, Object>>) pay.get("detail");
for (Map<String, Object> d : detail)
listNorecPelayananPasienPetugas.addAll((List<String>) d.get("norecs"));
}
LogbookDokter logbookDokter = new LogbookDokter();
logbookDokter.setKdProfile((short) 0);
logbookDokter.setStatusEnabled(true);
logbookDokter.setJenisLogbook("FIXED-PAY");
logbookDokter.setJenisRuangan(pay.get("jenisRuangan").toString());
logbookDokter.setKelompokPasien(pay.get("kelompokPasien").toString());
logbookDokter.setKeterangan(pay.get("keterangan").toString());
logbookDokter.setProduk(pay.get("namaProduk").toString());
logbookDokter.setProdukId(Integer.parseInt(pay.get("idProduk").toString()));
double hargaJasa = Double.parseDouble(pay.get("hargaJasa").toString());
logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa));
logbookDokter
.setTarif(BigDecimal.valueOf(Double.parseDouble(pay.get("hargaJual").toString())));
int jumlah = Double.valueOf(pay.get("jumlah").toString()).intValue();
logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah));
logbookDokter.setTotalTindakan(jumlah);
logbookDokter.setLogbookRemun(savedRemun);
LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter);
{
List<Map<String, Object>> detailLogbook = pelayananPasienService
.detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas);
List<DetailLogbookDokter> listDetailLogbookDokter = new ArrayList<>();
for (Map<String, Object> detail : detailLogbook) {
DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter();
detailLogbookDokter.setKdProfile((short) 0);
detailLogbookDokter.setStatusEnabled(true);
detailLogbookDokter.setDiskon(
BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString())));
detailLogbookDokter.setJumlahTindakan(
Double.valueOf(detail.get("jumlah").toString()).intValue());
detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString());
detailLogbookDokter.setKelas(detail.get("namaKelas").toString());
detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString());
detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString());
detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString());
detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString());
detailLogbookDokter
.setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString()));
detailLogbookDokter.setTarif(
BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString())));
detailLogbookDokter.setLogbookDokter(savedLogbookDokter);
listDetailLogbookDokter.add(detailLogbookDokter);
}
detailLogbookDokterDao.save(listDetailLogbookDokter);
}
}
}
{
List<Map<String, Object>> klaimMpp = pelayananPasienService.logbookKlaimMppDokter(idPegawai,
bulan);
for (Map<String, Object> mpp : klaimMpp) {
List<String> listNorecPelayananPasienPetugas = new ArrayList<>();
{
List<Map<String, Object>> detail = (List<Map<String, Object>>) mpp.get("detail");
for (Map<String, Object> d : detail)
listNorecPelayananPasienPetugas.addAll((List<String>) d.get("norecs"));
}
LogbookDokter logbookDokter = new LogbookDokter();
logbookDokter.setKdProfile((short) 0);
logbookDokter.setStatusEnabled(true);
logbookDokter.setJenisLogbook("KLAIM MPP");
logbookDokter.setJenisRuangan(mpp.get("jenisRuangan").toString());
logbookDokter.setKelompokPasien(mpp.get("kelompokPasien").toString());
logbookDokter.setKeterangan(mpp.get("keterangan").toString());
logbookDokter.setProduk(mpp.get("namaProduk").toString());
logbookDokter.setProdukId(Integer.parseInt(mpp.get("idProduk").toString()));
double hargaJasa = Double.parseDouble(mpp.get("hargaJasa").toString());
logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa));
logbookDokter
.setTarif(BigDecimal.valueOf(Double.parseDouble(mpp.get("hargaJual").toString())));
int jumlah = Double.valueOf(mpp.get("jumlah").toString()).intValue();
logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah));
logbookDokter.setTotalTindakan(jumlah);
logbookDokter.setLogbookRemun(savedRemun);
LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter);
{
List<Map<String, Object>> detailLogbook = pelayananPasienService
.detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas);
List<DetailLogbookDokter> listDetailLogbookDokter = new ArrayList<>();
for (Map<String, Object> detail : detailLogbook) {
DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter();
detailLogbookDokter.setKdProfile((short) 0);
detailLogbookDokter.setStatusEnabled(true);
detailLogbookDokter.setDiskon(
BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString())));
detailLogbookDokter.setJumlahTindakan(
Double.valueOf(detail.get("jumlah").toString()).intValue());
detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString());
detailLogbookDokter.setKelas(detail.get("namaKelas").toString());
detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString());
detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString());
detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString());
detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString());
detailLogbookDokter
.setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString()));
detailLogbookDokter.setTarif(
BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString())));
detailLogbookDokter.setLogbookDokter(savedLogbookDokter);
listDetailLogbookDokter.add(detailLogbookDokter);
}
detailLogbookDokterDao.save(listDetailLogbookDokter);
}
}
}
latch.countDown();
});
}
latch.await();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}

View File

@ -21,7 +21,7 @@ public class ScheduleTaskConfig {
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(5);
threadPoolTaskScheduler.setPoolSize(75);
threadPoolTaskScheduler.setThreadNamePrefix("PelayananThreadPoolTaskScheduler");
return threadPoolTaskScheduler;
}