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;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
import com.jasamedika.medifirst2000.etl.pasien.dto.PasienDto;
import com.jasamedika.medifirst2000.service.MigrasiPasienService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
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
@ -19,6 +21,7 @@ import com.jasamedika.medifirst2000.service.MigrasiPasienService;
@RestController
@RequestMapping("/migrasi/pasien")
public class MigrasiPasienController {
@Autowired
private MigrasiPasienService migrasiPasienService;
@ -27,4 +30,10 @@ public class MigrasiPasienController {
migrasiPasienService.init();
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.etl.pasien.constant.StatusMigrasi;
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;
@ -13,5 +15,6 @@ import java.util.List;
* @since 06/11/2023
*/
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 {
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.dto.*;
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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -70,7 +71,7 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
}
@Override
public List<PasienDto> sendToNewDb() {
public List<PasienDto> extractAndTransform() {
List<StatusMigrasi> statusMigrasiList = new ArrayList<>(Arrays.asList(BELUM_KIRIM, PEMBAHARUAN));
List<Pasien> listPasien = migrasiPasienDao.findPasienByStatusMigrasiIn(statusMigrasiList);
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.namaPanggilan(pasien.getNamaDepan());
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.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(
IdentitasDto.builder().jenisIdentitas(JenisIdentitasDto.builder().id(KTP.id()).build())
.noIdentitas(pasien.getNoIdentitas()).build())));
dtoBuilder.jenisKelamin(JenisKelaminDto.builder().id(pasien.getJenisKelaminId().longValue()).build());
dtoBuilder.golonganDarah(GolonganDarahDto.builder().id(pasien.getGolonganDarahId().longValue()).build());
if (CommonUtil.isNotNullOrEmpty(pasien.getJenisKelaminId()))
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()
.ifPresent(c -> {
if (Master.CaraMeninggal.BAWAH_DAN_48_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BAWAH_DAN_48_JAM.id()).build());
if (Master.CaraMeninggal.ATAS_48_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(ATAS_48_JAM.id()).build());
if (Master.CaraMeninggal.BAWAH_DAN_8_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BAWAH_DAN_8_JAM.id()).build());
if (Master.CaraMeninggal.ATAS_8_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(ATAS_8_JAM.id()).build());
if (Master.CaraMeninggal.DOA.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(DOA.id()).build());
if (Master.CaraMeninggal.BLUECODE.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BLUECODE.id()).build());
if (Arrays.asList(Master.CaraMeninggal.LAHIR)
.contains(Integer.parseInt(c.get("idPenyebabKematian").toString())))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(LAHIR.id()).build());
if (CommonUtil.isNotNullOrEmpty(c.get("idPenyebabKematian"))) {
if (Master.CaraMeninggal.BAWAH_DAN_48_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BAWAH_DAN_48_JAM.id()).build());
if (Master.CaraMeninggal.ATAS_48_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(ATAS_48_JAM.id()).build());
if (Master.CaraMeninggal.BAWAH_DAN_8_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BAWAH_DAN_8_JAM.id()).build());
if (Master.CaraMeninggal.ATAS_8_JAM.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(ATAS_8_JAM.id()).build());
if (Master.CaraMeninggal.DOA.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(DOA.id()).build());
if (Master.CaraMeninggal.BLUECODE.equals(c.get("idPenyebabKematian")))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(BLUECODE.id()).build());
if (Arrays.asList(Master.CaraMeninggal.LAHIR)
.contains(Integer.parseInt(c.get("idPenyebabKematian").toString())))
dtoBuilder.caraMeninggal(CaraMeninggalDto.builder().id(LAHIR.id()).build());
}
});
dtoBuilder.kewarganegaraan(KewarganegaraanDto.builder().id(pasien.getKebangsaanId().longValue()).build());
dtoBuilder.negara(NegaraDto.builder().id(pasien.getNegaraId().longValue()).build());
dtoBuilder.agama(AgamaDto.builder().id(pasien.getAgamaId().longValue()).build());
if (CommonUtil.isNotNullOrEmpty(pasien.getKebangsaanId()))
dtoBuilder
.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()))
dtoBuilder.pendidikan(PendidikanDto.builder().id(TIDAK_SEKOLAH.id()).build());
@ -143,10 +156,10 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
}
{
Set<GawaiDto> gawaiDto = new HashSet<>();
if (NumberUtils.isParsable(pasien.getNoTelepon()) && pasien.getNoTelepon().charAt(0) == '0')
gawaiDto.add(GawaiDto.builder().noGawai(Integer.parseInt("62" + pasien.getNoTelepon())).build());
if (NumberUtils.isParsable(pasien.getNoHp()) && pasien.getNoHp().charAt(0) == '0')
gawaiDto.add(GawaiDto.builder().noGawai(Integer.parseInt("62" + pasien.getNoHp())).build());
if (NumberUtils.isNumber(pasien.getNoTelepon()) && pasien.getNoTelepon().charAt(0) == '0')
gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + pasien.getNoTelepon())).build());
if (NumberUtils.isNumber(pasien.getNoHp()) && pasien.getNoHp().charAt(0) == '0')
gawaiDto.add(GawaiDto.builder().noGawai(Long.parseLong("62" + pasien.getNoHp())).build());
dtoBuilder.gawai(gawaiDto);
}
{
@ -194,20 +207,26 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
listAlamat.forEach(alamat -> {
AlamatDto.AlamatDtoBuilder dtoBuilder = AlamatDto.builder();
dtoBuilder.alamat(alamat.getAlamatLengkap());
if (alamat.getRtrw().split(" ")[0].equals("RT"))
dtoBuilder.rt(Integer.parseInt(alamat.getRtrw().split(" ")[1]));
if (alamat.getRtrw().split(" ")[2].equals("RW"))
dtoBuilder.rw(Integer.parseInt(alamat.getRtrw().split(" ")[3]));
dtoBuilder.kodePos(Integer.valueOf(alamat.getKodePos()));
if (CommonUtil.isNotNullOrEmpty(alamat.getRtrw())) {
if (alamat.getRtrw().split(" ")[0].equals("RT"))
dtoBuilder.rt(Integer.parseInt(alamat.getRtrw().split(" ")[1]));
if (alamat.getRtrw().split(" ")[2].equals("RW"))
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()))
dtoBuilder.jenisAlamat(JenisAlamatDto.builder().id(IDENTITAS.id()).build());
if (Master.JenisAlamat.DOMISILI.equals(alamat.getJenisAlamatId()))
dtoBuilder.jenisAlamat(JenisAlamatDto.builder().id(DOMISILI.id()).build());
}
dtoBuilder.kelurahanDesa(
KelurahanDesaDto.builder().id(alamat.getDesaKelurahan().getMigrasiKelurahanDesaId()).build());
dtoBuilder.negara(NegaraDto.builder().id(alamat.getNegaraId().longValue()).build());
if (CommonUtil.isNotNullOrEmpty(alamat.getDesaKelurahan())
&& CommonUtil.isNotNullOrEmpty(alamat.getDesaKelurahan().getMigrasiKelurahanDesaId()))
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());
});
return dtoList;
@ -219,7 +238,9 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
BerkasDto.BerkasDtoBuilder dtoBuilder = BerkasDto.builder();
dtoBuilder.judulBerkas(dokumenVedika.getNamaFile());
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());
});
return dtoList;
@ -232,8 +253,8 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
dtoBuilder.namaLengkap(anak.getNamaPasien());
dtoBuilder.namaPanggilan(anak.getNamaDepan());
dtoBuilder.surel(anak.getEmail());
if (NumberUtils.isParsable(anak.getNoHp()) && anak.getNoHp().charAt(0) == '0')
dtoBuilder.noGawai(Integer.parseInt("62" + anak.getNoHp()));
if (NumberUtils.isNumber(anak.getNoHp()) && anak.getNoHp().charAt(0) == '0')
dtoBuilder.noGawai(Long.parseLong("62" + anak.getNoHp()));
dtoBuilder.hubunganKeluarga(HubunganKeluargaDto.builder().id(ANAK.id()).build());
dtoList.add(dtoBuilder.build());
});
@ -245,9 +266,10 @@ public class MigrasiPasienServiceImpl implements MigrasiPasienService {
listAsuransiPasien.forEach(asuransi -> {
JaminanDto.JaminanDtoBuilder dtoBuilder = JaminanDto.builder();
dtoBuilder.nomorKartu(asuransi.getNoAsuransi());
dtoBuilder.asuransi(AsuransiDto.builder().asuransi(asuransi.getRekanan().getNamaRekanan())
.surel(asuransi.getRekanan().getEmail()).build());
if (CommonUtil.isNotNullOrEmpty(asuransi.getRekanan()))
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")
@Column(name = "KdInstitusiAsal")
private short kdInstitusiAsal;
private Integer kdInstitusiAsal;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "ObjectJenisKelaminFk")
@ -66,7 +66,7 @@ public class AsuransiPasien extends BaseMaster {
@Caption(value = "Kode Last Unit Bagian")
@Column(name = "KdLastUnitBagian")
private short kdLastUnitBagian;
private Integer kdLastUnitBagian;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "ObjectPegawaiFk")

View File

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

View File

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