Update service migrasi pasien

Pembuatan subrutin asuransi pasien dan api ekstrasi dan transformasi
This commit is contained in:
Salman Manoe 2023-11-23 13:32:39 +07:00
parent 4613fe9cb1
commit f58a1dcade
7 changed files with 87 additions and 53 deletions

View File

@ -1,15 +1,17 @@
package com.jasamedika.medifirst2000.controller; package com.jasamedika.medifirst2000.controller;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; import com.jasamedika.medifirst2000.etl.pasien.dto.PasienDto;
import static org.springframework.web.bind.annotation.RequestMethod.GET; import com.jasamedika.medifirst2000.service.MigrasiPasienService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.jasamedika.medifirst2000.service.MigrasiPasienService; import java.util.List;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
/** /**
* @author Salman * @author Salman
@ -19,6 +21,7 @@ import com.jasamedika.medifirst2000.service.MigrasiPasienService;
@RestController @RestController
@RequestMapping("/migrasi/pasien") @RequestMapping("/migrasi/pasien")
public class MigrasiPasienController { public class MigrasiPasienController {
@Autowired @Autowired
private MigrasiPasienService migrasiPasienService; private MigrasiPasienService migrasiPasienService;
@ -27,4 +30,10 @@ public class MigrasiPasienController {
migrasiPasienService.init(); migrasiPasienService.init();
return new ResponseEntity<>(null, HttpStatus.OK); return new ResponseEntity<>(null, HttpStatus.OK);
} }
@RequestMapping(value = "/extraction/transformation", method = GET, produces = APPLICATION_JSON_VALUE)
public ResponseEntity<Object> extractAndTransform() {
List<PasienDto> dto = migrasiPasienService.extractAndTransform();
return new ResponseEntity<>(dto, HttpStatus.OK);
}
} }

View File

@ -4,6 +4,8 @@ import com.jasamedika.medifirst2000.entities.MigrasiPasien;
import com.jasamedika.medifirst2000.entities.Pasien; import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi; import com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List; import java.util.List;
@ -13,5 +15,6 @@ import java.util.List;
* @since 06/11/2023 * @since 06/11/2023
*/ */
public interface MigrasiPasienDao extends JpaRepository<MigrasiPasien, String> { public interface MigrasiPasienDao extends JpaRepository<MigrasiPasien, String> {
List<Pasien> findPasienByStatusMigrasiIn(List<StatusMigrasi> statusMigrasiList); @Query("select mp.pasien from MigrasiPasien mp where mp.statusMigrasi in (:listStatusMigrasi)")
List<Pasien> findPasienByStatusMigrasiIn(@Param("listStatusMigrasi") List<StatusMigrasi> statusMigrasiList);
} }

View File

@ -12,5 +12,5 @@ import java.util.List;
public interface MigrasiPasienService { public interface MigrasiPasienService {
void init(); void init();
List<PasienDto> sendToNewDb(); List<PasienDto> extractAndTransform();
} }

View File

