Merge branch 'dev/base' into dev/etl/pasien
This commit is contained in:
commit
feb015db08
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -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...!");
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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<>();
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user