Compare commits

..

122 Commits

Author SHA1 Message Date
adesyawal
8b65c492cf Merge branch 'prod/base' 2026-02-02 13:54:19 +07:00
adesyawal
a0cc1cd482 Merge branch 'ade/bug-fixing/hapus-logbook' into prod/base 2026-02-02 13:53:56 +07:00
adesyawal
77eb8f3672 Merge branch 'prod/base' 2026-01-18 09:50:01 +07:00
adesyawal
b7139f2851 Merge remote-tracking branch 'origin/ade/monitoring-absensi/bug-fixing-absen-tunggal' into prod/base 2026-01-18 09:49:38 +07:00
adesyawal
8c617702eb Merge branch 'prod/base' 2026-01-08 10:00:16 +07:00
adesyawal
0c753e9c22 Merge branch 'ade/bug-remun/perbaikan-recursive-fixed-pay' into prod/base 2026-01-08 09:59:58 +07:00
adesyawal
248bc1cad7 Merge branch 'prod/base' 2026-01-06 13:25:05 +07:00
adesyawal
db25c0aef9 Merge branch 'ade/monitoring-absen/shift-pm3' into prod/base 2026-01-06 13:24:46 +07:00
adesyawal
82b84d2fb9 Merge branch 'prod/base' 2026-01-06 09:36:57 +07:00
adesyawal
eb7b2f91ad Merge branch 'ade/monitor-absen/shift-pm2' into prod/base 2026-01-06 09:36:40 +07:00
adesyawal
e816f1f2e4 Merge branch 'prod/base' 2026-01-06 08:32:09 +07:00
adesyawal
406ed896a9 Merge branch 'ade/monitor-absen/shift-pm' into prod/base 2026-01-06 08:31:47 +07:00
adesyawal
9197ad56ce Merge branch 'prod/base' 2025-12-31 13:43:46 +07:00
adesyawal
79f93d8f1e Merge branch 'ade/monitoring/check-health4' into prod/base 2025-12-31 13:43:23 +07:00
adesyawal
ae1e575d73 Merge branch 'prod/base' 2025-12-31 11:47:32 +07:00
adesyawal
4d528f86bc Merge branch 'ade/monitoring/check-health3' into prod/base 2025-12-31 11:47:18 +07:00
adesyawal
a9a123cbf3 Merge branch 'prod/base' 2025-12-31 11:40:05 +07:00
adesyawal
a705fc4c3b Merge branch 'ade/monitoring/check-health2' into prod/base 2025-12-31 11:39:43 +07:00
adesyawal
d1455fc1cf Merge branch 'prod/base' 2025-12-29 10:01:09 +07:00
adesyawal
69df61e369 Merge branch 'ade/sdm-absensi/realisasi-absensi' into prod/base 2025-12-29 10:00:48 +07:00
adesyawal
838739b0e1 Merge branch 'prod/base' 2025-12-02 13:09:30 +07:00
adesyawal
4d73c1cbbe Merge branch 'ade/logbook-tarif/penyesuainruangan70persen' into prod/base 2025-12-02 13:09:07 +07:00
adesyawal
e6d47716ea Merge branch 'prod/base' 2025-11-28 15:28:17 +07:00
adesyawal
74ca1b4cfa Merge branch 'ade/logbook-tarif/ekslusi-dentalicious' into prod/base 2025-11-28 15:27:20 +07:00
adesyawal
f5fd2a5831 Merge branch 'prod/base' 2025-11-06 15:04:47 +07:00
adesyawal
f152385e55 Merge branch 'ade/bug-fixing/master-shift-on-cuti' into prod/base 2025-11-06 15:04:09 +07:00
adesyawal
f10373891e Merge branch 'prod/base' 2025-10-27 14:33:09 +07:00
adesyawal
fbec23b80f Merge branch 'ade/bug-fixing/level-unitkerja-direktur' into prod/base 2025-10-27 14:32:31 +07:00
adesyawal
d8de068b74 Merge branch 'prod/base' 2025-10-22 08:33:45 +07:00
adesyawal
8e21f0b7cf Merge branch 'ade/mastershift-holidayservice-monitoringabsensi' into prod/base 2025-10-22 08:33:05 +07:00
adesyawal
f9d2af743f Merge branch 'prod/base' 2025-10-03 22:07:14 +07:00
adesyawal
749fb0fb53 Merge branch 'ade/logbook/rekap-logbook-tarif' into prod/base 2025-10-03 22:06:35 +07:00
adesyawal
cf0e09ae01 Merge branch 'prod/base' 2025-09-30 19:43:38 +07:00
adesyawal
e3dc3c5807 Merge branch 'ade/bug-fixing/cuti-pegawai-baru' into prod/base 2025-09-30 19:43:19 +07:00
adesyawal
143bfa458e Merge branch 'prod/base' 2025-09-30 10:53:00 +07:00
adesyawal
8b3a574ce1 Merge branch 'ade/bug-fixing/intervensi-cuti' into prod/base 2025-09-30 10:52:19 +07:00
adesyawal
9948599436 Merge branch 'prod/base' 2025-09-16 15:01:00 +07:00
adesyawal
e6107dae92 Merge branch 'dev-ade/sdm/intervensi-cuti' into prod/base 2025-09-16 15:00:09 +07:00
adesyawal
d554375789 Merge branch 'prod/base' 2025-08-13 07:54:55 +07:00
adesyawal
ef9ed72c64 Merge branch 'ade/bug-fixing/hak-akses-diskon-total' into prod/base 2025-08-13 07:53:29 +07:00
adesyawal
b8ed331571 Merge branch 'prod/base' 2025-06-18 08:54:13 +07:00
adesyawal
623f945859 Merge branch 'dev/billing/diskonpegawai' into prod/base 2025-06-18 08:53:36 +07:00
adesyawal
ef48f2649c Merge branch 'dev/base' 2025-06-08 15:46:28 +07:00
adesyawal
26e4dbb777 Merge branch 'sdm/remunerasi/bug-fixing-pelayan-findPelayananBedah' into prod/base 2025-06-08 15:45:53 +07:00
adesyawal
36eb745812 Merge branch 'dev/sdm/remunerasi' into prod/base 2025-06-07 04:10:21 +07:00
adesyawal
6b2df06b20 Merge branch 'dev/remunerasi/bugfixingakumulasipersen' into prod/base 2025-05-19 13:48:33 +07:00
adesyawal
2481546942 Merge branch 'dev/remunerasi/vinchia' into prod/base 2025-04-09 11:25:14 +07:00
adesyawal
12f5c633f2 Merge branch 'dev/pegawai/ws-example-ade-v2' into prod/base 2025-03-21 12:46:50 +07:00
Salman Manoe
2d83b9a91c Merge branch 'dev/reporting/kehadiran-bpk' into prod/base 2025-03-19 11:00:37 +07:00
Salman Manoe
31d07e10ce Merge branch 'dev/remun/persalinan-total-tarif' into prod/base 2025-03-19 11:00:31 +07:00
Salman Manoe
243a90e2c7 Merge branch 'dev/remun/persalinan-total-tarif' into prod/base 2025-03-18 16:29:47 +07:00
Salman Manoe
c44d5799f3 Merge branch 'dev/kepegawaian/monitoring-presensi' into prod/base 2025-03-17 13:58:07 +07:00
Salman Manoe
960b9af314 Merge branch 'dev/remun/logbook-paruh-waktu' into prod/base 2025-03-14 13:40:14 +07:00
Salman Manoe
43d105de37 Merge branch 'dev/remun/logbook-paruh-waktu' into prod/base 2025-03-12 11:23:07 +07:00
Salman Manoe
e6002e44e8 Merge branch 'dev/remun/logbook-tarif' into prod/base 2025-03-11 13:51:37 +07:00
Salman Manoe
bda56b5f44 Merge branch 'dev/remun/fixed-pay-anestesi' into prod/base 2025-03-06 08:47:24 +07:00
Salman Manoe
b1206442bb Merge branch 'dev/technical-debt/lombok-domain' into prod/base 2025-03-04 11:23:47 +07:00
Salman Manoe
71391fb198 Merge branch 'dev/kepegawaian/no-penugasan-klinis' into prod/base 2025-03-04 09:27:52 +07:00
Salman Manoe
78699b5eee Merge branch 'dev/kepegawaian/kategori-pppk' into prod/base 2025-03-04 07:19:38 +07:00
Salman Manoe
34ed82a346 Merge branch 'dev/kepegawaian/nim-ppds' into prod/base 2025-03-04 07:19:32 +07:00
Salman Manoe
69f37af283 Merge branch 'dev/technical-debt/lombok-domain' into prod/base 2025-03-04 07:19:27 +07:00
Salman Manoe
5bbefc913d Merge branch 'dev/remun/logbook-tarif' into prod/base 2025-02-27 13:23:35 +07:00
Salman Manoe
991b15464e Merge branch 'dev/kepegawaian/golongan-pppk' into prod/base 2025-02-26 15:04:26 +07:00
Salman Manoe
3fb671e4f9 Merge branch 'dev/technical-debt/lombok-domain' into prod/base 2025-02-26 10:32:07 +07:00
Salman Manoe
9c3f7924bc Merge branch 'dev/kepegawaian/golongan-pppk' into prod/base 2025-02-26 10:31:51 +07:00
Salman Manoe
a1490efe43 Merge branch 'dev/kepegawaian/golongan-pppk' into prod/base 2025-02-22 14:19:40 +07:00
Salman Manoe
b50c271d21 Merge branch 'dev/remun/logbook-tarif' into prod/base 2025-02-17 14:21:42 +07:00
Salman Manoe
39796f393a Merge branch 'dev/remun/logbook-tarif' into prod/base 2025-02-14 16:31:43 +07:00
Salman Manoe
389147e756 Merge branch 'dev/remun/logbook-tarif' into prod/base 2025-02-14 14:41:12 +07:00
Salman Manoe
3582e22fed Merge branch 'dev/master/data-fix' into prod/base 2025-02-13 13:45:44 +07:00
Salman Manoe
852325485b Merge branch 'dev/remun/logbook-tarif' into prod/base 2025-02-13 13:45:22 +07:00
Salman Manoe
e2ac3cb803 Merge branch 'dev/remun/logbook-tarif' into prod/base 2025-02-05 14:16:45 +07:00
Salman Manoe
1a21be43ab Merge branch 'dev/pegawai/dokter-mitra' into prod/base 2025-02-03 11:59:47 +07:00
Salman Manoe
9a6ff8d2b8 Merge remote-tracking branch 'origin/dev/pegawai/dokter-mitra' into prod/base 2025-02-03 09:50:32 +07:00
Salman Manoe
a4b51b2ecb Merge branch 'dev/remun/logbook-tarif' into prod/base 2025-02-03 09:49:47 +07:00
Salman Manoe
543b41dffa Merge branch 'dev/pegawai/presensi' into prod/base 2025-02-03 09:49:37 +07:00
Salman Manoe
6dba53aee0 Merge branch 'dev/pegawai/cuti' into prod/base 2025-02-03 09:49:30 +07:00
Salman Manoe
a4aa2ad173 Merge branch 'dev/pegawai/peserta-didik' into prod/base 2025-02-03 09:49:18 +07:00
Salman Manoe
d83566d8d5 Merge branch 'dev/remun/logbook-tarif' into prod/base 2025-01-17 17:12:53 +07:00
Salman Manoe
6cd22af4b6 Merge branch 'dev/pegawai/presensi' into prod/base 2025-01-03 14:13:12 +07:00
Salman Manoe
33bcd7b313 Merge branch 'dev/pegawai/presensi' into prod/base 2025-01-03 10:28:01 +07:00
Salman Manoe
3947da84fc Merge branch 'dev/remun/logbook-tarif' into prod/base 2025-01-02 11:12:21 +07:00
Salman Manoe
aa0f1ad5ae Merge branch 'dev/remun/logbook-tarif' into prod/base 2024-12-31 22:44:52 +07:00
Salman Manoe
b239c18f9e Merge branch 'dev/remun/logbook-tarif' into prod/base 2024-12-31 11:33:15 +07:00
Salman Manoe
07ced4ffc7 Merge branch 'dev/remun/logbook-tarif' into prod/base 2024-12-19 08:11:31 +07:00
Salman Manoe
7f6474fb8a Merge branch 'dev/verif-remun/log' into prod/base 2024-12-02 14:21:23 +07:00
Salman Manoe
280cf73993 Merge branch 'dev/remun/exclude-dokter-luar' into prod/base 2024-12-02 14:21:16 +07:00
Salman Manoe
f03a842dd2 Merge branch 'dev/pegawai/jadwal-kerja' into prod/base 2024-11-20 14:49:48 +07:00
Salman Manoe
482731fafa Merge branch 'dev/paket/validasi-voucher' into prod/base 2024-11-18 13:34:49 +07:00
Salman Manoe
eb71199dd7 Merge branch 'dev/pegawai/presensi/compreface' into prod/base 2024-11-11 18:42:04 +07:00
Salman Manoe
5969617896 Merge branch 'dev/remun/kinerja/hapus' into prod/base 2024-11-11 11:39:04 +07:00
Salman Manoe
cb6b91f1ed Merge branch 'dev/report/konsultasi-kosong' into prod/base 2024-11-01 10:52:06 +07:00
Salman Manoe
c3688c9422 Merge branch 'dev/pelayanan/operasi-elektif' into prod/base 2024-10-30 14:39:46 +07:00
Salman Manoe
2c22512271 Merge branch 'dev/remun/kontrak' into prod/base 2024-10-30 10:18:52 +07:00
Salman Manoe
06aaa550d2 Merge branch 'dev/logbook/terapis' into prod/base 2024-10-30 10:18:46 +07:00
Salman Manoe
ad368f7946 Merge branch 'dev/remun/logbook/rekap' into prod/base 2024-10-21 09:00:05 +07:00
Salman Manoe
8df79fac35 Merge branch 'dev/logbook/diskon' into prod/base 2024-10-07 14:43:12 +07:00
Salman Manoe
e2f9e92ecb Merge branch 'dev/integrasi/superapp' into prod/base 2024-09-02 10:27:15 +07:00
Salman Manoe
9d054afeb5 Merge branch 'dev/auth/ketua-komite' into prod/base 2024-08-23 14:44:06 +07:00
Salman Manoe
a4dde9dd13 Merge branch 'dev/auth/ketua-komite' into prod/base 2024-08-22 14:40:35 +07:00
Salman Manoe
f092607ec4 Merge branch 'dev/security/login' into prod/base 2024-08-22 10:56:01 +07:00
Salman Manoe
8c1f6a1825 Merge branch 'dev/etl/pasien' into prod/base 2024-08-20 10:09:17 +07:00
Salman Manoe
d24bbfb260 Merge branch 'dev/etl/pasien' into prod/base 2024-08-07 15:03:59 +07:00
Salman Manoe
79fe30ff4b Update web.xml
Perubahan parameter konfigurasi database
2024-08-07 10:33:23 +07:00
Salman Manoe
a4db6562b9 Merge branch 'dev/etl/pasien' into prod/base 2024-08-07 10:05:44 +07:00
Salman Manoe
7750dc974e Merge branch 'dev/remun/logbook' into prod/base 2024-08-05 10:44:16 +07:00
Salman Manoe
ac5e379b28 Merge branch 'dev/remun/logbook' into prod/base 2024-08-01 14:07:17 +07:00
Salman Manoe
dd485a8a5a Merge branch 'dev/remun/logbook-dokter' into prod/base 2024-07-16 08:21:18 +07:00
Salman Manoe
bdd2db96cc Merge branch 'dev/integrasi/superapp' into prod/base 2024-07-03 13:21:01 +07:00
Salman Manoe
bda8841f7f Merge branch 'dev/integrasi/superapp' into prod/base 2024-07-03 11:38:54 +07:00
Salman Manoe
d231af1cd1 Merge branch 'dev/remun/logbook-tarif' into prod/base 2024-06-27 12:23:14 +07:00
Salman Manoe
27abc1bc75 Merge branch 'dev/remun/logbook-tarif' into prod/base 2024-06-25 08:44:25 +07:00
Salman Manoe
d185736401 Merge branch 'dev/remun/android-logbook' into prod/base 2024-06-07 13:58:12 +07:00
Salman Manoe
172c1a0539 Merge branch 'dev/remun/logbook-dg-jam-kerja' into prod/base 2024-05-31 16:11:46 +07:00
Salman Manoe
82e77209e6 Merge branch 'dev/remun/rekap-logbook' into prod/base 2024-05-31 08:57:35 +07:00
Salman Manoe
ec685312cf Merge branch 'dev/remun/logbook-nonjkn-dg-jam' into prod/base 2024-05-28 09:05:29 +07:00
Salman Manoe
96abf3cdab Merge branch 'dev/remun/logbook-nonjkn-dg-jam' into prod/base 2024-05-27 13:46:37 +07:00
Salman Manoe
4178405fd4 Merge branch 'dev/kepegawaian/cetak-cuti' into prod/base 2024-05-14 13:24:38 +07:00
Salman Manoe
aace5f33b0 Merge branch 'dev/remun/amarilys' into prod/base 2024-05-13 14:32:17 +07:00
Salman Manoe
fc2d017850 Merge branch 'dev/remun/detail-logbook' into prod/base 2024-04-24 12:54:36 +07:00
Salman Manoe
321e87b6f9 Merge branch 'dev/remun/konkin-magang' into prod/base 2024-04-23 16:34:12 +07:00
Salman Manoe
d4f3cc414d Merge branch 'dev/remun/paket/nonjkn' into prod/base 2024-04-23 10:37:55 +07:00
15 changed files with 810 additions and 223 deletions

