Author SHA256 Message Date
mirza.millahsyafiq.0912 be28b55a9e update dev 2025-04-25 14:47:21 +07:00
mirza.millahsyafiq.0912 dfdf5c887d update dev 2025-04-25 14:43:13 +07:00
mirza.millahsyafiq.0912 194f99c748 update code coba 2025-03-03 09:12:47 +07:00
mirza.millahsyafiq.0912 8e2d150806 update dev 2025-01-25 11:15:46 +07:00
mirza.millahsyafiq.0912 be13b428f1 update code a lot 2024-12-20 08:49:02 +07:00
mirza.millahsyafiq.0912 e7f4001ac7 remove unused code 2024-11-05 08:31:11 +07:00
mirza.millahsyafiq.0912 82e756d5d9 fix conflict 2024-11-05 08:30:32 +07:00
mirza.millahsyafiq.0912 67fbe47f87 add i_care code 2024-11-05 08:25:53 +07:00
mirza.millahsyafiq.0912 5c815e4146 update code 2024-10-31 13:52:36 +07:00
mirza.millahsyafiq.0912 c07a2dba07 fix conflict 2024-10-24 13:03:57 +07:00
mirza.millahsyafiq.0912 e681aa5581 fix conflict 2024-10-23 12:07:18 +07:00
mirza.millahsyafiq.0912 6d8298a845 fix conflict 2024-10-22 12:13:34 +07:00
mirza.millahsyafiq.0912 18665f7d34 add rujukan 2024-10-22 12:01:12 +07:00
55 changed files with 4389 additions and 2324 deletions
+23 -9
View File
@@ -4,22 +4,35 @@ SATUDATA_PASSWORD=stim*RS54
SATUDATA_NAME=satu_db SATUDATA_NAME=satu_db
SATUDATA_PORT=5000 SATUDATA_PORT=5000
BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id SIMRS_HOST=10.10.123.160
ANTREAN_RS=/antreanrs SIMRS_USERNAME=simrs
SIMRS_PASSWORD=simrs.rssa
SIMRS_NAME=simrs
SIMRS_PORT=5000
SIMRS_STAG_HOST=10.10.123.223
SIMRS_STAG_USERNAME=simtest
SIMRS_STAG_PASSWORD=12345
SIMRS_STAG_NAME=simrs-stag
SIMRS_STAG_PORT=5432
BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id/
ANTREAN_RS=antreanrs
I_CARE_JKN=ihs
CONS_ID=5257 CONS_ID=5257
USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482 USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482
SECRET_KEY=1bV363512D SECRET_KEY=1bV363512D
USER_KEY_ICARE=1cd65acaa349684be6353bea5149e2e2
CONS_ID_DEV=16041 CONS_ID_DEV=16041
USER_KEY_DEV=467a2817fde5070f66c9a41fbeb8dc2c USER_KEY_DEV=467a2817fde5070f66c9a41fbeb8dc2c
SECRET_KEY_DEV=8pP3D5431E SECRET_KEY_DEV=8pP3D5431E
USER_KEY_ICARE=1cd65acaa349684be6353bea5149e2e2
BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id/
VCLAIM_RS_DEV=/vclaim-rest-dev VCLAIM_RS_DEV=vclaim-rest-dev
SURAT_KONTROL_RS=/vclaim-rest VCLAIM_RS=vclaim-rest
I_CARE_JKN=/wsihs I_CARE_JKN=wsihs
I_CARE_JKN_DEV=/ihs_dev I_CARE_JKN_DEV=ihs_dev
INSERT_SURAT_KONTROL=/RencanaKontrol/insert INSERT_SURAT_KONTROL=/RencanaKontrol/insert
UPDATE_SURAT_KONTROL=/RencanaKontrol/Update UPDATE_SURAT_KONTROL=/RencanaKontrol/Update
@@ -28,8 +41,9 @@ GET_NOMOR_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol/
GET_SURAT_KONTROL_SEP=/RencanaKontrol/nosep/ GET_SURAT_KONTROL_SEP=/RencanaKontrol/nosep/
GET_NOMOR_RUJUKAN=/Rujukan/ GET_NOMOR_RUJUKAN=/Rujukan/
GET_NOMOR_RUJUKAN_BATCH=/Rujukan/List/Peserta/ GET_NOMOR_RUJUKAN_BATCH=/Rujukan/List/Peserta/
GET_REFERENSI_DOKTER=/referensi/dokter/
GET_FKRTL=/api/rs/validate GET_FKRTL=/api/rs/validate
GET_FKTP=/api/pcare/validate GET_FKTP=/api/pcare/validate
LIS_MIKROBIOLOGI_URL=http://10.10.123.218/registerpasien
+1 -5
View File
@@ -1,10 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4"> <module type="WEB_MODULE" version="4">
<component name="Go" enabled="true"> <component name="Go" enabled="true" />
<buildTags>
<option name="os" value="linux" />
</buildTags>
</component>
<component name="NewModuleRootManager"> <component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" /> <content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="[email protected]" uuid="8e7d33a6-2774-4cbb-95d4-4caf4b6482be">
<driver-ref>postgresql</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
<jdbc-url>jdbc:postgresql://10.10.123.223:5432/simrs-stag</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>
+1 -1
View File
@@ -2,7 +2,7 @@
<project version="4"> <project version="4">
<component name="ProjectModuleManager"> <component name="ProjectModuleManager">
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/.idea/api-bpjs-surkon.iml" filepath="$PROJECT_DIR$/.idea/api-bpjs-surkon.iml" /> <module fileurl="file://$PROJECT_DIR$/.idea/bridging-rssa.iml" filepath="$PROJECT_DIR$/.idea/bridging-rssa.iml" />
</modules> </modules>
</component> </component>
</project> </project>
+8 -6
View File
@@ -1,5 +1,11 @@
FROM golang:1.23-alpine AS builder FROM golang:1.23-alpine AS builder
# Install tzdata dan dependencies build
RUN apk add --no-cache tzdata build-base
# Set timezone ke Asia/Jakarta
ENV TZ=Asia/Jakarta
WORKDIR /app WORKDIR /app
COPY go.mod go.sum ./ COPY go.mod go.sum ./
@@ -12,15 +18,11 @@ RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
# RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app . # RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
FROM alpine:latest FROM alpine:latest
RUN apk --no-cache add ca-certificates
# Set timezone ke Asia/Jakarta
ENV TZ=Asia/Jakarta
RUN apk --no-cache add ca-certificates tzdata
WORKDIR /root/ WORKDIR /root/
COPY --from=builder /app/main . COPY --from=builder /app/main .
COPY --from=builder /app/.env . COPY --from=builder /app/.env .
EXPOSE 8080 EXPOSE 8082
CMD ["./main"] CMD ["./main"]
+46 -5
View File
@@ -17,6 +17,7 @@ import (
var DB *gorm.DB var DB *gorm.DB
var SatuDataDB *gorm.DB var SatuDataDB *gorm.DB
var SimrsDB *gorm.DB
var err error var err error
func ConnectDB() { func ConnectDB() {
@@ -34,6 +35,21 @@ func ConnectDB() {
} else { } else {
log.Println("Successfully connected to the database") log.Println("Successfully connected to the database")
} }
// hostSimrs := os.Getenv("SIMRS_HOST")
// userNameSimrs := os.Getenv("SIMRS_USERNAME")
// passwordSimrs := os.Getenv("SIMRS_PASSWORD")
// dbNameSimrs := os.Getenv("SIMRS_NAME")
// portSimrs := os.Getenv("SIMRS_PORT")
// simrs := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSimrs, userNameSimrs, passwordSimrs, dbNameSimrs, portSimrs)
// SimrsDB, err = gorm.Open(postgres.Open(simrs), &gorm.Config{})
// if err != nil {
// log.Fatal("Failed to connect to Satu Data database: ", err)
// } else {
// log.Println("Successfully connected to the database")
// }
} }
func SetHeader(isIcare bool, cfg config.ConfigBpjs) *config.Header { func SetHeader(isIcare bool, cfg config.ConfigBpjs) *config.Header {
@@ -49,6 +65,7 @@ func SetHeader(isIcare bool, cfg config.ConfigBpjs) *config.Header {
if isIcare { if isIcare {
cfg.User_key = os.Getenv("USER_KEY_ICARE") cfg.User_key = os.Getenv("USER_KEY_ICARE")
} }
secret := []byte(cfg.Secret_key) secret := []byte(cfg.Secret_key)
message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp)) message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp))
hash := hmac.New(sha256.New, secret) hash := hmac.New(sha256.New, secret)
@@ -70,6 +87,35 @@ func SetHeader(isIcare bool, cfg config.ConfigBpjs) *config.Header {
} }
func SetHeaderFKRTL(cfg config.ConfigBpjs) *config.Header {
timestamp := time.Now().UTC().Unix()
cfg.Cons_id = os.Getenv("CONS_ID")
cfg.User_key = os.Getenv("USER_KEY")
cfg.Secret_key = os.Getenv("SECRET_KEY")
secret := []byte(cfg.Secret_key)
message := []byte(cfg.Cons_id + "&" + fmt.Sprint(timestamp))
hash := hmac.New(sha256.New, secret)
hash.Write(message)
// to lowercase hexits
hex.EncodeToString(hash.Sum(nil))
// to base64
X_signature := base64.StdEncoding.EncodeToString(hash.Sum(nil))
header := &config.Header{
ConsID: cfg.Cons_id,
SecretKey: cfg.Secret_key,
UserKey: cfg.User_key,
TimeStamp: fmt.Sprint(timestamp),
XSignature: X_signature,
}
return header
}
func SetHeaderDev(cfg config.ConfigBpjs) *config.Header { func SetHeaderDev(cfg config.ConfigBpjs) *config.Header {
timenow := time.Now().UTC() timenow := time.Now().UTC()
@@ -80,10 +126,6 @@ func SetHeaderDev(cfg config.ConfigBpjs) *config.Header {
cfg.User_key = os.Getenv("USER_KEY_DEV") cfg.User_key = os.Getenv("USER_KEY_DEV")
cfg.Secret_key = os.Getenv("SECRET_KEY_DEV") cfg.Secret_key = os.Getenv("SECRET_KEY_DEV")
// cfg.Cons_id = os.Getenv("CONS_ID")
// cfg.User_key = os.Getenv("USER_KEY")
// cfg.Secret_key = os.Getenv("SECRET_KEY")
secret := []byte(cfg.Secret_key) secret := []byte(cfg.Secret_key)
message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp)) message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp))
hash := hmac.New(sha256.New, secret) hash := hmac.New(sha256.New, secret)
@@ -92,7 +134,6 @@ func SetHeaderDev(cfg config.ConfigBpjs) *config.Header {
hex.EncodeToString(hash.Sum(nil)) hex.EncodeToString(hash.Sum(nil))
// to base64 // to base64
X_signature := base64.StdEncoding.EncodeToString(hash.Sum(nil)) X_signature := base64.StdEncoding.EncodeToString(hash.Sum(nil))
header := &config.Header{ header := &config.Header{
ConsID: cfg.Cons_id, ConsID: cfg.Cons_id,
SecretKey: cfg.Secret_key, SecretKey: cfg.Secret_key,
+3 -3
View File
@@ -14,7 +14,7 @@ import (
func GetDokter() ([]dokter.DaftarDokterRes, error) { func GetDokter() ([]dokter.DaftarDokterRes, error) {
var listDokter []dokter.DaftarDokter var listDokter []dokter.DaftarDokter
var res []dokter.DaftarDokterRes var res []dokter.DaftarDokterRes
result := config.SatuDataDB.Raw(`select "id", "HFIS_code" from "data_pegawai" where "HFIS_code" is not null`).Scan(&listDokter) result := config.SatuDataDB.Debug().Raw(`select "id", "HFIS_code" from "data_pegawai" where "HFIS_code" is not null`).Scan(&listDokter)
if result.Error != nil { if result.Error != nil {
if !errors.Is(result.Error, gorm.ErrRecordNotFound) { if !errors.Is(result.Error, gorm.ErrRecordNotFound) {
log.Fatalf("Error get data : %v", result.Error) log.Fatalf("Error get data : %v", result.Error)
@@ -43,7 +43,7 @@ func GetDokter() ([]dokter.DaftarDokterRes, error) {
func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) { func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) {
var namaDokter []dokter.NamaLengkap var namaDokter []dokter.NamaLengkap
result := config.SatuDataDB.Raw(`select dp.id, result := config.SatuDataDB.Debug().Raw(`select dp.id,
array( array(
select dgd. "Gelar_depan" select dgd. "Gelar_depan"
from data_pegawai_daftar_gelar_depan dpdgd from data_pegawai_daftar_gelar_depan dpdgd
@@ -74,7 +74,7 @@ func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) {
func GetHFISCode(dpjp string) (*dokter.DaftarDokter, error) { func GetHFISCode(dpjp string) (*dokter.DaftarDokter, error) {
var dataDokter *dokter.DaftarDokter var dataDokter *dokter.DaftarDokter
err := config.SatuDataDB.Raw(`select dp."id", dp."HFIS_code" from data_pegawai dp where dp."Code_dpjp" = ?`, dpjp).First(&dataDokter).Error err := config.SatuDataDB.Debug().Raw(`select dp."id", dp."HFIS_code" from data_pegawai dp where dp."Code_dpjp" = ?`, dpjp).First(&dataDokter).Error
if err != nil { if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) { if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data tidak ditemukan") errMsg := errors.New("Data tidak ditemukan")
+114 -42
View File
@@ -3,45 +3,49 @@ package dokter
import ( import (
"bridging-rssa/config" "bridging-rssa/config"
"bridging-rssa/models/bpjs/jadwal_dokter" "bridging-rssa/models/bpjs/jadwal_dokter"
"gorm.io/gorm" "errors"
"log" "log"
"strconv" "strconv"
"strings"
"github.com/google/uuid" "github.com/google/uuid"
"gorm.io/gorm"
) )
func GetJadwalDokterByDPJP(dpjp string) (string, error) { func GetJadwalDokterByDPJP(dpjp string) ([]jadwal_dokter.JadwalDokterSatuData, error) {
var id string
errSelect := config.SatuDataDB.Raw(`select "id" from "data_pegawai" where "Code_dpjp" = ?`, dpjp).First(&id).Error
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return "", errSelect
}
return id, nil
}
func GetJadwalHariDokterBySpesialis(id string) ([]jadwal_dokter.JadwalDokterSatuData, error) {
var hari []jadwal_dokter.JadwalDokterSatuData var hari []jadwal_dokter.JadwalDokterSatuData
errSelect := config.SatuDataDB.Raw(`select * from "daftar_jadwal_dokter" where "Dokter" = ? order by "id"`, id).Scan(&hari).Error errSelect := config.SatuDataDB.Debug().Raw(`select djd.* from "daftar_jadwal_dokter" djd
left join "data_pegawai" dp on djd."Dokter" = dp."id" where dp."Code_dpjp" = ? order by djd."id"`, dpjp).Scan(&hari).Error
if errSelect != nil { if errSelect != nil {
if errors.Is(errSelect, gorm.ErrRecordNotFound) {
errMsg := errors.New("Dokter Tidak Terdaftar di HFIS")
log.Println(errMsg)
return nil, errMsg
}
log.Printf("Failed get data : %v", errSelect) log.Printf("Failed get data : %v", errSelect)
return nil, errSelect return nil, errSelect
} }
return hari, nil return hari, nil
} }
func GetJadwalDokterByIDDokter(hari string) ([]string, error) { func GetJadwalHariDokterBySpesialis(id string) ([]jadwal_dokter.JadwalDokterSatuData, error) {
var spesialis []string var hari []jadwal_dokter.JadwalDokterSatuData
errSelect := config.SatuDataDB.Raw(`select distinct "Spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Spesialis"`, hari).Scan(&spesialis).Error errSelect := config.SatuDataDB.Debug().Raw(`select * from "daftar_jadwal_dokter" where "Dokter" = ? order by "id"`, id).Scan(&hari).Error
if errSelect != nil { if errSelect != nil {
if errors.Is(errSelect, gorm.ErrRecordNotFound) {
errMsg := errors.New("Dokter Tidak Terdaftar di HFIS")
log.Println(errMsg)
return nil, errMsg
}
log.Printf("Failed get data : %v", errSelect) log.Printf("Failed get data : %v", errSelect)
return nil, errSelect return nil, errSelect
} }
return spesialis, nil return hari, nil
} }
func GetJadwalDokterByDate(hari string) ([]string, error) { func GetJadwalDokterByDate(hari string) ([]string, error) {
var spesialis []string var spesialis []string
errSelect := config.SatuDataDB.Raw(`select distinct "Spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Spesialis"`, hari).Scan(&spesialis).Error errSelect := config.SatuDataDB.Debug().Raw(`select distinct "Spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Spesialis"`, hari).Scan(&spesialis).Error
if errSelect != nil { if errSelect != nil {
log.Printf("Failed get data : %v", errSelect) log.Printf("Failed get data : %v", errSelect)
return nil, errSelect return nil, errSelect
@@ -51,7 +55,7 @@ func GetJadwalDokterByDate(hari string) ([]string, error) {
func GetJadwalSubspesialisByDate(hari string) ([]int, error) { func GetJadwalSubspesialisByDate(hari string) ([]int, error) {
var subspesialis []int var subspesialis []int
errSelect := config.SatuDataDB.Raw(`select distinct "Sub_spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Sub_spesialis"`, hari).Scan(&subspesialis).Error errSelect := config.SatuDataDB.Debug().Raw(`select distinct "Sub_spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Sub_spesialis"`, hari).Scan(&subspesialis).Error
if errSelect != nil { if errSelect != nil {
log.Printf("Failed get data : %v", errSelect) log.Printf("Failed get data : %v", errSelect)
return nil, errSelect return nil, errSelect
@@ -61,7 +65,7 @@ func GetJadwalSubspesialisByDate(hari string) ([]int, error) {
func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error) { func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error) {
var listDokter []string var listDokter []string
errSelect := config.SatuDataDB.Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and "Spesialis" = ? order by "Spesialis"`, hari, spesialis).Scan(&listDokter).Error errSelect := config.SatuDataDB.Debug().Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and "Spesialis" = ? order by "Spesialis"`, hari, spesialis).Scan(&listDokter).Error
if errSelect != nil { if errSelect != nil {
log.Printf("Failed get data : %v", errSelect) log.Printf("Failed get data : %v", errSelect)
return nil, errSelect return nil, errSelect
@@ -71,7 +75,7 @@ func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error)
func GetJadwalDokterBySubpesialis(hari string, subspesialis string) ([]string, error) { func GetJadwalDokterBySubpesialis(hari string, subspesialis string) ([]string, error) {
var listDokter []string var listDokter []string
errSelect := config.SatuDataDB.Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and "Sub_spesialis" = ? order by "Sub_spesialis"`, hari, subspesialis).Scan(&listDokter).Error errSelect := config.SatuDataDB.Debug().Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and "Sub_spesialis" = ? order by "Sub_spesialis"`, hari, subspesialis).Scan(&listDokter).Error
if errSelect != nil { if errSelect != nil {
log.Printf("Failed get data : %v", errSelect) log.Printf("Failed get data : %v", errSelect)
return nil, errSelect return nil, errSelect
@@ -80,17 +84,7 @@ func GetJadwalDokterBySubpesialis(hari string, subspesialis string) ([]string, e
} }
func DeleteJadwalDokter() error { func DeleteJadwalDokter() error {
err := config.SatuDataDB.Exec(`truncate table "daftar_jadwal_dokter"`).Error err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter"`).Error
if err != nil {
log.Printf("Failed truncate data : %v", err)
return err
}
log.Println("Success truncate data")
return nil
}
func TruncateDataJadwalDokter() error {
err := config.SatuDataDB.Exec(`truncate table "data_jadwal_dokter"`).Error
if err != nil { if err != nil {
log.Printf("Failed truncate data : %v", err) log.Printf("Failed truncate data : %v", err)
return err return err
@@ -100,7 +94,7 @@ func TruncateDataJadwalDokter() error {
} }
func DeleteJadwalDokterTemp() error { func DeleteJadwalDokterTemp() error {
err := config.SatuDataDB.Exec(`truncate table "daftar_jadwal_dokter_temp"`).Error err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter_temp"`).Error
if err != nil { if err != nil {
log.Printf("Failed truncate data : %v", err) log.Printf("Failed truncate data : %v", err)
return err return err
@@ -109,21 +103,19 @@ func DeleteJadwalDokterTemp() error {
return nil return nil
} }
func InsertJadwalDokter(reqInsert *jadwal_dokter.JadwalDokterSatuData) error { func DeleteDataJadwalDokter(tx *gorm.DB, tanggal string) error {
err := config.SatuDataDB.Exec(`insert into "daftar_jadwal_dokter" ("Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis", "Sub_spesialis", "Status") values (?, ? ,?, ?, ?, ?, ?)`, reqInsert.Hari, reqInsert.NamaHari, reqInsert.Waktu, reqInsert.Dokter, reqInsert.Spesialis, reqInsert.SubSpesialis, reqInsert.Status).Error queryDelete := `delete from "data_jadwal_dokter" where "Tanggal_jadwal" = ?`
err := tx.Exec(queryDelete, tanggal).Error
if err != nil { if err != nil {
log.Printf("Failed insert data : %v", err) log.Printf("Failed delete data : %v", err)
return err return err
} }
log.Println("Success insert data") log.Println("Success delete data")
return nil return nil
} }
func InsertJadwalDokterTemp(reqInsert *jadwal_dokter.JadwalDokterSatuData) error { func InsertJadwalDokter(reqInsert *jadwal_dokter.JadwalDokterSatuData) error {
spesialis := strconv.Itoa(reqInsert.Spesialis) err := config.SatuDataDB.Debug().Exec(`insert into "daftar_jadwal_dokter" ("Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis", "Sub_spesialis", "Status") values (?, ? ,?, ?, ?, ?, ?)`, reqInsert.Hari, reqInsert.NamaHari, reqInsert.Waktu, reqInsert.Dokter, reqInsert.Spesialis, reqInsert.SubSpesialis, reqInsert.Status).Error
subspesialis := strconv.Itoa(reqInsert.SubSpesialis)
id := uuid.New()
err := config.SatuDataDB.Exec(`insert into "daftar_jadwal_dokter_temp" ("id", "Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis", "Sub_spesialis", "Status") values (?, ?, ?, ?, ?, ?, ?, ?)`, id, reqInsert.Hari, reqInsert.NamaHari, reqInsert.Waktu, reqInsert.Dokter, spesialis, subspesialis, reqInsert.Status).Error
if err != nil { if err != nil {
log.Printf("Failed insert data : %v", err) log.Printf("Failed insert data : %v", err)
return err return err
@@ -141,3 +133,83 @@ func InsertDataJadwalDokter(tx *gorm.DB, reqInsert *jadwal_dokter.DataJadwalDokt
log.Println("Success insert data") log.Println("Success insert data")
return nil return nil
} }
func InsertJadwalDokterTemp(reqInsert *jadwal_dokter.JadwalDokterSatuData) error {
spesialis := strconv.Itoa(reqInsert.Spesialis)
subspesialis := strconv.Itoa(reqInsert.SubSpesialis)
id := uuid.New()
err := config.SatuDataDB.Debug().Exec(`insert into "daftar_jadwal_dokter_temp" ("id", "Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis", "Sub_spesialis", "Status") values (?, ?, ?, ?, ?, ?, ?, ?)`, id, reqInsert.Hari, reqInsert.NamaHari, reqInsert.Waktu, reqInsert.Dokter, spesialis, subspesialis, reqInsert.Status).Error
if err != nil {
log.Printf("Failed insert data : %v", err)
return err
}
log.Println("Success insert data")
return nil
}
func GetAllJadwalDokter(condition string, args []interface{}) ([]*jadwal_dokter.ListDaftarJadwalDokter, error) {
var listDokter []*jadwal_dokter.ListDaftarJadwalDokter
query := `select djd."Hari" as valuehari, djd."Nama_hari" as hari, djd."Waktu" as waktu, ds."Spesialis" as spesialis, dss."Subspesialis" as subspesialis,
array(
select dgd."Gelar_depan"
from data_pegawai_daftar_gelar_depan dpdgd
left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id
where dpdgd.data_pegawai_id = dp.id
) AS gelardepan,
dkt. "Nama_lengkap" as namalengkap,
array(
select dgb."Gelar_belakang"
from data_pegawai_daftar_gelar_belakang dpdgb
left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id
where dpdgb.data_pegawai_id = dp.id
) AS gelarbelakang
from daftar_jadwal_dokter djd
join daftar_spesialis ds on ds.id = djd."Spesialis"
join daftar_subspesialis dss on dss.id = djd."Sub_spesialis"
join data_pegawai dp on dp.id = djd."Dokter"
join data_ktp dkt on dkt.id = dp."KTP" `
order := ` order by djd."Hari" asc, ds."Spesialis" asc, dss."Subspesialis" asc, djd."Waktu" asc`
query += condition + order
err := config.SatuDataDB.Debug().Raw(query, args...).Scan(&listDokter).Error
if err != nil {
log.Printf("Failed Get data : %v", err)
return nil, err
}
return listDokter, nil
}
func GetDaftarJadwalDokterByHari(hari int) ([]*jadwal_dokter.JadwalDokterSatuData, error) {
var JadwalDokter []*jadwal_dokter.JadwalDokterSatuData
query := `select djd.*, dp."HFIS_code" from daftar_jadwal_dokter djd
left join data_pegawai dp on dp."id" = djd."Dokter"
where djd."Hari" = ?`
err := config.SatuDataDB.Debug().Raw(query, hari).Scan(&JadwalDokter).Error
if err != nil {
log.Printf("Failed Get data : %v", err)
return nil, err
}
return JadwalDokter, nil
}
func UpdateJadwalDokter(req *jadwal_dokter.JadwalDokterSatuData) (bool, error) {
var condition []string
var args []interface{}
condition = append(condition, `where "Nama_hari" = ? and "Sub_spesialis" = ? `)
args = append(args, req.Status, req.NamaHari, req.SubSpesialis)
if req.Dokter != "" {
condition = append(condition, `and "Dokter" = ?`)
args = append(args, req.Dokter)
}
query := `update "daftar_jadwal_dokter" set "Status" = ? `
query += strings.Join(condition, " ")
q := config.SatuDataDB.Debug().Exec(query, args...)
if q.RowsAffected == 0 {
log.Printf("Data belum ada")
return false, nil
}
if q.Error != nil {
log.Printf("Failed Update data : %v", q.Error)
return false, q.Error
}
return true, nil
}
+2 -2
View File
@@ -12,7 +12,7 @@ import (
func GetSpesialis() ([]dokter.DaftarSpesialis, error) { func GetSpesialis() ([]dokter.DaftarSpesialis, error) {
var daftarSpesialis []dokter.DaftarSpesialis var daftarSpesialis []dokter.DaftarSpesialis
result := config.SatuDataDB.Raw(`select * from "daftar_spesialis"`).Find(&daftarSpesialis) result := config.SatuDataDB.Debug().Raw(`select * from "daftar_spesialis"`).Find(&daftarSpesialis)
if result.Error != nil { if result.Error != nil {
if !errors.Is(result.Error, gorm.ErrRecordNotFound) { if !errors.Is(result.Error, gorm.ErrRecordNotFound) {
log.Printf("Error get data : %v", result.Error) log.Printf("Error get data : %v", result.Error)
@@ -27,7 +27,7 @@ func GetSpesialis() ([]dokter.DaftarSpesialis, error) {
func GetSpesialisByID(idSpesialis []string) ([]dokter.DaftarSpesialis, error) { func GetSpesialisByID(idSpesialis []string) ([]dokter.DaftarSpesialis, error) {
var daftarSpesialis []dokter.DaftarSpesialis var daftarSpesialis []dokter.DaftarSpesialis
result := config.SatuDataDB.Raw(`select * from "daftar_spesialis" where "id" in ?`, idSpesialis).Find(&daftarSpesialis) result := config.SatuDataDB.Debug().Raw(`select * from "daftar_spesialis" where "id" in ?`, idSpesialis).Find(&daftarSpesialis)
if result.Error != nil { if result.Error != nil {
if !errors.Is(result.Error, gorm.ErrRecordNotFound) { if !errors.Is(result.Error, gorm.ErrRecordNotFound) {
log.Printf("Error get data : %v", result.Error) log.Printf("Error get data : %v", result.Error)
+3 -3
View File
@@ -12,7 +12,7 @@ import (
func GetSubspesialis() ([]dokter.DaftarSubspesialis, error) { func GetSubspesialis() ([]dokter.DaftarSubspesialis, error) {
var daftarSubspesialis []dokter.DaftarSubspesialis var daftarSubspesialis []dokter.DaftarSubspesialis
result := config.SatuDataDB.Raw(`select * from "daftar_subspesialis"`).Find(&daftarSubspesialis) result := config.SatuDataDB.Debug().Raw(`select * from "daftar_subspesialis"`).Find(&daftarSubspesialis)
if result.Error != nil { if result.Error != nil {
if !errors.Is(result.Error, gorm.ErrRecordNotFound) { if !errors.Is(result.Error, gorm.ErrRecordNotFound) {
log.Printf("Error get data : %v", result.Error) log.Printf("Error get data : %v", result.Error)
@@ -29,7 +29,7 @@ func GetSubspesialis() ([]dokter.DaftarSubspesialis, error) {
func GetSubspesialisByID(idSubspesialis int) (*dokter.DaftarSubspesialis, error) { func GetSubspesialisByID(idSubspesialis int) (*dokter.DaftarSubspesialis, error) {
var daftarSubspesialis *dokter.DaftarSubspesialis var daftarSubspesialis *dokter.DaftarSubspesialis
result := config.SatuDataDB.Raw(`select dss.*, ds."Spesialis" result := config.SatuDataDB.Debug().Raw(`select dss.*, ds."Spesialis"
from "daftar_subspesialis" dss from "daftar_subspesialis" dss
left join "daftar_spesialis" ds on ds."id" = dss."FK_daftar_spesialis_ID" left join "daftar_spesialis" ds on ds."id" = dss."FK_daftar_spesialis_ID"
where dss.id = ?`, idSubspesialis).First(&daftarSubspesialis) where dss.id = ?`, idSubspesialis).First(&daftarSubspesialis)
@@ -48,7 +48,7 @@ func GetSubspesialisByID(idSubspesialis int) (*dokter.DaftarSubspesialis, error)
func GetSubspesialisByIDBatch(idSubspesialis []int) ([]dokter.DaftarSubspesialis, error) { func GetSubspesialisByIDBatch(idSubspesialis []int) ([]dokter.DaftarSubspesialis, error) {
var daftarSubspesialis []dokter.DaftarSubspesialis var daftarSubspesialis []dokter.DaftarSubspesialis
result := config.SatuDataDB.Raw(`select dss.*, ds."Spesialis" result := config.SatuDataDB.Debug().Raw(`select dss.*, ds."Spesialis"
from "daftar_subspesialis" dss from "daftar_subspesialis" dss
left join "daftar_spesialis" ds on ds."id" = dss."FK_daftar_spesialis_ID" left join "daftar_spesialis" ds on ds."id" = dss."FK_daftar_spesialis_ID"
where dss.id in ? where dss.id in ?
@@ -0,0 +1,41 @@
package kunjunganpasien
import (
"bridging-rssa/config"
kunjunganpasien "bridging-rssa/models/kunjungan_pasien"
"log"
)
func GetListKunjunganPasien(req *kunjunganpasien.RequestListKunjunganPasien) ([]*kunjunganpasien.ListKunjunganPasien, error) {
var dataKunjunganPasien []*kunjunganpasien.ListKunjunganPasien
query := `select
dkp. "NOMR" as nomr, dkp. "Nama_lengkap" as namalengkap, dkp. "Tanggal_lahir" as tanggallahir,
dkp. "Jenis_kelamin" as jeniskelamin, dkp. "Tanggal_masuk" as tanggalmasukkunjungan,
dkp."Jam_masuk" as jammasukkunjungan, dkp. "Diagnosis_awal_masuk" as dxawalmasuk,
dkp. "Display_diagnosis_awal_masuk" as displaydxawalmasuk, dlr. "Nama" as namaruang,
array(
select dgd. "Gelar_depan"
from data_pegawai_daftar_gelar_depan dpdgd
left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id
where dpdgd.data_pegawai_id = dp.id
) AS gelardepan,
dkt. "Nama_lengkap" as namalengkapdokter,
array(
select dgb. "Gelar_belakang"
from data_pegawai_daftar_gelar_belakang dpdgb
left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id
where dpdgb.data_pegawai_id = dp.id
) AS gelarbelakang
from data_kunjungan_pasien dkp
join daftar_lokasi_ruang dlr on dlr.id = dkp. "Ruangan"
join data_pegawai dp on dp.id = dkp. "DPJP"
join data_ktp dkt on dkt.id = dp. "KTP"
where dkp."Tanggal_masuk" between ? and ?
order by dkp. "Tanggal_masuk" desc, dkp. "Jam_masuk" desc`
err := config.SatuDataDB.Debug().Raw(query, req.TanggalAwal, req.TanggalAkhir).Scan(&dataKunjunganPasien).Error
if err != nil {
log.Println(err)
return nil, err
}
return dataKunjunganPasien, nil
}
+13 -1
View File
@@ -10,7 +10,7 @@ func InsertLogAPI(reqInsert *logapi.DataLogAPI) error {
query := `insert into "data_log_api" ( query := `insert into "data_log_api" (
"id", "date_created", "User_agent", "IP", "Parameter", "Header", "Method", "URL", "Request", "Respon", "Respon_code", "Respontime_start", "Respontime_end", "Comment" "id", "date_created", "User_agent", "IP", "Parameter", "Header", "Method", "URL", "Request", "Respon", "Respon_code", "Respontime_start", "Respontime_end", "Comment"
) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` ) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
err := config.SatuDataDB.Exec(query, err := config.SatuDataDB.Debug().Exec(query,
reqInsert.ID, reqInsert.ID,
reqInsert.DateCreated, reqInsert.DateCreated,
reqInsert.UserAgent, reqInsert.UserAgent,
@@ -32,3 +32,15 @@ func InsertLogAPI(reqInsert *logapi.DataLogAPI) error {
} }
return nil return nil
} }
func GetLogAPI(req logapi.ReqGetDataLogAPI) ([]*logapi.DataLogAPI, error) {
var dataLog []*logapi.DataLogAPI
query := `select * from data_log_api dla where dla."Parameter" = 'BPJS-VClaim-RencanaKontrol' and dla."Request"->>'tipe_rawat' = ? and date(dla."date_created") between ? and ?`
err := config.SatuDataDB.Debug().Raw(query, req.TipeRawat, req.TanggalAwal, req.TanggalAkhir).Scan(&dataLog).Error
if err != nil {
log.Println(err)
return nil, err
}
log.Println("Berhasil Get Data")
return dataLog, nil
}
+1 -1
View File
@@ -9,7 +9,7 @@ import (
func InsertLogICare(reqInsert *logapi.InsertLogICare) error { func InsertLogICare(reqInsert *logapi.InsertLogICare) error {
query := `insert into "data_log_icare_bpjs" ("id", "date_created", "Ruangan", "Dokter", "Kunjungan_pasien", "Waktu_transaksi") query := `insert into "data_log_icare_bpjs" ("id", "date_created", "Ruangan", "Dokter", "Kunjungan_pasien", "Waktu_transaksi")
values (?, ?, ?, ?, ?, ?)` values (?, ?, ?, ?, ?, ?)`
errInsert := config.SatuDataDB.Exec(query, errInsert := config.SatuDataDB.Debug().Exec(query,
reqInsert.ID, reqInsert.ID,
reqInsert.DateCreated, reqInsert.DateCreated,
reqInsert.Ruangan, reqInsert.Ruangan,
@@ -4,6 +4,7 @@ import (
"bridging-rssa/config" "bridging-rssa/config"
"errors" "errors"
"log" "log"
"strconv"
"gorm.io/gorm" "gorm.io/gorm"
) )
@@ -11,11 +12,16 @@ import (
func GetDaftarLokasiRuang(idSimgos string) (int, error) { func GetDaftarLokasiRuang(idSimgos string) (int, error) {
var idRuangan int var idRuangan int
query := `select dlr."id" from "daftar_lokasi_ruang" dlr where dlr."Id_location_simgos" = ?` query := `select dlr."id" from "daftar_lokasi_ruang" dlr where dlr."Id_location_simgos" = ?`
err := config.SatuDataDB.Raw(query, idSimgos).First(&idRuangan).Error err := config.SatuDataDB.Debug().Raw(query, idSimgos).First(&idRuangan).Error
if err != nil { if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) { if errors.Is(err, gorm.ErrRecordNotFound) {
log.Println(err) log.Println(err)
return 128, nil idInt, errConv := strconv.Atoi(idSimgos)
if errConv != nil {
log.Println(err)
return 0, err
}
return idInt, nil
} }
log.Println(err) log.Println(err)
return 0, err return 0, err
+35 -1
View File
@@ -12,7 +12,7 @@ import (
func GetDataKunjunganPasien(idxdaftar string) (*pasien.KunjunganPasien, error) { func GetDataKunjunganPasien(idxdaftar string) (*pasien.KunjunganPasien, error) {
var kunjunganPasien *pasien.KunjunganPasien var kunjunganPasien *pasien.KunjunganPasien
query := `select dks."id", dks."Ruangan" from "data_kunjungan_pasien" dks where dks."IDXDAFTAR" = ?` query := `select dks."id", dks."Ruangan" from "data_kunjungan_pasien" dks where dks."IDXDAFTAR" = ?`
err := config.SatuDataDB.Raw(query, idxdaftar).First(&kunjunganPasien).Error err := config.SatuDataDB.Debug().Raw(query, idxdaftar).First(&kunjunganPasien).Error
if err != nil { if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) { if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data Tidak Ditemukan") errMsg := errors.New("Data Tidak Ditemukan")
@@ -25,3 +25,37 @@ func GetDataKunjunganPasien(idxdaftar string) (*pasien.KunjunganPasien, error) {
log.Println("Data Kunjungan Pasien : ", kunjunganPasien) log.Println("Data Kunjungan Pasien : ", kunjunganPasien)
return kunjunganPasien, nil return kunjunganPasien, nil
} }
func GetListKunjunganPasien(req *pasien.RequestListKunjunganPasien) ([]*pasien.ListKunjunganPasien, error) {
var dataKunjunganPasien []*pasien.ListKunjunganPasien
query := `select
dkp. "NOMR" as nomr, dkp. "Nama_lengkap" as namalengkap, dkp. "Tanggal_lahir" as tanggallahir,
dkp. "Jenis_kelamin" as jeniskelamin, dkp. "Tanggal_masuk" as tanggalmasukkunjungan,
dkp."Jam_masuk" as jammasukkunjungan, dkp. "Diagnosis_awal_masuk" as dxawalmasuk,
dkp. "Display_diagnosis_awal_masuk" as displaydxawalmasuk, dlr. "Nama" as namaruang,
array(
select dgd. "Gelar_depan"
from data_pegawai_daftar_gelar_depan dpdgd
left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id
where dpdgd.data_pegawai_id = dp.id
) AS gelardepan,
dkt. "Nama_lengkap" as namalengkapdokter,
array(
select dgb. "Gelar_belakang"
from data_pegawai_daftar_gelar_belakang dpdgb
left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id
where dpdgb.data_pegawai_id = dp.id
) AS gelarbelakang
from data_kunjungan_pasien dkp
join daftar_lokasi_ruang dlr on dlr.id = dkp. "Ruangan"
join data_pegawai dp on dp.id = dkp. "DPJP"
join data_ktp dkt on dkt.id = dp. "KTP"
where dkp."Tanggal_masuk" between ? and ?
order by dkp. "Tanggal_masuk" desc, dkp. "Jam_masuk" desc`
q := config.SatuDataDB.Debug().Raw(query, req.TanggalAwal, req.TanggalAkhir).Scan(&dataKunjunganPasien)
if q.Error != nil {
log.Println(q.Error)
return nil, q.Error
}
return dataKunjunganPasien, nil
}
@@ -7,7 +7,7 @@ import (
) )
func UpdateKunjunganPasien(req sk.RequestInsertRencanaKontrol) error { func UpdateKunjunganPasien(req sk.RequestInsertRencanaKontrol) error {
err := config.SatuDataDB.Exec(`update "data_kunjungan_pasien" set "Nomor_sep" = ?, "Diagnosis_akhir_keluar" = ?, "Display_diagnosis_akhir_keluar" = ?, "Diagnosis_primer_utama" = ?, "Display_diagnosis_primer_utama" = ? where "IDXDAFTAR" = ?`, req.NoSEP, req.KodeDiagnosa, req.NamaDiagnosa, req.KodeDiagnosa, req.NamaDiagnosa, req.IDXDaftar).Error err := config.SatuDataDB.Debug().Exec(`update "data_kunjungan_pasien" set "Nomor_sep" = ?, "Diagnosis_akhir_keluar" = ?, "Display_diagnosis_akhir_keluar" = ?, "Diagnosis_primer_utama" = ?, "Display_diagnosis_primer_utama" = ? where "IDXDAFTAR" = ?`, req.NoSEP, req.KodeDiagnosa, req.NamaDiagnosa, req.KodeDiagnosa, req.NamaDiagnosa, req.IDXDaftar).Error
if err != nil { if err != nil {
log.Println(err) log.Println(err)
return err return err
+97 -110
View File
@@ -11,7 +11,7 @@ import (
func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) { func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) {
var kunjunganPasien *suratkontrol.KunjunganPasien var kunjunganPasien *suratkontrol.KunjunganPasien
err := config.SatuDataDB.Raw(`select dkp."id", dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep, err := config.SatuDataDB.Debug().Raw(`select dkp."id", dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep,
dlr."Nama" as namaklinik, dlr."Id_location_simgos" as idkliniksimgos, dlr."Kode_hfis_bpjs" as kodehfisklinik, dlr."Nama" as namaklinik, dlr."Id_location_simgos" as idkliniksimgos, dlr."Kode_hfis_bpjs" as kodehfisklinik,
dk."Nama_lengkap" as namadokter, dk."Nama_lengkap" as namadokter,
dp."KDDOKTER" as kodedokter, dp."HFIS_code" as kodehfisdokter, dp."KDDOKTER" as kodedokter, dp."HFIS_code" as kodehfisdokter,
@@ -56,9 +56,9 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
log.Println("Req Insert Database : ", reqInsert) log.Println("Req Insert Database : ", reqInsert)
insertQuery := `insert into "data_surat_kontrol" ("id", "date_created", "Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol", insertQuery := `insert into "data_surat_kontrol" ("id", "date_created", "Tanggal_cetak_surat_kontrol", "Tanggal_rencana_kontrol",
"Nomor_surat_kontrol", "Kunjungan_pasien", "Ruangan_surat_kontrol", "DPJP_surat_kontrol", "Status_surat_kontrol", "Nomor_surat_kontrol", "Kunjungan_pasien", "Ruangan_surat_kontrol", "DPJP_surat_kontrol", "Status_surat_kontrol",
"User_created_surat_kontrol", "Tipe_surat_kontrol", "User_updated_surat_kontrol", "Tipe_rawat") "User_created_surat_kontrol", "Tipe_surat_kontrol", "User_updated_surat_kontrol")
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
err := config.SatuDataDB.Exec(insertQuery, err := config.SatuDataDB.Debug().Exec(insertQuery,
reqInsert.ID, reqInsert.ID,
reqInsert.DateCreated, reqInsert.DateCreated,
reqInsert.TglCetakSurKon, reqInsert.TglCetakSurKon,
@@ -71,7 +71,6 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
reqInsert.UserCreatedSurKon, reqInsert.UserCreatedSurKon,
reqInsert.TipeSurKon, reqInsert.TipeSurKon,
reqInsert.UserUpdatedSurKon, reqInsert.UserUpdatedSurKon,
reqInsert.TipeRawat,
).Error ).Error
if err != nil { if err != nil {
log.Println(err) log.Println(err)
@@ -80,9 +79,9 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
return nil return nil
} }
func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKontrol, error) { func GetDataSuratKontrol() ([]*suratkontrol.GetDataSuratKontrol, error) {
var dataSurKon []*suratkontrol.GetDataSuratKontrol var dataSurKon []*suratkontrol.GetDataSuratKontrol
err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", err := config.SatuDataDB.Debug().Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
dsk."Nomor_surat_kontrol", dsk."Nomor_surat_kontrol",
(select dlr."Nama" (select dlr."Nama"
from data_kunjungan_pasien dkp from data_kunjungan_pasien dkp
@@ -116,7 +115,7 @@ func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKont
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id" left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id" left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id" left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' offset ? limit ?`, offset, limit).Scan(&dataSurKon).Error where dsk."Status_surat_kontrol" = '1'`).Scan(&dataSurKon).Error
if err != nil { if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) { if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("DPJP anda belum ada subspesialis") errMsg := errors.New("DPJP anda belum ada subspesialis")
@@ -127,57 +126,9 @@ func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKont
return dataSurKon, nil return dataSurKon, nil
} }
func GetDataSuratKontrolByIDTipe(idxdaftar string, tipe string) (*suratkontrol.GetDataSuratKontrol, error) {
var dataSurKon *suratkontrol.GetDataSuratKontrol
err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
dsk."Nomor_surat_kontrol",
(select dlr."Nama"
from data_kunjungan_pasien dkp
left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal",
dlr."Nama" as "Poli_tuju",
dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR",
array(
select dgd. "Gelar_depan"
from data_pegawai_daftar_gelar_depan dpdgd
left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id
) AS gelardepan ,
dk."Nama_lengkap" as "Nama_lengkap_dokter",
array(
select dgb. "Gelar_belakang"
from data_pegawai_daftar_gelar_belakang dpdgb
left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id where dpdgb.data_pegawai_id = dp.id
) AS gelarbelakang,
ds."Subspesialis",
ds."Kode" as "Kode_poli",
ds."id" as "ID_poli",
dp."HFIS_code" as "Kode_dokter",
dp."id" as "id_dokter",
dp."Code_dpjp" as "Kode_dpjp",
dkp2."NOMR" as "No_rm",
dkp2."Diagnosis_primer_utama" as "Kode_diagnosa",
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
dsk."Tipe_surat_kontrol" as "Tipe_SurKon",
dsk."User_created_surat_kontrol" as "User"
from data_surat_kontrol dsk
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dkp2."IDXDAFTAR" = ? and dsk."Tipe_rawat" = ?`, idxdaftar, tipe).First(&dataSurKon).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data tidak ada")
log.Println(errMsg)
return nil, errMsg
}
}
return dataSurKon, nil
}
func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontrol, error) { func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontrol, error) {
var dataSurKon *suratkontrol.GetDataSuratKontrol var dataSurKon *suratkontrol.GetDataSuratKontrol
err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", err := config.SatuDataDB.Debug().Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
dsk."Nomor_surat_kontrol", dsk."Nomor_surat_kontrol",
(select dlr."Nama" (select dlr."Nama"
from data_kunjungan_pasien dkp from data_kunjungan_pasien dkp
@@ -212,10 +163,10 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id" left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id" left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id" left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dkp2."IDXDAFTAR" = ? and dsk."Tipe_rawat" is null`, idxdaftar).First(&dataSurKon).Error where dsk."Status_surat_kontrol" = '1' and dkp2."IDXDAFTAR" = ?`, idxdaftar).First(&dataSurKon).Error
if err != nil { if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) { if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data tidak ada") errMsg := errors.New("DPJP anda belum ada subspesialis")
log.Println(errMsg) log.Println(errMsg)
return nil, errMsg return nil, errMsg
} }
@@ -224,7 +175,7 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro
} }
func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) error { func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) error {
err := config.SatuDataDB.Exec(`update "data_surat_kontrol" set "date_updated" = ?, "Status_surat_kontrol" = ?, "User_updated_surat_kontrol" = ? where "id" = ?`, reqUpdate.DateUpdated, reqUpdate.StatusSurKon, reqUpdate.UserUpdatedSurKon, reqUpdate.ID).Error err := config.SatuDataDB.Debug().Exec(`update "data_surat_kontrol" set "date_updated" = ?, "Status_surat_kontrol" = ?, "User_updated_surat_kontrol" = ? where "id" = ?`, reqUpdate.DateUpdated, reqUpdate.StatusSurKon, reqUpdate.UserUpdatedSurKon, reqUpdate.ID).Error
if err != nil { if err != nil {
log.Println(err) log.Println(err)
return err return err
@@ -234,7 +185,7 @@ func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) error {
func GetIDXDaftarBySurKon(idSurKon string) (string, error) { func GetIDXDaftarBySurKon(idSurKon string) (string, error) {
var idxDaftar string var idxDaftar string
err := config.SatuDataDB.Raw(`select dkp."IDXDAFTAR" err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR"
from "data_surat_kontrol" dsk from "data_surat_kontrol" dsk
left join "data_kunjungan_pasien" dkp on dkp."id" = dsk."Kunjungan_pasien" left join "data_kunjungan_pasien" dkp on dkp."id" = dsk."Kunjungan_pasien"
where dsk."id" = ?`, idSurKon).First(&idxDaftar).Error where dsk."id" = ?`, idSurKon).First(&idxDaftar).Error
@@ -245,9 +196,9 @@ func GetIDXDaftarBySurKon(idSurKon string) (string, error) {
return idxDaftar, err return idxDaftar, err
} }
func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, error) { func GetDataSuratKontrolByTanggal(tanggal string) ([]*suratkontrol.DataSuratKontrol, error) {
var dataSurKon *suratkontrol.DataSuratKontrol var dataSurKon []*suratkontrol.DataSuratKontrol
err := config.SatuDataDB.Raw(`select * from "data_surat_kontrol" where "id" = ?`, idSurKon).First(&dataSurKon).Error err := config.SatuDataDB.Debug().Raw(`select * from "data_surat_kontrol" where "Tanggal_rencaca_kontrol" = ?`, tanggal).Scan(&dataSurKon).Error
if err != nil { if err != nil {
log.Println(err) log.Println(err)
return nil, err return nil, err
@@ -257,7 +208,11 @@ func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, er
func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) ([]*suratkontrol.GetDataSuratKontrol, error) { func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) ([]*suratkontrol.GetDataSuratKontrol, error) {
var dataSurKon []*suratkontrol.GetDataSuratKontrol var dataSurKon []*suratkontrol.GetDataSuratKontrol
query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ? offset ? limit ?` queryDate := ` and date(dsk."Tanggal_rencana_kontrol") between ? and ? offset ? limit ?`
if req.IsTanggalEntri {
queryDate = ` and date(dsk."Tanggal_cetak_surat_kontrol") between ? and ? offset ? limit ?`
}
query += queryDate
querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
dsk."Nomor_surat_kontrol", dsk."Nomor_surat_kontrol",
(select dlr."Nama" (select dlr."Nama"
@@ -294,7 +249,7 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id" left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? ` where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
querySelect += query querySelect += query
err := config.SatuDataDB.Raw(querySelect, args...).Find(&dataSurKon).Error err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&dataSurKon).Error
if err != nil { if err != nil {
log.Println(err) log.Println(err)
return nil, err return nil, err
@@ -302,42 +257,20 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i
return dataSurKon, nil return dataSurKon, nil
} }
func CountDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) (int, error) { func SearchDataSurKonNew(req suratkontrol.RequestCariPasien, query string, args []interface{}) ([]*suratkontrol.GetDataSuratKontrol, error) {
var jumlahData int var dataSurKon []*suratkontrol.GetDataSuratKontrol
query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?` queryDate := ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?`
querySelect := `select count(dsk.*) if req.IsTanggalEntri {
from data_surat_kontrol dsk queryDate = ` and date(dsk."Tanggal_cetak_surat_kontrol") between ? and ?`
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
querySelect += query
err := config.SatuDataDB.Raw(querySelect, args...).Find(&jumlahData).Error
if err != nil {
log.Println(err)
return 0, err
} }
return jumlahData, nil query += queryDate
} querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
dsk."Nomor_surat_kontrol",
func GetNomorSurKon(idPasien string) (string, error) { (select dlr."Nama"
var noSurKon string from data_kunjungan_pasien dkp
querySelect := `select dsk."Nomor_surat_kontrol" from data_surat_kontrol dsk where dsk."Kunjungan_pasien" = ? and dsk."Tipe_surat_kontrol" <> '1' order by dsk."date_created"` left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal",
err := config.SatuDataDB.Raw(querySelect, idPasien).Scan(&noSurKon).Error dlr."Nama" as "Poli_tuju",
if err != nil { dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR",
log.Println(err)
return "", err
}
log.Println("Nomor SurKon :", noSurKon)
return noSurKon, nil
}
func Getdatahistori(norm string, offset, limit string) ([]*suratkontrol.HistoriSurkon, error) {
var dataHistoriSurKon []*suratkontrol.HistoriSurkon
err := config.SatuDataDB.Raw(`select dkp2."Nama_lengkap",dkp2."Nomor_sep", dsk."Nomor_surat_kontrol",dsk."Tanggal_rencana_kontrol",dsk."Tanggal_cetak_surat_kontrol",
ds2."Spesialis",ds."Subspesialis",
array( array(
select dgd. "Gelar_depan" select dgd. "Gelar_depan"
from data_pegawai_daftar_gelar_depan dpdgd from data_pegawai_daftar_gelar_depan dpdgd
@@ -348,22 +281,76 @@ func Getdatahistori(norm string, offset, limit string) ([]*suratkontrol.HistoriS
select dgb. "Gelar_belakang" select dgb. "Gelar_belakang"
from data_pegawai_daftar_gelar_belakang dpdgb from data_pegawai_daftar_gelar_belakang dpdgb
left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id where dpdgb.data_pegawai_id = dp.id left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id where dpdgb.data_pegawai_id = dp.id
) AS gelarbelakang, dsk."User_created_surat_kontrol", dsk."User_updated_surat_kontrol",dsk."Tipe_rawat" , ) AS gelarbelakang,
dsk."Status_surat_kontrol" ds."Subspesialis",
ds."Kode" as "Kode_poli",
ds."id" as "ID_poli",
dp."HFIS_code" as "Kode_dokter",
dp."id" as "id_dokter",
dp."Code_dpjp" as "Kode_dpjp",
dkp2."NOMR" as "No_rm",
dkp2."Diagnosis_primer_utama" as "Kode_diagnosa",
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
dsk."Tipe_surat_kontrol" as "Tipe_SurKon"
from data_surat_kontrol dsk from data_surat_kontrol dsk
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien" left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id" left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id" left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id" left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id" left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
left join daftar_spesialis ds2 on ds."FK_daftar_spesialis_ID" = ds2."id" where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
where dkp2."NOMR" = ? order by dsk."Tanggal_rencana_kontrol" desc offset ? limit ?`, norm, offset, limit).Scan(&dataHistoriSurKon).Error querySelect += query
err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&dataSurKon).Error
if err != nil { if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) { log.Println(err)
errMsg := errors.New("data tidak ada") return nil, err
log.Println(errMsg)
return nil, errMsg
} }
return dataSurKon, nil
}
func CountDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) (int, error) {
var jumlahData int
queryDate := ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?`
if req.IsTanggalEntri {
queryDate = ` and date(dsk."Tanggal_cetak_surat_kontrol") between ? and ?`
} }
return dataHistoriSurKon, nil query += queryDate
querySelect := `select count(dsk.*)
from data_surat_kontrol dsk
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
querySelect += query
err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&jumlahData).Error
if err != nil {
log.Println(err)
return 0, err
}
return jumlahData, nil
}
func GetNomorSurKon(idPasien string) (string, error) {
var noSurKon string
querySelect := `select dsk."Nomor_surat_kontrol" from data_surat_kontrol dsk where dsk."Kunjungan_pasien" = ? and dsk."Tipe_surat_kontrol" <> '1' order by dsk."date_created"`
err := config.SatuDataDB.Debug().Raw(querySelect, idPasien).Scan(&noSurKon).Error
if err != nil {
log.Println(err)
return "", err
}
log.Println("Nomor SurKon :", noSurKon)
return noSurKon, nil
}
func GetAllNomorSurKon(date string) ([]*suratkontrol.DataNomorSuratKontrol, error) {
var listNoSurKon []*suratkontrol.DataNomorSuratKontrol
querySelect := `select dsk."id", dsk."Nomor_surat_kontrol", date(dsk."Tanggal_rencana_kontrol") as "Tanggal_rencana_kontrol" from data_surat_kontrol dsk where dsk."Tipe_surat_kontrol" = '1' and date(dsk.date_created) = ?`
err := config.SatuDataDB.Debug().Raw(querySelect, date).Scan(&listNoSurKon).Error
if err != nil {
log.Println(err)
return nil, err
}
return listNoSurKon, nil
} }
+17
View File
@@ -0,0 +1,17 @@
package dokter
import (
"bridging-rssa/config"
"log"
)
func GetNamaDokter(kdDokter string) (string, error) {
var namaDokter string
querySelect := `SELECT namadokter FROM m_dokter where "kddokter" = ?`
errSelect := config.SimrsDB.Debug().Raw(querySelect, kdDokter).Scan(&namaDokter).Error
if errSelect != nil {
log.Println(errSelect)
return "", errSelect
}
return namaDokter, nil
}
@@ -0,0 +1,83 @@
package mikrobiologi
import (
"bridging-rssa/config"
"bridging-rssa/models/simrs/mikrobiologi"
"errors"
"log"
"gorm.io/gorm"
)
func GetDataMikroBiologi(req *mikrobiologi.RequestPasienMikrobiologi) ([]*mikrobiologi.DataPasienMikrobiologi, error) {
var dataPasien []*mikrobiologi.DataPasienMikrobiologi
query := `select tom."nomr" as nomr, tomm."nonota" as nonota, tom."idxdaftar" as idxdaftar, tom."tglorder" as tglorder, tom."nolab" as nolab, tom."rajal" as statusrajal, tom."aps" as statusaps,
mp."nama" as nama, mp."noktp" as noktp, mp."noktp_baru" as noktpbaru, mp."tempat" as tmptlahir, mp."tgllahir" as tgllahir, mp."jeniskelamin" as jeniskelamin, mp."alamat" as alamat,
mpa."nama" as namaaps, mpa."noktp" as noktpaps, mpa."tempat" as tmptlahiraps, mpa."tgllahir" as tgllahiraps, mpa."jeniskelamin" as jeniskelaminaps, mpa."alamat" as alamataps,
mr."nama" as namaruang, mr."kelas" as kelasruang,
trj."kodetarif" as kodetarifrajal,
trp."kodetarif" as kodetarifranap
from t_orderlabmikro tom
left join m_pasien mp on mp."nomr" = tom."nomr"
left join m_pasien_aps mpa on mpa."nomr" = tom."nomr"
left join m_ruang mr on mr."no" = tom."kdpoli"
left join t_orderlabmikro_main tomm on tomm."nolab" = tom."nolab"
left join t_billrajal trj on trj."nonota" = CAST(tomm."nonota" AS int8)
left join t_billranap trp on trp."nonota" = CAST(tomm."nonota" AS int8)
where tom."nomr" = ?
and tom."idxdaftar" = ?
group by (tom."nomr",tomm."nonota",tom."idxdaftar",tom."tglorder",tom."nolab",tom."rajal",tom."aps",mp."nama",mp."noktp",mp."noktp_baru",mp."tempat",mp."tgllahir",mp."jeniskelamin",mp."alamat",mpa."nama",mpa."noktp",
mpa."tempat",mpa."tgllahir",mpa."jeniskelamin",mpa."alamat",mr."nama",mr."kelas",trj."kodetarif",trp."kodetarif")
`
errQuery := config.SimrsDB.Debug().Raw(query, req.NOMR, req.IDXDaftar).Scan(&dataPasien).Error
if errQuery != nil {
if errors.Is(errQuery, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data Tidak Ditemukan")
log.Println(errMsg)
return nil, errMsg
}
log.Println(errQuery)
return nil, errQuery
}
return dataPasien, nil
}
func GetDataMikroBiologiByNoMR(req *mikrobiologi.RequestPasienMikrobiologi) ([]*mikrobiologi.OrderLabMikroMain, error) {
var data []*mikrobiologi.OrderLabMikroMain
query := `select * from "t_orderlabmikro_main" where "nomr" = ? and "idxdaftar" = ? and "nolab" = ?`
errSelect := config.SimrsDB.Debug().Raw(query, req.NOMR, req.IDXDaftar, req.NoLab).Scan(&data).Error
if errSelect != nil {
if errors.Is(errSelect, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data Tidak Ditemukan")
log.Println(errMsg)
return nil, errMsg
}
log.Println(errSelect)
return nil, errSelect
}
return data, nil
}
func GetDataLabMikro(noLab string) (*mikrobiologi.OrderLabMikro, bool, error) {
var dataMikro *mikrobiologi.OrderLabMikro
querySelect := `select olm."idxordermikro", olm."jenis_pemeriksaan"
from t_orderlabmikro olm
left join "m_form_lab" fl on olm."idxform" = fl."form_id"
where olm."nolab" = ? and fl."sub_kelompok" = 'Jenis Pemeriksaan' limit 1`
errSelect := config.SimrsDB.Debug().Raw(querySelect, noLab).Scan(&dataMikro).Error
if errSelect != nil {
log.Println(errSelect)
return nil, false, errSelect
}
return dataMikro, true, nil
}
func UpdateLabMikro(req *mikrobiologi.ReqUpdateLisMikro) error {
queryUpdate := `update "t_orderlabmikro" set "no_lokal" = ? where "idxordermikro" = ?`
errUpdate := config.SimrsDB.Debug().Exec(queryUpdate, req.NoLokal, req.IdxOrderMikro).Error
if errUpdate != nil {
log.Println(errUpdate)
return errUpdate
}
return nil
}
+19
View File
@@ -0,0 +1,19 @@
package pasien
import (
"bridging-rssa/config"
"bridging-rssa/models/simrs/mikrobiologi"
"bridging-rssa/models/simrs/pasien"
"log"
)
func GetMPasien(req *mikrobiologi.RequestPasienMikrobiologi) (*pasien.MPasien, error) {
var dataPasien *pasien.MPasien
querySelect := `select * from m_pasien where "nomr" = ?`
errSelect := config.SimrsDB.Debug().Raw(querySelect, req.NOMR).First(&dataPasien).Error
if errSelect != nil {
log.Println(errSelect)
return nil, errSelect
}
return dataPasien, nil
}
+20
View File
@@ -0,0 +1,20 @@
package pendaftaran
import (
"bridging-rssa/config"
"bridging-rssa/models/simrs/mikrobiologi"
"log"
)
func GetCaraBayar(req *mikrobiologi.OrderLabMikroMain) (string, error) {
var CaraBayar string
query := `select mcb."nama" from t_pendaftaran tp
left join m_carabayar mcb on tp."kdcarabayar" = mcb.kode
where tp."idxdaftar" = ?`
errSelect := config.SimrsDB.Debug().Raw(query, req.IdxDaftar).First(&CaraBayar).Error
if errSelect != nil {
log.Println(errSelect)
return "", errSelect
}
return CaraBayar, nil
}
+18
View File
@@ -0,0 +1,18 @@
package ruang
import (
"bridging-rssa/config"
"bridging-rssa/models/simrs/ruang"
"log"
)
func GetNamaRuang(kdPoli string) (*ruang.MRuang, error) {
var poli *ruang.MRuang
query := `select "nama", "subsistem" from m_ruang where "no" = ?`
errSelect := config.SimrsDB.Debug().Raw(query, kdPoli).Scan(&poli).Error
if errSelect != nil {
log.Println(errSelect)
return nil, errSelect
}
return poli, nil
}
+3 -5
View File
@@ -7,14 +7,12 @@ services:
container_name: api-rssa container_name: api-rssa
restart: always restart: always
ports: ports:
- 8080:8080 - 8082:8082
volumes: volumes:
- .:/app - .:/app
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
environment: environment:
# TIMEZONE # Set timezone to Asia/Jakarta
- TZ=Asia/Jakarta - ENV TZ=Asia/Jakarta
# DATABASE SIMRS V3.0 # DATABASE SIMRS V3.0
- POSTGRE_DB_HOST=10.10.123.223 - POSTGRE_DB_HOST=10.10.123.223
- POSTGRE_DB_PORT=5432 - POSTGRE_DB_PORT=5432
+4
View File
@@ -54,7 +54,11 @@ func GetNoUrut(noSurKon string) (string, error) {
return "", err return "", err
} }
log.Println("No Urut Int: ", noUrutInt)
noUrutInt++ noUrutInt++
log.Println("No Urut Int: ", noUrutInt)
noUrutStr := fmt.Sprintf("%03d", noUrutInt) noUrutStr := fmt.Sprintf("%03d", noUrutInt)
log.Println("No Urut: ", noUrutStr) log.Println("No Urut: ", noUrutStr)
return noUrutStr, nil return noUrutStr, nil
+3 -4
View File
@@ -60,8 +60,7 @@ func GetFKRTL(c *gin.Context) {
conf := config.ConfigBpjs{} conf := config.ConfigBpjs{}
icare := true header := cfg.SetHeader(true, conf)
header := cfg.SetHeader(icare, conf)
headers := map[string]string{ headers := map[string]string{
"X-cons-id": header.ConsID, "X-cons-id": header.ConsID,
@@ -217,8 +216,8 @@ func GetFKRTL(c *gin.Context) {
} }
func GetFKTP(c *gin.Context) { func GetFKTP(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS") baseUrl := os.Getenv("BASEURL_BPJS_DEV")
endpoint := os.Getenv("I_CARE_JKN") endpoint := os.Getenv("I_CARE_JKN_DEV")
param := os.Getenv("GET_FKRTL") param := os.Getenv("GET_FKRTL")
url := baseUrl + endpoint + param url := baseUrl + endpoint + param
+16 -7
View File
@@ -54,6 +54,15 @@ func ResponseGetFKRTL(url string, header *config.Header, headers map[string]stri
} }
log.Println("RESPONSE: ", response) log.Println("RESPONSE: ", response)
// if response.StatusCode != 200 {
// errMsg := errors.New(response.Status)
// log.Printf("error : %v", errMsg)
// responses.MetaData.Code = 503
// responses.MetaData.Message = errMsg.Error()
// log.Println("responses: ", responses)
// return responses, err
// }
if response.StatusCode == http.StatusGatewayTimeout { // 504 if response.StatusCode == http.StatusGatewayTimeout { // 504
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi") errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg) log.Printf("error : %v", errMsg)
@@ -176,13 +185,6 @@ func ResponseGetFKTP(url string, header *config.Header, headers map[string]strin
log.Println("Res:", string(res)) log.Println("Res:", string(res))
var resFkrtlRaw ic.ResponseGetRaw var resFkrtlRaw ic.ResponseGetRaw
err = json.Unmarshal([]byte(string(res)), &resFkrtlRaw)
if err != nil {
log.Printf("Error Unmarshaling: %v", err)
return nil, err
}
log.Println("ResponseRaw : ", resFkrtlRaw)
if resFkrtlRaw.MetaData.Code != 200 { if resFkrtlRaw.MetaData.Code != 200 {
errMsg := errors.New(resFkrtlRaw.MetaData.Message) errMsg := errors.New(resFkrtlRaw.MetaData.Message)
@@ -196,6 +198,13 @@ func ResponseGetFKTP(url string, header *config.Header, headers map[string]strin
log.Println("responses: ", responses) log.Println("responses: ", responses)
return responses, errMsg return responses, errMsg
} }
err = json.Unmarshal([]byte(string(res)), &resFkrtlRaw)
if err != nil {
log.Printf("Error Unmarshaling: %v", err)
return nil, err
}
log.Println("ResponseRaw : ", resFkrtlRaw)
dataResp, err := docs.StringDecrypt(key, resFkrtlRaw.Response) dataResp, err := docs.StringDecrypt(key, resFkrtlRaw.Response)
if err != nil { if err != nil {
+598 -271
View File
@@ -7,6 +7,7 @@ import (
log_api "bridging-rssa/database/satu_data/log_api" log_api "bridging-rssa/database/satu_data/log_api"
"bridging-rssa/docs/utils" "bridging-rssa/docs/utils"
"bridging-rssa/models/bpjs/jadwal_dokter" "bridging-rssa/models/bpjs/jadwal_dokter"
suratkontrol "bridging-rssa/models/bpjs/surat_kontrol"
"bridging-rssa/models/config" "bridging-rssa/models/config"
dktr "bridging-rssa/models/dokter" dktr "bridging-rssa/models/dokter"
logapi "bridging-rssa/models/log_api" logapi "bridging-rssa/models/log_api"
@@ -19,51 +20,16 @@ import (
"strings" "strings"
"time" "time"
"github.com/gin-gonic/gin"
"github.com/google/uuid" "github.com/google/uuid"
"gorm.io/gorm" "gorm.io/gorm"
"github.com/gin-gonic/gin"
) )
func GetJadwalDokter(c *gin.Context) { func GetJadwalDokter() {
baseUrl := os.Getenv("BASEURL_BPJS") baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("ANTREAN_RS") endpoint := os.Getenv("ANTREAN_RS")
tanggal := c.Param("tanggal") url := baseUrl + endpoint
// Select from daftar spesialis
spesialis, err := dokter.GetSpesialis()
if err != nil {
c.JSON(http.StatusInternalServerError, err)
}
var listIdSpesialis = make(map[string]int)
for _, kodeDokter := range spesialis {
listIdSpesialis[kodeDokter.Kode] = kodeDokter.ID
}
subspesialis, err := dokter.GetSubspesialis()
if err != nil {
c.JSON(http.StatusInternalServerError, err)
}
var listIdSubspesialis = make(map[string]int)
for _, kodeDokter := range subspesialis {
listIdSubspesialis[kodeDokter.Kode] = kodeDokter.ID
}
listDokter, err := dokter.GetDokter()
if err != nil {
c.JSON(http.StatusInternalServerError, err)
}
var listIddokter = make(map[int]string)
for _, kodeDokter := range listDokter {
listIddokter[kodeDokter.HfisCode] = kodeDokter.ID
}
var reqInsert *jadwal_dokter.JadwalDokterSatuData
var response []*jadwal_dokter.JadwalDokterSatuData
for _, value := range spesialis {
conf := config.ConfigBpjs{} conf := config.ConfigBpjs{}
header := cfg.SetHeader(false, conf) header := cfg.SetHeader(false, conf)
@@ -74,63 +40,128 @@ func GetJadwalDokter(c *gin.Context) {
"X-signature": header.XSignature, "X-signature": header.XSignature,
"user_key": header.UserKey, "user_key": header.UserKey,
} }
kdPoly := value.Kode
url := baseUrl + endpoint log.Println("Headers : ", headers)
param := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggal var headerStringBuilder strings.Builder
linkurl := url + param for key, value := range headers {
res, err := JadwalDokterGetResponse(linkurl, header, headers) headerStringBuilder.WriteString(fmt.Sprintf("%s: %s; ", key, value))
}
headerString := strings.TrimSuffix(headerStringBuilder.String(), "; ")
errTruncate := dokter.DeleteJadwalDokter()
if errTruncate != nil {
log.Println(errTruncate)
return
}
errTruncateTemp := dokter.DeleteJadwalDokterTemp()
if errTruncateTemp != nil {
log.Println(errTruncateTemp)
return
}
// Select from daftar spesialis
spesialis, err := dokter.GetSpesialis()
if err != nil { if err != nil {
log.Println("Error making external API request: %v", err) return
c.JSON(http.StatusInternalServerError, err)
} }
log.Println("Tanggal :", tanggal)
if res == nil { var listIdSpesialis = make(map[string]int)
for _, kodeDokter := range spesialis {
listIdSpesialis[kodeDokter.Kode] = kodeDokter.ID
}
subspesialis, err := dokter.GetSubspesialis()
if err != nil {
return
}
var listIdSubspesialis = make(map[string]int)
for _, kodeDokter := range subspesialis {
listIdSubspesialis[kodeDokter.Kode] = kodeDokter.ID
}
listDokter, err := dokter.GetDokter()
if err != nil {
return
}
var listIddokter = make(map[int]string)
for _, kodeDokter := range listDokter {
listIddokter[kodeDokter.HfisCode] = kodeDokter.ID
}
var reqInsert *jadwal_dokter.JadwalDokterSatuData
for _, value := range spesialis {
tanggal := time.Now().Format("2006-01-02")
for i := 0; i < 7; i++ {
kdPoly := value.Kode
param := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggal
url += param
req := &jadwal_dokter.RequestJadwalDokter{
KodePoli: kdPoly,
Tanggal: tanggal,
}
reqJson, errMarshal := json.Marshal(req)
if errMarshal != nil {
log.Println(errMarshal)
return
}
logTimeStart := time.Now().Format("2006-01-02 15:04:05")
res, errResponse := JadwalDokterGetResponse(url, header, kdPoly, tanggal, headers)
if errResponse != nil {
log.Printf("Error making external API request: %v", err)
return
}
resJson, errMarshalRes := json.Marshal(res)
if errMarshalRes != nil {
log.Printf("Error making external API request: %v", err)
}
uuid := uuid.New().String()
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
if res.MetaData.Code != 200 {
log.Println("Skip Proses") log.Println("Skip Proses")
reqLogApi := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
Parameter: "BPJS-AntreanRS-JadwalDokter",
Header: headerString,
Method: "GET",
Url: url,
Request: reqJson,
Respon: resJson,
ResponCode: "500",
ResponTimeStart: logTimeStart,
ResponTimeEnd: logTimeEnd,
Comment: "Data Kosong",
}
errLog := log_api.InsertLogAPI(reqLogApi)
if errLog != nil {
log.Printf("Error making external API request: %v", err)
}
continue continue
} }
jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(tanggal)
if errLibur != nil { reqLogApi := &logapi.DataLogAPI{
log.Println(errLibur) ID: uuid,
c.JSON(http.StatusInternalServerError, err) DateCreated: logTimeEnd,
} Parameter: "BPJS-AntreanRS-JadwalDokter",
if isLibur { Header: headerString,
tanggalTemp, errParseTemp := time.Parse("2006-01-02", tanggal) Method: "GET",
if errParseTemp != nil { Url: url,
log.Println(errParseTemp) Request: reqJson,
c.JSON(http.StatusInternalServerError, err) Respon: resJson,
} ResponCode: strconv.Itoa(res.MetaData.Code),
isLibur = false ResponTimeStart: logTimeStart,
log.Println(jadwalLibur.NamaLiburPelayanan) ResponTimeEnd: logTimeEnd,
tanggalTemp = tanggalTemp.AddDate(0, 0, 7) Comment: res.MetaData.Message,
tanggalTempString := tanggalTemp.Format("2006-01-02")
log.Println(tanggalTempString)
paramLibur := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggalTempString
linkUrl := url + paramLibur
resNew, errRes := JadwalDokterGetResponse(linkUrl, header, headers)
if errRes != nil {
log.Println("Error making external API request: ", errRes)
c.JSON(http.StatusInternalServerError, err)
}
if resNew != nil {
for _, v := range resNew.Response {
res.Response = append(res.Response, &jadwal_dokter.ListDokter{
KodeSubspesialis: v.KodeSubspesialis,
Hari: v.Hari,
KapasitasPasien: v.KapasitasPasien,
Libur: v.Libur,
NamaHari: v.NamaHari,
Jadwal: v.Jadwal,
NamaSubspesialis: v.NamaSubspesialis,
NamaDokter: v.NamaDokter,
KodePoli: v.KodePoli,
NamaPoli: v.NamaPoli,
KodeDokter: v.KodeDokter,
})
}
} else {
log.Println("Tidak ada data pada tanggal ", tanggalTempString)
continue
} }
errLog := log_api.InsertLogAPI(reqLogApi)
if errLog != nil {
log.Printf("Error making external API request: %v", err)
} }
for _, v := range res.Response { for _, v := range res.Response {
idSpesialis := utils.KodeToIDConverter(v.KodePoli, listIdSpesialis) idSpesialis := utils.KodeToIDConverter(v.KodePoli, listIdSpesialis)
@@ -149,35 +180,40 @@ func GetJadwalDokter(c *gin.Context) {
errInsert := dokter.InsertJadwalDokter(reqInsert) errInsert := dokter.InsertJadwalDokter(reqInsert)
if errInsert != nil { if errInsert != nil {
log.Println(errInsert) log.Println(errInsert)
c.JSON(http.StatusInternalServerError, err) return
} }
} else { } else {
reqInsert.Dokter = strconv.Itoa(v.KodeDokter) reqInsert.Dokter = strconv.Itoa(v.KodeDokter)
errInsertTemp := dokter.InsertJadwalDokterTemp(reqInsert) errInsertTemp := dokter.InsertJadwalDokterTemp(reqInsert)
if errInsertTemp != nil { if errInsertTemp != nil {
log.Println(errInsertTemp) log.Println(errInsertTemp)
c.JSON(http.StatusInternalServerError, err) return
} }
} }
response = append(response, reqInsert) }
date, errParse := time.Parse("2006-01-02", tanggal)
if errParse != nil {
return
}
tanggal = date.AddDate(0, 0, 1).Format("2006-01-02")
log.Println("Tanggal :", tanggal)
} }
} }
c.JSON(http.StatusOK, response)
} }
func GetDokterByDPJP(c *gin.Context) { func GetDokterByDPJP(c *gin.Context) {
dpjp := c.Param("dpjp") dpjp := c.Param("dpjp")
idDokter, err := dokter.GetJadwalDokterByDPJP(dpjp) listHari, err := dokter.GetJadwalDokterByDPJP(dpjp)
if err != nil { if err != nil {
c.JSON(http.StatusInternalServerError, err) log.Println(err)
c.JSON(http.StatusInternalServerError, &suratkontrol.MetadataString{
Code: "",
Message: err.Error(),
})
return return
} }
listHari, err := dokter.GetJadwalHariDokterBySpesialis(idDokter) log.Println("listHari: ", listHari)
if err != nil {
c.JSON(http.StatusInternalServerError, err)
return
}
var IDDokter []string var IDDokter []string
var idSubspesialis int var idSubspesialis int
@@ -189,7 +225,11 @@ func GetDokterByDPJP(c *gin.Context) {
namaDokter, err := dokter.GetNamaLengkapDokter(IDDokter) namaDokter, err := dokter.GetNamaLengkapDokter(IDDokter)
if err != nil { if err != nil {
c.JSON(http.StatusInternalServerError, err) log.Println(err)
c.JSON(http.StatusInternalServerError, &suratkontrol.MetadataString{
Code: "",
Message: err.Error(),
})
return return
} }
@@ -232,6 +272,25 @@ func GetDokterByDPJP(c *gin.Context) {
c.JSON(http.StatusOK, res) c.JSON(http.StatusOK, res)
} }
func GetSpesialisByDate(c *gin.Context) {
tanggal := c.Param("tanggal")
date, err := time.Parse("2006-01-02", tanggal)
if err != nil {
c.JSON(http.StatusInternalServerError, err)
}
hari := date.Local().Weekday().String()
hari = utils.ConvertDay(hari)
idSpesialis, err := dokter.GetJadwalDokterByDate(hari)
if err != nil {
c.JSON(http.StatusInternalServerError, err)
}
listSpesialis, err := dokter.GetSpesialisByID(idSpesialis)
if err != nil {
c.JSON(http.StatusInternalServerError, err)
}
c.JSON(http.StatusOK, listSpesialis)
}
func GetJadwalSubspesialisByDate(c *gin.Context) { func GetJadwalSubspesialisByDate(c *gin.Context) {
tanggal := c.Param("tanggal") tanggal := c.Param("tanggal")
date, err := time.Parse("2006-01-02", tanggal) date, err := time.Parse("2006-01-02", tanggal)
@@ -286,6 +345,7 @@ func GetDokterBySpesialis(c *gin.Context) {
NamaLengkap: namaLengkap, NamaLengkap: namaLengkap,
Spesialis: idSpesialis, Spesialis: idSpesialis,
HFISCode: v.HFISCode, HFISCode: v.HFISCode,
DPJPCode: v.DPJPCode,
}) })
} }
log.Println("Response :", resDokter) log.Println("Response :", resDokter)
@@ -343,16 +403,83 @@ func GetDokterBySubspesialis(c *gin.Context) {
c.JSON(http.StatusOK, resDokter) c.JSON(http.StatusOK, resDokter)
} }
func GetDataJadwalDokter() bool { func GetJadwalDokterApi(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS") baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("ANTREAN_RS") endpoint := os.Getenv("ANTREAN_RS")
url := baseUrl + endpoint
var req *jadwal_dokter.RequestJadwalDokter
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &jadwal_dokter.Metadata{
Code: 0,
Message: err.Error(),
})
return
}
conf := config.ConfigBpjs{} conf := config.ConfigBpjs{}
header := cfg.SetHeader(false, conf)
headers := map[string]string{
"X-cons-id": header.ConsID,
"X-timestamp": header.TimeStamp,
"X-signature": header.XSignature,
"user_key": header.UserKey,
}
log.Println("Headers : ", headers)
param := "/jadwaldokter/kodepoli/" + req.KodePoli + "/tanggal/" + req.Tanggal
url += param
res, err := JadwalDokterGetResponse(url, header, req.KodePoli, req.Tanggal, headers)
if err != nil {
log.Printf("Error making external API request: %v", err)
c.JSON(http.StatusInternalServerError, &jadwal_dokter.Metadata{
Code: 0,
Message: err.Error(),
})
return
}
c.JSON(http.StatusOK, res)
}
func GetAllJadwalDokter(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("ANTREAN_RS")
url := baseUrl + endpoint
conf := config.ConfigBpjs{}
header := cfg.SetHeader(false, conf)
headers := map[string]string{
"X-cons-id": header.ConsID,
"X-timestamp": header.TimeStamp,
"X-signature": header.XSignature,
"user_key": header.UserKey,
}
log.Println("Headers : ", headers)
errTruncate := dokter.DeleteJadwalDokter()
if errTruncate != nil {
log.Println(errTruncate)
c.JSON(http.StatusInternalServerError, errTruncate)
}
errTruncateTemp := dokter.DeleteJadwalDokterTemp()
if errTruncateTemp != nil {
log.Println(errTruncateTemp)
c.JSON(http.StatusInternalServerError, errTruncateTemp)
}
// Select from daftar spesialis
spesialis, err := dokter.GetSpesialis() spesialis, err := dokter.GetSpesialis()
if err != nil { if err != nil {
log.Println("Error getting spesialis", err) c.JSON(http.StatusInternalServerError, err)
return false
} }
var listIdSpesialis = make(map[string]int) var listIdSpesialis = make(map[string]int)
@@ -362,8 +489,7 @@ func GetDataJadwalDokter() bool {
subspesialis, err := dokter.GetSubspesialis() subspesialis, err := dokter.GetSubspesialis()
if err != nil { if err != nil {
log.Println("Error getting subspesialis", err) c.JSON(http.StatusInternalServerError, err)
return false
} }
var listIdSubspesialis = make(map[string]int) var listIdSubspesialis = make(map[string]int)
@@ -373,8 +499,323 @@ func GetDataJadwalDokter() bool {
listDokter, err := dokter.GetDokter() listDokter, err := dokter.GetDokter()
if err != nil { if err != nil {
log.Println("Error getting dokter", err) c.JSON(http.StatusInternalServerError, err)
return false }
var listIddokter = make(map[int]string)
for _, kodeDokter := range listDokter {
listIddokter[kodeDokter.HfisCode] = kodeDokter.ID
}
var reqInsert *jadwal_dokter.JadwalDokterSatuData
var res []*jadwal_dokter.ListDokter
for _, value := range spesialis {
tanggal := time.Now().Format("2006-01-02")
// tanggal := "2025-01-08"
for i := 0; i < 7; i++ {
kdPoly := value.Kode
res, err = JadwalDokterGetResponseApi(url, header, kdPoly, tanggal, headers)
if err != nil {
log.Println("Error making external API request: %v", err)
c.JSON(http.StatusInternalServerError, err)
}
date, errParse := time.Parse("2006-01-02", tanggal)
if errParse != nil {
c.JSON(http.StatusInternalServerError, errParse)
return
}
tanggal = date.AddDate(0, 0, 1).Format("2006-01-02")
log.Println("Tanggal :", tanggal)
if res == nil {
log.Println("Skip Proses")
continue
}
for _, v := range res {
idSpesialis := utils.KodeToIDConverter(v.KodePoli, listIdSpesialis)
idSubspesialis := utils.KodeToIDConverter(v.KodeSubspesialis, listIdSubspesialis)
idDokter := utils.HfisCodeToIDConverter(v.KodeDokter, listIddokter)
reqInsert = &jadwal_dokter.JadwalDokterSatuData{
Hari: v.Hari,
NamaHari: v.NamaHari,
Waktu: v.Jadwal,
Dokter: idDokter,
Spesialis: idSpesialis,
SubSpesialis: idSubspesialis,
Status: 1, // When available always set to 1
}
date, errParse := time.Parse("2006-01-02", tanggal)
if errParse != nil {
c.JSON(http.StatusInternalServerError, errParse)
return
}
tanggal = date.AddDate(0, 0, 1).Format("2006-01-02")
log.Println("Tanggal :", tanggal)
if res == nil {
log.Println("Skip Proses")
continue
}
for _, v := range res {
idSpesialis := utils.KodeToIDConverter(v.KodePoli, listIdSpesialis)
idSubspesialis := utils.KodeToIDConverter(v.KodeSubspesialis, listIdSubspesialis)
idDokter := utils.HfisCodeToIDConverter(v.KodeDokter, listIddokter)
reqInsert = &jadwal_dokter.JadwalDokterSatuData{
Hari: v.Hari,
NamaHari: v.NamaHari,
Waktu: v.Jadwal,
Dokter: idDokter,
Spesialis: idSpesialis,
SubSpesialis: idSubspesialis,
Status: 1, // When available always set to 1
}
if reqInsert.Dokter != "" {
errInsert := dokter.InsertJadwalDokter(reqInsert)
if errInsert != nil {
log.Println(errInsert)
c.JSON(http.StatusInternalServerError, errInsert)
}
} else {
reqInsert.Dokter = strconv.Itoa(v.KodeDokter)
errInsertTemp := dokter.InsertJadwalDokterTemp(reqInsert)
if errInsertTemp != nil {
log.Println(errInsertTemp)
c.JSON(http.StatusInternalServerError, errInsertTemp)
}
}
}
}
}
}
c.JSON(http.StatusOK, res)
}
func GetJadwalDokterNew(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("ANTREAN_RS")
url := baseUrl + endpoint
spesialis, err := dokter.GetSpesialis()
if err != nil {
c.JSON(http.StatusInternalServerError, err)
return
}
var listIdSpesialis = make(map[string]int)
for _, kodeDokter := range spesialis {
listIdSpesialis[kodeDokter.Kode] = kodeDokter.ID
}
subspesialis, err := dokter.GetSubspesialis()
if err != nil {
c.JSON(http.StatusInternalServerError, err)
return
}
var listIdSubspesialis = make(map[string]int)
for _, kodeDokter := range subspesialis {
listIdSubspesialis[kodeDokter.Kode] = kodeDokter.ID
}
listDokter, err := dokter.GetDokter()
if err != nil {
c.JSON(http.StatusInternalServerError, err)
return
}
var listIddokter = make(map[int]string)
for _, kodeDokter := range listDokter {
listIddokter[kodeDokter.HfisCode] = kodeDokter.ID
}
var reqInsert *jadwal_dokter.JadwalDokterSatuData
var res []*jadwal_dokter.ListDokter
for _, value := range spesialis {
tanggalString := time.Now().Format("2006-01-02")
for i := 0; i < 7; i++ {
conf := config.ConfigBpjs{}
header := cfg.SetHeader(false, conf)
headers := map[string]string{
"X-cons-id": header.ConsID,
"X-timestamp": header.TimeStamp,
"X-signature": header.XSignature,
"user_key": header.UserKey,
}
kdPoly := value.Kode
res, err = JadwalDokterGetResponseApi(url, header, kdPoly, tanggalString, headers)
if err != nil {
log.Println("Error making external API request: ", err)
}
date, errParse := time.Parse("2006-01-02", tanggalString)
if errParse != nil {
c.JSON(http.StatusInternalServerError, errParse)
return
}
tanggalString = date.AddDate(0, 0, 1).Format("2006-01-02")
log.Println("Tanggal :", tanggalString)
if res == nil {
log.Println("Skip Proses")
continue
}
hari := date.Local().Weekday().String()
hari = utils.ConvertDay(hari)
if res == nil {
idSubspesialis := utils.KodeToIDConverter(value.Kode, listIdSubspesialis)
reqUpdate := &jadwal_dokter.JadwalDokterSatuData{
NamaHari: hari,
SubSpesialis: idSubspesialis,
Status: 0,
}
_, errUpdate := dokter.UpdateJadwalDokter(reqUpdate)
if errUpdate != nil {
log.Println(errUpdate)
c.JSON(http.StatusInternalServerError, errUpdate)
return
}
log.Println("Skip Proses")
continue
}
jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(tanggalString)
if errLibur != nil {
log.Println(errLibur)
c.JSON(http.StatusInternalServerError, errLibur)
return
}
if isLibur {
tanggalTemp, errParseTemp := time.Parse("2006-01-02", tanggalString)
if errParseTemp != nil {
c.JSON(http.StatusInternalServerError, errParseTemp)
return
}
isLibur = false
for i := 0; i < 3; i++ {
log.Println(jadwalLibur.NamaLiburPelayanan)
tanggalTemp = tanggalTemp.AddDate(0, 0, 7)
tanggalTempString := tanggalTemp.Format("2006-01-02")
log.Println(tanggalTempString)
resNew, errRes := JadwalDokterGetResponseApi(url, header, kdPoly, tanggalTempString, headers)
if errRes != nil {
log.Println("Error making external API request: ", errRes)
}
if resNew != nil {
for _, v := range resNew {
res = append(res, &jadwal_dokter.ListDokter{
KodeSubspesialis: v.KodeSubspesialis,
Hari: v.Hari,
KapasitasPasien: v.KapasitasPasien,
Libur: v.Libur,
NamaHari: v.NamaHari,
Jadwal: v.Jadwal,
NamaSubspesialis: v.NamaSubspesialis,
NamaDokter: v.NamaDokter,
KodePoli: v.KodePoli,
NamaPoli: v.NamaPoli,
KodeDokter: v.KodeDokter,
})
}
log.Println("Ada data pada tanggal ", tanggalTempString)
break
} else {
log.Println("Tidak ada data pada tanggal ", tanggalTempString)
continue
}
}
}
for _, v := range res {
idSpesialis := utils.KodeToIDConverter(v.KodePoli, listIdSpesialis)
idSubspesialis := utils.KodeToIDConverter(v.KodeSubspesialis, listIdSubspesialis)
idDokter := utils.HfisCodeToIDConverter(v.KodeDokter, listIddokter)
reqUpdate := &jadwal_dokter.JadwalDokterSatuData{
NamaHari: v.NamaHari,
Dokter: idDokter,
SubSpesialis: idSubspesialis,
Status: 1, // When available always set to 1
}
exist, errUpdate := dokter.UpdateJadwalDokter(reqUpdate)
if errUpdate != nil {
log.Println(errUpdate)
c.JSON(http.StatusInternalServerError, errUpdate)
return
}
reqInsert = &jadwal_dokter.JadwalDokterSatuData{
Hari: v.Hari,
NamaHari: v.NamaHari,
Waktu: v.Jadwal,
Dokter: idDokter,
Spesialis: idSpesialis,
SubSpesialis: idSubspesialis,
Status: 1, // When available always set to 1
}
if reqInsert.Dokter != "" && !exist {
log.Println("MASUK SINI")
errInsert := dokter.InsertJadwalDokter(reqInsert)
if errInsert != nil {
log.Println(errInsert)
}
} else if reqInsert.Dokter == "" {
reqInsert.Dokter = strconv.Itoa(v.KodeDokter)
errInsertTemp := dokter.InsertJadwalDokterTemp(reqInsert)
if errInsertTemp != nil {
log.Println(errInsertTemp)
}
}
}
}
}
c.JSON(http.StatusOK, gin.H{
"code": 200,
"message": "success",
})
}
func GetDataJadwalDokter(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("ANTREAN_RS")
url := baseUrl + endpoint
log.Println("url", url)
conf := config.ConfigBpjs{}
spesialis, err := dokter.GetSpesialis()
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"Code": "",
"Message": err,
})
return
}
var listIdSpesialis = make(map[string]int)
for _, kodeDokter := range spesialis {
listIdSpesialis[kodeDokter.Kode] = kodeDokter.ID
}
subspesialis, err := dokter.GetSubspesialis()
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"Code": "",
"Message": err,
})
return
}
var listIdSubspesialis = make(map[string]int)
for _, kodeDokter := range subspesialis {
listIdSubspesialis[kodeDokter.Kode] = kodeDokter.ID
}
listDokter, err := dokter.GetDokter()
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"Code": "",
"Message": err,
})
return
} }
var listIddokter = make(map[int]string) var listIddokter = make(map[int]string)
@@ -383,11 +824,6 @@ func GetDataJadwalDokter() bool {
} }
db := cfg.SatuDataDB db := cfg.SatuDataDB
errTx := db.Transaction(func(tx *gorm.DB) error { errTx := db.Transaction(func(tx *gorm.DB) error {
errTruncate := dokter.TruncateDataJadwalDokter()
if errTruncate != nil {
log.Println(errTruncate)
return errTruncate
}
for _, value := range spesialis { for _, value := range spesialis {
url := baseUrl + endpoint + "/jadwaldokter/kodepoli/" + value.Kode url := baseUrl + endpoint + "/jadwaldokter/kodepoli/" + value.Kode
@@ -419,7 +855,7 @@ func GetDataJadwalDokter() bool {
log.Println("Tanggal :", tanggal) log.Println("Tanggal :", tanggal)
urlReq := url + "/tanggal/" + tanggal urlReq := url + "/tanggal/" + tanggal
res, err = JadwalDokterGetResponse(urlReq, header, headers) res, err = JadwalDokterGetResponse(urlReq, header, value.Kode, tanggal, headers)
if err != nil { if err != nil {
log.Printf("Error making external API request: %v", err) log.Printf("Error making external API request: %v", err)
return err return err
@@ -506,172 +942,63 @@ func GetDataJadwalDokter() bool {
}) })
if errTx != nil { if errTx != nil {
log.Println(errTx) log.Println(errTx)
return false c.JSON(http.StatusInternalServerError, gin.H{
"Code": "",
"Message": errTx,
})
return
} }
log.Println("Berhasil ambil jadwal data dokter") c.JSON(http.StatusOK, gin.H{
return true "Code": "200",
"Message": "Berhasil Simpan Data",
})
return
} }
func GetJadwalDokterNew() bool { func GetDetailJadwalDokter(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS") var req *jadwal_dokter.RequestDataJadwalDokter
endpoint := os.Getenv("ANTREAN_RS")
url := baseUrl + endpoint
errTruncate := dokter.DeleteJadwalDokter() errBind := c.Bind(&req)
if errTruncate != nil { if errBind != nil {
log.Println(errTruncate) log.Println(errBind)
return false c.JSON(http.StatusInternalServerError, gin.H{"error": errBind})
return
} }
query := ``
errTruncateTemp := dokter.DeleteJadwalDokterTemp() var conditions []string
if errTruncateTemp != nil { var args []interface{}
log.Println(errTruncateTemp) if req.NamaHari != "" {
return false conditions = append(conditions, `"Nama_hari" = ? `)
args = append(args, req.NamaHari)
} }
if req.Subspesialis != 0 {
// Select from daftar spesialis conditions = append(conditions, `"Sub_spesialis" = ? `)
spesialis, err := dokter.GetSpesialis() args = append(args, req.Subspesialis)
}
if len(conditions) > 0 {
query += " WHERE " + strings.Join(conditions, " AND ")
}
dataDokter, err := dokter.GetAllJadwalDokter(query, args)
if err != nil { if err != nil {
return false log.Println(err)
c.JSON(http.StatusInternalServerError, gin.H{"error": err})
return
} }
var res []*jadwal_dokter.ResponseDetailJadwalDokter
var listIdSpesialis = make(map[string]int) for _, v := range dataDokter {
for _, kodeDokter := range spesialis { gelarDepan := utils.ReplaceGelar(v.GelarDepan)
listIdSpesialis[kodeDokter.Kode] = kodeDokter.ID gelarBelakang := utils.ReplaceGelar(v.GelarBelakang)
} namaLengkap := gelarDepan + " " + v.NamaLengkap + " " + gelarBelakang
namaLengkap = strings.TrimPrefix(namaLengkap, " ")
subspesialis, err := dokter.GetSubspesialis() namaLengkap = strings.TrimSuffix(namaLengkap, " ")
if err != nil { res = append(res, &jadwal_dokter.ResponseDetailJadwalDokter{
return false ValueHari: v.ValueHari,
}
var listIdSubspesialis = make(map[string]int)
for _, kodeDokter := range subspesialis {
listIdSubspesialis[kodeDokter.Kode] = kodeDokter.ID
}
listDokter, err := dokter.GetDokter()
if err != nil {
return false
}
var listIddokter = make(map[int]string)
for _, kodeDokter := range listDokter {
listIddokter[kodeDokter.HfisCode] = kodeDokter.ID
}
var reqInsert *jadwal_dokter.JadwalDokterSatuData
for _, value := range spesialis {
tanggal := time.Now().Format("2006-01-02")
// tanggal := "2025-04-11"
for i := 0; i < 7; i++ {
conf := config.ConfigBpjs{}
header := cfg.SetHeader(false, conf)
headers := map[string]string{
"X-cons-id": header.ConsID,
"X-timestamp": header.TimeStamp,
"X-signature": header.XSignature,
"user_key": header.UserKey,
}
kdPoly := value.Kode
param := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggal
linkurl := url + param
res, err := JadwalDokterGetResponseApi(linkurl, header, headers)
if err != nil {
log.Println("Error making external API request: %v", err)
return false
}
date, errParse := time.Parse("2006-01-02", tanggal)
if errParse != nil {
return false
}
tanggal = date.AddDate(0, 0, 1).Format("2006-01-02")
log.Println("Tanggal :", tanggal)
if res == nil {
log.Println("Skip Proses")
continue
}
jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(tanggal)
if errLibur != nil {
log.Println(errLibur)
return false
}
if isLibur {
tanggalTemp, errParseTemp := time.Parse("2006-01-02", tanggal)
if errParseTemp != nil {
log.Println(errParseTemp)
return false
}
isLibur = false
for i := 0; i < 7; i++ {
log.Println(jadwalLibur.NamaLiburPelayanan)
tanggalTemp = tanggalTemp.AddDate(0, 0, 7)
tanggalTempString := tanggalTemp.Format("2006-01-02")
log.Println(tanggalTempString)
paramLibur := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggalTempString
linkUrl := url + paramLibur
resNew, errRes := JadwalDokterGetResponseApi(linkUrl, header, headers)
if errRes != nil {
log.Println("Error making external API request: ", errRes)
return false
}
if resNew != nil {
for _, v := range resNew {
res = append(res, &jadwal_dokter.ListDokter{
KodeSubspesialis: v.KodeSubspesialis,
Hari: v.Hari,
KapasitasPasien: v.KapasitasPasien,
Libur: v.Libur,
NamaHari: v.NamaHari, NamaHari: v.NamaHari,
Jadwal: v.Jadwal, Waktu: v.Waktu,
NamaSubspesialis: v.NamaSubspesialis, Spesialis: v.Spesialis,
NamaDokter: v.NamaDokter, Subspesialis: v.Subspesialis,
KodePoli: v.KodePoli, NamaLengkap: namaLengkap,
NamaPoli: v.NamaPoli,
KodeDokter: v.KodeDokter,
}) })
} }
log.Println("Ada data pada tanggal ", tanggalTempString) c.JSON(http.StatusOK, res)
break
} else {
log.Println("Tidak ada data pada tanggal ", tanggalTempString)
continue
}
}
}
for _, v := range res {
idSpesialis := utils.KodeToIDConverter(v.KodePoli, listIdSpesialis)
idSubspesialis := utils.KodeToIDConverter(v.KodeSubspesialis, listIdSubspesialis)
idDokter := utils.HfisCodeToIDConverter(v.KodeDokter, listIddokter)
reqInsert = &jadwal_dokter.JadwalDokterSatuData{
Hari: v.Hari,
NamaHari: v.NamaHari,
Waktu: v.Jadwal,
Dokter: idDokter,
Spesialis: idSpesialis,
SubSpesialis: idSubspesialis,
Status: 1, // When available always set to 1
}
if reqInsert.Dokter != "" {
errInsert := dokter.InsertJadwalDokter(reqInsert)
if errInsert != nil {
log.Println(errInsert)
return false
}
} else {
reqInsert.Dokter = strconv.Itoa(v.KodeDokter)
errInsertTemp := dokter.InsertJadwalDokterTemp(reqInsert)
if errInsertTemp != nil {
log.Println(errInsertTemp)
return false
}
}
}
}
}
return true
} }
+4 -2
View File
@@ -11,7 +11,7 @@ import (
"net/http" "net/http"
) )
func JadwalDokterGetResponse(url string, header *config.Header, headers map[string]string) (*jadwal_dokter.JadwalDokter, error) { func JadwalDokterGetResponse(url string, header *config.Header, kdPoly string, tanggal string, headers map[string]string) (*jadwal_dokter.JadwalDokter, error) {
log.Println("URL", url) log.Println("URL", url)
req, err := http.NewRequest("GET", url, nil) req, err := http.NewRequest("GET", url, nil)
if err != nil { if err != nil {
@@ -73,7 +73,9 @@ func JadwalDokterGetResponse(url string, header *config.Header, headers map[stri
return responses, nil return responses, nil
} }
func JadwalDokterGetResponseApi(url string, header *config.Header, headers map[string]string) ([]*jadwal_dokter.ListDokter, error) { func JadwalDokterGetResponseApi(url string, header *config.Header, kdPoly string, tanggal string, headers map[string]string) ([]*jadwal_dokter.ListDokter, error) {
param := "/jadwaldokter/kodepoli/" + kdPoly + "/tanggal/" + tanggal
url += param
log.Println("URL", url) log.Println("URL", url)
req, err := http.NewRequest("GET", url, nil) req, err := http.NewRequest("GET", url, nil)
if err != nil { if err != nil {
+148
View File
@@ -0,0 +1,148 @@
package rujukan
import (
"bridging-rssa/docs"
"bridging-rssa/models/bpjs/rujukan"
"bridging-rssa/models/config"
"encoding/json"
"errors"
"io"
"log"
"net/http"
)
func ResponseGetRujukan(url string, header *config.Header, headers map[string]string) (*rujukan.ResponseGetRujukan, error) {
log.Println("URL", url)
req, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Printf("Error creating request: %v", err)
}
for key, value := range headers {
req.Header.Set(key, value)
}
log.Println("REQ", req.Header)
client := http.Client{}
response, err := client.Do(req)
if err != nil {
log.Printf("Error making external API request: %v", err)
}
log.Println("RESPONSE: ", response)
key := header.ConsID + header.SecretKey + header.TimeStamp
res, err := io.ReadAll(response.Body)
if err != nil {
log.Println(err)
}
log.Println("res: ", string(res))
var resRujukanRaw rujukan.ResponseRaw
err = json.Unmarshal([]byte(string(res)), &resRujukanRaw)
if err != nil {
log.Printf("Error Unmarshaling: %v", err)
return nil, err
}
responses := &rujukan.ResponseGetRujukan{}
if resRujukanRaw.MetaData.Code != "200" {
errMsg := errors.New(resRujukanRaw.MetaData.Message)
log.Printf("error : %v", errMsg)
responses.MetaData.Code = resRujukanRaw.MetaData.Code
responses.MetaData.Message = resRujukanRaw.MetaData.Message
log.Println("responses: ", responses)
return responses, errMsg
}
dataResp, err := docs.StringDecrypt(key, resRujukanRaw.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
return nil, err
}
log.Println("dataresp: ", dataResp)
var responseRujukan rujukan.ResponseRujukan
err = json.Unmarshal([]byte(dataResp), &responseRujukan)
if err != nil {
log.Printf("Error Decode: %v", err)
return nil, err
}
responses = &rujukan.ResponseGetRujukan{
MetaData: resRujukanRaw.MetaData,
Response: responseRujukan,
}
log.Println("res: ", responses)
return responses, nil
}
func ResponseGetRujukanBatch(url string, header *config.Header, headers map[string]string) (*rujukan.ResponseGetRujukanBatch, error) {
log.Println("URL", url)
req, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Printf("Error creating request: %v", err)
}
for key, value := range headers {
req.Header.Set(key, value)
}
log.Println("REQ", req.Header)
client := http.Client{}
response, err := client.Do(req)
if err != nil {
log.Printf("Error making external API request: %v", err)
}
log.Println("RESPONSE: ", response)
key := header.ConsID + header.SecretKey + header.TimeStamp
res, err := io.ReadAll(response.Body)
if err != nil {
log.Println(err)
}
log.Println("res: ", string(res))
var resRujukanRaw rujukan.ResponseRaw
err = json.Unmarshal([]byte(string(res)), &resRujukanRaw)
if err != nil {
log.Printf("Error Unmarshaling: %v", err)
return nil, err
}
responses := &rujukan.ResponseGetRujukanBatch{}
if resRujukanRaw.MetaData.Code != "200" {
errMsg := errors.New(resRujukanRaw.MetaData.Message)
log.Printf("error : %v", errMsg)
responses.MetaData.Code = resRujukanRaw.MetaData.Code
responses.MetaData.Message = resRujukanRaw.MetaData.Message
log.Println("responses: ", responses)
return responses, errMsg
}
dataResp, err := docs.StringDecrypt(key, resRujukanRaw.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
return nil, err
}
log.Println("dataresp: ", dataResp)
var responseRujukan rujukan.ResponseRujukanBatch
err = json.Unmarshal([]byte(dataResp), &responseRujukan)
if err != nil {
log.Printf("Error Decode: %v", err)
return nil, err
}
responses = &rujukan.ResponseGetRujukanBatch{
MetaData: resRujukanRaw.MetaData,
Response: responseRujukan,
}
log.Println("res: ", responses)
return responses, nil
}
+71
View File
@@ -0,0 +1,71 @@
package rujukan
import (
cfg "bridging-rssa/config"
"bridging-rssa/models/config"
"log"
"net/http"
"os"
"github.com/gin-gonic/gin"
)
func GetSuratRujukan(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS_DEV")
endpoint := os.Getenv("VCLAIM_RS_DEV")
param := os.Getenv("GET_NOMOR_RUJUKAN")
noRujukan := c.Param("noRujukan")
url := baseUrl + endpoint + param + noRujukan
conf := config.ConfigBpjs{}
header := cfg.SetHeaderDev(conf)
headers := map[string]string{
"X-cons-id": header.ConsID,
"X-timestamp": header.TimeStamp,
"X-signature": header.XSignature,
"user_key": header.UserKey,
"Content-Type": "application/json; charset=utf-8",
}
log.Println("Headers : ", headers)
res, err := ResponseGetRujukan(url, header, headers)
if err != nil {
log.Printf("Error making external API request: %v", err)
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, res)
}
func GetSuratRujukanBatch(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS_DEV")
endpoint := os.Getenv("VCLAIM_RS_DEV")
param := os.Getenv("GET_NOMOR_RUJUKAN")
noKartu := c.Param("noKartu")
url := baseUrl + endpoint + param + noKartu
conf := config.ConfigBpjs{}
header := cfg.SetHeaderDev(conf)
headers := map[string]string{
"X-cons-id": header.ConsID,
"X-timestamp": header.TimeStamp,
"X-signature": header.XSignature,
"user_key": header.UserKey,
"Content-Type": "application/json; charset=utf-8",
}
log.Println("Headers : ", headers)
res, err := ResponseGetRujukan(url, header, headers)
if err != nil {
log.Printf("Error making external API request: %v", err)
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, res)
}
+26 -12
View File
@@ -12,6 +12,7 @@ import (
"log" "log"
"net/http" "net/http"
"strings" "strings"
"time"
) )
func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) { func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) {
@@ -20,6 +21,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
reqMarshall, err := json.Marshal(request) reqMarshall, err := json.Marshal(request)
if err != nil { if err != nil {
log.Printf("Error json marshal: %v", err) log.Printf("Error json marshal: %v", err)
return nil, err
} }
log.Println("REQUEST: ", string(reqMarshall)) log.Println("REQUEST: ", string(reqMarshall))
@@ -35,17 +37,23 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
} }
log.Println("REQ", req.Header) log.Println("REQ", req.Header)
client := http.Client{} client := http.Client{
Timeout: 10 * time.Second,
}
responses := &suratkontrol.Response{} responses := &suratkontrol.Response{}
response, err := client.Do(req) response, err := client.Do(req)
if err != nil { if err != nil {
responses.MetaData.Code = "203" if strings.Contains(strings.ToLower(err.Error()), "deadline exceeded") {
responses.MetaData.Message = err.Error() errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("Error making external API request: %v", err) log.Printf("error : %v", errMsg)
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses) log.Println("responses: ", responses)
return responses, err return responses, err
} }
log.Printf("Error making external API request: %v", err)
return responses, err
}
log.Println("RESPONSE: ", response) log.Println("RESPONSE: ", response)
if response.StatusCode == http.StatusGatewayTimeout { // 504 if response.StatusCode == http.StatusGatewayTimeout { // 504
@@ -54,7 +62,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
responses.MetaData.Code = "504" responses.MetaData.Code = "504"
responses.MetaData.Message = errMsg.Error() responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses) log.Println("responses: ", responses)
return responses, errMsg return responses, err
} }
key := header.ConsID + header.SecretKey + header.TimeStamp key := header.ConsID + header.SecretKey + header.TimeStamp
@@ -76,18 +84,18 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
log.Println("ResponseRaw : ", resSuratKontrolRaw) log.Println("ResponseRaw : ", resSuratKontrolRaw)
if resSuratKontrolRaw.MetaData.Code != "200" { if resSuratKontrolRaw.MetaData.Code != "200" {
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Nomor SEP Sudah pernah digunakan!." { if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Nomor SEP Sudah pernah digunakan!." {
message := "Gagal simpan! Nomor SEP pernah diterbitkan Surat Kontrol!." message := "Gagal simpan! Nomor SEP pernah diterbitkan Surat Kontrol!."
resSuratKontrolRaw.MetaData.Message = message resSuratKontrolRaw.MetaData.Message = message
log.Println("masuk sini kan") log.Println("masuk sini kan")
} else if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Poli Tujuan Kontrol tidak sama dengan Poli Asal Rujukan Awal." { } else if strings.Contains(strings.ToLower(resSuratKontrolRaw.MetaData.Message), "gagal simpan") {
message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal" message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal"
resSuratKontrolRaw.MetaData.Message = message resSuratKontrolRaw.MetaData.Message = message
} }
log.Printf("error : %v", resSuratKontrolRaw.MetaData.Message) log.Printf("error : %v", errMsg)
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
log.Println("responses: ", responses) log.Println("responses: ", responses)
return responses, errMsg return responses, errMsg
} }
@@ -138,13 +146,19 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
} }
log.Println("REQ", req.Header) log.Println("REQ", req.Header)
client := http.Client{} client := http.Client{
Timeout: 10 * time.Second,
}
responses := &suratkontrol.Response{} responses := &suratkontrol.Response{}
response, err := client.Do(req) response, err := client.Do(req)
if err != nil { if err != nil {
responses.MetaData.Code = "504" if strings.Contains(strings.ToLower(err.Error()), "deadline exceeded") {
responses.MetaData.Message = err.Error() errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses) log.Println("responses: ", responses)
return responses, err
}
log.Printf("Error making external API request: %v", err) log.Printf("Error making external API request: %v", err)
return responses, err return responses, err
} }
@@ -176,6 +190,7 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
} }
if resSuratKontrolRaw.MetaData.Code != "200" { if resSuratKontrolRaw.MetaData.Code != "200" {
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Nomor SEP Sudah pernah digunakan!." { if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Nomor SEP Sudah pernah digunakan!." {
message := "Gagal simpan! Nomor SEP pernah diterbitkan Surat Kontrol!." message := "Gagal simpan! Nomor SEP pernah diterbitkan Surat Kontrol!."
resSuratKontrolRaw.MetaData.Message = message resSuratKontrolRaw.MetaData.Message = message
@@ -187,7 +202,6 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
log.Printf("error : %v", resSuratKontrolRaw.MetaData.Message) log.Printf("error : %v", resSuratKontrolRaw.MetaData.Message)
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
log.Println("responses: ", responses) log.Println("responses: ", responses)
return responses, errMsg return responses, errMsg
} }
+285 -84
View File
@@ -24,7 +24,7 @@ import (
func InsertSuratKontrol(c *gin.Context) { func InsertSuratKontrol(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS") baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("SURAT_KONTROL_RS") endpoint := os.Getenv("VCLAIM_RS")
param := os.Getenv("INSERT_SURAT_KONTROL") param := os.Getenv("INSERT_SURAT_KONTROL")
url := baseUrl + endpoint + param url := baseUrl + endpoint + param
@@ -35,7 +35,7 @@ func InsertSuratKontrol(c *gin.Context) {
err := c.Bind(&req) err := c.Bind(&req)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{ MetaData: sk.MetadataString{
Code: "203", Code: "203",
Message: err.Error(), Message: err.Error(),
@@ -43,12 +43,11 @@ func InsertSuratKontrol(c *gin.Context) {
}) })
return return
} }
log.Println(req)
jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(req.TglRencanaKontrol) jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(req.TglRencanaKontrol)
if errLibur != nil { if errLibur != nil {
log.Println(errLibur) log.Println(errLibur)
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{ MetaData: sk.MetadataString{
Code: "203", Code: "203",
Message: errLibur.Error(), Message: errLibur.Error(),
@@ -57,7 +56,7 @@ func InsertSuratKontrol(c *gin.Context) {
return return
} else if isLibur { } else if isLibur {
log.Println(jadwalLibur.KeteranganLiburPelayanan) log.Println(jadwalLibur.KeteranganLiburPelayanan)
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{ MetaData: sk.MetadataString{
Code: "203", Code: "203",
Message: jadwalLibur.NamaLiburPelayanan, Message: jadwalLibur.NamaLiburPelayanan,
@@ -69,7 +68,7 @@ func InsertSuratKontrol(c *gin.Context) {
reqJson, err := json.Marshal(req) reqJson, err := json.Marshal(req)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{ MetaData: sk.MetadataString{
Code: "203", Code: "203",
Message: err.Error(), Message: err.Error(),
@@ -102,7 +101,7 @@ func InsertSuratKontrol(c *gin.Context) {
kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{ MetaData: sk.MetadataString{
Code: "203", Code: "203",
Message: err.Error(), Message: err.Error(),
@@ -118,7 +117,7 @@ func InsertSuratKontrol(c *gin.Context) {
idRuangan, err = lokasiruang.GetDaftarLokasiRuang(req.Ruangan) idRuangan, err = lokasiruang.GetDaftarLokasiRuang(req.Ruangan)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ c.JSON(http.StatusInternalServerError, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{ MetaData: sk.MetadataString{
Code: "203", Code: "203",
Message: err.Error(), Message: err.Error(),
@@ -170,7 +169,6 @@ func InsertSuratKontrol(c *gin.Context) {
StatusSurKon: 1, // First Insert status always set to 1 StatusSurKon: 1, // First Insert status always set to 1
UserCreatedSurKon: req.User, UserCreatedSurKon: req.User,
TipeSurKon: req.TipeSurKon, TipeSurKon: req.TipeSurKon,
TipeRawat: req.TipeRawat,
} }
err = suratkontrol.InsertDataSuratKontrol(reqInsert) err = suratkontrol.InsertDataSuratKontrol(reqInsert)
if err != nil { if err != nil {
@@ -266,7 +264,7 @@ func InsertSuratKontrol(c *gin.Context) {
responJson, err := json.Marshal(res) responJson, err := json.Marshal(res)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{ MetaData: sk.MetadataString{
Code: "203", Code: "203",
Message: err.Error(), Message: err.Error(),
@@ -287,13 +285,12 @@ func InsertSuratKontrol(c *gin.Context) {
StatusSurKon: 1, // First Insert status always set to 1 StatusSurKon: 1, // First Insert status always set to 1
UserCreatedSurKon: req.User, UserCreatedSurKon: req.User,
TipeSurKon: "1", TipeSurKon: "1",
TipeRawat: req.TipeRawat,
} }
err = suratkontrol.InsertDataSuratKontrol(reqInsert) err = suratkontrol.InsertDataSuratKontrol(reqInsert)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{ MetaData: sk.MetadataString{
Code: "203", Code: "203",
Message: err.Error(), Message: err.Error(),
@@ -311,7 +308,7 @@ func InsertSuratKontrol(c *gin.Context) {
err = suratkontrol.UpdateKunjunganPasien(req) err = suratkontrol.UpdateKunjunganPasien(req)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{ MetaData: sk.MetadataString{
Code: "203", Code: "203",
Message: err.Error(), Message: err.Error(),
@@ -340,7 +337,7 @@ func InsertSuratKontrol(c *gin.Context) {
err = log_api.InsertLogAPI(reqInsertLog) err = log_api.InsertLogAPI(reqInsertLog)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
c.JSON(http.StatusOK, &sk.ResponseInsertSuratKontrol{ c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{ MetaData: sk.MetadataString{
Code: "203", Code: "203",
Message: err.Error(), Message: err.Error(),
@@ -370,7 +367,7 @@ func InsertSuratKontrol(c *gin.Context) {
func UpdateSuratKontrol(c *gin.Context) { func UpdateSuratKontrol(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS") baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("SURAT_KONTROL_RS") endpoint := os.Getenv("VCLAIM_RS")
param := os.Getenv("UPDATE_SURAT_KONTROL") param := os.Getenv("UPDATE_SURAT_KONTROL")
url := baseUrl + endpoint + param url := baseUrl + endpoint + param
@@ -451,7 +448,6 @@ func UpdateSuratKontrol(c *gin.Context) {
StatusSurKon: 1, // First Insert status always set to 1 StatusSurKon: 1, // First Insert status always set to 1
TipeSurKon: req.TipeSurKon, TipeSurKon: req.TipeSurKon,
UserUpdatedSurKon: req.User, UserUpdatedSurKon: req.User,
TipeRawat: req.TipeRawat,
} }
reqUpdate := &sk.DataSuratKontrol{ reqUpdate := &sk.DataSuratKontrol{
DateUpdated: timeNow, DateUpdated: timeNow,
@@ -652,7 +648,7 @@ func UpdateSuratKontrol(c *gin.Context) {
func DeleteSuratKontrol(c *gin.Context) { func DeleteSuratKontrol(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS") baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("SURAT_KONTROL_RS") endpoint := os.Getenv("VCLAIM_RS")
param := os.Getenv("DELETE_SURAT_KONTROL") param := os.Getenv("DELETE_SURAT_KONTROL")
url := baseUrl + endpoint + param url := baseUrl + endpoint + param
@@ -841,7 +837,7 @@ func DeleteSuratKontrol(c *gin.Context) {
func GetNomorSuratKontrol(c *gin.Context) { func GetNomorSuratKontrol(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS") baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("SURAT_KONTROL_RS") endpoint := os.Getenv("VCLAIM_RS")
param := os.Getenv("GET_NOMOR_SURAT_KONTROL") param := os.Getenv("GET_NOMOR_SURAT_KONTROL")
noSurat := c.Param("noSuratKontrol") noSurat := c.Param("noSuratKontrol")
url := baseUrl + endpoint + param + noSurat url := baseUrl + endpoint + param + noSurat
@@ -871,7 +867,7 @@ func GetNomorSuratKontrol(c *gin.Context) {
func GetSuratKontrolBySEP(c *gin.Context) { func GetSuratKontrolBySEP(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS") baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("SURAT_KONTROL_RS") endpoint := os.Getenv("VCLAIM_RS")
param := os.Getenv("GET_SURAT_KONTROL_SEP") param := os.Getenv("GET_SURAT_KONTROL_SEP")
noSEP := c.Param("noSEP") noSEP := c.Param("noSEP")
url := baseUrl + endpoint + param + noSEP url := baseUrl + endpoint + param + noSEP
@@ -892,7 +888,7 @@ func GetSuratKontrolBySEP(c *gin.Context) {
res, err := ResponseGetSuratKontrolBySEP(url, header, headers) res, err := ResponseGetSuratKontrolBySEP(url, header, headers)
if err != nil { if err != nil {
log.Printf("Error making external API request: %v", err) log.Printf("Error making external API request: %v", err)
c.JSON(http.StatusInternalServerError, err) c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return return
} }
@@ -900,9 +896,7 @@ func GetSuratKontrolBySEP(c *gin.Context) {
} }
func GetDataSurKon(c *gin.Context) { func GetDataSurKon(c *gin.Context) {
offset := c.Param("offset") data, err := suratkontrol.GetDataSuratKontrol()
limit := c.Param("limit")
data, err := suratkontrol.GetDataSuratKontrol(offset, limit)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{ c.JSON(http.StatusInternalServerError, &sk.MetadataString{
@@ -950,12 +944,7 @@ func GetDataSurKon(c *gin.Context) {
func GetDataSurKonByID(c *gin.Context) { func GetDataSurKonByID(c *gin.Context) {
id := c.Param("idxdaftar") id := c.Param("idxdaftar")
tipe := c.Param("tiperawat") data, err := suratkontrol.GetDataSuratKontrolByID(id)
var dataSurKon *sk.GetDataSuratKontrol
dataSurKon, err := suratkontrol.GetDataSuratKontrolByIDTipe(id, tipe)
if err != nil {
if err.Error() == "Data tidak ada" {
dataSurKon, err = suratkontrol.GetDataSuratKontrolByID(id)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{ c.JSON(http.StatusInternalServerError, &sk.MetadataString{
@@ -964,48 +953,39 @@ func GetDataSurKonByID(c *gin.Context) {
}) })
return return
} }
} else {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
}
gelarDepan := utils.ReplaceGelar(dataSurKon.GelarDepan) gelarDepan := utils.ReplaceGelar(data.GelarDepan)
gelarBelakang := utils.ReplaceGelar(dataSurKon.GelarBelakang) gelarBelakang := utils.ReplaceGelar(data.GelarBelakang)
namaLengkap := gelarDepan + " " + dataSurKon.NamaLengkapDokter + " " + gelarBelakang namaLengkap := gelarDepan + " " + data.NamaLengkapDokter + " " + gelarBelakang
namaLengkap = strings.TrimPrefix(namaLengkap, " ") namaLengkap = strings.TrimPrefix(namaLengkap, " ")
namaLengkap = strings.TrimSuffix(namaLengkap, " ") namaLengkap = strings.TrimSuffix(namaLengkap, " ")
dateCetakSurkon, _ := time.Parse(time.RFC3339, dataSurKon.TglCetakSurKon) dateCetakSurkon, _ := time.Parse(time.RFC3339, data.TglCetakSurKon)
dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02")
dateRencanaSurkon, _ := time.Parse(time.RFC3339, dataSurKon.TglRencanaKontrol) dateRencanaSurkon, _ := time.Parse(time.RFC3339, data.TglRencanaKontrol)
dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02")
resSurKon := &sk.ResponseGetDataSuratKontrol{ resSurKon := &sk.ResponseGetDataSuratKontrol{
IDDataSurKon: dataSurKon.IDDataSurKon, IDDataSurKon: data.IDDataSurKon,
IDXDaftar: dataSurKon.IDXDaftar, IDXDaftar: data.IDXDaftar,
TglCetakSurKon: dateCetakSurkonString, TglCetakSurKon: dateCetakSurkonString,
TglRencanaKontrol: dateRencanaSurkonString, TglRencanaKontrol: dateRencanaSurkonString,
NomorSurKon: dataSurKon.NomorSurKon, NomorSurKon: data.NomorSurKon,
PoliAsal: dataSurKon.PoliAsal, PoliAsal: data.PoliAsal,
PoliTujuan: dataSurKon.PoliTujuan, PoliTujuan: data.PoliTujuan,
NomorSEP: dataSurKon.NomorSEP, NomorSEP: data.NomorSEP,
NamaPasien: dataSurKon.NamaPasien, NamaPasien: data.NamaPasien,
NamaDokter: namaLengkap, NamaDokter: namaLengkap,
NomorKartu: "", NomorKartu: "",
Subspesialis: dataSurKon.Subspesialis, Subspesialis: data.Subspesialis,
KodePoli: dataSurKon.KodePoli, KodePoli: data.KodePoli,
KodeDokter: dataSurKon.KodeDokter, KodeDokter: data.KodeDokter,
IDPoli: dataSurKon.IDPoli, IDPoli: data.IDPoli,
IDDokter: dataSurKon.IDDokter, IDDokter: data.IDDokter,
KodeDPJP: dataSurKon.KodeDPJP, KodeDPJP: data.KodeDPJP,
NoRM: dataSurKon.NoRM, NoRM: data.NoRM,
KodeDiagnosa: dataSurKon.KodeDiagnosa, KodeDiagnosa: data.KodeDiagnosa,
NamaDiagnosa: dataSurKon.NamaDiagnosa, NamaDiagnosa: data.NamaDiagnosa,
TipeSurKon: dataSurKon.TipeSurKon, TipeSurKon: data.TipeSurKon,
User: dataSurKon.User, User: data.User,
} }
c.JSON(http.StatusOK, resSurKon) c.JSON(http.StatusOK, resSurKon)
} }
@@ -1199,44 +1179,265 @@ func CariPasienTPP(c *gin.Context) {
c.JSON(http.StatusOK, resSurKon) c.JSON(http.StatusOK, resSurKon)
} }
func GethistoribyNorm(c *gin.Context) { func CariPasienTPPNew(c *gin.Context) {
norm := c.Param("norm") var req sk.RequestCariPasien
offset := c.Param("offset")
limit := c.Param("limit") err := c.ShouldBindJSON(&req)
data, err := suratkontrol.Getdatahistori(norm, offset, limit)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{ c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "", Code: "203",
Message: err.Error(), Message: err.Error(),
}) })
return return
} }
var resHisSurKon []*sk.Dataresponse
log.Println("request :", req)
query := ``
var args []interface{}
var argsCount []interface{}
var data []*sk.GetDataSuratKontrol
var count int
if req.NoRM != "" {
query += `and dkp2."NOMR" = ?`
argsCount = append(argsCount, req.TipeSurKon, req.NoRM, req.TanggalAwal, req.TanggalAkhir)
count, err = suratkontrol.CountDataSurKon(req, query, argsCount)
if err != nil {
log.Println(err)
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
args = append(args, req.TipeSurKon, req.NoRM, req.TanggalAwal, req.TanggalAkhir)
data, err = suratkontrol.SearchDataSurKonNew(req, query, args)
if err != nil {
log.Println(err)
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
} else if req.NoSEP != "" {
query += `and dkp2."Nomor_sep" = ?`
argsCount = append(argsCount, req.TipeSurKon, req.NoSEP, req.TanggalAwal, req.TanggalAkhir)
count, err = suratkontrol.CountDataSurKon(req, query, argsCount)
if err != nil {
log.Println(err)
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
args = append(args, req.TipeSurKon, req.NoSEP, req.TanggalAwal, req.TanggalAkhir)
data, err = suratkontrol.SearchDataSurKonNew(req, query, args)
if err != nil {
log.Println(err)
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
} else if req.PoliKlinik != "" {
query += `and ds."id" = ?`
argsCount = append(argsCount, req.TipeSurKon, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir)
count, err = suratkontrol.CountDataSurKon(req, query, argsCount)
if err != nil {
log.Println(err)
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
args = append(args, req.TipeSurKon, req.PoliKlinik, req.TanggalAwal, req.TanggalAkhir)
data, err = suratkontrol.SearchDataSurKonNew(req, query, args)
if err != nil {
log.Println(err)
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
} else {
argsCount = append(argsCount, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir)
count, err = suratkontrol.CountDataSurKon(req, query, argsCount)
if err != nil {
log.Println(err)
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
args = append(args, req.TipeSurKon, req.TanggalAwal, req.TanggalAkhir)
data, err = suratkontrol.SearchDataSurKonNew(req, query, args)
if err != nil {
log.Println(err)
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
}
var listData []*sk.ResponseGetDataSuratKontrol
for _, v := range data { for _, v := range data {
gelarDepan := utils.ReplaceGelar(v.GelarDepan) gelarDepan := utils.ReplaceGelar(v.GelarDepan)
gelarBelakang := utils.ReplaceGelar(v.GelarBelakang) gelarBelakang := utils.ReplaceGelar(v.GelarBelakang)
namaLengkap := gelarDepan + " " + v.NamaDokter + " " + gelarBelakang namaLengkap := gelarDepan + " " + v.NamaLengkapDokter + " " + gelarBelakang
namaLengkap = strings.TrimPrefix(namaLengkap, " ") namaLengkap = strings.TrimPrefix(namaLengkap, " ")
namaLengkap = strings.TrimSuffix(namaLengkap, " ") namaLengkap = strings.TrimSuffix(namaLengkap, " ")
dateCetakSurkon, _ := time.Parse(time.RFC3339, v.TanggalCetak) dateCetakSurkon, _ := time.Parse(time.RFC3339, v.TglCetakSurKon)
dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02") dateCetakSurkonString := dateCetakSurkon.Format("2006-01-02")
dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TanggalRencana) dateRencanaSurkon, _ := time.Parse(time.RFC3339, v.TglRencanaKontrol)
dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02") dateRencanaSurkonString := dateRencanaSurkon.Format("2006-01-02")
resHisSurKon = append(resHisSurKon, &sk.Dataresponse{ listData = append(listData, &sk.ResponseGetDataSuratKontrol{
IDDataSurKon: v.IDDataSurKon,
IDXDaftar: v.IDXDaftar,
TglCetakSurKon: dateCetakSurkonString,
TglRencanaKontrol: dateRencanaSurkonString,
NomorSurKon: v.NomorSurKon,
PoliAsal: v.PoliAsal,
PoliTujuan: v.PoliTujuan,
NomorSEP: v.NomorSEP,
NamaPasien: v.NamaPasien, NamaPasien: v.NamaPasien,
NoSEP: v.NoSEP, NamaDokter: namaLengkap,
NomorSuratkontrol: v.NomorSuratkontrol, NomorKartu: "",
TanggalRencana: dateRencanaSurkonString,
TanggalCetak: dateCetakSurkonString,
Spesialis: v.Spesialis,
Subspesialis: v.Subspesialis, Subspesialis: v.Subspesialis,
NamaLengkap: namaLengkap, KodePoli: v.KodePoli,
Tiperawat: v.Tiperawat, KodeDokter: v.KodeDokter,
UserCreate: v.UserCreate, IDDokter: v.IDDokter,
UserUpdate: v.UserUpdate, KodeDPJP: v.KodeDPJP,
Status: v.Status, NoRM: v.NoRM,
KodeDiagnosa: v.KodeDiagnosa,
NamaDiagnosa: v.NamaDiagnosa,
TipeSurKon: v.TipeSurKon,
}) })
} }
c.JSON(http.StatusOK, resHisSurKon)
resSurKon := &sk.ResponseCariDataSuratKontrol{
JumlahData: count,
ListDataSuratKontrol: listData,
}
c.JSON(http.StatusOK, resSurKon)
}
func UpdateSuratKontrolSchedule() error {
baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("VCLAIM_RS")
param := os.Getenv("GET_NOMOR_SURAT_KONTROL")
dateNow := time.Now().Format("2006-01-02")
timeNow := time.Now().Format("2006-01-02 15:04:05")
dataNoSurKon, err := suratkontrol.GetAllNomorSurKon(dateNow)
if err != nil {
log.Println(err)
return err
}
for _, v := range dataNoSurKon {
url := baseUrl + endpoint + param + v.NomorSuratKontrol
conf := config.ConfigBpjs{}
header := cfg.SetHeader(false, conf)
headers := map[string]string{
"X-cons-id": header.ConsID,
"X-timestamp": header.TimeStamp,
"X-signature": header.XSignature,
"user_key": header.UserKey,
"Content-Type": "Application/x-www-form-urlencoded",
}
log.Println("Headers : ", headers)
res, err := ResponseGetNomorSuratKontrol(url, header, headers)
if err != nil {
if res.MetaData.Message == "No.Rencana Kontrol tidak ada atau sudah terpakai!" {
reqUpdate := &sk.DataSuratKontrol{
DateUpdated: timeNow,
ID: v.ID,
StatusSurKon: 0,
UserUpdatedSurKon: "ADMIN IT",
}
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
if err != nil {
log.Println(err)
continue
}
log.Println("Berhasil update nomor SurKon :", v.NomorSuratKontrol)
continue
}
log.Printf("Error making external API request: %v", err)
continue
}
log.Println("TIdak ada perubahan data untuk nomor SurKon :", v.NomorSuratKontrol)
continue
}
return nil
}
func GetDataLogAPI(c *gin.Context) {
var req logapi.ReqGetDataLogAPI
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
dataLog, err := log_api.GetLogAPI(req)
if err != nil {
log.Println(err)
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
var responDataLog []*logapi.DataLogAPI
for _, v := range dataLog {
jsonReq, _ := json.Marshal(v.Request)
jsonRes, _ := json.Marshal(v.Respon)
stringJsonReq := string(jsonReq)
stringJsonRes := string(jsonRes)
parsedTime, _ := time.Parse(time.RFC3339, v.DateCreated)
newTanggal := parsedTime.Format("2006-01-02 15:04:05")
responDataLog = append(responDataLog, &logapi.DataLogAPI{
ID: v.ID,
DateCreated: newTanggal,
UserAgent: v.UserAgent,
IP: v.IP,
Parameter: v.Parameter,
Header: v.Header,
Method: v.Method,
Url: v.Url,
Request: v.Request,
Respon: v.Respon,
ResponCode: v.ResponCode,
ResponTimeStart: v.ResponTimeStart,
ResponTimeEnd: v.ResponTimeEnd,
Comment: v.Comment,
RequestString: stringJsonReq,
ResponString: stringJsonRes,
})
}
c.JSON(http.StatusOK, responDataLog)
} }
-50
View File
@@ -1,50 +0,0 @@
package Vclaim
import (
"crypto/aes"
"crypto/cipher"
"crypto/sha256"
"encoding/base64"
"errors"
"bridging-rssa/docs"
lzstring "github.com/daku10/go-lz-string"
)
func ResponseVclaim(encrypted string, key string) (string, error) {
cipherText, err := base64.StdEncoding.DecodeString(encrypted)
if err != nil {
return "", err
}
hash := sha256.Sum256([]byte(key))
block, err := aes.NewCipher(hash[:])
if err != nil {
return "", err
}
if len(cipherText) < aes.BlockSize {
return "", errors.New("cipherText too short")
}
iv := hash[:aes.BlockSize]
if len(cipherText)%aes.BlockSize != 0 {
return "", errors.New("cipherText is not a multiple of the block size")
}
mode := cipher.NewCBCDecrypter(block, iv)
mode.CryptBlocks(cipherText, cipherText)
// cipherText, _ = pkcs7.Unpad(cipherText, aes.BlockSize)
cipherText = docs.RemovePKCS7Padding(cipherText)
data, err := lzstring.DecompressFromEncodedURIComponent(string(cipherText))
// data, err := helper.DecompressFromEncodedUriComponent(string(cipherText))
if err != nil {
return "", err
}
return data, nil
}
@@ -1,4 +1,4 @@
package Vclaim package vclaim
import ( import (
"crypto/hmac" "crypto/hmac"
+127
View File
@@ -0,0 +1,127 @@
package vclaim
import (
"bridging-rssa/docs"
"bridging-rssa/models/config"
"crypto/aes"
"crypto/cipher"
"crypto/sha256"
"encoding/base64"
"encoding/json"
"errors"
"io"
"log"
"net/http"
vclaim "bridging-rssa/models/bpjs/v_claim"
lzstring "github.com/daku10/go-lz-string"
)
func ResponseVclaim(encrypted string, key string) (string, error) {
cipherText, err := base64.StdEncoding.DecodeString(encrypted)
if err != nil {
return "", err
}
hash := sha256.Sum256([]byte(key))
block, err := aes.NewCipher(hash[:])
if err != nil {
return "", err
}
if len(cipherText) < aes.BlockSize {
return "", errors.New("cipherText too short")
}
iv := hash[:aes.BlockSize]
if len(cipherText)%aes.BlockSize != 0 {
return "", errors.New("cipherText is not a multiple of the block size")
}
mode := cipher.NewCBCDecrypter(block, iv)
mode.CryptBlocks(cipherText, cipherText)
// cipherText, _ = pkcs7.Unpad(cipherText, aes.BlockSize)
cipherText = docs.RemovePKCS7Padding(cipherText)
data, err := lzstring.DecompressFromEncodedURIComponent(string(cipherText))
// data, err := helper.DecompressFromEncodedUriComponent(string(cipherText))
if err != nil {
return "", err
}
return data, nil
}
func ResponseGetReferensiDokter(url string, header *config.Header, headers map[string]string) (*vclaim.ResponseGetReferensiDokter, error) {
log.Println("URL", url)
req, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Printf("Error creating request: %v", err)
return nil, err
}
for key, value := range headers {
req.Header.Set(key, value)
}
log.Println("REQ", req.Header)
client := http.Client{}
response, err := client.Do(req)
if err != nil {
log.Printf("Error making external API request: %v", err)
}
log.Println("RESPONSE: ", response)
key := header.ConsID + header.SecretKey + header.TimeStamp
res, err := io.ReadAll(response.Body)
if err != nil {
log.Println(err)
return nil, err
}
var resReferensiDotker vclaim.ResponseGetReferensiDokterRaw
err = json.Unmarshal([]byte(string(res)), &resReferensiDotker)
if err != nil {
log.Printf("Error Unmarshaling: %v", err)
return nil, err
}
responses := &vclaim.ResponseGetReferensiDokter{}
if resReferensiDotker.MetaData.Code != "200" {
errMsg := errors.New(resReferensiDotker.MetaData.Message)
log.Printf("error : %v", errMsg)
responses.MetaData.Code = resReferensiDotker.MetaData.Code
responses.MetaData.Message = resReferensiDotker.MetaData.Message
log.Println("responses: ", responses)
return responses, errMsg
}
dataResp, err := docs.StringDecrypt(key, resReferensiDotker.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
return nil, err
}
var responseListDokter vclaim.ResponseReferensiDokter
log.Println("dataresp: ", dataResp)
err = json.Unmarshal([]byte(dataResp), &responseListDokter)
if err != nil {
log.Printf("Error Decode: %v", err)
return nil, err
}
log.Println("res: ", resReferensiDotker)
responses = &vclaim.ResponseGetReferensiDokter{
MetaData: resReferensiDotker.MetaData,
Response: responseListDokter,
}
return responses, nil
}
@@ -1,6 +1,7 @@
package Vclaim package vclaim
import ( import (
"bridging-rssa/models/config"
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
@@ -8,7 +9,11 @@ import (
"io/ioutil" "io/ioutil"
"log" "log"
"net/http" "net/http"
"os"
cfg "bridging-rssa/config"
"github.com/gin-gonic/gin"
"github.com/mashingan/smapping" "github.com/mashingan/smapping"
) )
@@ -120,3 +125,33 @@ func PostRequest(endpoint string, cfg interface{}, data interface{}) interface{}
return &resp return &resp
} }
func GetReferensiDokter(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS_DEV")
endpoint := os.Getenv("VCLAIM_RS_DEV")
param := os.Getenv("GET_REFERENSI_DOKTER")
dpjp := c.Param("dpjp")
url := baseUrl + endpoint + param + dpjp
conf := config.ConfigBpjs{}
header := cfg.SetHeaderDev(conf)
headers := map[string]string{
"X-cons-id": header.ConsID,
"X-timestamp": header.TimeStamp,
"X-signature": header.XSignature,
"user_key": header.UserKey,
"Content-Type": "application/json; charset=utf-8",
}
log.Println("Headers : ", headers)
res, err := ResponseGetReferensiDokter(url, header, headers)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, res.MetaData)
return
}
c.JSON(http.StatusOK, res)
}
@@ -0,0 +1,55 @@
package kunjunganpasien
import (
"bridging-rssa/database/satu_data/pasien"
"bridging-rssa/docs/utils"
pasien_model "bridging-rssa/models/pasien"
"log"
"net/http"
"strings"
"time"
"github.com/gin-gonic/gin"
)
func ListKunjunganPasien(c *gin.Context) {
var req *pasien_model.RequestListKunjunganPasien
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
dataKunjunganPasien, err := pasien.GetListKunjunganPasien(req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
var res []*pasien_model.ResponseListKunjunganPasien
for _, v := range dataKunjunganPasien {
gelarDepan := utils.ReplaceGelar(v.GelarDepan)
gelarBelakang := utils.ReplaceGelar(v.GelarBelakang)
namaLengkap := gelarDepan + " " + v.NamaLengkapDokter + " " + gelarBelakang
namaLengkap = strings.TrimPrefix(namaLengkap, " ")
namaLengkap = strings.TrimSuffix(namaLengkap, " ")
namaRuang := strings.TrimSpace(v.NamaRuang)
parsedTimeLahir, _ := time.Parse(time.RFC3339, v.TanggalLahir)
parsedTimeMasuk, _ := time.Parse(time.RFC3339, v.TanggalMasukKunjungan)
tanggalLahir := parsedTimeLahir.Format("2006-01-02")
tanggalMasuk := parsedTimeMasuk.Format("2006-01-02")
res = append(res, &pasien_model.ResponseListKunjunganPasien{
NoMR: v.NoMR,
NamaPasien: v.NamaPasien,
TanggalLahir: tanggalLahir,
JenisKelamin: v.JenisKelamin,
TanggalMasukKunjungan: tanggalMasuk,
JamMasukKunjungan: v.JamMasukKunjungan,
KodeDiagnosa: v.KodeDiagnosa,
NamaDiagnosa: v.NamaDiagnosa,
NamaRuang: namaRuang,
NamaLengkapDokter: namaLengkap,
})
}
c.JSON(http.StatusOK, res)
}
+241
View File
@@ -0,0 +1,241 @@
package mikrobiologi
import (
"bridging-rssa/database/simrs/dokter"
mikrobiologiDB "bridging-rssa/database/simrs/mikrobiologi"
"bridging-rssa/database/simrs/pasien"
"bridging-rssa/database/simrs/pendaftaran"
"bridging-rssa/database/simrs/ruang"
"bridging-rssa/models/simrs/mikrobiologi"
"log"
"net/http"
"time"
"github.com/gin-gonic/gin"
)
func GetDataPasienMikrobiologi(c *gin.Context) {
var req *mikrobiologi.RequestPasienMikrobiologi
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusBadRequest, gin.H{
"message": err,
})
return
}
dataPasien, errData := mikrobiologiDB.GetDataMikroBiologi(req)
if errData != nil {
log.Println(errData)
c.JSON(http.StatusBadRequest, gin.H{
"message": errData,
})
return
}
var res []interface{}
for _, v := range dataPasien {
ktp := v.NoKTP
if v.NoKTPBaru != "" {
ktp = v.NoKTPBaru
}
if v.StatusAPS == 1 {
res = append(res, &mikrobiologi.ResponseDataPasienRajalAPS{
NOMR: v.NOMR,
NoNota: v.NoNota,
IdxDaftar: v.IDXDaftar,
TanggalOrder: v.TanggalOrder,
NoLab: v.NoLab,
StatusRajal: v.StatusRajal,
StatusAPS: v.StatusAPS,
NamaAPS: v.NamaAPS,
NoKTPAPS: v.NoKTPAPS,
TempatLahirAPS: v.TempatLahirAPS,
TanggalLahirAPS: v.TanggalLahirAPS,
JenisKelaminAPS: v.JenisKelaminAPS,
AlamatAPS: v.AlamatAPS,
NamaRuang: v.NamaRuang,
KelasRuang: v.KelasRuang,
KodeTarifRajal: v.KodeTarifRajal,
})
} else {
if v.StatusRajal != 1 {
res = append(res, &mikrobiologi.ResponseDataPasienRanap{
NOMR: v.NOMR,
NoNota: v.NoNota,
IDXDaftar: v.IDXDaftar,
TanggalOrder: v.TanggalOrder,
NoLab: v.NoLab,
StatusRajal: v.StatusRajal,
Nama: v.Nama,
NoKTP: ktp,
TempatLahir: v.TempatLahir,
TanggalLahir: v.TanggalLahir,
JenisKelamin: v.JenisKelamin,
Alamat: v.Alamat,
NamaRuang: v.NamaRuang,
KelasRuang: v.KelasRuang,
KodeTarifRanap: v.KodeTarifRanap,
})
} else {
res = append(res, &mikrobiologi.ResponseDataPasienRajal{
NOMR: v.NOMR,
NoNota: v.NoNota,
IDXDaftar: v.IDXDaftar,
TanggalOrder: v.TanggalOrder,
NoLab: v.NoLab,
StatusRajal: v.StatusRajal,
Nama: v.Nama,
NoKTP: ktp,
TempatLahir: v.TempatLahir,
TanggalLahir: v.TanggalLahir,
JenisKelamin: v.JenisKelamin,
Alamat: v.Alamat,
NamaRuang: v.NamaRuang,
KelasRuang: v.KelasRuang,
KodeTarifRajal: v.KodeTarifRajal,
})
}
}
}
c.JSON(http.StatusOK, res)
}
func SendDataLISMikro(c *gin.Context) {
var req *mikrobiologi.RequestPasienMikrobiologi
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusBadRequest, gin.H{
"message": err,
})
return
}
dataMikro, errData := mikrobiologiDB.GetDataMikroBiologiByNoMR(req)
if errData != nil {
log.Println(errData)
c.JSON(http.StatusBadRequest, gin.H{
"message": errData,
})
return
}
dataPasien, errPasien := pasien.GetMPasien(req)
if errPasien != nil {
log.Println(errPasien)
c.JSON(http.StatusBadRequest, gin.H{
"message": errPasien,
})
return
}
tglLahir, errParse := time.Parse(time.RFC3339, dataPasien.TanggalLahir)
if errParse != nil {
log.Println(errParse)
c.JSON(http.StatusBadRequest, gin.H{
"message": errParse,
})
return
}
var responseMikro []*mikrobiologi.ResponseLISMikro
var dataLisMikro *mikrobiologi.RequestLISMikro
tglLahirString := tglLahir.Format("2006-01-02")
for _, dataMikroMain := range dataMikro {
dataLabMikro, exist, errDiagnosa := mikrobiologiDB.GetDataLabMikro(dataMikroMain.NoLab)
if errDiagnosa != nil {
log.Println(errDiagnosa)
c.JSON(http.StatusBadRequest, gin.H{
"message": errDiagnosa,
})
return
}
if !exist {
log.Println("Data bukan pemeriksaan")
continue
}
namaDokter, errDokter := dokter.GetNamaDokter(dataMikroMain.DokterPengirim)
if errDokter != nil {
log.Println(errDokter)
c.JSON(http.StatusBadRequest, gin.H{
"message": errDokter,
})
return
}
poli, errDokter := ruang.GetNamaRuang(dataMikroMain.KodePoli)
if errDokter != nil {
log.Println(errDokter)
c.JSON(http.StatusBadRequest, gin.H{
"message": errDokter,
})
return
}
caraBayar, errCaraBayar := pendaftaran.GetCaraBayar(dataMikroMain)
if errCaraBayar != nil {
log.Println(errCaraBayar)
c.JSON(http.StatusBadRequest, gin.H{
"message": errCaraBayar,
})
return
}
dataLisMikro = &mikrobiologi.RequestLISMikro{
NoRM: dataMikroMain.NoMR,
Nama: dataPasien.Nama,
Alamat: dataPasien.Alamat,
Kota: dataPasien.Tempat,
TanggalLahir: tglLahirString,
NoHP: dataPasien.NoTelpon,
Kelamin: dataPasien.JenisKelamin,
NIK: dataPasien.NoKTP,
NoBPJS: dataPasien.NoKartu,
DokterPeminta: namaDokter,
AsalPasien: poli.NamaPoli,
Layanan: dataLabMikro.NamaPemeriksaan,
StatusBayar: "",
NoTransaksi: dataMikroMain.NoLab,
Asuransi: caraBayar,
Klinis: "",
KodeSpesimen: dataMikroMain.StatusSpesimen,
NamaSpesimen: dataMikroMain.Spesimen,
Pengambilan: "",
}
resMikro, errMikro := SendLisMikro(dataLisMikro)
if errMikro != nil {
log.Println(errMikro)
c.JSON(http.StatusBadRequest, gin.H{
"message": errMikro,
})
return
}
log.Println(resMikro)
reqUpdate := &mikrobiologi.ReqUpdateLisMikro{
IdxOrderMikro: dataLabMikro.IdxOrderMikro,
NoLokal: resMikro.Message,
}
errUpdate := mikrobiologiDB.UpdateLabMikro(reqUpdate)
if errUpdate != nil {
log.Println(errUpdate)
c.JSON(http.StatusBadRequest, gin.H{
"message": errUpdate,
})
return
}
responseMikro = append(responseMikro, &mikrobiologi.ResponseLISMikro{
NoLab: dataMikroMain.NoLab,
Status: resMikro.Status,
Message: resMikro.Message,
})
}
c.JSON(http.StatusOK, responseMikro)
}
+59
View File
@@ -0,0 +1,59 @@
package mikrobiologi
import (
"bridging-rssa/models/simrs/mikrobiologi"
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
)
func SendLisMikro(request *mikrobiologi.RequestLISMikro) (*mikrobiologi.Response, error) {
url := os.Getenv("LIS_MIKROBIOLOGI_URL")
log.Println("URL", url)
reqMarshall, err := json.Marshal(request)
if err != nil {
log.Printf("Error json marshal: %v", err)
return nil, err
}
headers := map[string]string{
"Accept": "application/json",
"Content-Type": "Application/x-www-form-urlencoded",
}
log.Println("REQUEST: ", string(reqMarshall))
req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall))
if err != nil {
log.Printf("Error creating request: %v", err)
return nil, err
}
for key, value := range headers {
req.Header.Set(key, value)
}
log.Println("REQ", req.Header)
client := http.Client{}
response, err := client.Do(req)
if err != nil {
log.Printf("Error making external API request: %v", err)
return nil, err
}
res, err := io.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
}
var responses *mikrobiologi.Response
log.Println("RESPONSE: ", string(res))
err = json.Unmarshal(res, &responses)
return responses, nil
}
+64 -39
View File
@@ -5,17 +5,18 @@ import (
"bridging-rssa/handlers/bpjs" "bridging-rssa/handlers/bpjs"
icare "bridging-rssa/handlers/bpjs/i_care" icare "bridging-rssa/handlers/bpjs/i_care"
"bridging-rssa/handlers/bpjs/jadwal_dokter" "bridging-rssa/handlers/bpjs/jadwal_dokter"
"bridging-rssa/handlers/bpjs/rujukan"
suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol" suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol"
"log" vclaim "bridging-rssa/handlers/bpjs/v_claim"
kunjungan_pasien "bridging-rssa/handlers/kunjungan_pasien"
_ "bridging-rssa/docs" mikrobiologiHandler "bridging-rssa/handlers/mikrobiologi"
"github.com/gin-contrib/cors" "github.com/gin-contrib/cors"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/joho/godotenv" "github.com/joho/godotenv"
cron "github.com/robfig/cron/v3"
swaggerFiles "github.com/swaggo/files" swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger" ginSwagger "github.com/swaggo/gin-swagger"
"log"
"time"
) )
// @title Crud User // @title Crud User
@@ -34,35 +35,30 @@ func main() {
r := gin.Default() r := gin.Default()
scheduler := cron.New() // jakartaTime, _ := time.LoadLocation("Asia/Jakarta")
// scheduler := cron.New(cron.WithLocation(jakartaTime))
defer scheduler.Stop() // defer scheduler.Stop()
// SCHEDULE HARIAN // scheduler.AddFunc("41 09 * * *", func() {
scheduler.AddFunc("15 2 * * *", func() { // log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===")
log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===") // jadwal_dokter.GetDataJadwalDokter()
for { // log.Println("=== SCHEDULE GET JADWAL DOKTER DONE ===")
success := jadwal_dokter.GetJadwalDokterNew() // })
if success {
log.Println("=== SCHEDULE GET JADWAL DOKTER DONE ===")
break
}
}
})
//SCHEDULE TIAP 3 BULAN // scheduler.AddFunc("0 12 * * *", func() {
scheduler.AddFunc("20 2 * * 5", func() { // log.Println("=== RUNNING SCHEDULE DATA SURAT KONTROL ===")
log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER MONTHLY===") // suratkontrol.UpdateSuratKontrolSchedule()
for { // log.Println("=== SCHEDULE DATA SURAT KONTROL DONE ===")
success := jadwal_dokter.GetDataJadwalDokter() // })
if success {
log.Println("=== SCHEDULE GET JADWAL DOKTER MONTHLY DONE ===")
break
}
}
})
go scheduler.Start() // scheduler.AddFunc("59 23 * * *", func() {
// log.Println("=== RUNNING SCHEDULE DATA SURAT KONTROL ===")
// suratkontrol.UpdateSuratKontrolSchedule()
// log.Println("=== SCHEDULE DATA SURAT KONTROL DONE ===")
// })
// go scheduler.Start()
v1 := r.Group("/api") v1 := r.Group("/api")
@@ -70,30 +66,44 @@ func main() {
{ {
subspesialis.GET("/", bpjs.GetAllSubspesialis) subspesialis.GET("/", bpjs.GetAllSubspesialis)
} }
//API UNTUK JADWAL DOKTER
jadwalDokter := v1.Group("/jadwaldokter") jadwalDokter := v1.Group("/jadwaldokter")
{ {
jadwalDokter.GET("/date/:tanggal", jadwal_dokter.GetJadwalDokter) jadwalDokter.POST("/getjadwal", jadwal_dokter.GetJadwalDokterApi)
jadwalDokter.GET("/getalljadwal", jadwal_dokter.GetAllJadwalDokter)
jadwalDokter.GET("/getalljadwalnew", jadwal_dokter.GetJadwalDokterNew)
jadwalDokter.GET("/getjadwaldokter", jadwal_dokter.GetDataJadwalDokter)
jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP) jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP)
// jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetSpesialisByDate)
jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate) jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate)
jadwalDokter.GET("/tanggal/:tanggal/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis) jadwalDokter.GET("/tanggal/:tanggal/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis)
jadwalDokter.GET("/tanggal/:tanggal/subspesialis/:subspesialis", jadwal_dokter.GetDokterBySubspesialis) jadwalDokter.GET("/tanggal/:tanggal/subspesialis/:subspesialis", jadwal_dokter.GetDokterBySubspesialis)
jadwalDokter.POST("/detail", jadwal_dokter.GetDetailJadwalDokter)
//jadwalDokter.PUT("/update", jadwal_dokter.UpdateDataJadwalDokter)
} }
// API UNTUK SURAT KONTROL
suratKontrol := v1.Group("/suratkontrol") suratKontrol := v1.Group("/suratkontrol")
{ {
suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon) suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon)
suratKontrol.GET("/idxdaftar/:idxdaftar/tiperawat/:tiperawat", suratkontrol.GetDataSurKonByID) suratKontrol.GET("/idxdaftar/:idxdaftar", suratkontrol.GetDataSurKonByID)
suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol)
suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP)
suratKontrol.GET("/printSurKon/:idxdaftar/tiperawat/:tiperawat", suratkontrol.PrintSurKon) suratKontrol.GET("/printSurKon/:idxdaftar", suratkontrol.PrintSurKon)
suratKontrol.POST("/cari", suratkontrol.CariPasienTPP) suratKontrol.POST("/cari", suratkontrol.CariPasienTPP)
suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol)
suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol)
suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol) suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol)
suratKontrol.GET("/norm/:norm/limit/:limit/offset/:offset", suratkontrol.GethistoribyNorm) suratKontrol.POST("/datalog", suratkontrol.GetDataLogAPI)
}
kunjunganPasien := v1.Group("/kunjunganpasien")
{
kunjunganPasien.POST("/listkunjunganpasien", kunjungan_pasien.ListKunjunganPasien)
}
suratRujukan := v1.Group("/rujukan")
{
suratRujukan.GET("/noRujukan/:noRujukan", rujukan.GetSuratRujukan)
suratRujukan.GET("/list/peserta/:noKartu", rujukan.GetSuratRujukanBatch)
} }
iCare := v1.Group("/icare") iCare := v1.Group("/icare")
@@ -101,6 +111,18 @@ func main() {
iCare.POST("/rs/validate", icare.GetFKRTL) iCare.POST("/rs/validate", icare.GetFKRTL)
iCare.POST("/pcare/validate", icare.GetFKTP) iCare.POST("/pcare/validate", icare.GetFKTP)
} }
referensi := v1.Group("/referensi")
{
referensi.GET("/dokter/:dpjp", vclaim.GetReferensiDokter)
}
mikrobiologi := v1.Group("/mikrobiologi")
{
mikrobiologi.POST("/datapasien", mikrobiologiHandler.GetDataPasienMikrobiologi)
mikrobiologi.POST("/sendmikro", mikrobiologiHandler.SendDataLISMikro)
}
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
@@ -112,8 +134,11 @@ func main() {
AllowCredentials: true, AllowCredentials: true,
})) }))
log.Println("JALAN DI PORT : 8080") localTime := time.Now()
err = r.Run(":8080") log.Println("Local Time:", localTime)
log.Println("JALAN DI PORT : 8082")
err = r.Run(":8082")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
@@ -92,3 +92,49 @@ type RequestJadwalDokter struct {
KodePoli string `json:"kodepoli"` KodePoli string `json:"kodepoli"`
Tanggal string `json:"tanggal"` Tanggal string `json:"tanggal"`
} }
type RequestDataJadwalDokter struct {
NamaHari string `gorm:"column:Nama_hari" json:"hari"`
Subspesialis int `gorm:"column:Sub_spesialis" json:"subspesialis"`
}
type ListDataJadwalDokter struct {
Hari string `gorm:"column:Nama_hari" json:"Hari"`
NamaDokter string `gorm:"column:nama_lengkap"`
}
type ListDaftarJadwalDokter struct {
ValueHari string `gorm:"column:valuehari" json:"valuehari"`
NamaHari string `gorm:"column:hari" json:"hari"`
Waktu string `gorm:"column:waktu" json:"waktu"`
Spesialis string `gorm:"column:spesialis" json:"spesialis"`
Subspesialis string `gorm:"column:subspesialis" json:"subspesialis"`
GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"`
NamaLengkap string `gorm:"column:namalengkap" json:"namalengkap"`
GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"`
}
type ResponseDetailJadwalDokter struct {
ValueHari string `gorm:"column:valuehari" json:"valuehari"`
NamaHari string `gorm:"column:hari" json:"hari"`
Waktu string `gorm:"column:waktu" json:"waktu"`
Spesialis string `gorm:"column:spesialis" json:"spesialis"`
Subspesialis string `gorm:"column:subspesialis" json:"subspesialis"`
NamaLengkap string `gorm:"column:namalengkap" json:"namalengkap"`
}
type DaftarJadwalDokter struct {
ID int `gorm:"column:id" json:"id"`
Hari int `gorm:"column:Hari" json:"Hari"`
NamaHari string `gorm:"column:Nama_hari" json:"Nama_hari"`
Waktu string `gorm:"column:Waktu" json:"Waktu"`
Dokter string `gorm:"column:Dokter" json:"Dokter"`
Spesialis int `gorm:"column:Spesialis" json:"Spesialis"`
SubSpesialis int `gorm:"column:Sub_spesialis" json:"Sub_spesialis"`
Status int `gorm:"column:Status" json:"Status"`
HFISCode string `gorm:"column:HFIS_code" json:"HFIS_code"`
}
type RequestUpdateJadwalDokter struct {
Tanggal string `json:"tanggal"`
}
+131
View File
@@ -0,0 +1,131 @@
package rujukan
type ResponseGetRujukan struct {
Response ResponseRujukan `json:"response"`
MetaData Metadata `json:"metaData"`
}
type ResponseGetRujukanBatch struct {
Response ResponseRujukanBatch `json:"response"`
MetaData Metadata `json:"metaData"`
}
type ResponseRaw struct {
Response string `json:"response"`
MetaData Metadata `json:"metaData"`
}
type Metadata struct {
Code string `json:"code"`
Message string `json:"message"`
}
type ResponseRujukan struct {
Rujukan Rujukan `json:"rujukan"`
}
type ResponseRujukanBatch struct {
Rujukan []Rujukan `json:"rujukan"`
}
type Response struct {
MetaData Metadata `json:"metaData"`
Response ResponseRujukan `json:"response"`
}
type ResponseBatch struct {
MetaData Metadata `json:"metaData"`
Response ResponseRujukanBatch `json:"response"`
}
type Rujukan struct {
Diagnosa Diagnosa `json:"diagnosa"`
Keluhan string `json:"keluhan"`
NoKunjungan string `json:"noKunjungan"`
Pelayanan Pelayanan `json:"pelayanan"`
Peserta Peserta `json:"peserta"`
PoliRujukan PoliRujukan `json:"poliRujukan"`
ProvPerujuk ProvPerujuk `json:"provPerujuk"`
TglKunjungan string `json:"tglKunjungan"`
}
type Diagnosa struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
type Pelayanan struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
type Peserta struct {
Cob COB `json:"cob"`
HakKelas HakKelas `json:"hakKelas"`
Informasi Informasi `json:"informasi"`
Mr MR `json:"mr"`
Nama string `json:"nama"`
NIK *string `json:"nik"`
NoKartu string `json:"noKartu"`
Pisa string `json:"pisa"`
ProvUmum ProvUmum `json:"provUmum"`
Sex string `json:"sex"`
StatusPeserta StatusPeserta `json:"statusPeserta"`
TglCetakKartu string `json:"tglCetakKartu"`
TglLahir string `json:"tglLahir"`
TglTAT string `json:"tglTAT"`
TglTMT string `json:"tglTMT"`
Umur Umur `json:"umur"`
}
type COB struct {
NamaAsuransi *string `json:"nmAsuransi"`
NoAsuransi *string `json:"noAsuransi"`
TglTAT *string `json:"tglTAT"`
TglTMT *string `json:"tglTMT"`
}
type HakKelas struct {
Keterangan string `json:"keterangan"`
Kode string `json:"kode"`
}
type Informasi struct {
Dinsos *string `json:"dinsos"`
NoSKTM *string `json:"noSKTM"`
ProlanisPRB *string `json:"prolanisPRB"`
}
type JenisPeserta struct {
Keterangan string `json:"keterangan"`
Kode string `json:"kode"`
}
type MR struct {
NoMR string `json:"noMR"`
NoTelepon *string `json:"noTelepon"`
}
type ProvUmum struct {
KodeProvider string `json:"kdProvider"`
NamaProvider string `json:"nmProvider"`
}
type StatusPeserta struct {
Keterangan string `json:"keterangan"`
Kode string `json:"kode"`
}
type Umur struct {
UmurSaatPelayanan string `json:"umurSaatPelayanan"`
UmurSekarang string `json:"umurSekarang"`
}
type PoliRujukan struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
type ProvPerujuk struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
+7 -33
View File
@@ -30,8 +30,8 @@ type RequestInsertRencanaKontrol struct {
TglRencanaKontrol string `json:"tglRencanaKontrol"` TglRencanaKontrol string `json:"tglRencanaKontrol"`
User string `json:"user"` User string `json:"user"`
IDDokter string `json:"id_dokter"` IDDokter string `json:"id_dokter"`
KodeDiagnosa string `json:"Kode_diagnosa"` KodeDiagnosa string `json:"kode_diagnosa"`
NamaDiagnosa string `json:"Nama_diagnosa"` NamaDiagnosa string `json:"nama_diagnosa"`
TipeSurKon string `json:"tipe_surkon"` TipeSurKon string `json:"tipe_surkon"`
TipeRawat string `json:"tipe_rawat"` TipeRawat string `json:"tipe_rawat"`
Ruangan string `json:"ruangan"` Ruangan string `json:"ruangan"`
@@ -217,7 +217,6 @@ type DataSuratKontrol struct {
UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"`
TipeSurKon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"` TipeSurKon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"`
UserUpdatedSurKon string `gorm:"column:User_updated_surat_kontrol" json:"User_updated_surat_kontrol"` UserUpdatedSurKon string `gorm:"column:User_updated_surat_kontrol" json:"User_updated_surat_kontrol"`
TipeRawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"`
} }
type ResponseSuratKontrolBySEP struct { type ResponseSuratKontrolBySEP struct {
@@ -297,36 +296,11 @@ type RequestCariPasien struct {
TipeSurKon string `json:"tipe_surkon"` TipeSurKon string `json:"tipe_surkon"`
Offset string `json:"offset"` Offset string `json:"offset"`
Limit string `json:"limit"` Limit string `json:"limit"`
IsTanggalEntri bool `json:"is_tanggal_entri"`
} }
type HistoriSurkon struct { type DataNomorSuratKontrol struct {
NamaPasien string `gorm:"column:Nama_lengkap" json:"Nama_pasien"` ID string `gorm:"column:id" json:"id"`
NoSEP string `gorm:"column:Nomor_sep" json:"No_SEP"` NomorSuratKontrol string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"`
NomorSuratkontrol string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` TanggalRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"`
TanggalRencana string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"`
TanggalCetak string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"`
Spesialis string `gorm:"column:Spesialis" json:"Spesialis"`
Subspesialis string `gorm:"column:Subspesialis" json:"Subspesialis"`
GelarDepan string `gorm:"column:gelardepan" json:"Gelar_depan"`
NamaDokter string `gorm:"column:Nama_lengkap_dokter" json:"Nama_dokter"`
GelarBelakang string `gorm:"column:gelarbelakang" json:"Gelar_belakang"`
Tiperawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"`
UserCreate string `gorm:"column:User_created_surat_kontrol" json:"User_create"`
UserUpdate string `gorm:"column:User_updated_surat_kontrol" json:"User_update"`
Status string `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"`
}
type Dataresponse struct {
NamaPasien string `json:"Nama_pasien"`
NoSEP string `json:"No_SEP"`
NomorSuratkontrol string `json:"Nomor_surat_kontrol"`
TanggalRencana string `json:"Tanggal_rencana_kontrol"`
TanggalCetak string `json:"Tanggal_cetak_surat_kontrol"`
Spesialis string `json:"Spesialis"`
Subspesialis string `json:"Subspesialis"`
NamaLengkap string `json:"Dpjp"`
Tiperawat string `json:"Tipe_rawat"`
UserCreate string `json:"User_create"`
UserUpdate string `json:"User_update"`
Status string `json:"Status_surat_kontrol"`
} }
+25
View File
@@ -0,0 +1,25 @@
package vclaim
type ResponseGetReferensiDokterRaw struct {
MetaData MetadataString `json:"metaData"`
Response string `json:"response"`
}
type MetadataString struct {
Code string `json:"code"`
Message string `json:"message"`
}
type ResponseGetReferensiDokter struct {
MetaData MetadataString `json:"metaData"`
Response ResponseReferensiDokter `json:"response"`
}
type ResponseReferensiDokter struct {
List ListData `json:"list"`
}
type ListData struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
+1
View File
@@ -15,4 +15,5 @@ type Header struct {
UserKey string UserKey string
TimeStamp string TimeStamp string
XSignature string XSignature string
XAuthorization string
} }
+1
View File
@@ -24,6 +24,7 @@ type ResponseDokter struct {
NamaLengkap string `json:"nama_lengkap"` NamaLengkap string `json:"nama_lengkap"`
Spesialis int `json:"spesialis"` Spesialis int `json:"spesialis"`
HFISCode string `json:"HFIS_code"` HFISCode string `json:"HFIS_code"`
DPJPCode string `json:"DPJP_code"`
} }
type ResponseDokterNew struct { type ResponseDokterNew struct {
@@ -0,0 +1,34 @@
package kunjunganpasien
type RequestListKunjunganPasien struct {
TanggalAwal string `json:"tanggalawal"`
TanggalAkhir string `json:"tanggalakhir"`
}
type ListKunjunganPasien struct {
NoMR string `gorm:"column:nomr" json:"nomr"`
NamaPasien string `gorm:"column:namalengkap" json:"namalengkap"`
TanggalLahir string `gorm:"column:tanggallahir" json:"tanggallahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
TanggalMasukKunjungan string `gorm:"column:tanggalmasukkunjungan" json:"tanggalmasukkunjungan"`
JamMasukKunjungan string `gorm:"column:jammasukkunjungan" json:"jammasukkunjungan"`
KodeDiagnosa string `gorm:"column:dxawalmasuk" json:"dxawalmasuk"`
NamaDiagnosa string `gorm:"column:displaydxawalmasuk" json:"displaydxawalmasuk"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"`
NamaLengkapDokter string `gorm:"column:namalengkapdokter" json:"namalengkapdokter"`
GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"`
}
type ResponseListKunjunganPasien struct {
NoMR string `gorm:"column:nomr" json:"nomr"`
NamaPasien string `gorm:"column:namalengkap" json:"namalengkap"`
TanggalLahir string `gorm:"column:tanggallahir" json:"tanggallahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
TanggalMasukKunjungan string `gorm:"column:tanggalmasukkunjungan" json:"tanggalmasukkunjungan"`
JamMasukKunjungan string `gorm:"column:jammasukkunjungan" json:"jammasukkunjungan"`
KodeDiagnosa string `gorm:"column:dxawalmasuk" json:"dxawalmasuk"`
NamaDiagnosa string `gorm:"column:displaydxawalmasuk" json:"displaydxawalmasuk"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
NamaLengkapDokter string `gorm:"column:namalengkapdokter" json:"namalengkapdokter"`
}
+8
View File
@@ -17,4 +17,12 @@ type DataLogAPI struct {
ResponTimeStart string `gorm:"column:Respontime_start" json:"Respontime_start"` ResponTimeStart string `gorm:"column:Respontime_start" json:"Respontime_start"`
ResponTimeEnd string `gorm:"column:Respontime_end" json:"Respontime_end"` ResponTimeEnd string `gorm:"column:Respontime_end" json:"Respontime_end"`
Comment string `gorm:"column:Comment" json:"Comment"` Comment string `gorm:"column:Comment" json:"Comment"`
RequestString string `json:"Request_string"`
ResponString string `json:"Respon_string"`
}
type ReqGetDataLogAPI struct {
TanggalAwal string `json:"Tanggal_awal"`
TanggalAkhir string `json:"Tanggal_akhir"`
TipeRawat string `json:"Tipe_rawat"`
} }
+33
View File
@@ -4,3 +4,36 @@ type KunjunganPasien struct {
ID string `gorm:"column:id" json:"id"` ID string `gorm:"column:id" json:"id"`
Ruangan int `gorm:"column:Ruangan" json:"Ruangan"` Ruangan int `gorm:"column:Ruangan" json:"Ruangan"`
} }
type RequestListKunjunganPasien struct {
TanggalAwal string `json:"tanggalawal"`
TanggalAkhir string `json:"tanggalakhir"`
}
type ListKunjunganPasien struct {
NoMR string `gorm:"column:nomr" json:"nomr"`
NamaPasien string `gorm:"column:namalengkap" json:"namalengkap"`
TanggalLahir string `gorm:"column:tanggallahir" json:"tanggallahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
TanggalMasukKunjungan string `gorm:"column:tanggalmasukkunjungan" json:"tanggalmasukkunjungan"`
JamMasukKunjungan string `gorm:"column:jammasukkunjungan" json:"jammasukkunjungan"`
KodeDiagnosa string `gorm:"column:dxawalmasuk" json:"dxawalmasuk"`
NamaDiagnosa string `gorm:"column:displaydxawalmasuk" json:"displaydxawalmasuk"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"`
NamaLengkapDokter string `gorm:"column:namalengkapdokter" json:"namalengkapdokter"`
GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"`
}
type ResponseListKunjunganPasien struct {
NoMR string `gorm:"column:nomr" json:"nomr"`
NamaPasien string `gorm:"column:namalengkap" json:"namalengkap"`
TanggalLahir string `gorm:"column:tanggallahir" json:"tanggallahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
TanggalMasukKunjungan string `gorm:"column:tanggalmasukkunjungan" json:"tanggalmasukkunjungan"`
JamMasukKunjungan string `gorm:"column:jammasukkunjungan" json:"jammasukkunjungan"`
KodeDiagnosa string `gorm:"column:dxawalmasuk" json:"dxawalmasuk"`
NamaDiagnosa string `gorm:"column:displaydxawalmasuk" json:"displaydxawalmasuk"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
NamaLengkapDokter string `gorm:"column:namalengkapdokter" json:"namalengkapdokter"`
}
+148
View File
@@ -0,0 +1,148 @@
package mikrobiologi
type RequestPasienMikrobiologi struct {
NOMR string `json:"nomr"`
IDXDaftar string `json:"idxdaftar"`
NoLab string `json:"nolab"`
}
type DataPasienMikrobiologi struct {
NOMR string `gorm:"column:nomr" json:"nomr"`
NoNota string `gorm:"column:nonota" json:"nonota"`
IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"`
TanggalOrder string `gorm:"column:tglorder" json:"tglorder"`
NoLab string `gorm:"column:nolab" json:"nolab"`
StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"`
StatusAPS int `gorm:"column:statusaps" json:"statusaps"`
Nama string `gorm:"column:nama" json:"nama"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
NoKTPBaru string `gorm:"column:noktpbaru" json:"noktpbaru"`
TempatLahir string `gorm:"column:tmptlahir" json:"tmptlahir"`
TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
Alamat string `gorm:"column:alamat" json:"alamat"`
NamaAPS string `gorm:"column:namaaps" json:"namaaps"`
NoKTPAPS string `gorm:"column:noktpaps" json:"noktpaps"`
TempatLahirAPS string `gorm:"column:tmptlahiraps" json:"tmptlahiraps"`
TanggalLahirAPS string `gorm:"column:tgllahiraps" json:"tgllahiraps"`
JenisKelaminAPS string `gorm:"column:jeniskelaminaps" json:"jeniskelaminaps"`
AlamatAPS string `gorm:"column:alamataps" json:"alamataps"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"`
KodeTarifRajal string `gorm:"column:kodetarifrajal" json:"kodetarifrajal"`
KodeTarifRanap string `gorm:"column:kodetarifranap" json:"kodetarifranap"`
}
type ResponseDataPasienRanap struct {
NOMR string `gorm:"column:nomr" json:"nomr"`
NoNota string `gorm:"column:nonota" json:"nonota"`
IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"`
TanggalOrder string `gorm:"column:tglorder" json:"tglorder"`
NoLab string `gorm:"column:nolab" json:"nolab"`
StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"`
Nama string `gorm:"column:nama" json:"nama"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
TempatLahir string `gorm:"column:tmptlahir" json:"tmptlahir"`
TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
Alamat string `gorm:"column:alamat" json:"alamat"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"`
KodeTarifRanap string `gorm:"column:kodetarifranap" json:"kodetarifranap"`
}
type ResponseDataPasienRajal struct {
NOMR string `gorm:"column:nomr" json:"nomr"`
NoNota string `gorm:"column:nonota" json:"nonota"`
IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"`
TanggalOrder string `gorm:"column:tglorder" json:"tglorder"`
NoLab string `gorm:"column:nolab" json:"nolab"`
StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"`
Nama string `gorm:"column:nama" json:"nama"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
TempatLahir string `gorm:"column:tmptlahir" json:"tmptlahir"`
TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
Alamat string `gorm:"column:alamat" json:"alamat"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"`
KodeTarifRajal string `gorm:"column:kodetarifrajal" json:"kodetarifrajal"`
}
type ResponseDataPasienRajalAPS struct {
NOMR string `gorm:"column:nomr" json:"nomr"`
NoNota string `gorm:"column:nonota" json:"nonota"`
IdxDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"`
TanggalOrder string `gorm:"column:tglorder" json:"tglorder"`
NoLab string `gorm:"column:nolab" json:"nolab"`
StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"`
StatusAPS int `gorm:"column:statusaps" json:"statusaps"`
NamaAPS string `gorm:"column:namaaps" json:"namaaps"`
NoKTPAPS string `gorm:"column:noktpaps" json:"noktpaps"`
TempatLahirAPS string `gorm:"column:tmptlahiraps" json:"tmptlahiraps"`
TanggalLahirAPS string `gorm:"column:tgllahiraps" json:"tgllahiraps"`
JenisKelaminAPS string `gorm:"column:jeniskelaminaps" json:"jeniskelaminaps"`
AlamatAPS string `gorm:"column:alamataps" json:"alamataps"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"`
KodeTarifRajal string `gorm:"column:kodetarifrajal" json:"kodetarifrajal"`
}
type RequestLISMikro struct {
NoRM string `json:"norm"`
Nama string `json:"nama"`
Alamat string `json:"alamat"`
Kota string `json:"kota"`
TanggalLahir string `json:"tgllahir"`
NoHP string `json:"nohap"`
Kelamin string `json:"kelamin"`
NIK string `json:"nik"`
NoBPJS string `json:"nobpjs"`
DokterPeminta string `json:"drpeminta"`
AsalPasien string `json:"asalpasien"`
Layanan string `json:"layanan"`
StatusBayar string `json:"statusbayar"`
NoTransaksi string `json:"notransaksi"`
Asuransi string `json:"asuransi"`
Klinis string `json:"klinis"`
KodeSpesimen string `json:"kode"`
NamaSpesimen string `json:"spesimen"`
Pengambilan string `json:"pengambilan"`
}
type OrderLabMikroMain struct {
IdxMikroMain string `gorm:"column:idxmikromain" json:"idxmikromain"`
NoLab string `gorm:"column:nolab" json:"nolab"`
IdxDaftar string `gorm:"column:idxdaftar" json:"idxdaftar"`
NoMR string `gorm:"column:nomr" json:"nomr"`
WaktuPengambilan string `gorm:"column:waktu_pengambilan" json:"waktu_pengambilan"`
TglOrder string `gorm:"column:tglorder" json:"tglorder"`
StatusSpesimen string `gorm:"column:status_specimen" json:"status_specimen"`
Spesimen string `gorm:"column:specimen" json:"specimen"`
DokterPengirim string `gorm:"column:drpengirim" json:"drpengirim"`
KodePoli string `gorm:"column:kdpoli" json:"kdpoli"`
NoNota string `gorm:"column:nonota" json:"nonota"`
StatusRajal string `gorm:"column:st_rajal" json:"st_rajal"`
StatusAPS string `gorm:"column:st_aps" json:"st_aps"`
}
type OrderLabMikro struct {
IdxOrderMikro string `gorm:"column:idxordermikro" json:"idxordermikro"`
NamaPemeriksaan string `gorm:"column:nama_pemeriksaan" json:"nama_pemeriksaan"`
}
type Response struct {
Status string `json:"status"`
Message string `json:"message"`
}
type ResponseLISMikro struct {
NoLab string `json:"nolab"`
Status string `json:"status"`
Message string `json:"message"`
}
type ReqUpdateLisMikro struct {
IdxOrderMikro string `gorm:"column:idxordermikro" json:"idxordermikro"`
NoLokal string `gorm:"column:no_lokal" json:"no_lokal"`
}
+14
View File
@@ -0,0 +1,14 @@
package pasien
type MPasien struct {
ID int `gorm:"column:id" json:"id"`
NoMR string `gorm:"column:no_mr" json:"no_mr"`
Nama string `gorm:"column:nama" json:"nama"`
Tempat string `gorm:"column:tempat" json:"tempat"`
TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
Alamat string `gorm:"column:alamat" json:"alamat"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
NoTelpon string `gorm:"column:notelp" json:"notelp"`
NoKartu string `gorm:"column:no_kartu" json:"no_kartu"`
}
+6
View File
@@ -0,0 +1,6 @@
package ruang
type MRuang struct {
NamaPoli string `gorm:"column:nama" json:"nama"`
Subsistem string `gorm:"column:subsistem" json:"subsistem"`
}