Update BatalRegistrasiService

Pembuatan service bridging simpan batal registrasi di smart dari batal antrean online bpjs
This commit is contained in:
salmanoe 2023-02-15 21:13:53 +07:00
parent 90e54b9c66
commit 137245493e
11 changed files with 206 additions and 110 deletions

View File

@ -34,6 +34,7 @@ import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.dao.PegawaiDao;
import com.jasamedika.medifirst2000.dao.PendidikanDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.dto.BatalRegistrasiDto;
import com.jasamedika.medifirst2000.dto.RegistrasiPasienDto;
import com.jasamedika.medifirst2000.entities.AntrianPasienRegistrasi;
import com.jasamedika.medifirst2000.entities.JadwalDokter;
@ -45,6 +46,7 @@ import com.jasamedika.medifirst2000.entities.Pendidikan;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.enums.TipePasienEnum;
import com.jasamedika.medifirst2000.service.AntrianPasienDiPeriksaService;
import com.jasamedika.medifirst2000.service.BatalRegistrasiService;
import com.jasamedika.medifirst2000.service.JadwalDokterService;
import com.jasamedika.medifirst2000.service.ModelService;
import com.jasamedika.medifirst2000.service.PasienDaftarService;
@ -129,6 +131,9 @@ public class BridgingDaftarOnlineController {
@Autowired
private AntrianPasienDiPeriksaService antrianService;
@Autowired
private BatalRegistrasiService batalRegistrasiService;
@RequestMapping(value = "/klinik_rs", method = RequestMethod.GET, produces = { MediaType.APPLICATION_XML_VALUE })
public BridgeDaftarKlinikListVO daftarKlinikRs() {
BridgeDaftarKlinikListVO y = new BridgeDaftarKlinikListVO();
@ -742,4 +747,15 @@ public class BridgingDaftarOnlineController {
Integer countantrean = antrianService.countSisaAntrian(idRuangan, estimasiDilayani);
return new ResponseEntity<>(countantrean, HttpStatus.OK);
}
@RequestMapping(value = "/bpjs/antrian/batal", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Object> batalAntrian(@RequestBody BatalRegistrasiDto dto) {
try {
Map<String, Object> result = batalRegistrasiService.batalAntrian(dto);
return new ResponseEntity<>(result, HttpStatus.CREATED);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}

View File

@ -442,4 +442,8 @@ public class Master {
public static final Integer KSM_LAIN = 61;
public static final Integer KSM_UMUM = 62;
}
public static final class User {
public static final Integer MOBILE_JKN = 3;
}
}

View File

@ -30,9 +30,6 @@ public interface AntrianPasienDiPeriksaDao extends PagingAndSortingRepository<An
@Query("select p from AntrianPasienDiPeriksa p where p.pasienDaftar.noRegistrasi=:noRegistrasi and p.ruangan.departemen.id in (Select cast(s.nilaiField as int) from SettingDataFixed s where s.namaField='KdDepartemenInstalasiRawatInap' ) ")
List<AntrianPasienDiPeriksa> findByNoRegisterRawatInap(@Param("noRegistrasi") String noRegistrasi);
@Query("select p from AntrianPasienDiPeriksa p where p.pasienDaftar.noRegistrasi=:noRegistrasi ")
List<AntrianPasienDiPeriksa> findByNoRegisterList(@Param("noRegistrasi") String noRegistrasi);
@Query("select p from AntrianPasienDiPeriksa p where p.pasienDaftar.noRegistrasi=:noRegistrasi and date(p.tglRegistrasi)=:dateNow and p.ruangan.id=:idRuangan")
AntrianPasienDiPeriksa findByNoRegisterKdRuanganAndTanggal(@Param("noRegistrasi") String noRegistrasi,
@Param("dateNow") Date dateNow, @Param("idRuangan") Integer idRuangan);

View File

@ -12,35 +12,23 @@ import com.jasamedika.medifirst2000.entities.BatalRegistrasi;
@Repository("BatalRegistrasiDao")
public interface BatalRegistrasiDao extends PagingAndSortingRepository<BatalRegistrasi, String> {
@Query(" select batal.noRec "+
"from BatalRegistrasi batal "+
"left join batal.pasienDaftar pasienDaftar "+
"where pasienDaftar.noRec = :noRec ")
@Query(" select batal.noRec " + "from BatalRegistrasi batal " + "left join batal.pasienDaftar pasienDaftar "
+ "where pasienDaftar.noRec = :noRec ")
public List<String> findBatalRegistrasi(@Param("noRec") String noRec);
@Query(" select new map (pelayanan.noRec as noRec, struk.nostruk as noStruk, sbm.nosbm as noSbm) "+
"from PelayananPasien pelayanan "+
"left join pelayanan.pasienDaftar antrian "+
"left join antrian.pasienDaftar pasienDaftar "+
"left join pelayanan.strukPelayanan struk "+
"left join struk.nosbmlast sbm "+
"where pasienDaftar.noRec = :noRec ")
public List<Map<String,Object>> findPasienInPelayananPasien(@Param("noRec") String noRec);
@Query(" select new map (batal.alasanPembatalan as alasan, "+
"to_char(batal.tanggalPembatalan, 'dd-mm-yyyy HH:mm') as tanggalPembatalan, "+
"pembatal.name as pembatal, "+
"pembatal.id as idPembatal, "+
"pegawai.namaLengkap as pegawai, "+
"pegawai.id as idPegawai, "+
"pasienDaftar.noRec as noRecPasienDaftar) "+
"from BatalRegistrasi batal "+
"left join batal.pembatalan pembatal "+
"left join batal.pegawai pegawai "+
"left join batal.pasienDaftar pasienDaftar "+
"where to_char(batal.tanggalPembatalan, 'dd-mm-yyyy') between :startDate and :endDate ")
public List<Map<String,Object>> findPembatalan(@Param("startDate") String startDate,@Param("endDate") String endDate);
@Query(" select new map (pelayanan.noRec as noRec, struk.nostruk as noStruk, sbm.nosbm as noSbm) "
+ "from PelayananPasien pelayanan " + "left join pelayanan.pasienDaftar antrian "
+ "left join antrian.pasienDaftar pasienDaftar " + "left join pelayanan.strukPelayanan struk "
+ "left join struk.nosbmlast sbm " + "where pasienDaftar.noRec = :noRec ")
public List<Map<String, Object>> findPasienInPelayananPasien(@Param("noRec") String noRec);
@Query(" select new map (batal.alasanPembatalan as alasan, "
+ "to_char(batal.tanggalPembatalan, 'dd-mm-yyyy HH:mm') as tanggalPembatalan, "
+ "pembatal.name as pembatal, " + "pembatal.id as idPembatal, " + "pegawai.namaLengkap as pegawai, "
+ "pegawai.id as idPegawai, " + "pasienDaftar.noRec as noRecPasienDaftar) " + "from BatalRegistrasi batal "
+ "left join batal.pembatalan pembatal " + "left join batal.pegawai pegawai "
+ "left join batal.pasienDaftar pasienDaftar "
+ "where to_char(batal.tanggalPembatalan, 'dd-mm-yyyy') between :startDate and :endDate ")
public List<Map<String, Object>> findPembatalan(@Param("startDate") String startDate,
@Param("endDate") String endDate);
}

View File

@ -0,0 +1,15 @@
package com.jasamedika.medifirst2000.dao;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.Pembatal;
/**
* @author salmanoe
* @since Feb 15, 2023
*/
@Repository("pembatalDao")
public interface PembatalDao extends PagingAndSortingRepository<Pembatal, Integer> {
}

View File

@ -1,12 +1,18 @@
package com.jasamedika.medifirst2000.service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.dto.BatalRegistrasiDto;
import com.jasamedika.medifirst2000.vo.BatalRegistrasiVO;
public interface BatalRegistrasiService {
Map<String,Object> saveBatalRegistrasi(BatalRegistrasiVO vo);
List<Map<String,Object>> getBatalRegistrasi(String startDate, String endDate);
Map<String,Object> updateStatusEnable(String noRec);
Map<String, Object> saveBatalRegistrasi(BatalRegistrasiVO vo);
List<Map<String, Object>> getBatalRegistrasi(String startDate, String endDate);
Map<String, Object> updateStatusEnable(String noRec, Date tglBatal);
Map<String, Object> batalAntrian(BatalRegistrasiDto dto);
}

View File

@ -1,6 +1,7 @@
package com.jasamedika.medifirst2000.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -8,10 +9,13 @@ import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.jasamedika.medifirst2000.constants.Master;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.AntrianPasienDiPeriksaDao;
import com.jasamedika.medifirst2000.dao.BatalRegistrasiDao;
import com.jasamedika.medifirst2000.dao.PasienDaftarDao;
import com.jasamedika.medifirst2000.dao.PembatalDao;
import com.jasamedika.medifirst2000.dto.BatalRegistrasiDto;
import com.jasamedika.medifirst2000.entities.AntrianPasienDiPeriksa;
import com.jasamedika.medifirst2000.entities.BatalRegistrasi;
import com.jasamedika.medifirst2000.entities.PasienDaftar;
@ -26,111 +30,144 @@ import com.jasamedika.medifirst2000.vo.PembatalVO;
@Service("BatalRegistrasiService")
public class BatalRegistrasiServiceImpl extends BaseVoServiceImpl implements BatalRegistrasiService {
@Autowired
private BaseConverterImpl<PegawaiVO, Pegawai> pegawaiConverter;
@Autowired
private BaseConverterImpl<PasienDaftarVO, PasienDaftar> pasienDaftarConverter;
@Autowired
private BaseConverterImpl<PembatalVO, Pembatal> pembatalConverter;
@Autowired
private BaseConverterImpl<BatalRegistrasiVO, BatalRegistrasi> batalRegistrasiConverter;
@Autowired
private AntrianPasienDiPeriksaDao antrianPasienDiPeriksaDao;
@Autowired
private BatalRegistrasiDao batalRegistrasiDao;
@Autowired
private PasienDaftarDao pasienDaftarDao;
@Autowired
private PembatalDao pembatalDao;
@Override
public Map<String, Object> saveBatalRegistrasi(BatalRegistrasiVO vo) {
Map<String, Object> result = new HashMap<String, Object>();
if(CommonUtil.isNotNullOrEmpty(vo))
{
if(CommonUtil.isNotNullOrEmpty(vo.getPasienDaftar()))
{
List<Map<String, Object>> data = batalRegistrasiDao.findPasienInPelayananPasien(vo.getPasienDaftar().getNoRec());
if(CommonUtil.isNullOrEmpty(data))
{
if (CommonUtil.isNotNullOrEmpty(vo)) {
if (CommonUtil.isNotNullOrEmpty(vo.getPasienDaftar())) {
List<Map<String, Object>> data = batalRegistrasiDao
.findPasienInPelayananPasien(vo.getPasienDaftar().getNoRec());
if (CommonUtil.isNullOrEmpty(data)) {
result = addBatalRegistrasi(vo);
}
else if(CommonUtil.isNotNullOrEmpty(data))
{
if(CommonUtil.isNullOrEmpty(data.get(0).get("noStruk")))
{
} else if (CommonUtil.isNotNullOrEmpty(data)) {
if (CommonUtil.isNullOrEmpty(data.get(0).get("noStruk"))) {
result = addBatalRegistrasi(vo);
}
if(CommonUtil.isNotNullOrEmpty(data.get(0).get("noStruk")) && (CommonUtil.isNotNullOrEmpty(data.get(0).get("noSbm"))))
{
if (CommonUtil.isNotNullOrEmpty(data.get(0).get("noStruk"))
&& (CommonUtil.isNotNullOrEmpty(data.get(0).get("noSbm")))) {
result.put("message", "Pasien Sudah Melakukan Pembayaran");
}
else if (CommonUtil.isNotNullOrEmpty(data.get(0).get("noStruk")))
{
} else if (CommonUtil.isNotNullOrEmpty(data.get(0).get("noStruk"))) {
result.put("message", "Pelayanan Sudah di Verifikasi");
}
}
}
}
}
return result;
}
public Map<String, Object> addBatalRegistrasi(BatalRegistrasiVO vo) {
Map<String, Object> result = new HashMap<String, Object>();
BatalRegistrasi batalRegistrasi = batalRegistrasiConverter.transferVOToModel(vo, new BatalRegistrasi());
PasienDaftar pasien = pasienDaftarConverter.transferVOToModel(vo.getPasienDaftar(), new PasienDaftar());
batalRegistrasi.setPasienDaftar(pasien);
if(CommonUtil.isNotNullOrEmpty(vo.getPembatalan()))
{
if (CommonUtil.isNotNullOrEmpty(vo.getPembatalan())) {
Pembatal pembatal = pembatalConverter.transferVOToModel(vo.getPembatalan(), new Pembatal());
batalRegistrasi.setPembatalan(pembatal);
}
if(CommonUtil.isNotNullOrEmpty(vo.getPegawai()))
{
if (CommonUtil.isNotNullOrEmpty(vo.getPegawai())) {
Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai());
batalRegistrasi.setPegawai(pegawai);
}
}
List<String> batal = batalRegistrasiDao.findBatalRegistrasi(vo.getPasienDaftar().getNoRec());
if(CommonUtil.isNullOrEmpty(batal))
{
if(CommonUtil.isNotNullOrEmpty(batalRegistrasi) )
{
if (CommonUtil.isNullOrEmpty(batal)) {
if (CommonUtil.isNotNullOrEmpty(batalRegistrasi)) {
BatalRegistrasi model = batalRegistrasiDao.save(batalRegistrasi);
result = updateStatusEnable(vo.getPasienDaftar().getNoRec());
result = updateStatusEnable(vo.getPasienDaftar().getNoRec(), vo.getTanggalPembatalan());
result.put("norecBatalRegistrasi", model.getNoRec());
}
}
return result;
}
return result;
}
@Override
public List<Map<String,Object>> getBatalRegistrasi(String startDate, String endDate) {
List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
public List<Map<String, Object>> getBatalRegistrasi(String startDate, String endDate) {
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
result = batalRegistrasiDao.findPembatalan(startDate, endDate);
return result;
}
@Override
public Map<String,Object> updateStatusEnable(String noRec)
{
Map<String,Object> result = new HashMap<String,Object>();
String noRegistrasi = pasienDaftarDao.findNoRegistrasi(noRec);
List<AntrianPasienDiPeriksa> listAntrian = antrianPasienDiPeriksaDao.findByNoRegister(noRegistrasi);
for(AntrianPasienDiPeriksa antrian :listAntrian)
public Map<String, Object> updateStatusEnable(String noRec, Date tglBatal) {
Map<String, Object> result = new HashMap<String, Object>();
PasienDaftar pasienDaftar = pasienDaftarDao.finByPasienDaftariId(noRec);
{
pasienDaftar.setKdProfile((short) 0);
pasienDaftar.setStatusEnabled(false);
pasienDaftar.setTglPulang(tglBatal);
pasienDaftarDao.save(pasienDaftar);
}
List<AntrianPasienDiPeriksa> listAntrian = antrianPasienDiPeriksaDao
.findByNoRegister(pasienDaftar.getNoRegistrasi());
for (AntrianPasienDiPeriksa antrian : listAntrian) {
antrian.setStatusEnabled(false);
AntrianPasienDiPeriksa newModel = antrianPasienDiPeriksaDao.save(antrian);
result.put(newModel.getNoRec(), newModel.getStatusEnabled());
}
return result;
}
@Override
public Map<String, Object> batalAntrian(BatalRegistrasiDto dto) {
Map<String, Object> result = new HashMap<>();
{
result.put("exists", true);
result.put("services", false);
result.put("exception", true);
}
PasienDaftar pasienDaftar = pasienDaftarDao.findByNoRegistrasi(dto.getNoRegistrasi());
if (CommonUtil.isNullOrEmpty(pasienDaftar))
result.put("exists", false);
if (CommonUtil.isNotNullOrEmpty(pasienDaftar)) {
List<Map<String, Object>> data = batalRegistrasiDao.findPasienInPelayananPasien(pasienDaftar.getNoRec());
if (CommonUtil.isNotNullOrEmpty(data) && data.size() > 0)
result.put("services", true);
BatalRegistrasi batalRegistrasi = new BatalRegistrasi();
batalRegistrasi.setKdProfile((short) 4);
batalRegistrasi.setStatusEnabled(true);
batalRegistrasi.setPasienDaftar(pasienDaftar);
Pembatal pembatal = pembatalDao.findOne(Master.User.MOBILE_JKN);
batalRegistrasi.setPembatalan(pembatal);
batalRegistrasi.setTanggalPembatalan(dto.getTanggalBatal());
batalRegistrasi.setAlasanPembatalan(dto.getAlasanBatal());
batalRegistrasiDao.save(batalRegistrasi);
{
pasienDaftar.setStatusEnabled(false);
pasienDaftar.setTglPulang(dto.getTanggalBatal());
pasienDaftarDao.save(pasienDaftar);
}
{
List<AntrianPasienDiPeriksa> listAntrian = antrianPasienDiPeriksaDao
.findByNoRegister(dto.getNoRegistrasi());
listAntrian.forEach(a -> a.setStatusEnabled(false));
antrianPasienDiPeriksaDao.save(listAntrian);
}
}
result.put("exception", false);
return result;
}
}

View File

@ -0,0 +1,39 @@
package com.jasamedika.medifirst2000.dto;
import java.util.Date;
/**
* @author salmanoe
* @since Feb 15, 2023
*/
public class BatalRegistrasiDto {
private String noRegistrasi;
private Date tanggalBatal;
private String alasanBatal;
public String getNoRegistrasi() {
return noRegistrasi;
}
public void setNoRegistrasi(String noRegistrasi) {
this.noRegistrasi = noRegistrasi;
}
public Date getTanggalBatal() {
return tanggalBatal;
}
public void setTanggalBatal(Date tanggalBatal) {
this.tanggalBatal = tanggalBatal;
}
public String getAlasanBatal() {
return alasanBatal;
}
public void setAlasanBatal(String alasanBatal) {
this.alasanBatal = alasanBatal;
}
}

View File

@ -15,38 +15,38 @@ import com.jasamedika.medifirst2000.helper.Caption;
@Entity
@Table(name = "BatalRegistrasi_T")
public class BatalRegistrasi extends BaseTransaction {
private static final long serialVersionUID = 8715467896949289924L;
@ManyToOne
@JoinColumn(name = "PasienDaftarFK")
@NotNull(message = "PasienDaftar Harus Diisi")
@Caption(value = "PasienDaftar")
private PasienDaftar pasienDaftar;
@Column(name = "PasienDaftarFK", insertable=false,updatable=false,nullable=true)
@Column(name = "PasienDaftarFK", insertable = false, updatable = false, nullable = true)
private String pasienDaftarId;
@ManyToOne
@JoinColumn(name = "PegawaiFk")
@NotNull(message = "Pegawai Harus Diisi")
@Caption(value = "Pegawai")
private Pegawai pegawai;
@Column(name = "PegawaiFk", insertable=false,updatable=false,nullable=true)
@Column(name = "PegawaiFk", insertable = false, updatable = false, nullable = true)
private Integer pegawaiId;
@ManyToOne
@JoinColumn(name = "PembatalanFK")
@NotNull(message = "Pembatalan Harus Diisi")
@Caption(value = "Pembatalan")
private Pembatal pembatalan;
@Column(name = "PembatalanFK", insertable=false,updatable=false,nullable=true)
@Column(name = "PembatalanFK", insertable = false, updatable = false, nullable = true)
private Integer pembatalanId;
@Column(name = "TanggalPembatalan", nullable = false, length = 100)
@Caption(value = "TanggalPembatalan")
private Date tanggalPembatalan;
@Column(name = "alasanPembatalan", nullable = false, length = 100)
@Caption(value = "alasanPembatalan")
private String alasanPembatalan;
@ -114,5 +114,4 @@ public class BatalRegistrasi extends BaseTransaction {
public void setAlasanPembatalan(String alasanPembatalan) {
this.alasanPembatalan = alasanPembatalan;
}
}

View File

@ -6,7 +6,6 @@ import java.util.Date;
import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO;
public class BatalRegistrasiVO extends BaseTransactionVO {
private PasienDaftarVO pasienDaftar;
private PegawaiVO pegawai;
@ -56,5 +55,4 @@ public class BatalRegistrasiVO extends BaseTransactionVO {
public void setAlasanPembatalan(String alasanPembatalan) {
this.alasanPembatalan = alasanPembatalan;
}
}

View File

@ -1,7 +1,6 @@
package com.jasamedika.medifirst2000.controller;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -28,31 +27,29 @@ import com.jasamedika.medifirst2000.controller.base.LocaleController;
import com.jasamedika.medifirst2000.core.web.WebConstants;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.BatalRegistrasiService;
import com.jasamedika.medifirst2000.service.PemakaianAsuransiService;
import com.jasamedika.medifirst2000.util.rest.RestUtil;
import com.jasamedika.medifirst2000.vo.BatalRegistrasiVO;
import com.jasamedika.medifirst2000.vo.PemakaianAsuransiVO;
@RestController
@RequestMapping("/batalRegistrasi")
public class BatalRegistrasiController extends LocaleController<BatalRegistrasiVO> {
@Autowired
private BatalRegistrasiService batalRegistrasiService;
private static final Logger LOGGER = LoggerFactory.getLogger(RegistrasiPelayananController.class);
@RequestMapping(value = "/save-pembatalan-registrasi", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> savePembatalanRegistrasi(@Valid @RequestBody BatalRegistrasiVO vo,
HttpServletRequest request) throws ParseException {
try {
Map<String, String> mapHeaderMessage = new HashMap<String, String>();
Map<String, Object> result = batalRegistrasiService.saveBatalRegistrasi(vo);
if (null != result)
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
mapHeaderMessage.put("message", result.get("message")+"");
mapHeaderMessage.put("message", result.get("message") + "");
return RestUtil.getJsonResponse(result, HttpStatus.CREATED, mapHeaderMessage);
} catch (ServiceVOException e) {
@ -66,10 +63,10 @@ public class BatalRegistrasiController extends LocaleController<BatalRegistrasiV
}
}
@RequestMapping(value = "/get-pembatalan/{startDate}/{endDate}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Map<String, Object>>> getObservasi( @PathVariable("startDate") String startDate,@PathVariable("endDate") String endDate,
HttpServletRequest request) {
public ResponseEntity<List<Map<String, Object>>> getObservasi(@PathVariable("startDate") String startDate,
@PathVariable("endDate") String endDate, HttpServletRequest request) {
List<Map<String, Object>> result = null;
try {