View File

@ -0,0 +1,69 @@
package com.jasamedika.medifirst2000.task.schedule;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jasamedika.medifirst2000.service.MigrasiPasienService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.net.URI;
import java.net.URISyntaxException;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.jasamedika.medifirst2000.task.schedule.config.HeaderHandler.getHttpHeaders;
import static org.springframework.http.HttpMethod.GET;
/**
* @author salmanoe
* @version 1.0.0
* @since 11/10/2023
*/
@Component
public class MigrasiPasienTask {
private static final Logger LOGGER = LoggerFactory.getLogger(MigrasiPasienTask.class);
@Autowired
private RestTemplate restTemplate;
@Autowired
private ObjectMapper objectMapper;
@Autowired
private MigrasiPasienService migrasiPasienService;
@Value("${app.etl.migrasi.pasien}")
String baseUrl;
@Scheduled(cron = "0 0 18 * * ?")
public void newMigrate() {
LOGGER.info("Task MigrasiPasienTask.newMigrate {}", LocalDateTime.now());
migrasiPasienService.newMigrate();
}
@Scheduled(cron = "0 0 0 * * ?")
public void setStatusTerkirim() throws URISyntaxException {
LOGGER.info("Task MigrasiPasienTask.setStatusTerkirim {}", LocalDateTime.now());
URI uri = new URI(baseUrl + "/no-rekam-medis");
HttpEntity<Object> entity = new HttpEntity<>(null, getHttpHeaders());
ResponseEntity<Object> exchange = restTemplate.exchange(uri, GET, entity, Object.class);
if (CommonUtil.isNotNullOrEmpty(exchange.getBody())) {
Map<String, Object> dto = objectMapper.convertValue(exchange.getBody(), HashMap.class);
if (CommonUtil.isNotNullOrEmpty(dto) && CommonUtil.isNotNullOrEmpty(dto.get("response"))) {
List<String> noRekamMedisList = objectMapper.convertValue(dto.get("response"), List.class);
migrasiPasienService.setStatus(noRekamMedisList);
}
}
}
}