@ -6,7 +6,8 @@ import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi; import com.jasamedika.medifirst2000.etl.pasien.constant.StatusMigrasi;
import com.jasamedika.medifirst2000.etl.pasien.dto.*; import com.jasamedika.medifirst2000.etl.pasien.dto.*;
import com.jasamedika.medifirst2000.service.MigrasiPasienService; import com.jasamedika.medifirst2000.service.MigrasiPasienService;
import org.apache.commons.lang3.math.NumberUtils; import com.jasamedika.medifirst2000.util.CommonUtil;
import org.apache.commons.lang.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -70,7 +71,7 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
} }
@Override @Override
public List<PasienDto> sendToNewDb() { public List<PasienDto> extractAndTransform() {
List<StatusMigrasi> statusMigrasiList = new ArrayList<>(Arrays.asList(BELUM_KIRIM, PEMBAHARUAN)); List<StatusMigrasi> statusMigrasiList = new ArrayList<>(Arrays.asList(BELUM_KIRIM, PEMBAHARUAN));
List<Pasien> listPasien = migrasiPasienDao.findPasienByStatusMigrasiIn(statusMigrasiList); List<Pasien> listPasien = migrasiPasienDao.findPasienByStatusMigrasiIn(statusMigrasiList);
List<Integer> listIdPasien = listPasien.stream().map(Pasien::getId).collect(Collectors.toList()); List<Integer> listIdPasien = listPasien.stream().map(Pasien::getId).collect(Collectors.toList());
@ -87,35 +88,47 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
dtoBuilder.namaLengkap(pasien.getNamaPasien()); dtoBuilder.namaLengkap(pasien.getNamaPasien());
dtoBuilder.namaPanggilan(pasien.getNamaDepan()); dtoBuilder.namaPanggilan(pasien.getNamaDepan());
dtoBuilder.tempatLahir(pasien.getTempatLahir()); dtoBuilder.tempatLahir(pasien.getTempatLahir());
dtoBuilder.tanggalLahir(pasien.getTglLahir().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); if (CommonUtil.isNotNullOrEmpty(pasien.getTglLahir()))
dtoBuilder.tanggalLahir(
pasien.getTglLahir().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
dtoBuilder.surel(pasien.getEmail()); dtoBuilder.surel(pasien.getEmail());
dtoBuilder.sapaan(SapaanDto.builder().id(pasien.getTitlePasienId().longValue()).build()); if (CommonUtil.isNotNullOrEmpty(pasien.getTitlePasienId()))
dtoBuilder.sapaan(SapaanDto.builder().id(pasien.getTitlePasienId().longValue()).build());
dtoBuilder.identitas(new HashSet<>(Collections.singletonList( dtoBuilder.identitas(new HashSet<>(Collections.singletonList(
IdentitasDto.builder().jenisIdentitas(JenisIdentitasDto.builder().id(KTP.id()).build()) IdentitasDto.builder().jenisIdentitas(JenisIdentitasDto.builder().id(KTP.id()).build())
.noIdentitas(pasien.getNoIdentitas()).build()))); .noIdentitas(pasien.getNoIdentitas()).build())));
dtoBuilder.jenisKelamin(JenisKelaminDto.builder().id(pasien.getJenisKelaminId().longValue()).build()); if (CommonUtil.isNotNullOrEmpty(pasien.getJenisKelaminId()))
dtoBuilder.golonganDarah(GolonganDarahDto.builder().id(pasien.getGolonganDarahId().longValue()).build()); dtoBuilder.jenisKelamin(JenisKelaminDto.builder().id(pasien.getJenisKelaminId().longValue()).build());
if (CommonUtil.isNotNullOrEmpty(pasien.getGolonganDarahId()))
dtoBuilder
.golonganDarah(GolonganDarahDto.builder().id(pasien.getGolonganDarahId().longValue()).build());
listCaraMeninggal.stream().filter(c -> pasien.getId().equals(c.get("idPasien"))).findFirst() listCaraMeninggal.stream().filter(c -> pasien.getId().equals(c.get("idPasien"))).findFirst()
.ifPresent(c -> { .ifPresent(c -> {
if (Master.CaraMeninggal.BAWAH_DAN_48_JAM.equals(c.get("idPenyebabKematian"))) if (CommonUtil.isNotNullOrEmpty(c.get("idPenyebabKematian"))) {
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BAWAH_DAN_48_JAM.id()).build()); if (Master.CaraMeninggal.BAWAH_DAN_48_JAM.equals(c.get("idPenyebabKematian")))
if (Master.CaraMeninggal.ATAS_48_JAM.equals(c.get("idPenyebabKematian"))) dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BAWAH_DAN_48_JAM.id()).build());
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(ATAS_48_JAM.id()).build()); if (Master.CaraMeninggal.ATAS_48_JAM.equals(c.get("idPenyebabKematian")))
if (Master.CaraMeninggal.BAWAH_DAN_8_JAM.equals(c.get("idPenyebabKematian"))) dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(ATAS_48_JAM.id()).build());
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BAWAH_DAN_8_JAM.id()).build()); if (Master.CaraMeninggal.BAWAH_DAN_8_JAM.equals(c.get("idPenyebabKematian")))
if (Master.CaraMeninggal.ATAS_8_JAM.equals(c.get("idPenyebabKematian"))) dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BAWAH_DAN_8_JAM.id()).build());
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(ATAS_8_JAM.id()).build()); if (Master.CaraMeninggal.ATAS_8_JAM.equals(c.get("idPenyebabKematian")))
if (Master.CaraMeninggal.DOA.equals(c.get("idPenyebabKematian"))) dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(ATAS_8_JAM.id()).build());
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(DOA.id()).build()); if (Master.CaraMeninggal.DOA.equals(c.get("idPenyebabKematian")))
if (Master.CaraMeninggal.BLUECODE.equals(c.get("idPenyebabKematian"))) dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(DOA.id()).build());
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BLUECODE.id()).build()); if (Master.CaraMeninggal.BLUECODE.equals(c.get("idPenyebabKematian")))
if (Arrays.asList(Master.CaraMeninggal.LAHIR) dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BLUECODE.id()).build());
.contains(Integer.parseInt(c.get("idPenyebabKematian").toString()))) if (Arrays.asList(Master.CaraMeninggal.LAHIR)
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(LAHIR.id()).build()); .contains(Integer.parseInt(c.get("idPenyebabKematian").toString())))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(LAHIR.id()).build());
}
}); });
dtoBuilder.kewarganegaraan(KewarganegaraanDto.builder().id(pasien.getKebangsaanId().longValue()).build()); if (CommonUtil.isNotNullOrEmpty(pasien.getKebangsaanId()))
dtoBuilder.negara(NegaraDto.builder().id(pasien.getNegaraId().longValue()).build()); dtoBuilder
dtoBuilder.agama(AgamaDto.builder().id(pasien.getAgamaId().longValue()).build()); .kewarganegaraan(KewarganegaraanDto.builder().id(pasien.getKebangsaanId().longValue()).build());
if (CommonUtil.isNotNullOrEmpty(pasien.getNegaraId()))
dtoBuilder.negara(NegaraDto.builder().id(pasien.getNegaraId().longValue()).build());
if (CommonUtil.isNotNullOrEmpty(pasien.getAgamaId()))
dtoBuilder.agama(AgamaDto.builder().id(pasien.getAgamaId().longValue()).build());
{ {
if (Master.Pendidikan.TIDAK_SEKOLAH.equals(pasien.getPendidikanId())) if (Master.Pendidikan.TIDAK_SEKOLAH.equals(pasien.getPendidikanId()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(TIDAK_SEKOLAH.id()).build()); dtoBuilder.pendidikan(PendidikanDto.builder().id(TIDAK_SEKOLAH.id()).build());
@ -143,10 +156,10 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
} }
{ {
Set<GawaiDto> gawaiDto = new HashSet<>(); Set<GawaiDto> gawaiDto = new HashSet<>();
if (NumberUtils.isParsable(pasien.getNoTelepon()) && pasien.getNoTelepon().charAt(0) == '0') if (NumberUtils.isNumber(pasien.getNoTelepon()) && pasien.getNoTelepon().charAt(0) == '0')
gawaiDto.add(GawaiDto.builder().noGawai(Integer.parseInt("62" + pasien.getNoTelepon())).build()); gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + pasien.getNoTelepon())).build());
if (NumberUtils.isParsable(pasien.getNoHp()) && pasien.getNoHp().charAt(0) == '0') if (NumberUtils.isNumber(pasien.getNoHp()) && pasien.getNoHp().charAt(0) == '0')
gawaiDto.add(GawaiDto.builder().noGawai(Integer.parseInt("62" + pasien.getNoHp())).build()); gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + pasien.getNoHp())).build());
dtoBuilder.gawai(gawaiDto); dtoBuilder.gawai(gawaiDto);
} }
{ {
@ -194,20 +207,26 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
listAlamat.forEach(alamat -> { listAlamat.forEach(alamat -> {
AlamatDto.AlamatDtoBuilder dtoBuilder = AlamatDto.builder(); AlamatDto.AlamatDtoBuilder dtoBuilder = AlamatDto.builder();
dtoBuilder.alamat(alamat.getAlamatLengkap()); dtoBuilder.alamat(alamat.getAlamatLengkap());
if (alamat.getRtrw().split(" ")[0].equals("RT")) if (CommonUtil.isNotNullOrEmpty(alamat.getRtrw())) {
dtoBuilder.rt(Integer.parseInt(alamat.getRtrw().split(" ")[1])); if (alamat.getRtrw().split(" ")[0].equals("RT"))
if (alamat.getRtrw().split(" ")[2].equals("RW")) dtoBuilder.rt(Integer.parseInt(alamat.getRtrw().split(" ")[1]));
dtoBuilder.rw(Integer.parseInt(alamat.getRtrw().split(" ")[3])); if (alamat.getRtrw().split(" ")[2].equals("RW"))
dtoBuilder.kodePos(Integer.valueOf(alamat.getKodePos())); dtoBuilder.rw(Integer.parseInt(alamat.getRtrw().split(" ")[3]));
}
if (NumberUtils.isNumber(alamat.getKodePos()))
dtoBuilder.kodePos(Integer.valueOf(alamat.getKodePos()));
{ {
if (Master.JenisAlamat.IDENTITAS.equals(alamat.getJenisAlamatId())) if (Master.JenisAlamat.IDENTITAS.equals(alamat.getJenisAlamatId()))
dtoBuilder.jenisAlamat(JenisAlamatDto.builder().id(IDENTITAS.id()).build()); dtoBuilder.jenisAlamat(JenisAlamatDto.builder().id(IDENTITAS.id()).build());
if (Master.JenisAlamat.DOMISILI.equals(alamat.getJenisAlamatId())) if (Master.JenisAlamat.DOMISILI.equals(alamat.getJenisAlamatId()))
dtoBuilder.jenisAlamat(JenisAlamatDto.builder().id(DOMISILI.id()).build()); dtoBuilder.jenisAlamat(JenisAlamatDto.builder().id(DOMISILI.id()).build());
} }
dtoBuilder.kelurahanDesa( if (CommonUtil.isNotNullOrEmpty(alamat.getDesaKelurahan())
KelurahanDesaDto.builder().id(alamat.getDesaKelurahan().getMigrasiKelurahanDesaId()).build()); && CommonUtil.isNotNullOrEmpty(alamat.getDesaKelurahan().getMigrasiKelurahanDesaId()))
dtoBuilder.negara(NegaraDto.builder().id(alamat.getNegaraId().longValue()).build()); dtoBuilder.kelurahanDesa(
KelurahanDesaDto.builder().id(alamat.getDesaKelurahan().getMigrasiKelurahanDesaId()).build());
if (CommonUtil.isNotNullOrEmpty(alamat.getNegaraId()))
dtoBuilder.negara(NegaraDto.builder().id(alamat.getNegaraId().longValue()).build());
dtoList.add(dtoBuilder.build()); dtoList.add(dtoBuilder.build());
}); });
return dtoList; return dtoList;
@ -219,7 +238,9 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
BerkasDto.BerkasDtoBuilder dtoBuilder = BerkasDto.builder(); BerkasDto.BerkasDtoBuilder dtoBuilder = BerkasDto.builder();
dtoBuilder.judulBerkas(dokumenVedika.getNamaFile()); dtoBuilder.judulBerkas(dokumenVedika.getNamaFile());
dtoBuilder.lokasiBerkas(dokumenVedika.getUrl()); dtoBuilder.lokasiBerkas(dokumenVedika.getUrl());
dtoBuilder.jenisBerkas(JenisBerkasDto.builder().id(dokumenVedika.getJenisBerkasId().longValue()).build()); if (CommonUtil.isNotNullOrEmpty(dokumenVedika.getJenisBerkasId()))
dtoBuilder
.jenisBerkas(JenisBerkasDto.builder().id(dokumenVedika.getJenisBerkasId().longValue()).build());
dtoList.add(dtoBuilder.build()); dtoList.add(dtoBuilder.build());
}); });
return dtoList; return dtoList;
@ -232,8 +253,8 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
dtoBuilder.namaLengkap(anak.getNamaPasien()); dtoBuilder.namaLengkap(anak.getNamaPasien());
dtoBuilder.namaPanggilan(anak.getNamaDepan()); dtoBuilder.namaPanggilan(anak.getNamaDepan());
dtoBuilder.surel(anak.getEmail()); dtoBuilder.surel(anak.getEmail());
if (NumberUtils.isParsable(anak.getNoHp()) && anak.getNoHp().charAt(0) == '0') if (NumberUtils.isNumber(anak.getNoHp()) && anak.getNoHp().charAt(0) == '0')
dtoBuilder.noGawai(Integer.parseInt("62" + anak.getNoHp())); dtoBuilder.noGawai(Long.parseLong("62" + anak.getNoHp()));
dtoBuilder.hubunganKeluarga(HubunganKeluargaDto.builder().id(ANAK.id()).build()); dtoBuilder.hubunganKeluarga(HubunganKeluargaDto.builder().id(ANAK.id()).build());
dtoList.add(dtoBuilder.build()); dtoList.add(dtoBuilder.build());
}); });
@ -245,9 +266,10 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
listAsuransiPasien.forEach(asuransi -> { listAsuransiPasien.forEach(asuransi -> {
JaminanDto.JaminanDtoBuilder dtoBuilder = JaminanDto.builder(); JaminanDto.JaminanDtoBuilder dtoBuilder = JaminanDto.builder();
dtoBuilder.nomorKartu(asuransi.getNoAsuransi()); dtoBuilder.nomorKartu(asuransi.getNoAsuransi());
dtoBuilder.asuransi(AsuransiDto.builder().asuransi(asuransi.getRekanan().getNamaRekanan()) if (CommonUtil.isNotNullOrEmpty(asuransi.getRekanan()))
.surel(asuransi.getRekanan().getEmail()).build()); dtoBuilder.asuransi(AsuransiDto.builder().asuransi(asuransi.getRekanan().getNamaRekanan()).build());
dtoList.add(dtoBuilder.build());
}); });
return new HashSet<>(); return dtoList;
} }
} }

