diff --git a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/controller/BridgingDaftarOnlineController.java b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/controller/BridgingDaftarOnlineController.java index b45dba0e..8923dd5a 100644 --- a/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/controller/BridgingDaftarOnlineController.java +++ b/jasamedika-bridging/src/main/java/com/jasamedika/medifirst2000/controller/BridgingDaftarOnlineController.java @@ -48,6 +48,7 @@ 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.JadwalOperasiService; import com.jasamedika.medifirst2000.service.ModelService; import com.jasamedika.medifirst2000.service.PasienDaftarService; import com.jasamedika.medifirst2000.service.PasienService; @@ -134,6 +135,9 @@ public class BridgingDaftarOnlineController { @Autowired private BatalRegistrasiService batalRegistrasiService; + @Autowired + private JadwalOperasiService jadwalOperasiService; + @RequestMapping(value = "/klinik_rs", method = RequestMethod.GET, produces = { MediaType.APPLICATION_XML_VALUE }) public BridgeDaftarKlinikListVO daftarKlinikRs() { BridgeDaftarKlinikListVO y = new BridgeDaftarKlinikListVO(); @@ -758,4 +762,18 @@ public class BridgingDaftarOnlineController { return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); } } + + @RequestMapping(value = "/bpjs/operasi/jadwal/{start}/{end}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity getJadwalOperasiPeriodik( + @PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") Date start, + @PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") Date end) { + List> entity = jadwalOperasiService.jadwalOperasiByPeriode(start, end); + return new ResponseEntity<>(entity, HttpStatus.OK); + } + + @RequestMapping(value = "/bpjs/operasi/jadwal/{noBpjs}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity getJadwalOperasiPasien(@PathVariable String noBpjs) { + List> entity = jadwalOperasiService.jadwalOperasiByPasien(noBpjs); + return new ResponseEntity<>(entity, HttpStatus.OK); + } } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JadwalOperasiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JadwalOperasiDao.java index 6ac1934f..8edf2d71 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JadwalOperasiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JadwalOperasiDao.java @@ -1,6 +1,11 @@ package com.jasamedika.medifirst2000.dao; +import java.util.Date; +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import com.jasamedika.medifirst2000.entities.JadwalOperasi; @@ -11,5 +16,14 @@ import com.jasamedika.medifirst2000.entities.JadwalOperasi; */ @Repository("jadwalOperasiDao") public interface JadwalOperasiDao extends JpaRepository { + @Query("select jo from JadwalOperasi jo " + "inner join jo.antrean apd " + "inner join apd.pasienDaftar pd " + + "left join jo.ruangan ru " + "where jo.statusEnabled is true " + "and apd.statusEnabled is true " + + "and pd.statusEnabled is true " + "and jo.tglOperasi between :start and :end") + List findAllByPeriod(@Param("start") Date start, @Param("end") Date end); + @Query("select jo from JadwalOperasi jo " + "inner join jo.pasien ps " + "inner join jo.antrean apd " + + "inner join apd.pasienDaftar pd " + "left join jo.ruangan ru " + "where jo.statusEnabled is true " + + "and ps.statusEnabled is true " + "and apd.statusEnabled is true " + "and pd.statusEnabled is true " + + "and ps.noBpjs = :noBpjs") + List findAllByPasien(@Param("noBpjs") String noBpjs); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/JadwalOperasiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/JadwalOperasiService.java new file mode 100644 index 00000000..f085dc53 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/JadwalOperasiService.java @@ -0,0 +1,15 @@ +package com.jasamedika.medifirst2000.service; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author salmanoe + * @since Feb 21, 2023 + */ +public interface JadwalOperasiService { + List> jadwalOperasiByPeriode(Date start, Date end); + + List> jadwalOperasiByPasien(String noBpjs); +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JadwalOperasiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JadwalOperasiServiceImpl.java new file mode 100644 index 00000000..c2c4cb12 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JadwalOperasiServiceImpl.java @@ -0,0 +1,60 @@ +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; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.jasamedika.medifirst2000.dao.JadwalOperasiDao; +import com.jasamedika.medifirst2000.entities.JadwalOperasi; +import com.jasamedika.medifirst2000.service.JadwalOperasiService; +import com.jasamedika.medifirst2000.util.CommonUtil; + +/** + * @author salmanoe + * @since Feb 21, 2023 + */ +@Service("jadwalOperasiService") +public class JadwalOperasiServiceImpl implements JadwalOperasiService { + @Autowired + private JadwalOperasiDao jadwalOperasiDao; + + @Override + public List> jadwalOperasiByPeriode(Date start, Date end) { + List listOperasi = jadwalOperasiDao.findAllByPeriod(start, end); + return jadwalOperasi(listOperasi); + } + + @Override + public List> jadwalOperasiByPasien(String noBpjs) { + List listOperasi = jadwalOperasiDao.findAllByPasien(noBpjs); + return jadwalOperasi(listOperasi); + } + + private List> jadwalOperasi(List listOperasi) { + Date now = new Date(); + List> result = new ArrayList>(); + listOperasi.forEach(o -> { + Map operasi = new HashMap<>(); + operasi.put("noRegistrasi", o.getAntrean().getPasienDaftar().getNoRegistrasi()); + operasi.put("tglOperasi", o.getTglOperasi()); + operasi.put("jenisTindakan", o.getTindakan()); + operasi.put("ruanganId", CommonUtil.isNotNullOrEmpty(o.getRuangan()) ? o.getRuangan().getId() : null); + operasi.put("terlaksana", false); + if (CommonUtil.isNotNullOrEmpty(o.getTglOperasi()) + && (o.getTglOperasi().before(now) || o.getTglOperasi().equals(now))) + operasi.put("terlaksana", true); + operasi.put("noBpjs", CommonUtil.isNotNullOrEmpty(o.getPasien()) + ? (CommonUtil.isNotNullOrEmpty(o.getPasien().getNoBpjs()) ? o.getPasien().getNoBpjs() : '-') : '-'); + operasi.put("lastUpdate", o.getLastUpdate()); + result.add(operasi); + }); + if (result.size() == 0) + return null; + return result; + } +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PasienServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PasienServiceImpl.java index 3ab4bb8c..ac0a06be 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PasienServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PasienServiceImpl.java @@ -36,7 +36,6 @@ import com.jasamedika.medifirst2000.converter.RekananConverter; import com.jasamedika.medifirst2000.converter.StatusPerkawinanConverter; import com.jasamedika.medifirst2000.converter.TitlePasienConverter; import com.jasamedika.medifirst2000.dao.AlamatDao; -import com.jasamedika.medifirst2000.dao.PasienDaftarDao; import com.jasamedika.medifirst2000.dao.PasienDao; import com.jasamedika.medifirst2000.dao.RunningNumberDao; import com.jasamedika.medifirst2000.dao.custom.PasienDaoCustom; @@ -142,9 +141,6 @@ public class PasienServiceImpl extends BaseVoServiceImpl implements PasienServic @Autowired private PasienDaoCustom pasienDaoCustom; - - @Autowired - private PasienDaftarDao pasienDaftarDao; @Override @Transactional(readOnly = false) diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/JadwalOperasi.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/JadwalOperasi.java index 67fb418e..d52feaf2 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/JadwalOperasi.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/JadwalOperasi.java @@ -21,7 +21,7 @@ import com.jasamedika.medifirst2000.helper.Caption; @Entity @Table(name = "jadwaloperasi_t") public class JadwalOperasi extends BaseTransaction { - private static final long serialVersionUID = 8468276026157531646L; + private static final long serialVersionUID = 2979610420268392970L; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ruanganfk") @@ -83,41 +83,41 @@ public class JadwalOperasi extends BaseTransaction { @Column(name = "tglinput") @Temporal(TemporalType.TIMESTAMP) private Date tglInput; - + @Caption(value = "Tanggal Verifikasi") @Column(name = "tglverifikasi") @Temporal(TemporalType.TIMESTAMP) private Date tglVerifikasi; - + @Caption(value = "Tanggal Operasi") @Column(name = "tgloperasi") @Temporal(TemporalType.TIMESTAMP) private Date tglOperasi; - + @Column(name = "diagnosa", length = 3000) - @Caption(value="Diagnosa") - private String diagnosa; - + @Caption(value = "Diagnosa") + private String diagnosa; + @Column(name = "tindakan", length = 3000) - @Caption(value="Tindakan") - private String tindakan; - + @Caption(value = "Tindakan") + private String tindakan; + @Column(name = "posisikhusus", length = 3000) - @Caption(value="Posisi Khusus") + @Caption(value = "Posisi Khusus") private String posisiKhusus; - + @Column(name = "macamanestesi", length = 3000) - @Caption(value="Macam Anestesi") + @Caption(value = "Macam Anestesi") private String macamAnestesi; - + @Column(name = "lamaoperasi", length = 500) - @Caption(value="Lama Operasi") + @Caption(value = "Lama Operasi") private String lamaOperasi; - + @Column(name = "ruangoperasi", length = 500) - @Caption(value="Ruang Operasi") + @Caption(value = "Ruang Operasi") private String ruangOperasi; - + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "dokteranestesifk") @Caption(value = "Dokter Anestesi") @@ -125,28 +125,28 @@ public class JadwalOperasi extends BaseTransaction { @Column(name = "dokteranestesifk", insertable = false, updatable = false) private Integer dokterAnestesiId; - + @Column(name = "iscito") @Caption(value = "Status Cito") private Boolean isCito; - + @Column(name = "telp", length = 20) - @Caption(value="No Telepon") + @Caption(value = "No Telepon") private String noTelepon; - + @Column(name = "verif", length = 10) - @Caption(value="Kode Verifikasi") + @Caption(value = "Kode Verifikasi") private String kodeVerif; - + @Column(name = "selesai") @Caption(value = "Status Selesai") private Boolean selesai; - + @Caption(value = "Tanggal Pegawai Verif") @Column(name = "tglpegawaiverif") @Temporal(TemporalType.TIMESTAMP) private Date tglPegawaiVerif; - + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "objectperawatfk") @Caption(value = "Perawat") @@ -154,11 +154,11 @@ public class JadwalOperasi extends BaseTransaction { @Column(name = "objectperawatfk", insertable = false, updatable = false) private Integer perawatId; - + @Column(name = "batal_order") @Caption(value = "Status Batal Order") private Boolean batalOrder; - + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "objectpegawaibatal") @Caption(value = "Pegawai Batal") @@ -166,17 +166,17 @@ public class JadwalOperasi extends BaseTransaction { @Column(name = "objectpegawaibatal", insertable = false, updatable = false) private Integer pegawaiBatalId; - + @Caption(value = "Tanggal Batal") @Column(name = "tglbatal") @Temporal(TemporalType.TIMESTAMP) private Date tglBatal; - + @Caption(value = "Tanggal Selesai") @Column(name = "tglselesai") @Temporal(TemporalType.TIMESTAMP) private Date tglSelesai; - + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "objectpegawaiselesai") @Caption(value = "Pegawai Selesai") @@ -185,9 +185,18 @@ public class JadwalOperasi extends BaseTransaction { @Column(name = "objectpegawaiselesai", insertable = false, updatable = false) private Integer pegawaiSelesaiId; + @Caption(value = "Last Update") + @Column(name = "lastupdate") + @Temporal(TemporalType.TIMESTAMP) + private Date lastUpdate; + public JadwalOperasi() { } + public static long getSerialversionuid() { + return serialVersionUID; + } + public Ruangan getRuangan() { return ruangan; } @@ -499,4 +508,12 @@ public class JadwalOperasi extends BaseTransaction { public void setPegawaiSelesaiId(Integer pegawaiSelesaiId) { this.pegawaiSelesaiId = pegawaiSelesaiId; } + + public Date getLastUpdate() { + return lastUpdate; + } + + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/JadwalOperasiVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/JadwalOperasiVO.java index ea4bd722..6eace13c 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/JadwalOperasiVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/JadwalOperasiVO.java @@ -51,75 +51,78 @@ public class JadwalOperasiVO extends BaseTransactionVO { @Caption(value = "Tanggal Input") private Date tglInput; - + @Caption(value = "Tanggal Verifikasi") private Date tglVerifikasi; - + @Caption(value = "Tanggal Operasi") private Date tglOperasi; - - @Caption(value="Diagnosa") - private String diagnosa; - - @Caption(value="Tindakan") - private String tindakan; - - @Caption(value="Posisi Khusus") + + @Caption(value = "Diagnosa") + private String diagnosa; + + @Caption(value = "Tindakan") + private String tindakan; + + @Caption(value = "Posisi Khusus") private String posisiKhusus; - - @Caption(value="Macam Anestesi") + + @Caption(value = "Macam Anestesi") private String macamAnestesi; - - @Caption(value="Lama Operasi") + + @Caption(value = "Lama Operasi") private String lamaOperasi; - - @Caption(value="Ruang Operasi") + + @Caption(value = "Ruang Operasi") private String ruangOperasi; - + @Caption(value = "Dokter Anestesi") private Pegawai dokterAnestesi; private Integer dokterAnestesiId; - + @Caption(value = "Status Cito") private Boolean isCito; - - @Caption(value="No Telepon") + + @Caption(value = "No Telepon") private String noTelepon; - - @Caption(value="Kode Verifikasi") + + @Caption(value = "Kode Verifikasi") private String kodeVerif; - + @Caption(value = "Status Selesai") private Boolean selesai; - + @Caption(value = "Tanggal Pegawai Verif") private Date tglPegawaiVerif; - + @Caption(value = "Perawat") private Pegawai perawat; private Integer perawatId; - + @Caption(value = "Status Batal Order") private Boolean batalOrder; - + @Caption(value = "Pegawai Batal") private Pegawai pegawaiBatal; private Integer pegawaiBatalId; - + @Caption(value = "Tanggal Batal") private Date tglBatal; - + @Caption(value = "Tanggal Selesai") private Date tglSelesai; - + @Caption(value = "Pegawai Selesai") private Pegawai pegawaiSelesai; private Integer pegawaiSelesaiId; + @Caption(value = "Last Update") + private Date lastUpdate; + public JadwalOperasiVO() { } @@ -434,4 +437,12 @@ public class JadwalOperasiVO extends BaseTransactionVO { public void setPegawaiSelesaiId(Integer pegawaiSelesaiId) { this.pegawaiSelesaiId = pegawaiSelesaiId; } + + public Date getLastUpdate() { + return lastUpdate; + } + + public void setLastUpdate(Date lastUpdate) { + this.lastUpdate = lastUpdate; + } }