View File

@ -0,0 +1,24 @@
package com.jasamedika.medifirst2000.task.schedule.config;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import java.util.Collections;
import static org.springframework.http.MediaType.APPLICATION_JSON;
/**
* @author Salman
* @version 1.0.0
* @since 29/07/2024
*/
@Component
public class HeaderHandler {
public static HttpHeaders getHttpHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(APPLICATION_JSON));
headers.setContentType(APPLICATION_JSON);
return headers;
}
}

View File

@ -0,0 +1,38 @@
package com.jasamedika.medifirst2000.task.schedule.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.web.client.RestTemplate;
/**
* @author Salman
* @since 12 Jul 2023
*/
@Configuration
@EnableScheduling
@ComponentScan("com.jasamedika.medifirst2000.task")
public class ScheduleTaskConfig {
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(50);
threadPoolTaskScheduler.setThreadNamePrefix("BridgingThreadPoolTaskScheduler");
return threadPoolTaskScheduler;
}
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

View File

@ -15,7 +15,7 @@
</context-param>
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>development</param-value>
<param-value>bridging</param-value>
</context-param>
<listener>

View File

@ -784,8 +784,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
d.put("hargaJual", d.get("komponenTotalTarif"));
d.put("isTermasukProporsi", true);
double hargaJual = Double.parseDouble(d.get("hargaJual").toString());
if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())
|| Double.parseDouble(d.get("persenDiskonPegawai").toString()) > 0.0)
if (Boolean.parseBoolean(d.get("isSelisihPaket").toString()))
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRemunDokterUmumHD / 100, hargaJual, d, false);
@ -1963,8 +1962,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
SimpleDateFormat month = new SimpleDateFormat("MMM-yyyy", new Locale("in", "ID"));
listData.forEach(d -> {
if (CommonUtil.isNotNullOrEmpty(d.get("idSayatan")))
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%)");
d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString()))
+ "% komponen tarif, sayatan ke-" + d.get("urutanSayatan").toString());
});
List<MapProdukPaket> paketList = mapProdukPaketDao.findAll();
List<Integer> allProdukEntriId = paketList.stream().map(MapProdukPaket::getProdukEntriId)
@ -2163,8 +2162,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
private List<Map<String, Object>> transformPelayananKepalaPaketFixedPay(List<Map<String, Object>> listData) {
listData.forEach(d -> {
if (CommonUtil.isNotNullOrEmpty(d.get("idSayatan")))
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%)");
d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString()))
+ "% komponen tarif, sayatan ke-" + d.get("urutanSayatan").toString());
});
listData.forEach(d -> {
double hargaJasa = Double.parseDouble(d.get("hargaJasaD").toString())
@ -2256,32 +2255,18 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
String keteranganTambahan = "";
if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) {
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
if ("".equals(d.get("keterangan").toString())) {
keteranganTambahan = " Diskon selisih paket ("
+ nf.format(Double.parseDouble(d.get("hargaDiskon").toString())) + ")";
} else {
keteranganTambahan = " + diskon selisih paket ("
+ nf.format(Double.parseDouble(d.get("hargaDiskon").toString())) + ")";
}
}
if (Double.parseDouble(d.get("persenDiskonPegawai").toString()) > 0.0) {
if ("".equals(d.get("keterangan").toString())) {
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
keteranganTambahan = " Diskon pegawai (" + d.get("persenDiskonPegawai").toString() + "%)";
} else {
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
keteranganTambahan = " + diskon pegawai (" + d.get("persenDiskonPegawai").toString() + "%)";
}
keteranganTambahan = " dan selisih paket karena diskon "
+ nf.format(Double.parseDouble(d.get("hargaDiskon").toString()));
}
if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRemunDokterUmumHD / 100, hargaJual, d, true);
d.put("persenJasa", persenRemunDokterUmumHD + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (terapisRehabMedik.contains(idPegawai)) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRemunTerapis / 100, hargaJual, d, true);
d.put("persenJasa", persenRemunTerapis + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -2291,8 +2276,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
double persenJasa = persenOperator / 100;
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false);
d.put("persenJasa", persenOperator + "%");
d.put("keterangan", "Tarif jasa bedah (" + persenTarifJasaBedah + "%) " + keteranganTambahan
+ hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + persenTarifJasaBedah + "% tarif" + hargaJasa.getKeterangan() + keteranganTambahan);
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -2302,8 +2287,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
double persenJasa = persenAsistenIBS / 100;
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false);
d.put("persenJasa", persenAsistenIBS + "%");
d.put("keterangan", "Tarif jasa bedah (" + persenTarifJasaBedah + "%) " + keteranganTambahan
+ hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + persenTarifJasaBedah + "% tarif" + hargaJasa.getKeterangan() + keteranganTambahan);
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -2313,8 +2298,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
double persenJasa = persenAnestesi / 100;
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", "Tarif jasa bedah (" + persenTarifJasaBedah + "%) " + keteranganTambahan
+ hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + persenTarifJasaBedah + "% tarif" + hargaJasa.getKeterangan() + keteranganTambahan);
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -2324,8 +2309,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d,
false);
d.put("persenJasa", persenOperator + "%");
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%) " + keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif"
+ keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()
+ hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -2335,8 +2322,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d,
false);
d.put("persenJasa", persenAsistenIBS + "%");
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%) " + keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif"
+ keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()
+ hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -2346,94 +2335,96 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d,
false);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%) " + keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif"
+ keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()
+ hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d, true);
d.put("persenJasa", persenOperator + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, true);
d.put("persenJasa", persenAsistenIBS + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
&& DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (RADIOLOGI.equals(d.get("idDepartemen"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, true);
d.put("persenJasa", persenRadiologi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true);
d.put("persenJasa", persenRehabMedik + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (KONSULTASI.equals(d.get("idGolonganProduk"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, true);
d.put("persenJasa", persenKonsultasi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (VISIT.equals(d.get("idGolonganProduk"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, true);
d.put("persenJasa", persenVisite + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true);
d.put("persenJasa", persenTindakan + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drKkGenetika.contains(idPegawai)
&& idsLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString()))
&& (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRemunLabGenetika / 100, hargaJual, d, true);
d.put("persenJasa", persenRemunLabGenetika + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRemunLabGenetika / 100, hargaJual, d, true);
d.put("persenJasa", persenRemunLabGenetika + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drKkPatologiAnatomiList.contains(idPegawai)) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRemunDokterPA / 100, hargaJual, d, true);
d.put("persenJasa", persenRemunDokterPA + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (LABORATORIUM.equals(d.get("idDepartemen"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, true);
d.put("persenJasa", persenLaboratorium + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (CommonUtil.isNotNullOrEmpty(d.get("idRuangan"))
&& Arrays.asList(ICU_NICU).contains(Integer.parseInt(d.get("idRuangan").toString()))) {
double persenJasa = persenTindakan / 100;
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifICU, hargaJual, d, false);
d.put("persenJasa", persenTindakan + "%");
d.put("keterangan", "Tarif jasa ICU (" + persenTarifJasaICU + "%) " + keteranganTambahan
+ hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + persenTarifJasaICU + "% tarif" + hargaJasa.getKeterangan() + keteranganTambahan);
d.put("hargaJasa", hargaJasa.getNilai());
} else {
RemunHargaJasaDto hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true);
d.put("persenJasa", persenTindakan + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
}
}
@ -2653,24 +2644,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
String keteranganTambahan = "";
if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) {
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
if ("".equals(d.get("keterangan").toString())) {
keteranganTambahan = " Diskon selisih paket ("
+ nf.format(Double.parseDouble(d.get("hargaDiskon").toString())) + ")";
} else {
keteranganTambahan = " + diskon selisih paket ("
+ nf.format(Double.parseDouble(d.get("hargaDiskon").toString())) + ")";
}
keteranganTambahan = " dan selisih paket karena diskon "
+ nf.format(Double.parseDouble(d.get("hargaDiskon").toString()));
}
if (Double.parseDouble(d.get("persenDiskonPegawai").toString()) > 0.0) {
if ("".equals(d.get("keterangan").toString())) {
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
keteranganTambahan = " Diskon pegawai (" + d.get("persenDiskonPegawai").toString() + "%)";
} else {
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
keteranganTambahan = " + diskon pegawai (" + d.get("persenDiskonPegawai").toString() + "%)";
}
}
if (CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenBPJS / 100, hargaJual, d, true);
@ -2679,7 +2655,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
* dari tarif total
*/
d.put("persenJasa", persenBPJS + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
/*
* Set harga jasa klaim jasa ffs pasien bpjs oleh dokter-dokter
* tertentu
@ -2688,12 +2664,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} else if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaDokterUmumHD / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaDokterUmumHD + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (terapisRehabMedik.contains(idPegawai)) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaTerapis / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaTerapis + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -2703,8 +2679,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d,
false);
d.put("persenJasa", persenOperator + "%");
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%) " + keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif"
+ keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()
+ hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -2714,8 +2692,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d,
false);
d.put("persenJasa", persenAsistenIBS + "%");
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%) " + keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif"
+ keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()
+ hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -2725,86 +2705,88 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d,
false);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%) " + keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif"
+ keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()
+ hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d, true);
d.put("persenJasa", persenOperator + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, true);
d.put("persenJasa", persenAsistenIBS + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
&& DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (RADIOLOGI.equals(d.get("idDepartemen"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, true);
d.put("persenJasa", persenRadiologi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true);
d.put("persenJasa", persenRehabMedik + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (KONSULTASI.equals(d.get("idGolonganProduk"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, true);
d.put("persenJasa", persenKonsultasi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (VISIT.equals(d.get("idGolonganProduk"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, true);
d.put("persenJasa", persenVisite + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true);
d.put("persenJasa", persenTindakan + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drKkGenetika.contains(idPegawai)
&& idsLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString()))
&& (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaLabGenetika + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaLabGenetika + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drKkPatologiAnatomiList.contains(idPegawai)) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaDokterPA / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaDokterPA + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (LABORATORIUM.equals(d.get("idDepartemen"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, true);
d.put("persenJasa", persenLaboratorium + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else {
RemunHargaJasaDto hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true);
d.put("persenJasa", persenTindakan + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
}
}
@ -2932,22 +2914,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
String keteranganTambahan = "";
if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) {
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
if ("".equals(d.get("keterangan").toString())) {
keteranganTambahan = " Diskon selisih paket ("
+ nf.format(Double.parseDouble(d.get("hargaDiskon").toString())) + ")";
} else {
keteranganTambahan = " + diskon selisih paket ("
+ nf.format(Double.parseDouble(d.get("hargaDiskon").toString())) + ")";
}
}
if (Double.parseDouble(d.get("persenDiskonPegawai").toString()) > 0.0) {
if ("".equals(d.get("keterangan").toString())) {
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
keteranganTambahan = " Diskon pegawai (" + d.get("persenDiskonPegawai").toString() + "%)";
} else {
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
keteranganTambahan = " + diskon pegawai (" + d.get("persenDiskonPegawai").toString() + "%)";
}
keteranganTambahan = " dan selisih paket karena diskon "
+ nf.format(Double.parseDouble(d.get("hargaDiskon").toString()));
}
if (CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) {
@ -2957,7 +2925,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
* dari tarif total
*/
d.put("persenJasa", persenBPJS + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
/*
* Set harga jasa klaim jasa ffs pasien bpjs oleh dokter-dokter
* tertentu
@ -2966,18 +2934,18 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} else if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaDokterUmumHD / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaDokterUmumHD + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (terapisRehabMedik.contains(idPegawai) && REHAB_MEDIK.equals(d.get("idDepartemen"))
&& "Eksekutif".equals(d.get("jenisRuangan"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaLuarTerapis / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaLuarTerapis + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (terapisRehabMedik.contains(idPegawai)) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaTerapis / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaTerapis + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -2987,8 +2955,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d,
false);
d.put("persenJasa", persenOperator + "%");
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%) " + keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif"
+ keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()
+ hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -2998,8 +2968,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d,
false);
d.put("persenJasa", persenAsistenIBS + "%");
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%) " + keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif"
+ keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()
+ hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -3009,86 +2981,88 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d,
false);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%) " + keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif"
+ keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()
+ hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d, true);
d.put("persenJasa", persenOperator + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, true);
d.put("persenJasa", persenAsistenIBS + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
&& DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (RADIOLOGI.equals(d.get("idDepartemen"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, true);
d.put("persenJasa", persenRadiologi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true);
d.put("persenJasa", persenRehabMedik + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (KONSULTASI.equals(d.get("idGolonganProduk"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, true);
d.put("persenJasa", persenKonsultasi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (VISIT.equals(d.get("idGolonganProduk"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, true);
d.put("persenJasa", persenVisite + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true);
d.put("persenJasa", persenTindakan + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drKkGenetika.contains(idPegawai)
&& idsLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString()))
&& (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaLabGenetika + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaLabGenetika + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drKkPatologiAnatomiList.contains(idPegawai)) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaDokterPA / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaDokterPA + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (LABORATORIUM.equals(d.get("idDepartemen"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, true);
d.put("persenJasa", persenLaboratorium + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else {
RemunHargaJasaDto hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true);
d.put("persenJasa", persenTindakan + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
}
}
@ -3310,22 +3284,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
String keteranganTambahan = "";
if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) {
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
if ("".equals(d.get("keterangan").toString())) {
keteranganTambahan = " Diskon selisih paket ("
+ nf.format(Double.parseDouble(d.get("hargaDiskon").toString())) + ")";
} else {
keteranganTambahan = " + diskon selisih paket ("
+ nf.format(Double.parseDouble(d.get("hargaDiskon").toString())) + ")";
}
}
if (Double.parseDouble(d.get("persenDiskonPegawai").toString()) > 0.0) {
if ("".equals(d.get("keterangan").toString())) {
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
keteranganTambahan = " Diskon pegawai (" + d.get("persenDiskonPegawai").toString() + "%)";
} else {
hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString());
keteranganTambahan = " + diskon pegawai (" + d.get("persenDiskonPegawai").toString() + "%)";
}
keteranganTambahan = " dan selisih paket karena diskon "
+ nf.format(Double.parseDouble(d.get("hargaDiskon").toString()));
}
if (CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien"))
&& Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) {
@ -3335,7 +3295,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
* dari tarif total
*/
d.put("persenJasa", persenBPJS + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
/*
* Set harga jasa klaim jasa ffs pasien bpjs oleh dokter-dokter
* tertentu
@ -3344,7 +3304,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} else if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaDokterUmumHD / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaDokterUmumHD + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -3354,8 +3314,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d,
false);
d.put("persenJasa", persenOperatorIBS + "%");
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%) " + keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif"
+ keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()
+ hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -3365,8 +3327,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d,
false);
d.put("persenJasa", persenAsistenIBS + "%");
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%) " + keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif"
+ keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()
+ hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
@ -3376,92 +3340,94 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
(hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d,
false);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", "Diskon sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ d.get("persenSayatan").toString() + "%) " + keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan",
"Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + "% tarif"
+ keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()
+ hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
&& DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenOperatorIBS / 100, hargaJual, d, true);
d.put("persenJasa", persenOperatorIBS + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
&& ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, true);
d.put("persenJasa", persenAsistenIBS + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
&& DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (RADIOLOGI.equals(d.get("idDepartemen"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, true);
d.put("persenJasa", persenRadiologi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (terapisRehabMedik.contains(idPegawai) && REHAB_MEDIK.equals(d.get("idDepartemen"))
&& "Eksekutif".equals(d.get("jenisRuangan"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaTerapis / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaTerapis + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true);
d.put("persenJasa", persenRehabMedik + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (KONSULTASI.equals(d.get("idGolonganProduk"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, true);
d.put("persenJasa", persenKonsultasi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (VISIT.equals(d.get("idGolonganProduk"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, true);
d.put("persenJasa", persenVisite + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true);
d.put("persenJasa", persenTindakan + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true);
d.put("persenJasa", persenAnestesi + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drKkGenetika.contains(idPegawai)
&& idsLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString()))
&& (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaLabGenetika + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaLabGenetika + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (drKkPatologiAnatomiList.contains(idPegawai)) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasaDokterPA / 100, hargaJual, d, true);
d.put("persenJasa", persenJasaDokterPA + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else if (LABORATORIUM.equals(d.get("idDepartemen"))) {
RemunHargaJasaDto hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, true);
d.put("persenJasa", persenLaboratorium + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
} else {
RemunHargaJasaDto hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true);
d.put("persenJasa", persenTindakan + "%");
d.put("keterangan", keteranganTambahan + hargaJasa.getKeterangan());
d.put("keterangan", hargaJasa.getKeterangan());
d.put("hargaJasa", hargaJasa.getNilai());
}
}
@ -4401,9 +4367,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
if (KLINIK_KARYAWAN.equals(d.get("idRuangan")) || KLINIK_GIGI_KARYAWAN.equals(d.get("idRuangan"))) {
builder.nilai(0.0);
if (isFrontNote) {
builder.keterangan("Diskon klinik karyawan/klinik gigi karyawan (100%)");
builder.keterangan("Dari diskon klinik karyawan/klinik gigi karyawan");
} else {
builder.keterangan(" + diskon klinik karyawan/klinik gigi karyawan (100%)");
builder.keterangan(" dan dari diskon klinik karyawan/klinik gigi karyawan");
}
return builder.build();
}
@ -4446,10 +4412,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
totalDiskon += totalDiskonAn - (totalPersenDiskonSayatanAn * totalHargaAn / 100);
double hargaJualSetelahDiskon = hargaJual - totalDiskon;
double hargaJasa = persenRemunerasi * hargaJualSetelahDiskon;
if (CommonUtil.isNotNullOrEmpty(d.get("persenDiskonPegawai"))) {
builder.nilai(persenRemunerasi * hargaJual);
builder.keterangan("");
} else if (CommonUtil.isNotNullOrEmpty(d.get("persenDiskonD"))
if (CommonUtil.isNotNullOrEmpty(d.get("persenDiskonD"))
&& Double.parseDouble(d.get("persenDiskonD").toString()) > 0.0
&& CommonUtil.isNotNullOrEmpty(d.get("diskonD"))
&& Double.parseDouble(d.get("diskonD").toString()) >= 0.0
@ -4480,15 +4443,19 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
double hargaJasaRemun = hargaJasaOperator + hargaJasaAsisten + hargaJasaAnestesi;
builder.nilai(hargaJasaRemun);
if (isFrontNote) {
builder.keterangan("Total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa operator ("
+ d.get("persenDiskonD").toString() + "%) + diskon jasa asisten ("
+ d.get("persenDiskonAs").toString() + "%) + diskon jasa anestesi ("
+ d.get("persenDiskonAn").toString() + "%)");
builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator
+ "% ditambah pengalian " + persenRemunAsisten + "% ditambah pengalian " + persenRemunAnestesi
+ "% karena diskon komponen operator, asisten, dan anestesi berturut-turut "
+ d.get("persenDiskonD").toString() + "%, " + d.get("persenDiskonAs").toString() + "%, dan "
+ d.get("persenDiskonAn").toString() + "%");
} else {
builder.keterangan(" + total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa operator ("
+ d.get("persenDiskonD").toString() + "%) + diskon jasa asisten ("
+ d.get("persenDiskonAs").toString() + "%) + diskon jasa anestesi ("
+ d.get("persenDiskonAn").toString() + "%)");
builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator
+ "% ditambah pengalian " + persenRemunAsisten + "% ditambah pengalian " + persenRemunAnestesi
+ "% karena diskon komponen operator, asisten, dan anestesi berturut-turut "
+ d.get("persenDiskonD").toString() + "%, " + d.get("persenDiskonAs").toString() + "%, dan "
+ d.get("persenDiskonAn").toString() + "%");
}
} else if (CommonUtil.isNotNullOrEmpty(d.get("persenDiskonD"))
&& Double.parseDouble(d.get("persenDiskonD").toString()) > 0.0
@ -4516,13 +4483,17 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
double hargaJasaRemun = hargaJasaOperator + hargaJasaAsisten;
builder.nilai(hargaJasaRemun);
if (isFrontNote) {
builder.keterangan("Total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa operator ("
+ d.get("persenDiskonD").toString() + "%) + diskon jasa asisten ("
+ d.get("persenDiskonAs").toString() + "%)");
builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator
+ "% ditambah pengalian " + persenRemunAsisten
+ "% karena diskon komponen operator dan asisten berturut-turut "
+ d.get("persenDiskonD").toString() + "% dan " + d.get("persenDiskonAs").toString() + "%");
} else {
builder.keterangan(" + total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa operator ("
+ d.get("persenDiskonD").toString() + "%) + diskon jasa asisten ("
+ d.get("persenDiskonAs").toString() + "%)");
builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator
+ "% ditambah pengalian " + persenRemunAsisten
+ "% karena diskon komponen operator dan asisten berturut-turut "
+ d.get("persenDiskonD").toString() + "% dan " + d.get("persenDiskonAs").toString() + "%");
}
} else if (CommonUtil.isNotNullOrEmpty(d.get("persenDiskonD"))
&& Double.parseDouble(d.get("persenDiskonD").toString()) > 0.0
@ -4550,13 +4521,17 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
double hargaJasaRemun = hargaJasaOperator + hargaJasaAnestesi;
builder.nilai(hargaJasaRemun);
if (isFrontNote) {
builder.keterangan("Total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa operator ("
+ d.get("persenDiskonD").toString() + "%) + diskon jasa anestesi ("
+ d.get("persenDiskonAn").toString() + "%)");
builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator
+ "% ditambah pengalian " + persenRemunAnestesi
+ "% karena diskon komponen operator dan anestesi berturut-turut "
+ d.get("persenDiskonD").toString() + "% dan " + d.get("persenDiskonAn").toString() + "%");
} else {
builder.keterangan(" + total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa operator ("
+ d.get("persenDiskonD").toString() + "%) + diskon jasa anestesi ("
+ d.get("persenDiskonAn").toString() + "%)");
builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator
+ "% ditambah pengalian " + persenRemunAnestesi
+ "% karena diskon komponen operator dan anestesi berturut-turut "
+ d.get("persenDiskonD").toString() + "% dan " + d.get("persenDiskonAn").toString() + "%");
}
} else if (CommonUtil.isNotNullOrEmpty(d.get("persenDiskonAs"))
&& Double.parseDouble(d.get("persenDiskonAs").toString()) > 0.0
@ -4584,13 +4559,17 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
double hargaJasaRemun = hargaJasaAsisten + hargaJasaAnestesi;
builder.nilai(hargaJasaRemun);
if (isFrontNote) {
builder.keterangan("Total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa asisten ("
+ d.get("persenDiskonAs").toString() + "%) + diskon jasa anestesi ("
+ d.get("persenDiskonAn").toString() + "%)");
builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunAsisten
+ "% ditambah pengalian " + persenRemunAnestesi
+ "% karena diskon komponen asisten dan anestesi berturut-turut "
+ d.get("persenDiskonAs").toString() + "% dan " + d.get("persenDiskonAn").toString() + "%");
} else {
builder.keterangan(" + total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa asisten ("
+ d.get("persenDiskonAs").toString() + "%) + diskon jasa anestesi ("
+ d.get("persenDiskonAn").toString() + "%)");
builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunAsisten
+ "% ditambah pengalian " + persenRemunAnestesi
+ "% karena diskon komponen asisten dan anestesi berturut-turut "
+ d.get("persenDiskonAs").toString() + "% dan " + d.get("persenDiskonAn").toString() + "%");
}
} else if (CommonUtil.isNotNullOrEmpty(d.get("persenDiskonD"))
&& Double.parseDouble(d.get("persenDiskonD").toString()) > 0.0
@ -4611,11 +4590,13 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
? Double.parseDouble(d.get("persenDiskonD").toString()) : 0.0);
builder.nilai(persenRemunOperator * hargaJasa / 100);
if (isFrontNote) {
builder.keterangan("Total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa operator ("
+ d.get("persenDiskonD").toString() + "%)");
builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator
+ "% karena diskon komponen operator " + d.get("persenDiskonD").toString() + "%");
} else {
builder.keterangan(" + total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa operator ("
+ d.get("persenDiskonD").toString() + "%)");
builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunOperator
+ "% karena diskon komponen operator " + d.get("persenDiskonD").toString() + "%");
}
} else if (CommonUtil.isNotNullOrEmpty(d.get("persenDiskonAs"))
&& Double.parseDouble(d.get("persenDiskonAs").toString()) > 0.0
@ -4636,11 +4617,13 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
? Double.parseDouble(d.get("persenDiskonAs").toString()) : 0.0);
builder.nilai(persenRemunAsisten * hargaJasa / 100);
if (isFrontNote) {
builder.keterangan("Total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa asisten ("
+ d.get("persenDiskonAs").toString() + "%)");
builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunAsisten
+ "% karena diskon komponen asisten " + d.get("persenDiskonAs").toString() + "%");
} else {
builder.keterangan(" + total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa asisten ("
+ d.get("persenDiskonAs").toString() + "%)");
builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunAsisten
+ "% karena diskon komponen asisten " + d.get("persenDiskonAs").toString() + "%");
}
} else if (CommonUtil.isNotNullOrEmpty(d.get("persenDiskonAn"))
&& Double.parseDouble(d.get("persenDiskonAn").toString()) > 0.0
@ -4661,16 +4644,19 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
? Double.parseDouble(d.get("persenDiskonAn").toString()) : 0.0);
builder.nilai(persenRemunAnestesi * hargaJasa / 100);
if (isFrontNote) {
builder.keterangan("Total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa anestesi ("
+ d.get("persenDiskonAn").toString() + "%)");
builder.keterangan("Dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunAnestesi
+ "% karena diskon komponen anestesi " + d.get("persenDiskonAn").toString() + "%");
} else {
builder.keterangan(" + total diskon jasa (" + nf.format(totalDiskon) + ") + diskon jasa anestesi ("
+ d.get("persenDiskonAn").toString() + "%)");
builder.keterangan(" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon)
+ " terlebih dahulu dan diakhiri dengan pengalian " + persenRemunAnestesi
+ "% karena diskon komponen anestesi " + d.get("persenDiskonAn").toString() + "%");
}
} else {
builder.nilai(persenRemunerasi * hargaJualSetelahDiskon);
if (totalDiskon > 0.0) {
builder.keterangan(" + total diskon jasa (" + nf.format(totalDiskon) + ")");
builder.keterangan(
" dan dari pengurangan tarif dengan diskon " + nf.format(totalDiskon) + " terlebih dahulu");
} else {
builder.keterangan("");
}

View File

@ -2,8 +2,8 @@ jdbc.driver = org.postgresql.Driver
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
hibernate.hbm2ddl = none
hibernate.format_sql = false
hibernate.show_sql = false
hibernate.format_sql = true
hibernate.show_sql = true
hikari.config.maximum.pool.size = 5

View File

@ -0,0 +1,214 @@
package com.jasamedika.medifirst2000.task.schedule;
import com.jasamedika.medifirst2000.dao.*;
import com.jasamedika.medifirst2000.entities.KelompokPasien;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.RekapLogbookDokter;
import com.jasamedika.medifirst2000.service.LogbookRemunService;
import com.jasamedika.medifirst2000.service.PelayananPasienService;
import com.jasamedika.medifirst2000.service.RekapLogbookDokterService;
import com.jasamedika.medifirst2000.service.RemunerasiService;
import com.jasamedika.medifirst2000.util.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.YearMonth;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* @author salmanoe
* @version 1.0.0
* @since 07/11/2023
*/
@Component
public class LogbookTask {
private static final Logger LOGGER = LoggerFactory.getLogger(LogbookTask.class);
@Autowired
private PelayananPasienPetugasDao pelayananPasienPetugasDao;
@Autowired
private RekapLogbookDokterDao rekapLogbookDokterDao;
@Autowired
private PelayananPasienService pelayananPasienService;
@Autowired
private RemunerasiService remunerasiService;
@Autowired
private RekapLogbookDokterService rekapLogbookDokterService;
@Autowired
private LogbookRemunService logbookRemunService;
@Scheduled(cron = "0 0 0 1-6 * ?")
public void saveRekapLogbookDokter() {
LOGGER.info("Start simpan rekapitulasi 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);
{
// Delete untuk pembaharuan data
rekapLogbookDokterService.deleteByPeriod(tglAwal, tglAkhir);
}
Set<Integer> idPegawaiByTglPelayanan = pelayananPasienPetugasDao.findPegawaiByTglPelayanan(tglAwal, tglAkhir);
DateFormat df = new SimpleDateFormat("yyyy-MM");
String bulan = df.format(date);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
YearMonth oct24 = YearMonth.parse("2024-10", formatter);
YearMonth month = YearMonth.parse(bulan, formatter);
List<RekapLogbookDokter> models = new ArrayList<>();
idPegawaiByTglPelayanan.forEach(idPegawai -> {
{
Map<String, Object> kinerjaDokter;
if (month.isBefore(oct24)) {
kinerjaDokter = pelayananPasienService.logbookRemunTarifDokter(idPegawai, bulan, null);
} else {
kinerjaDokter = remunerasiService.logbookRemunTarifDokter(idPegawai, bulan, null);
}
List<Map<String, Object>> remun = (List<Map<String, Object>>) kinerjaDokter.get("data");
List<Integer> listIdKelompokPasien = new ArrayList<>();
remun.forEach(r -> {
if (!listIdKelompokPasien.contains(Integer.parseInt(r.get("idKelompokPasien").toString())))
listIdKelompokPasien.add(Integer.parseInt(r.get("idKelompokPasien").toString()));
});
listIdKelompokPasien.forEach(idKelompokPasien -> {
double jumlah = remun.stream().filter(r -> idKelompokPasien.equals(r.get("idKelompokPasien")))
.mapToDouble(r -> Double.parseDouble(r.get("jumlah").toString())).sum();
double hargaJasa = remun.stream().filter(r -> idKelompokPasien.equals(r.get("idKelompokPasien")))
.mapToDouble(r -> Double.parseDouble(r.get("jumlahHargaJasa").toString())).sum();
RekapLogbookDokter rekapLogbookDokter = new RekapLogbookDokter();
rekapLogbookDokter.setKdProfile((short) 0);
rekapLogbookDokter.setStatusEnabled(true);
Pegawai pegawai = new Pegawai();
pegawai.setId(idPegawai);
rekapLogbookDokter.setPegawai(pegawai);
rekapLogbookDokter.setJenisLogbook("JKN");
KelompokPasien kelompokPasien = new KelompokPasien();
kelompokPasien.setId(idKelompokPasien);
rekapLogbookDokter.setKelompokPasien(kelompokPasien);
rekapLogbookDokter.setBulan(date);
rekapLogbookDokter.setJumlah(jumlah);
rekapLogbookDokter.setCapaian(hargaJasa);
models.add(rekapLogbookDokter);
});
}
{
List<Map<String, Object>> ffs;
if (month.isBefore(oct24)) {
ffs = pelayananPasienService.logbookFfsTarifDokter(idPegawai, bulan, null);
} else {
ffs = remunerasiService.logbookFfsTarifDokter(idPegawai, bulan, null);
}
List<String> listJenisRuangan = new ArrayList<>();
List<Integer> listIdKelompokPasien = new ArrayList<>();
ffs.forEach(r -> {
if (!listJenisRuangan.contains(r.get("jenisRuangan").toString()))
listJenisRuangan.add(r.get("jenisRuangan").toString());
if (!listIdKelompokPasien.contains(Integer.parseInt(r.get("idKelompokPasien").toString())))
listIdKelompokPasien.add(Integer.parseInt(r.get("idKelompokPasien").toString()));
});
listJenisRuangan.forEach(jenisRuangan -> listIdKelompokPasien.forEach(idKelompokPasien -> {
double jumlah = ffs.stream()
.filter(r -> jenisRuangan.equals(r.get("jenisRuangan"))
&& idKelompokPasien.equals(r.get("idKelompokPasien")))
.mapToDouble(r -> Double.parseDouble(r.get("jumlah").toString())).sum();
double hargaJasa = ffs.stream()
.filter(r -> jenisRuangan.equals(r.get("jenisRuangan"))
&& idKelompokPasien.equals(r.get("idKelompokPasien")))
.mapToDouble(r -> Double.parseDouble(r.get("jumlahHargaJasa").toString())).sum();
RekapLogbookDokter rekapLogbookDokter = new RekapLogbookDokter();
rekapLogbookDokter.setKdProfile((short) 0);
rekapLogbookDokter.setStatusEnabled(true);
Pegawai pegawai = new Pegawai();
pegawai.setId(idPegawai);
rekapLogbookDokter.setPegawai(pegawai);
rekapLogbookDokter.setJenisLogbook("NON_JKN");
rekapLogbookDokter.setJenisRuangan(jenisRuangan);
KelompokPasien kelompokPasien = new KelompokPasien();
kelompokPasien.setId(idKelompokPasien);
rekapLogbookDokter.setKelompokPasien(kelompokPasien);
rekapLogbookDokter.setBulan(date);
rekapLogbookDokter.setJumlah(jumlah);
rekapLogbookDokter.setCapaian(hargaJasa);
models.add(rekapLogbookDokter);
}));
}
{
List<Map<String, Object>> fixedPay;
if (month.isBefore(oct24)) {
fixedPay = pelayananPasienService.logbookFixedPayDokter(idPegawai, bulan, null);
} else {
fixedPay = remunerasiService.logbookFixedPayDokter(idPegawai, bulan, null);
}
List<String> listJenisRuangan = new ArrayList<>();
List<Integer> listIdKelompokPasien = new ArrayList<>();
List<String> listBulanIbuPulangRanap = new ArrayList<>();
fixedPay.forEach(r -> {
if (!listJenisRuangan.contains(r.get("jenisRuangan").toString()))
listJenisRuangan.add(r.get("jenisRuangan").toString());
if (!listIdKelompokPasien.contains(Integer.parseInt(r.get("idKelompokPasien").toString())))
listIdKelompokPasien.add(Integer.parseInt(r.get("idKelompokPasien").toString()));
if (!listBulanIbuPulangRanap.contains(r.get("bulanPulangIbu").toString()))
listBulanIbuPulangRanap.add(r.get("bulanPulangIbu").toString());
});
listJenisRuangan.forEach(jenisRuangan -> listIdKelompokPasien
.forEach(idKelompokPasien -> listBulanIbuPulangRanap.forEach(bulanIbuPulangRanap -> {
double jumlah = fixedPay.stream()
.filter(r -> jenisRuangan.equals(r.get("jenisRuangan"))
&& idKelompokPasien.equals(r.get("idKelompokPasien"))
&& bulanIbuPulangRanap.equals(r.get("bulanPulangIbu")))
.mapToDouble(r -> Double.parseDouble(r.get("jumlah").toString())).sum();
double hargaJasa = fixedPay.stream()
.filter(r -> jenisRuangan.equals(r.get("jenisRuangan"))
&& idKelompokPasien.equals(r.get("idKelompokPasien"))
&& bulanIbuPulangRanap.equals(r.get("bulanPulangIbu")))
.mapToDouble(r -> Double.parseDouble(r.get("jumlahHargaJasa").toString())).sum();
RekapLogbookDokter rekapLogbookDokter = new RekapLogbookDokter();
rekapLogbookDokter.setKdProfile((short) 0);
rekapLogbookDokter.setStatusEnabled(true);
Pegawai pegawai = new Pegawai();
pegawai.setId(idPegawai);
rekapLogbookDokter.setPegawai(pegawai);
rekapLogbookDokter.setJenisLogbook("FIXED_PAY");
rekapLogbookDokter.setJenisRuangan(jenisRuangan);
KelompokPasien kelompokPasien = new KelompokPasien();
kelompokPasien.setId(idKelompokPasien);
rekapLogbookDokter.setKelompokPasien(kelompokPasien);
rekapLogbookDokter.setBulanPulangIbu(bulanIbuPulangRanap);
rekapLogbookDokter.setBulan(date);
rekapLogbookDokter.setJumlah(jumlah);
rekapLogbookDokter.setCapaian(hargaJasa);
models.add(rekapLogbookDokter);
})));
}
});
rekapLogbookDokterDao.save(models);
LOGGER.info("Simpan rekapitulasi logbook dokter berhasil...!");
}
/*
@Scheduled(cron = "0 0 0 1-6 * ?")
public void saveRekapDetailLogbookDokter() {
logbookRemunService.generateRecap();
}
*/
@Scheduled(cron = "0 15 0 4-5 * ?")
public void saveRekapDetailLogbookDokter() {
logbookRemunService.generateRecap(null);
}
}

View File

@ -0,0 +1,135 @@
package com.jasamedika.medifirst2000.task.schedule;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.dto.PesertaBpjsDto;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.util.CommonUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import java.net.URI;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import static org.springframework.http.HttpMethod.GET;
import static org.springframework.http.HttpStatus.CREATED;
import static org.springframework.http.HttpStatus.OK;
/**
* @author salmanoe
* @version 1.0.0
* @since 11/10/2023
*/
@Component
public class PasienTask {
private static final Logger LOGGER = LoggerFactory.getLogger(PasienTask.class);
@Autowired
private ObjectMapper objectMapper;
@Autowired
private RestTemplate restTemplate;
@Autowired
private PasienDao pasienDao;
@Scheduled(cron = "0 0 0 * * *")
public void nikPesertaBpjs() {
LOGGER.info("Task PasienTask.nikPesertaBpjs {}", LocalDateTime.now());
adjustNikPesertaBpjs();
}
@Transactional
private void adjustNikPesertaBpjs() {
LOGGER.info("Adjusting NIK Peserta BPJS {}", LocalDateTime.now());
List<PesertaBpjsDto> listDtoUpdate = new ArrayList<>();
List<PesertaBpjsDto> listDtoNotUpdate = new ArrayList<>();
List<Pasien> pasienValidBpjs = pasienDao.findByValidBpjs();
for (Pasien pasien : pasienValidBpjs) {
try {
PesertaBpjsDto pesertaBpjsDto = cekKepesertaan(pasien.getNoBpjs());
if (pesertaBpjsDto.getKdProfile() == 0)
listDtoUpdate.add(pesertaBpjsDto);
if (pesertaBpjsDto.getKdProfile() == 1)
listDtoNotUpdate.add(pesertaBpjsDto);
Thread.sleep((long) (Math.random() * 1000 * 8));
} catch (Exception e) {
LOGGER.error("Error adjusting NIK Peserta BPJS {} -> {}", pasien.getNoBpjs(), e.getMessage());
}
}
{
List<String> listNoKartu = listDtoUpdate.stream().map(PesertaBpjsDto::getNoKartu)
.collect(Collectors.toList());
List<Pasien> availableValid = pasienValidBpjs.stream()
.filter(pasien -> listNoKartu.contains(pasien.getNoBpjs())).collect(Collectors.toList());
availableValid.forEach(pasien -> {
Optional<PesertaBpjsDto> first = listDtoUpdate.stream()
.filter(dto -> pasien.getNoBpjs().equals(dto.getNoKartu())).findFirst();
first.ifPresent(dto -> {
pasien.setKdProfile(dto.getKdProfile());
pasien.setNoIdentitas(dto.getNik());
});
});
if (CommonUtil.isNotNullOrEmpty(availableValid)) {
LOGGER.info("Save available valid data");
pasienDao.save(availableValid);
}
}
{
List<String> listNoKartu = listDtoNotUpdate.stream().map(PesertaBpjsDto::getNoKartu)
.collect(Collectors.toList());
List<Pasien> availableValid = pasienValidBpjs.stream()
.filter(pasien -> listNoKartu.contains(pasien.getNoBpjs())).collect(Collectors.toList());
availableValid.forEach(pasien -> {
Optional<PesertaBpjsDto> first = listDtoNotUpdate.stream()
.filter(dto -> pasien.getNoBpjs().equals(dto.getNoKartu())).findFirst();
first.ifPresent(dto -> pasien.setKdProfile(dto.getKdProfile()));
});
if (CommonUtil.isNotNullOrEmpty(availableValid)) {
LOGGER.info("Flag kdProfile can not update");
pasienDao.save(availableValid);
}
}
}
private PesertaBpjsDto cekKepesertaan(String noKartu) {
try {
LOGGER.info("Cek kepesertaan BPJS {} {}", noKartu, LocalDateTime.now());
URI uri = new URI("https://daftar.rsabhk.co.id/api/data/pasien/jaminan/bpjs/cek-kepesertaan/" + noKartu);
HttpEntity<Object> request = new HttpEntity<>(null);
ResponseEntity<Object> response = restTemplate.exchange(uri, GET, request, Object.class);
if (OK.equals(response.getStatusCode()) || CREATED.equals(response.getStatusCode())) {
Map<String, Object> responseBody = objectMapper.convertValue(response.getBody(), Map.class);
Map<String, Object> responseMap = objectMapper.convertValue(responseBody.get("response"),
HashMap.class);
Map<String, Object> responsePeserta = objectMapper.convertValue(responseMap.get("peserta"),
HashMap.class);
return PesertaBpjsDto.builder().noKartu(responsePeserta.get("noKartu").toString())
.nik(responsePeserta.get("nik").toString()).kdProfile((short) 0).build();
} else {
LOGGER.error("Error handshake cek kepesertaan BPJS {}", response.getStatusCode().getReasonPhrase());
return PesertaBpjsDto.builder().noKartu(noKartu).kdProfile((short) 1).build();
}
} catch (Exception e) {
LOGGER.error("Error cek kepesertaan BPJS {}", e.getMessage());
return PesertaBpjsDto.builder().noKartu(noKartu).kdProfile((short) 1).build();
}
}
}

View File

@ -0,0 +1,39 @@
package com.jasamedika.medifirst2000.task.schedule.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.web.client.RestTemplate;
/**
* @author Salman
* @since 12 Jul 2023
*/
@Configuration
@EnableScheduling
@ComponentScan("com.jasamedika.medifirst2000.task")
public class ScheduleTaskConfig {
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(75);
threadPoolTaskScheduler.setThreadNamePrefix("PelayananThreadPoolTaskScheduler");
return threadPoolTaskScheduler;
}
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

View File

@ -15,7 +15,7 @@
</context-param>
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>development</param-value>
<param-value>pelayanan</param-value>
</context-param>
<listener>

View File

@ -15,7 +15,7 @@
</context-param>
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>development</param-value>
<param-value>mirroring</param-value>
</context-param>
<listener>

View File

@ -0,0 +1,55 @@
package com.jasamedika.medifirst2000.task.schedule;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.jasamedika.medifirst2000.service.KalenderService;
import com.jasamedika.medifirst2000.service.PegawaiJadwalKerjaService;
import com.jasamedika.medifirst2000.service.SlipGajiService;
/**
* @author Salman
* @since 12 Jul 2023
*/
@Component
public class ScheduleTask {
private static final Logger LOGGER = LoggerFactory.getLogger(ScheduleTask.class);
@Autowired
private KalenderService kalenderService;
@Autowired
private PegawaiJadwalKerjaService pegawaiJadwalKerjaService;
@Autowired
private SlipGajiService slipGajiService;
@Scheduled(cron = "0 0 23 30 6 ?")
public void generateKalender() {
LOGGER.info("Generate kalender tahun {}",
LocalDate.now().plusYears(1).format(DateTimeFormatter.ofPattern("yyyy")));
kalenderService.generateAndSaveKalender();
}
@Scheduled(cron = "0 0 0 1 * ?")
public void genarateJadwalPegawaiNonShift() {
LOGGER.info("Generate jadwal pegawai bulan {}", LocalDate.now().format(DateTimeFormatter.ofPattern("MM-yyyy")));
pegawaiJadwalKerjaService.autoSaveJadwalKerjaNonShift();
}
@Scheduled(cron = "0 0 0 1 * ?")
public void templateSlipGajiTask() {
LOGGER.info("Initiate template slip gaji bulan {}",
LocalDate.now().format(DateTimeFormatter.ofPattern("MM-yyyy")));
slipGajiService.init();
}
}

View File

@ -0,0 +1,27 @@
package com.jasamedika.medifirst2000.task.schedule.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
/**
* @author Salman
* @since 12 Jul 2023
*/
@Configuration
@EnableScheduling
@ComponentScan("com.jasamedika.medifirst2000.task")
public class ScheduleTaskConfig {
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(5);
threadPoolTaskScheduler.setThreadNamePrefix("SdmThreadPoolTaskScheduler");
return threadPoolTaskScheduler;
}
}

View File

@ -15,7 +15,7 @@
</context-param>
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>development</param-value>
<param-value>sdm</param-value>
</context-param>
<listener>

View File

@ -15,7 +15,7 @@
</context-param>
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>development</param-value>
<param-value>web</param-value>
</context-param>
<listener>