View File

@ -46,7 +46,7 @@ public class AsuransiPasien extends BaseMaster {
@Caption(value = "Kode Institusi Asal") @Caption(value = "Kode Institusi Asal")
@Column(name = "KdInstitusiAsal") @Column(name = "KdInstitusiAsal")
private short kdInstitusiAsal; private Integer kdInstitusiAsal;
@ManyToOne(fetch = LAZY) @ManyToOne(fetch = LAZY)
@JoinColumn(name = "ObjectJenisKelaminFk") @JoinColumn(name = "ObjectJenisKelaminFk")
@ -66,7 +66,7 @@ public class AsuransiPasien extends BaseMaster {
@Caption(value = "Kode Last Unit Bagian") @Caption(value = "Kode Last Unit Bagian")
@Column(name = "KdLastUnitBagian") @Column(name = "KdLastUnitBagian")
private short kdLastUnitBagian; private Integer kdLastUnitBagian;
@ManyToOne(fetch = LAZY) @ManyToOne(fetch = LAZY)
@JoinColumn(name = "ObjectPegawaiFk") @JoinColumn(name = "ObjectPegawaiFk")

View File

@ -17,6 +17,6 @@ import java.util.UUID;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class GawaiDto { public class GawaiDto {
private UUID id; private UUID id;
private Integer noGawai; private Long noGawai;
} }

View File

@ -21,5 +21,5 @@ public class KeluargaDto {
private String namaPanggilan; private String namaPanggilan;
private String gelarBelakang; private String gelarBelakang;
private String surel; private String surel;
private Integer noGawai; private Long noGawai;
} }