Salman Manoe 7003b6e81b Rapi-rapi
2022-03-26 11:46:44 +07:00

429 lines
14 KiB
Java

package com.jasamedika.medifirst2000.controller;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.jasamedika.medifirst2000.dao.BridgingDao;
import com.jasamedika.medifirst2000.vo.custom.BridgeBUKBorVO;
import com.jasamedika.medifirst2000.vo.custom.BridgeKunjunganPasienVO;
@RestController
@RequestMapping("/sirsbuk")
public class BridgingSirsBukController {
@Autowired
private BridgingDao myDao;
@RequestMapping(value = "/irj", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE })
public ArrayList<BridgeKunjunganPasienVO> kunjunganIrj(@RequestParam(value = "tanggal", required = true) String tanggal) throws ParseException {
ArrayList<BridgeKunjunganPasienVO> output = new ArrayList<BridgeKunjunganPasienVO>();
List<Object[]> returnVal = null;
String tanggalan[] = tanggal.split("-");
if(tanggalan.length==3){
boolean valid = false;
if(tanggalan[0].length()==1){
tanggalan[0]="0"+tanggalan[0];
}
if(tanggalan[1].length()==1){
tanggalan[1]="0"+tanggalan[1];
}
if(tanggalan[2].length()==2){
tanggalan[2]="20"+tanggalan[2];
}
if((tanggalan[0].length()==2)&(tanggalan[1].length()==2)&(tanggalan[2].length()==4)){
valid=true;
}else{
System.out.println("tanggalan salah:"+ tanggalan[0]+"-"+tanggalan[1] +"-"+tanggalan[2]);
}
if(valid){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date d = (Date) sdf.parse(tanggalan[0]+"/"+tanggalan[1]+"/"+tanggalan[2]);
returnVal = myDao.kunjunganIrj(d);
String namaRuang = null;
for(int j = 0; j<returnVal.size();j++){
if(output.size()>0){
namaRuang = (String)returnVal.get(j)[2];
System.out.println(namaRuang);
for(int k =0; k<output.size();k++){
if(output.get(k).getKLINIK().equals(namaRuang)){
if(((Integer)returnVal.get(j)[3]==2)|((Integer)returnVal.get(j)[3]==4)){
int counterJKN = output.get(k).getJKN();
counterJKN ++;
output.get(k).setJKN(counterJKN);
}else{
int counterNonJKN = output.get(k).getNONJKN();
counterNonJKN ++;
output.get(k).setNONJKN(counterNonJKN);
}
}else{
BridgeKunjunganPasienVO temp2 = new BridgeKunjunganPasienVO();
temp2.setKLINIK((String)returnVal.get(j)[2]);
if(((Integer)returnVal.get(j)[3]==2)|((Integer)returnVal.get(j)[3]==4)){
int counterJKN3 = temp2.getJKN();
counterJKN3 ++;
temp2.setJKN(counterJKN3);
}else{
int counterNonJKN3 = temp2.getNONJKN();
counterNonJKN3 ++;
temp2.setNONJKN(counterNonJKN3);
}
output.add(temp2);
}
}
}else{
System.out.println("Inisialisasi");
BridgeKunjunganPasienVO temp = new BridgeKunjunganPasienVO();
temp.setKLINIK((String)returnVal.get(j)[2]);
if(((Integer)returnVal.get(j)[3]==2)|((Integer)returnVal.get(j)[3]==4)){
int counterJKN2 = temp.getJKN();
counterJKN2 ++;
temp.setJKN(counterJKN2);
}else{
int counterNonJKN2 = temp.getNONJKN();
counterNonJKN2 ++;
temp.setNONJKN(counterNonJKN2);
}
output.add(temp);
}
}
}
}else{
System.out.println("tanggalan salah!");
}
return output;
}
@RequestMapping(value = "/iri", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE })
public ArrayList<BridgeKunjunganPasienVO> kunjunganIri(@RequestParam(value = "tanggal", required = true) String tanggal) throws ParseException {
ArrayList<BridgeKunjunganPasienVO> output = new ArrayList<BridgeKunjunganPasienVO>();
List<Object[]> returnVal = null;
String tanggalan[] = tanggal.split("-");
if(tanggalan.length==3){
boolean valid = false;
if(tanggalan[0].length()==1){
tanggalan[0]="0"+tanggalan[0];
}
if(tanggalan[1].length()==1){
tanggalan[1]="0"+tanggalan[1];
}
if(tanggalan[2].length()==2){
tanggalan[2]="20"+tanggalan[2];
}
if((tanggalan[0].length()==2)&(tanggalan[1].length()==2)&(tanggalan[2].length()==4)){
valid=true;
}else{
System.out.println("tanggalan salah:"+ tanggalan[0]+"-"+tanggalan[1] +"-"+tanggalan[2]);
}
if(valid){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date d = (Date) sdf.parse(tanggalan[0]+"/"+tanggalan[1]+"/"+tanggalan[2]);
returnVal = myDao.kunjunganIri(d);
String namaRuang = null;
for(int j = 0; j<returnVal.size();j++){
if(output.size()>0){
namaRuang = (String)returnVal.get(j)[2];
System.out.println(namaRuang);
for(int k =0; k<output.size();k++){
if(output.get(k).getKLINIK().equals(namaRuang)){
if(((Integer)returnVal.get(j)[3]==2)|((Integer)returnVal.get(j)[3]==4)){
int counterJKN = output.get(k).getJKN();
counterJKN ++;
output.get(k).setJKN(counterJKN);
}else{
int counterNonJKN = output.get(k).getNONJKN();
counterNonJKN ++;
output.get(k).setNONJKN(counterNonJKN);
}
}else{
BridgeKunjunganPasienVO temp2 = new BridgeKunjunganPasienVO();
temp2.setKLINIK((String)returnVal.get(j)[2]);
if(((Integer)returnVal.get(j)[3]==2)|((Integer)returnVal.get(j)[3]==4)){
int counterJKN3 = temp2.getJKN();
counterJKN3 ++;
temp2.setJKN(counterJKN3);
}else{
int counterNonJKN3 = temp2.getNONJKN();
counterNonJKN3 ++;
temp2.setNONJKN(counterNonJKN3);
}
output.add(temp2);
}
}
}else{
System.out.println("Inisialisasi");
BridgeKunjunganPasienVO temp = new BridgeKunjunganPasienVO();
temp.setKLINIK((String)returnVal.get(j)[2]);
if(((Integer)returnVal.get(j)[3]==2)|((Integer)returnVal.get(j)[3]==4)){
int counterJKN2 = temp.getJKN();
counterJKN2 ++;
temp.setJKN(counterJKN2);
}else{
int counterNonJKN2 = temp.getNONJKN();
counterNonJKN2 ++;
temp.setNONJKN(counterNonJKN2);
}
output.add(temp);
}
}
}
}else{
System.out.println("tanggalan salah!");
}
return output;
}
@RequestMapping(value = "/igd", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE })
public ArrayList<BridgeKunjunganPasienVO> kunjunganIgd(@RequestParam(value = "tanggal", required = true) String tanggal) throws ParseException {
ArrayList<BridgeKunjunganPasienVO> output = new ArrayList<BridgeKunjunganPasienVO>();
List<Object[]> returnVal = null;
String tanggalan[] = tanggal.split("-");
if(tanggalan.length==3){
boolean valid = false;
if(tanggalan[0].length()==1){
tanggalan[0]="0"+tanggalan[0];
}
if(tanggalan[1].length()==1){
tanggalan[1]="0"+tanggalan[1];
}
if(tanggalan[2].length()==2){
tanggalan[2]="20"+tanggalan[2];
}
if((tanggalan[0].length()==2)&(tanggalan[1].length()==2)&(tanggalan[2].length()==4)){
valid=true;
}else{
System.out.println("tanggalan salah:"+ tanggalan[0]+"-"+tanggalan[1] +"-"+tanggalan[2]);
}
if(valid){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date d = (Date) sdf.parse(tanggalan[0]+"/"+tanggalan[1]+"/"+tanggalan[2]);
returnVal = myDao.kunjunganIgd(d);
String namaRuang = null;
for(int j = 0; j<returnVal.size();j++){
if(output.size()>0){
namaRuang = (String)returnVal.get(j)[2];
System.out.println(namaRuang);
for(int k =0; k<output.size();k++){
if(output.get(k).getKLINIK().equals(namaRuang)){
if(((Integer)returnVal.get(j)[3]==2)|((Integer)returnVal.get(j)[3]==4)){
int counterJKN = output.get(k).getJKN();
counterJKN ++;
output.get(k).setJKN(counterJKN);
}else{
int counterNonJKN = output.get(k).getNONJKN();
counterNonJKN ++;
output.get(k).setNONJKN(counterNonJKN);
}
}else{
BridgeKunjunganPasienVO temp2 = new BridgeKunjunganPasienVO();
temp2.setKLINIK((String)returnVal.get(j)[2]);
if(((Integer)returnVal.get(j)[3]==2)|((Integer)returnVal.get(j)[3]==4)){
int counterJKN3 = temp2.getJKN();
counterJKN3 ++;
temp2.setJKN(counterJKN3);
}else{
int counterNonJKN3 = temp2.getNONJKN();
counterNonJKN3 ++;
temp2.setNONJKN(counterNonJKN3);
}
output.add(temp2);
}
}
}else{
System.out.println("Inisialisasi");
BridgeKunjunganPasienVO temp = new BridgeKunjunganPasienVO();
temp.setKLINIK((String)returnVal.get(j)[2]);
if(((Integer)returnVal.get(j)[3]==2)|((Integer)returnVal.get(j)[3]==4)){
int counterJKN2 = temp.getJKN();
counterJKN2 ++;
temp.setJKN(counterJKN2);
}else{
int counterNonJKN2 = temp.getNONJKN();
counterNonJKN2 ++;
temp.setNONJKN(counterNonJKN2);
}
output.add(temp);
}
}
}
}else{
System.out.println("tanggalan salah!");
}
if(output.size()==0){
BridgeKunjunganPasienVO temp0 = new BridgeKunjunganPasienVO();
temp0.setKLINIK("Gawat Darurat(Emergency)");
temp0.setJKN(0);
temp0.setNONJKN(0);
output.add(temp0);
}
return output;
}
@RequestMapping(value = "/bor", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE })
public BridgeBUKBorVO bor(@RequestParam(value = "bulan", required = true) String bulanTahun) throws ParseException {
//String ret = "";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
List<Object[]> bed = myDao.getQtyBed();
Integer totalBed =0;
ArrayList<Integer> ruanganId= new ArrayList<Integer>();
for(int i = 0; i<bed.size();i++){
totalBed = totalBed + ((Byte)bed.get(i)[1]).intValue();
if(ruanganId.size()==0){
ruanganId.add((Integer)bed.get(i)[0]);
}else{
boolean found=false;
for(int j = 0;j<ruanganId.size();j++){
if(ruanganId.get(j)==(Integer)bed.get(i)[0]){
found = true;
break;
}
}
if(!found){
ruanganId.add((Integer)bed.get(i)[0]);
}
}
}
System.out.println("totalBed"+ String.valueOf(totalBed));
String bb[]= bulanTahun.split("-");
String bulan = bb[0].trim();
String tahun = bb[1].trim();
int month = Integer.parseInt(bulan);
int year = Integer.parseInt(tahun);
GregorianCalendar mycal = new GregorianCalendar(year,month, 1);
int daysInMonth= mycal.getActualMaximum(Calendar.DAY_OF_MONTH);
Date d1 = (Date) sdf.parse("01"+"/"+bulan+"/"+tahun);
Date d2 = (Date) sdf.parse(String.valueOf(daysInMonth)+"/"+bulan+"/"+tahun);
List<Object[]> x = myDao.getListPasienRanap(d1,d2);
System.out.println( "Jumlah Pasien total" + String.valueOf(x.size()) );
int cnt[] = new int[daysInMonth];
for(int i = 0;i<x.size();i++){
for(int j = 0;j<daysInMonth;j++){
Date tgl1 = (Date)x.get(i)[0];
Date tgl2 = (Date)x.get(i)[1];
String tgl1s[],tgl2s[];
try{
tgl1s= sdf.format(tgl1).split("/");
String tmp1[] =tgl1s;
if(Integer.valueOf(tmp1[0])==j){
}
}catch(Exception ex){
tgl1s= new String[0];
}
try{
tgl2s= sdf.format(tgl2).split("/");
}catch(Exception ex){
tgl2s= (String.valueOf(daysInMonth)+"/"+bulan+"/"+tahun).split("/");
}
if((j>=Integer.valueOf(tgl1s[0])+1)&(j<=Integer.valueOf(tgl2s[0])+1)){
cnt[j]++;
}
}
}
int totalCnt = 0;
for(int i=0;i<cnt.length;i++){
totalCnt=totalCnt+cnt[i];
}
BridgeBUKBorVO returnvalue = new BridgeBUKBorVO();
NumberFormat formatter = new DecimalFormat("#0.00");
returnvalue.setBOR(Double.valueOf(formatter.format((double)(totalCnt*100)/(double)(totalBed*daysInMonth))));
return returnvalue ;
}
//tidak dipakai, tapi belum dibuang. sudah digantikan dengan yang diatas.
/*
@RequestMapping(value = "/bor", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE })
public BridgeBUKBorVO borCalc(@RequestParam(value = "bulan", required = true) String bulanTahun) throws ParseException {
List<Object[]> ret = myDao.getQtyBed();
Integer total =0;
ArrayList<Integer> ruanganId= new ArrayList<Integer>();
for(int i = 0; i<ret.size();i++){
total = total + ((Byte)ret.get(i)[1]).intValue();
if(ruanganId.size()==0){
ruanganId.add((Integer)ret.get(i)[0]);
}else{
boolean found=false;
for(int j = 0;j<ruanganId.size();j++){
if(ruanganId.get(j)==(Integer)ret.get(i)[0]){
found = true;
break;
}
}
if(!found){
ruanganId.add((Integer)ret.get(i)[0]);
}
}
}
System.out.println(total);
System.out.println(ruanganId.size());
String bb[]= bulanTahun.split("-");
String bulan = bb[0].trim();
String tahun = bb[1].trim();
int month = Integer.parseInt(bulan);
int year = Integer.parseInt(tahun);
GregorianCalendar mycal = new GregorianCalendar(year,month, 1);
int daysInMonth= mycal.getActualMaximum(Calendar.DAY_OF_MONTH);
Integer occupied=0;
for(int hari =1;hari<daysInMonth+1; hari++){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date d = (Date) sdf.parse(String.valueOf(hari)+"/"+bulan+"/"+tahun);
for (int i = 0;i<ruanganId.size();i++){
Integer tmp = pp.getCountByMonthAndYearRuangan(d, ruanganId.get(i));
if(tmp==null){
tmp=0;
}
occupied=occupied+tmp;
}
//System.out.println(String.valueOf(hari)+" terisi:"+occupied.toString());
}
BridgeBUKBorVO returnvalue = new BridgeBUKBorVO();
System.out.println((occupied*100));
System.out.println(total);
NumberFormat formatter = new DecimalFormat("#0.00");
returnvalue.setBOR(Double.valueOf(formatter.format((double)(occupied*100)/(double)(total*1))));
return returnvalue;
}
*/
}