Author SHA256 Message Date
ahdan.zeeda.0103 883b1914fa update secretkey 2026-08-21 20:25:29 +07:00
ahdan.zeeda.0103 f9dfc254e8 env ub 2026-06-17 14:12:36 +07:00
ahdan.zeeda.0103 e9be766489 penambahan jadwal manual 2026-05-20 09:19:34 +07:00
ahdan.zeeda.0103 6371a79d22 non crontab 2025-12-15 07:27:17 +07:00
ahdan.zeeda.0103 d38dac15d5 perubahan jadwal dokter 2025-12-11 08:07:13 +07:00
ahdan.zeeda.0103 de682a1a2b penambahan tipe rawat 2025-10-16 09:29:27 +07:00
ahdan.zeeda.0103 804a4a5583 penambahan variabel 2025-10-14 10:09:47 +07:00
ahdan.zeeda.0103 c3c1ee0750 perubahan cron 2025-09-22 10:33:38 +07:00
ahdan.zeeda.0103 dfc1713910 surkon rawat jalan 2025-09-17 08:42:10 +07:00
ahdan.zeeda.0103 3d96679987 penambahan validasi kunjungan RJ 2025-09-16 16:13:54 +07:00
ahdan.zeeda.0103 cf5ce9b8b6 penambahan return 2025-09-14 15:16:16 +07:00
ahdan.zeeda.0103 72286761d5 perbaikan surkon 2025-09-14 08:10:04 +07:00
ahdan.zeeda.0103 add9d5edd0 perubahan fix kunjungan 2025-09-12 14:41:32 +07:00
ahdan.zeeda.0103 96a7ec559d penambahan validasi kunjungan 2025-09-11 16:33:26 +07:00
ahdan.zeeda.0103 1a6f545700 perubahan nomor kartu 2025-08-21 15:02:00 +07:00
ahdan.zeeda.0103 842a106e76 penambahan validasi 2025-08-12 14:59:47 +07:00
ahdan.zeeda.0103 f80a9d0f0c tambahan kode icd 2025-08-06 13:02:36 +07:00
ahdan.zeeda.0103 44a91b54e0 penambahan terbaru 2025-08-04 09:51:31 +07:00
ahdan.zeeda.0103 bbf73e12b8 penambahan validasi 2025-08-02 11:48:00 +07:00
ahdan.zeeda.0103 fcff846fb7 perbaikan code icd 2025-08-02 08:35:23 +07:00
ahdan.zeeda.0103 8ee8cb31a7 penambahan respon bpjs 2025-08-01 11:05:48 +07:00
ahdan.zeeda.0103 24a3e7039c penambahan log dalam internal 2025-07-30 13:36:24 +07:00
ahdan.zeeda.0103 5ac6fa1e40 update parsed 2025-07-21 08:52:11 +07:00
ahdan.zeeda.0103 331d1aa48c perubahan error surkon 2025-07-16 18:23:54 +07:00
ahdan.zeeda.0103 0f7e9e2c03 update surkon 2025-07-16 14:29:10 +07:00
ahdan.zeeda.0103 11abb0f49a update surkon terbaru 2025-07-16 07:35:04 +07:00
ahdan.zeeda.0103 c580e1962d pembaruhan alur surkon dan penambahan spri 2025-07-11 13:10:25 +07:00
ahdan.zeeda.0103 0383963fc3 pembaruhan handler response 2025-07-08 14:23:00 +07:00
ahdan.zeeda.0103 d6d2322141 update surkon perbaruhi 2025-07-07 15:05:53 +07:00
ahdan.zeeda.0103 d8474310c4 update surkon perbatuhi 2025-07-07 11:22:39 +07:00
ahdan.zeeda.0103 6a48e1060d update surkon 2025-07-07 08:38:26 +07:00
ahdan.zeeda.0103 dc589cb131 penambahan service update 2025-07-04 13:39:15 +07:00
ahdan.zeeda.0103 8b0bf7f3f3 penambahan function 2025-07-03 14:24:15 +07:00
ahdan.zeeda.0103 7ceab30ebf penambahan preview tambahan 2025-07-03 13:45:05 +07:00
ahdan.zeeda.0103 e2b8ef0a94 penambahan preview 2025-07-03 13:21:44 +07:00
ahdan.zeeda.0103 123634e168 already up prod 2025-06-30 11:30:18 +07:00
ahdan.zeeda.0103 89cfad0cdb perbaikan 2025-06-18 14:52:58 +07:00
ahdan.zeeda.0103 7c06ed8cf3 update histori dan cors 2025-06-18 12:10:14 +07:00
ahdan.zeeda.0103 68910a0c4b Merge pull request 'ahdan_master' (#11) from ahdan_master into master
Reviewed-on: https://git.rssa.top/mirza.millahsyafiq.0912/api-bpjs-surkon/pulls/11
2025-06-05 07:13:27 +00:00
ahdan.zeeda.0103 8d4ab7888c perubahan uji jam scheduler 2025-06-05 14:11:02 +07:00
ahdan.zeeda.0103 fea530f207 perubahan jam scheduler 2025-06-05 14:04:27 +07:00
ahdan.zeeda.0103 ac14b7cf87 perubahan coding url 2025-06-05 12:38:18 +07:00
ahdan.zeeda.0103 17cc0e6cba Merge pull request 'ahdan_dev' (#10) from ahdan_dev into master
Reviewed-on: https://git.rssa.top/mirza.millahsyafiq.0912/api-bpjs-surkon/pulls/10
2025-06-04 02:18:20 +00:00
ahdan.zeeda.0103 17d07a4d6a perubahan scheduler mingguan 2025-06-04 09:15:13 +07:00
ahdan.zeeda.0103 c653299fa2 perubahan scheduler 2025-06-04 08:54:50 +07:00
ahdan.zeeda.0103 47bb4caaf2 Merge pull request 'ahdan_dev' (#9) from ahdan_dev into master
Reviewed-on: https://git.rssa.top/mirza.millahsyafiq.0912/api-bpjs-surkon/pulls/9
2025-05-21 05:20:23 +00:00
ahdan.zeeda.0103 1719419480 update subspesialis 2025-05-21 10:24:08 +07:00
ahdan.zeeda.0103 28123e595c update poli 2025-05-21 09:40:25 +07:00
mirza.millahsyafiq.0912 fb0d7f4304 Merge pull request 'update histori surkon' (#8) from ahdan_dev into master
Reviewed-on: https://git.rssa.top/mirza.millahsyafiq.0912/api-bpjs-surkon/pulls/8
2025-05-20 04:59:51 +00:00
ahdan.zeeda.0103 b518314068 update histori surkon 2025-05-20 10:51:29 +07:00
mirza.millahsyafiq.0912 ea04f403f6 add comment 2025-04-25 14:42:02 +07:00
mirza.millahsyafiq.0912 ff7d766f23 update code 2025-04-25 11:10:31 +07:00
mirza.millahsyafiq.0912 f8cfe6c5d9 menambah tipe rawat ketika update surkon dan perbaikan jadwal dokter 2025-04-14 10:52:29 +07:00
mirza.millahsyafiq.0912 496865a652 fix url 2025-03-24 12:16:13 +07:00
mirza.millahsyafiq.0912 bb47ece739 update http status 2025-03-21 12:50:57 +07:00
mirza.millahsyafiq.0912 7111eba875 Merge branch 'master' of https://git.rssa.top/mirza.millahsyafiq.0911/api-bpjs-surkon 2025-03-13 09:22:30 +07:00
mirza.millahsyafiq.0912 9fe12bf768 uncomment cron 2025-03-13 09:22:15 +07:00
mirza.millahsyafiq.0912 77546b908b Merge pull request 'bridging-bpjs' (#7) from bridging-bpjs into master
Reviewed-on: https://git.rssa.top/mirza.millahsyafiq.0912/api-bpjs-surkon/pulls/7
2025-03-03 03:48:08 +00:00
mirza.millahsyafiq.0912 7ec49cde8d update code 2025-02-07 15:43:57 +07:00
mirza.millahsyafiq.0912 882bdd1a3e update get data surkon 2025-02-04 07:43:34 +07:00
mirza.millahsyafiq.0912 4dacf4910b fix port 2025-01-31 10:05:00 +07:00
mirza.millahsyafiq.0912 de58c78a25 update insert and get surat kontrol 2025-01-31 09:50:38 +07:00
ryan.akbar.0107 a5d96f0894 Fix timezone in Dockerfile 2024-12-23 07:42:16 +07:00
mirza.millahsyafiq.0912 7f2437a018 Merge pull request 'bridging-bpjs' (#6) from bridging-bpjs into master
Reviewed-on: https://git.rssa.top/mirza.millahsyafiq.0912/api-bpjs-surkon/pulls/6
2024-12-20 00:44:08 +00:00
mirza.millahsyafiq.0912 2e3fecf80b add condition hari libur: 2024-12-20 07:08:26 +07:00
mirza.millahsyafiq.0912 3c1aaefd9c Merge branch 'master' of https://git.rssa.top/mirza.millahsyafiq.0912/api-bpjs-surkon into bridging-bpjs 2024-12-20 07:07:35 +07:00
mirza.millahsyafiq.0912 3b9a56148e fix env and url 2024-12-19 11:31:41 +07:00
mirza.millahsyafiq.0912 05c1374b2a fix schedule 2024-12-19 09:25:48 +07:00
mirza.millahsyafiq.0912 67e69f092b update code 2024-12-19 08:23:06 +07:00
mirza.millahsyafiq.0912 2f68c2fec5 update docker compose 2024-12-19 08:22:32 +07:00
mirza.millahsyafiq.0912 3e7660452f fix schedule 2024-12-18 09:47:14 +07:00
mirza.millahsyafiq.0912 754518d11c disable schedule 2024-12-18 09:41:09 +07:00
mirza.millahsyafiq.0912 d838b788fc Merge branch 'master' of https://git.rssa.top/mirza.millahsyafiq.0912/api-bpjs-surkon into bridging-bpjs 2024-12-18 08:09:48 +07:00
mirza.millahsyafiq.0912 04158f4757 fix schedule 2024-12-18 08:05:23 +07:00
mirza.millahsyafiq.0912 cc27c179f7 fix timezone and remove unused log 2024-12-18 07:57:26 +07:00
mirza.millahsyafiq.0912 1afbf7c022 update port 2024-12-12 06:44:45 +07:00
mirza.millahsyafiq.0912 78d3b540c4 update time 2024-12-09 11:27:55 +07:00
mirza.millahsyafiq.0912 37c6978fe6 fix code schedule 2024-12-09 11:25:51 +07:00
usman bb06ce3194 Merge branch 'master' of https://git.rssa.top/mirza.millahsyafiq.0912/api-bpjs-surkon 2024-12-06 10:41:40 +07:00
usman c60d232f8a edit docker push 2024-12-06 10:40:09 +07:00
mirza.millahsyafiq.0912 875337a134 Merge pull request 'update code surkon' (#5) from bridging-bpjs into master
Reviewed-on: https://git.rssa.top/mirza.millahsyafiq.0912/api-bpjs-surkon/pulls/5
2024-12-06 03:26:36 +00:00
usman 7bfab20592 add docker push 2024-12-06 10:23:56 +07:00
mirza.millahsyafiq.0912 811d8e6e82 Merge branch 'master' of https://git.rssa.top/mirza.millahsyafiq.0911/api-bpjs-surkon into bridging-bpjs 2024-12-06 09:25:52 +07:00
mirza.millahsyafiq.0912 044e82419e update code surkon 2024-12-06 09:23:45 +07:00
mirza.millahsyafiq.0912 aabb02387d Merge pull request 'bridging-bpjs' (#4) from bridging-bpjs into master
Reviewed-on: https://git.rssa.top/mirza.millahsyafiq.0912/bridging-rssa/pulls/4
2024-11-29 02:53:58 +00:00
mirza.millahsyafiq.0912 a824b768c7 add i-care and update surkon 2024-11-29 09:04:57 +07:00
mirza.millahsyafiq.0912 1a13a35fbb update code for tipe surkon 2024-11-05 08:26:58 +07:00
mirza.millahsyafiq.0912 faead2f025 Merge pull request 'master-mirza' (#3) from master-mirza into master
Reviewed-on: https://git.rssa.top/mirza.millahsyafiq.0912/bridging-rssa/pulls/3
2024-10-22 04:01:13 +00:00
mirza.millahsyafiq.0912 9aeafae2e6 Merge branch 'bridging-bpjs' of https://git.rssa.top/mirza.millahsyafiq.0912/bridging-rssa into master-mirza 2024-10-22 10:56:25 +07:00
mirza.millahsyafiq.0912 6efcb93aff Merge pull request 'bridging-bpjs' (#2) from bridging-bpjs into master
Reviewed-on: https://git.rssa.top/mirza.millahsyafiq.0912/bridging-rssa/pulls/2
2024-09-25 03:06:30 +00:00
41 changed files with 6812 additions and 1049 deletions

No files matched your search

+23 -5
View File
@@ -4,21 +4,39 @@ SATUDATA_PASSWORD=stim*RS54
SATUDATA_NAME=satu_db
SATUDATA_PORT=5000
BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id/
ANTREAN_RS=antreanrs
SIMRS_HOST=10.10.123.163
SIMRS_USERNAME=simrs
SIMRS_PASSWORD=simrs.rssa
SIMRS_NAME=simrs
SIMRS_PORT=5432
BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id
ANTREAN_RS=/antreanrs
CONS_ID=5257
USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482
SECRET_KEY=1bV363512D
SECRET_KEY=UKu0o2wLB3
CONS_ID_DEV=16041
USER_KEY_DEV=467a2817fde5070f66c9a41fbeb8dc2c
SECRET_KEY_DEV=8pP3D5431E
USER_KEY_ICARE=1cd65acaa349684be6353bea5149e2e2
BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id
VCLAIM_RS_DEV=/vclaim-rest-dev
SURAT_KONTROL_RS=/vclaim-rest
I_CARE_JKN=/wsihs
I_CARE_JKN_DEV=/ihs_dev
BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id/
SURAT_KONTROL_RS=vclaim-rest
INSERT_SURAT_KONTROL=/RencanaKontrol/insert
UPDATE_SURAT_KONTROL=/RencanaKontrol/Update
DELETE_SURAT_KONTROL=/RencanaKontrol/Delete
GET_NOMOR_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol/
GET_SURAT_KONTROL_SEP=/RencanaKontrol/nosep/
GET_NOMOR_RUJUKAN=/Rujukan/
GET_NOMOR_RUJUKAN_BATCH=/Rujukan/List/Peserta/
GET_FKRTL=/api/rs/validate
GET_FKTP=/api/pcare/validate
INSERT_SPRI=/RencanaKontrol/InsertSPRI
UPDATE_SPRI=/RencanaKontrol/UpdateSPRI
+8
View File
@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
+13
View File
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="Go" enabled="true">
<buildTags>
<option name="os" value="linux" />
</buildTags>
</component>
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
+16
View File
@@ -0,0 +1,16 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="GoDfaConstantCondition" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="GoDfaErrorMayBeNotNil" enabled="false" level="WARNING" enabled_by_default="false">
<functions>
<function importPath="bridging-rssa/handlers/bpjs/surat_kontrol" name="ResponseUpdateSuratKontrol" />
<function importPath="bridging-rssa/handlers/bpjs/surat_kontrol" name="PostData" />
<function importPath="bridging-rssa/handlers/bpjs/surat_kontrol" name="ResponseDeleteSuratKontrol" />
</functions>
</inspection_tool>
<inspection_tool class="GoDfaNilDereference" enabled="false" level="WARNING" enabled_by_default="false">
<scope name="Project Files" level="WARNING" enabled="false" />
</inspection_tool>
</profile>
</component>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/api-bpjs-surkon.iml" filepath="$PROJECT_DIR$/.idea/api-bpjs-surkon.iml" />
</modules>
</component>
</project>
Generated
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
+5 -1
View File
@@ -12,7 +12,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 .
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/
+123 -107
View File
@@ -1,107 +1,123 @@
package config
import (
"bridging-rssa/models/config"
"crypto/hmac"
"crypto/sha256"
"encoding/base64"
"encoding/hex"
"fmt"
"log"
"os"
"time"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
var DB *gorm.DB
var SatuDataDB *gorm.DB
var err error
func ConnectDB() {
hostSatuData := os.Getenv("SATUDATA_HOST")
userNameSatuData := os.Getenv("SATUDATA_USERNAME")
passwordSatuData := os.Getenv("SATUDATA_PASSWORD")
dbNameSatuData := os.Getenv("SATUDATA_NAME")
portSatuData := os.Getenv("SATUDATA_PORT")
satuData := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSatuData, userNameSatuData, passwordSatuData, dbNameSatuData, portSatuData)
SatuDataDB, err = gorm.Open(postgres.Open(satuData), &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(cfg config.ConfigBpjs) *config.Header {
timenow := time.Now().UTC()
time := time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC)
tstamp := timenow.Unix() - time.Unix()
// cfg.Cons_id = os.Getenv("CONS_ID_DEV")
// cfg.User_key = os.Getenv("USER_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)
message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp))
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(tstamp),
XSignature: X_signature,
}
return header
}
func SetHeaderDev(cfg config.ConfigBpjs) *config.Header {
timenow := time.Now().UTC()
time := time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC)
tstamp := timenow.Unix() - time.Unix()
cfg.Cons_id = os.Getenv("CONS_ID_DEV")
cfg.User_key = os.Getenv("USER_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)
message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp))
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(tstamp),
XSignature: X_signature,
}
return header
}
package config
import (
"bridging-rssa/models/config"
"crypto/hmac"
"crypto/sha256"
"encoding/base64"
"encoding/hex"
"fmt"
"log"
"os"
"time"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
var DB *gorm.DB
var SatuDataDB *gorm.DB
var DBsimrs *gorm.DB
var err error
func ConnectDB() {
hostSatuData := os.Getenv("SATUDATA_HOST")
userNameSatuData := os.Getenv("SATUDATA_USERNAME")
passwordSatuData := os.Getenv("SATUDATA_PASSWORD")
dbNameSatuData := os.Getenv("SATUDATA_NAME")
portSatuData := os.Getenv("SATUDATA_PORT")
hostDBsimrs := os.Getenv("SIMRS_HOST")
userNameDBsimrs := os.Getenv("SIMRS_USERNAME")
passwordDBsimrs := os.Getenv("SIMRS_PASSWORD")
dbNameDBsimrs := os.Getenv("SIMRS_NAME")
portDBsimrs := os.Getenv("SIMRS_PORT")
satuData := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSatuData, userNameSatuData, passwordSatuData, dbNameSatuData, portSatuData)
SatuDataDB, err = gorm.Open(postgres.Open(satuData), &gorm.Config{})
if err != nil {
log.Fatal("Failed to connect to Satu Data database: ", err)
} else {
log.Println("Successfully connected to the database")
}
dbSimrs := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta",
hostDBsimrs, userNameDBsimrs, passwordDBsimrs, dbNameDBsimrs, portDBsimrs)
DB, err = gorm.Open(postgres.Open(dbSimrs), &gorm.Config{})
if err != nil {
log.Fatal("Failed to connect to DBsimrs database: ", err)
} else {
log.Println("Successfully connected to the DBsimrs database")
}
}
func SetHeader(isIcare bool, cfg config.ConfigBpjs) *config.Header {
timenow := time.Now().UTC()
time := time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC)
tstamp := timenow.Unix() - time.Unix()
cfg.Cons_id = os.Getenv("CONS_ID")
cfg.User_key = os.Getenv("USER_KEY")
cfg.Secret_key = os.Getenv("SECRET_KEY")
if isIcare {
cfg.User_key = os.Getenv("USER_KEY_ICARE")
}
secret := []byte(cfg.Secret_key)
message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp))
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(tstamp),
XSignature: X_signature,
}
return header
}
func SetHeaderDev(b bool, cfg config.ConfigBpjs) *config.Header {
timenow := time.Now().UTC()
time := time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC)
tstamp := timenow.Unix() - time.Unix()
cfg.Cons_id = os.Getenv("CONS_ID_DEV")
cfg.User_key = os.Getenv("USER_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)
message := []byte(cfg.Cons_id + "&" + fmt.Sprint(tstamp))
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(tstamp),
XSignature: X_signature,
}
return header
}
+20 -3
View File
@@ -14,7 +14,7 @@ import (
func GetDokter() ([]dokter.DaftarDokterRes, error) {
var listDokter []dokter.DaftarDokter
var res []dokter.DaftarDokterRes
result := config.SatuDataDB.Debug().Raw(`select "id", "HFIS_code" from "data_pegawai" where "HFIS_code" is not null`).Scan(&listDokter)
result := config.SatuDataDB.Raw(`select "id", "HFIS_code" from "data_pegawai" where "HFIS_code" is not null`).Scan(&listDokter)
if result.Error != nil {
if !errors.Is(result.Error, gorm.ErrRecordNotFound) {
log.Fatalf("Error get data : %v", result.Error)
@@ -43,7 +43,7 @@ func GetDokter() ([]dokter.DaftarDokterRes, error) {
func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) {
var namaDokter []dokter.NamaLengkap
result := config.SatuDataDB.Debug().Raw(`select dp.id,
result := config.SatuDataDB.Raw(`select dp.id,
array(
select dgd. "Gelar_depan"
from data_pegawai_daftar_gelar_depan dpdgd
@@ -55,7 +55,8 @@ func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) {
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,
dp."HFIS_code"
dp."HFIS_code",
dp."Code_dpjp" as "DPJP_code"
from "data_pegawai" dp
left join data_ktp dk on dp."KTP" = dk.id
WHERE dp.id in ?`, idDokter).Find(&namaDokter)
@@ -70,3 +71,19 @@ func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) {
return namaDokter, nil
}
func GetHFISCode(dpjp string) (*dokter.DaftarDokter, error) {
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
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data tidak ditemukan")
log.Println("error :", errMsg)
return nil, errMsg
}
log.Println("error :", err)
return nil, err
}
log.Println("Daftar Dokter :", dataDokter)
return dataDokter, nil
}
+32 -11
View File
@@ -3,6 +3,7 @@ package dokter
import (
"bridging-rssa/config"
"bridging-rssa/models/bpjs/jadwal_dokter"
"gorm.io/gorm"
"log"
"strconv"
@@ -11,7 +12,7 @@ import (
func GetJadwalDokterByDPJP(dpjp string) (string, error) {
var id string
errSelect := config.SatuDataDB.Debug().Raw(`select "id" from "data_pegawai" where "Code_dpjp" = ?`, dpjp).First(&id).Error
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
@@ -21,7 +22,7 @@ func GetJadwalDokterByDPJP(dpjp string) (string, error) {
func GetJadwalHariDokterBySpesialis(id string) ([]jadwal_dokter.JadwalDokterSatuData, error) {
var hari []jadwal_dokter.JadwalDokterSatuData
errSelect := config.SatuDataDB.Debug().Raw(`select * from "daftar_jadwal_dokter" where "Dokter" = ? order by "id"`, id).Scan(&hari).Error
errSelect := config.SatuDataDB.Raw(`select * from "daftar_jadwal_dokter" where "Dokter" = ? order by "id"`, id).Scan(&hari).Error
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
@@ -31,7 +32,7 @@ func GetJadwalHariDokterBySpesialis(id string) ([]jadwal_dokter.JadwalDokterSatu
func GetJadwalDokterByIDDokter(hari string) ([]string, error) {
var spesialis []string
errSelect := config.SatuDataDB.Debug().Raw(`select distinct "Spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Spesialis"`, hari).Scan(&spesialis).Error
errSelect := config.SatuDataDB.Raw(`select distinct "Spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Spesialis"`, hari).Scan(&spesialis).Error
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
@@ -40,7 +41,7 @@ func GetJadwalDokterByIDDokter(hari string) ([]string, error) {
}
func GetJadwalDokterByDate(hari string) ([]string, error) {
var spesialis []string
errSelect := config.SatuDataDB.Debug().Raw(`select distinct "Spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Spesialis"`, hari).Scan(&spesialis).Error
errSelect := config.SatuDataDB.Raw(`select distinct "Spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Spesialis"`, hari).Scan(&spesialis).Error
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
@@ -50,7 +51,7 @@ func GetJadwalDokterByDate(hari string) ([]string, error) {
func GetJadwalSubspesialisByDate(hari string) ([]int, error) {
var subspesialis []int
errSelect := config.SatuDataDB.Debug().Raw(`select distinct "Sub_spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Sub_spesialis"`, hari).Scan(&subspesialis).Error
errSelect := config.SatuDataDB.Raw(`select distinct "Sub_spesialis" from "daftar_jadwal_dokter" where "Nama_hari" = ? order by "Sub_spesialis"`, hari).Scan(&subspesialis).Error
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
@@ -60,7 +61,7 @@ func GetJadwalSubspesialisByDate(hari string) ([]int, error) {
func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error) {
var listDokter []string
errSelect := config.SatuDataDB.Debug().Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and "Spesialis" = ? order by "Spesialis"`, hari, spesialis).Scan(&listDokter).Error
errSelect := config.SatuDataDB.Raw(`select "Dokter" from "daftar_jadwal_dokter" where "Nama_hari" = ? and "Spesialis" = ? order by "Spesialis"`, hari, spesialis).Scan(&listDokter).Error
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
@@ -70,7 +71,7 @@ func GetJadwalDokterBySpesialis(hari string, spesialis string) ([]string, error)
func GetJadwalDokterBySubpesialis(hari string, subspesialis string) ([]string, error) {
var listDokter []string
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
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
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
@@ -79,7 +80,17 @@ func GetJadwalDokterBySubpesialis(hari string, subspesialis string) ([]string, e
}
func DeleteJadwalDokter() error {
err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter"`).Error
err := config.SatuDataDB.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 {
log.Printf("Failed truncate data : %v", err)
return err
@@ -89,7 +100,7 @@ func DeleteJadwalDokter() error {
}
func DeleteJadwalDokterTemp() error {
err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter_temp"`).Error
err := config.SatuDataDB.Exec(`truncate table "daftar_jadwal_dokter_temp"`).Error
if err != nil {
log.Printf("Failed truncate data : %v", err)
return err
@@ -99,7 +110,7 @@ func DeleteJadwalDokterTemp() error {
}
func InsertJadwalDokter(reqInsert *jadwal_dokter.JadwalDokterSatuData) error {
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
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
if err != nil {
log.Printf("Failed insert data : %v", err)
return err
@@ -112,7 +123,17 @@ 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
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 {
log.Printf("Failed insert data : %v", err)
return err
}
log.Println("Success insert data")
return nil
}
func InsertDataJadwalDokter(tx *gorm.DB, reqInsert *jadwal_dokter.DataJadwalDokterSatuData) error {
err := tx.Debug().Exec(`insert into "data_jadwal_dokter" ("id", "Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis", "Sub_spesialis", "Tanggal_jadwal") values (?, ?, ? ,?, ?, ?, ?, ?)`, reqInsert.ID, reqInsert.Hari, reqInsert.NamaHari, reqInsert.Waktu, reqInsert.Dokter, reqInsert.Spesialis, reqInsert.SubSpesialis, reqInsert.TanggalJadwal).Error
if err != nil {
log.Printf("Failed insert data : %v", err)
return err
+2 -2
View File
@@ -12,7 +12,7 @@ import (
func GetSpesialis() ([]dokter.DaftarSpesialis, error) {
var daftarSpesialis []dokter.DaftarSpesialis
result := config.SatuDataDB.Debug().Raw(`select * from "daftar_spesialis"`).Find(&daftarSpesialis)
result := config.SatuDataDB.Raw(`select * from "daftar_spesialis"`).Find(&daftarSpesialis)
if result.Error != nil {
if !errors.Is(result.Error, gorm.ErrRecordNotFound) {
log.Printf("Error get data : %v", result.Error)
@@ -27,7 +27,7 @@ func GetSpesialis() ([]dokter.DaftarSpesialis, error) {
func GetSpesialisByID(idSpesialis []string) ([]dokter.DaftarSpesialis, error) {
var daftarSpesialis []dokter.DaftarSpesialis
result := config.SatuDataDB.Debug().Raw(`select * from "daftar_spesialis" where "id" in ?`, idSpesialis).Find(&daftarSpesialis)
result := config.SatuDataDB.Raw(`select * from "daftar_spesialis" where "id" in ?`, idSpesialis).Find(&daftarSpesialis)
if result.Error != nil {
if !errors.Is(result.Error, gorm.ErrRecordNotFound) {
log.Printf("Error get data : %v", result.Error)
+3 -3
View File
@@ -12,7 +12,7 @@ import (
func GetSubspesialis() ([]dokter.DaftarSubspesialis, error) {
var daftarSubspesialis []dokter.DaftarSubspesialis
result := config.SatuDataDB.Debug().Raw(`select * from "daftar_subspesialis"`).Find(&daftarSubspesialis)
result := config.SatuDataDB.Raw(`select * from "daftar_subspesialis"`).Find(&daftarSubspesialis)
if result.Error != nil {
if !errors.Is(result.Error, gorm.ErrRecordNotFound) {
log.Printf("Error get data : %v", result.Error)
@@ -29,7 +29,7 @@ func GetSubspesialis() ([]dokter.DaftarSubspesialis, error) {
func GetSubspesialisByID(idSubspesialis int) (*dokter.DaftarSubspesialis, error) {
var daftarSubspesialis *dokter.DaftarSubspesialis
result := config.SatuDataDB.Debug().Raw(`select dss.*, ds."Spesialis"
result := config.SatuDataDB.Raw(`select dss.*, ds."Spesialis"
from "daftar_subspesialis" dss
left join "daftar_spesialis" ds on ds."id" = dss."FK_daftar_spesialis_ID"
where dss.id = ?`, idSubspesialis).First(&daftarSubspesialis)
@@ -48,7 +48,7 @@ func GetSubspesialisByID(idSubspesialis int) (*dokter.DaftarSubspesialis, error)
func GetSubspesialisByIDBatch(idSubspesialis []int) ([]dokter.DaftarSubspesialis, error) {
var daftarSubspesialis []dokter.DaftarSubspesialis
result := config.SatuDataDB.Debug().Raw(`select dss.*, ds."Spesialis"
result := config.SatuDataDB.Raw(`select dss.*, ds."Spesialis"
from "daftar_subspesialis" dss
left join "daftar_spesialis" ds on ds."id" = dss."FK_daftar_spesialis_ID"
where dss.id in ?
+21
View File
@@ -0,0 +1,21 @@
package jadwal
import (
"bridging-rssa/config"
"bridging-rssa/models/jadwal"
"log"
)
func GetJadwalLibur(date string) (*jadwal.DaftarJadwalLiburPelayanan, bool, error) {
var jadwalLibur *jadwal.DaftarJadwalLiburPelayanan
query := `select * from daftar_jadwal_libur_pelayanan where "Tanggal_libur_pelayanan" = ?`
q := config.SatuDataDB.Debug().Raw(query, date).Scan(&jadwalLibur)
if q.Error != nil {
log.Println(q.Error)
return nil, false, q.Error
} else if q.RowsAffected == 0 {
log.Println("Tidak pada hari libur")
return jadwalLibur, false, nil
}
return jadwalLibur, true, nil
}
+1 -1
View File
@@ -10,7 +10,7 @@ func InsertLogAPI(reqInsert *logapi.DataLogAPI) error {
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"
) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
err := config.SatuDataDB.Debug().Exec(query,
err := config.SatuDataDB.Exec(query,
reqInsert.ID,
reqInsert.DateCreated,
reqInsert.UserAgent,
+24
View File
@@ -0,0 +1,24 @@
package logapi
import (
"bridging-rssa/config"
logapi "bridging-rssa/models/log_api"
"log"
)
func InsertLogICare(reqInsert *logapi.InsertLogICare) error {
query := `insert into "data_log_icare_bpjs" ("id", "date_created", "Ruangan", "Dokter", "Kunjungan_pasien", "Waktu_transaksi")
values (?, ?, ?, ?, ?, ?)`
errInsert := config.SatuDataDB.Exec(query,
reqInsert.ID,
reqInsert.DateCreated,
reqInsert.Ruangan,
reqInsert.Dokter,
reqInsert.Kunjungan_pasien,
reqInsert.WaktuTransaksi).Error
if errInsert != nil {
log.Println(errInsert)
return errInsert
}
return nil
}
@@ -0,0 +1,24 @@
package lokasiruang
import (
"bridging-rssa/config"
"errors"
"log"
"gorm.io/gorm"
)
func GetDaftarLokasiRuang(idSimgos string) (int, error) {
var idRuangan int
query := `select dlr."id" from "daftar_lokasi_ruang" dlr where dlr."Id_location_simgos" = ?`
err := config.SatuDataDB.Raw(query, idSimgos).First(&idRuangan).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
log.Println(err)
return 128, nil
}
log.Println(err)
return 0, err
}
return idRuangan, nil
}
@@ -0,0 +1,27 @@
package pasien
import (
"bridging-rssa/config"
"bridging-rssa/models/pasien"
"errors"
"log"
"gorm.io/gorm"
)
func GetDataKunjunganPasien(idxdaftar string) (*pasien.KunjunganPasien, error) {
var kunjunganPasien *pasien.KunjunganPasien
query := `select dks."id", dks."Ruangan" from "data_kunjungan_pasien" dks where dks."IDXDAFTAR" = ?`
err := config.SatuDataDB.Raw(query, idxdaftar).First(&kunjunganPasien).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data Tidak Ditemukan")
log.Println(errMsg)
return nil, errMsg
}
log.Println(err)
return nil, err
}
log.Println("Data Kunjungan Pasien : ", kunjunganPasien)
return kunjunganPasien, nil
}
@@ -7,7 +7,7 @@ import (
)
func UpdateKunjunganPasien(req sk.RequestInsertRencanaKontrol) 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
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
if err != nil {
log.Println(err)
return err
+444 -20
View File
@@ -4,14 +4,79 @@ import (
"bridging-rssa/config"
suratkontrol "bridging-rssa/models/bpjs/surat_kontrol"
"errors"
"fmt"
"log"
"gorm.io/gorm"
)
func GetPendaftaran(idxdaftar string) (*suratkontrol.Pendaftaran, error) {
var dataPendaftaran suratkontrol.Pendaftaran
err := config.DB.Raw(`select tp."kddokter",mp."nama",mp."noktp",mp."jeniskelamin",
mp.noktp,tp."nosep" ,tp."idxdaftar",tp."nomr" ,tp."jamreg"
from t_pendaftaran tp
join m_pasien mp on tp.nomr = mp.nomr
where tp.idxdaftar = ?`, idxdaftar).Scan(&dataPendaftaran).Error
if err != nil {
log.Println(err)
return nil, nil
}
log.Println(dataPendaftaran)
return &dataPendaftaran, nil
}
func GetAdmission(idxdaftar string) (*suratkontrol.Addmission, error) {
var dataAdmission suratkontrol.Addmission
result := config.DB.Raw(`select "dokterpengirim","id_admission","dokter_penanggungjawab","nosep",mp."nama",mp."noktp",mp."jeniskelamin",
"masukrs", mp.noktp,ta."nomr"
from t_admission ta
join m_pasien mp on ta."nomr" = mp."nomr"
where id_admission = ?`, idxdaftar).Scan(&dataAdmission)
if result.Error != nil {
log.Println(result.Error)
return nil, result.Error
}
if result.RowsAffected == 0 {
// Data tidak ditemukan, kembalikan error khusus
return nil, fmt.Errorf("Data Tidak Ditemukan")
}
log.Println(dataAdmission)
return &dataAdmission, nil
}
func Getdokter(kddokter int) (string, error) {
var idDokter string
err := config.SatuDataDB.Raw(`select "id" from data_pegawai where "KDDOKTER" = ? LIMIT 1`, kddokter).Scan(&idDokter).Error
if err != nil {
return "", err
}
return idDokter, err
}
func InsertKunjunganPasien(reqInsert *suratkontrol.InsertKunjunganPasien) error {
log.Println("Req Insert Database : ", reqInsert)
insertQuery := `insert into "data_kunjungan_pasien" ("id", "IDXDAFTAR","NOMR","Nama_lengkap","NIK","DPJP","Tanggal_masuk","Jam_masuk","date_created")
values (?, ?, ?, ?, ?, ?, ?, ?, ?)`
err := config.SatuDataDB.Exec(insertQuery,
reqInsert.ID,
reqInsert.IdxDaftar,
reqInsert.Nomr,
reqInsert.NamaLengkap,
reqInsert.NIK,
reqInsert.DPJP,
reqInsert.TanggalMasuk,
reqInsert.JamMasuk,
reqInsert.DateCreated,
).Error
if err != nil {
log.Println(err)
return err
}
return nil
}
func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) {
var kunjunganPasien *suratkontrol.KunjunganPasien
err := config.SatuDataDB.Debug().Raw(`select dkp."id", dkp."IDXDAFTAR" as idxdaftar, dkp."Nomor_sep" as nomorsep,
err := config.SatuDataDB.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,
dk."Nama_lengkap" as namadokter,
dp."KDDOKTER" as kodedokter, dp."HFIS_code" as kodehfisdokter,
@@ -30,7 +95,8 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, er
where dpdgb.data_pegawai_id = dp.id
) AS gelarbelakang,
dkp."Ruangan" as ruangan,
dkp."DPJP" as id_dokter
dkp."DPJP" as id_dokter,
dkp."NOMR" as "No_rm"
from data_kunjungan_pasien dkp
left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id
left join data_pegawai dp on dkp."DPJP" = dp.id
@@ -55,9 +121,9 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
log.Println("Req Insert Database : ", reqInsert)
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",
"User_created_surat_kontrol", "Tipe_surat_kontrol", "User_updated_surat_kontrol")
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
err := config.SatuDataDB.Debug().Exec(insertQuery,
"User_created_surat_kontrol", "Tipe_surat_kontrol", "User_updated_surat_kontrol", "Tipe_rawat","Nomor_kartu","Kode_icd","Diagnosa")
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?)`
err := config.SatuDataDB.Exec(insertQuery,
reqInsert.ID,
reqInsert.DateCreated,
reqInsert.TglCetakSurKon,
@@ -70,6 +136,10 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
reqInsert.UserCreatedSurKon,
reqInsert.TipeSurKon,
reqInsert.UserUpdatedSurKon,
reqInsert.TipeRawat,
reqInsert.NomorKartu,
reqInsert.KodeIcd,
reqInsert.Diagnosa,
).Error
if err != nil {
log.Println(err)
@@ -80,8 +150,8 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error {
func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKontrol, error) {
var dataSurKon []*suratkontrol.GetDataSuratKontrol
err := config.SatuDataDB.Debug().Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
dsk."Nomor_surat_kontrol",
err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
dsk."Nomor_surat_kontrol", dsk."Tipe_rawat" ,
(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",
@@ -103,6 +173,7 @@ func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKont
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",
@@ -124,9 +195,9 @@ func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKont
return dataSurKon, nil
}
func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontrol, error) {
func GetDataSuratKontrolByIDTipe(idxdaftar string, tipe string) (*suratkontrol.GetDataSuratKontrol, error) {
var dataSurKon *suratkontrol.GetDataSuratKontrol
err := config.SatuDataDB.Debug().Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
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
@@ -149,20 +220,275 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro
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."Tipe_surat_kontrol" as "Tipe_SurKon",
dsk."User_created_surat_kontrol" as "User",
dsk."Kode_icd",
dsk."Diagnosa",
dsk."Nomor_kartu",
dsk."Tipe_rawat"
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" = ?`, idxdaftar).First(&dataSurKon).Error
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("DPJP anda belum ada subspesialis")
errMsg := errors.New("Data tidak ada")
log.Println(errMsg)
return nil, errMsg
}
}
return dataSurKon, nil
}
func GetDataSuratKontrolByIDnomor(idxdaftar string, nomor 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",dsk."Kode_icd",dsk."Diagnosa",
(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",
dsk."Nomor_kartu" as "No_kartu",
dsk."Tipe_rawat"
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."Nomor_surat_kontrol" = ?`, idxdaftar, nomor).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 GetDataSuratKontrolnomor(nomor 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",dsk."Kode_icd",dsk."Diagnosa",
(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",
dsk."Nomor_kartu" as "No_kartu",
dsk."Tipe_rawat"
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."Nomor_surat_kontrol" = ?`, nomor).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 GetDataSuratKontrolByIDsrukon(idxdaftar string, id 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",
dsk."Kode_icd",
dsk."Diagnosa",
dsk."Nomor_kartu" as "No_kartu",
dsk."Tipe_rawat"
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 dkp2."IDXDAFTAR" = ? and dsk."id" = ? `, idxdaftar, id).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 GetDataSuratKontrolidsurkon(id 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",
dsk."Nomor_kartu" as "No_kartu",
dsk."Kode_icd",
dsk."Diagnosa",
dsk."Tipe_rawat"
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."id" = ?`, id).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) {
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",
dsk."Tipe_rawat",
dsk."Nomor_kartu"
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" = ? `, idxdaftar).First(&dataSurKon).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data tidak ada")
log.Println(errMsg)
return nil, errMsg
}
@@ -171,7 +497,7 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro
}
func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) 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
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
if err != nil {
log.Println(err)
return err
@@ -179,9 +505,27 @@ func UpdateDataSuratKontrol(reqUpdate *suratkontrol.DataSuratKontrol) error {
return nil
}
func GetIdDokterByHFIS(KodeHFIS string) (string, error) {
var idDokter string
err := config.SatuDataDB.Raw(`select "id" from data_pegawai where "HFIS_code" = ? LIMIT 1`, KodeHFIS).Scan(&idDokter).Error
if err != nil {
return "", err
}
return idDokter, err
}
func GetUserCreated(user string) (*suratkontrol.Created, error) {
var UserCreated *suratkontrol.Created
err := config.SatuDataDB.Raw(`select "User_created_surat_kontrol","date_created", "Tanggal_rencana_kontrol" from data_surat_kontrol where "id" = ? `, user).Scan(&UserCreated).Error
if err != nil {
return nil, err
}
return UserCreated, err
}
func GetIDXDaftarBySurKon(idSurKon string) (string, error) {
var idxDaftar string
err := config.SatuDataDB.Debug().Raw(`select dkp."IDXDAFTAR"
err := config.SatuDataDB.Raw(`select dkp."IDXDAFTAR"
from "data_surat_kontrol" dsk
left join "data_kunjungan_pasien" dkp on dkp."id" = dsk."Kunjungan_pasien"
where dsk."id" = ?`, idSurKon).First(&idxDaftar).Error
@@ -194,7 +538,7 @@ func GetIDXDaftarBySurKon(idSurKon string) (string, error) {
func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, error) {
var dataSurKon *suratkontrol.DataSuratKontrol
err := config.SatuDataDB.Debug().Raw(`select * from "data_surat_kontrol" where "id" = ?`, idSurKon).First(&dataSurKon).Error
err := config.SatuDataDB.Raw(`select * from "data_surat_kontrol" where "id" = ?`, idSurKon).First(&dataSurKon).Error
if err != nil {
log.Println(err)
return nil, err
@@ -204,9 +548,9 @@ func GetAllDataSuratKontrol(idSurKon string) (*suratkontrol.DataSuratKontrol, er
func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) ([]*suratkontrol.GetDataSuratKontrol, error) {
var dataSurKon []*suratkontrol.GetDataSuratKontrol
query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?`
query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ? offset ? limit ?`
querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
dsk."Nomor_surat_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",
@@ -228,22 +572,102 @@ func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []i
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."Tipe_surat_kontrol" as "Tipe_SurKon2",
dsk."Tipe_rawat"
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' `
where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
querySelect += query
err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&dataSurKon).Error
err := config.SatuDataDB.Raw(querySelect, args...).Find(&dataSurKon).Error
if err != nil {
log.Println(err)
return nil, err
}
return dataSurKon, nil
}
func CountDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) (int, error) {
var jumlahData int
query += ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?`
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.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.Raw(querySelect, idPasien).Scan(&noSurKon).Error
if err != nil {
log.Println(err)
return "", err
}
log.Println("Nomor SurKon :", noSurKon)
return noSurKon, nil
}
func GetNomorSurKonnew(idxdaftar string) (string, error) {
var noSurKon string
querySelect := `select dsk."Nomor_surat_kontrol" from data_surat_kontrol dsk where dsk."Idxdaftar_surat_kontrol" = ? and dsk."Tipe_surat_kontrol" <> '2' order by dsk."date_created"`
err := config.SatuDataDB.Raw(querySelect, idxdaftar).Scan(&noSurKon).Error
if err != nil {
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."id",dkp2."IDXDAFTAR",dsk."Nomor_surat_kontrol",dsk."Tanggal_rencana_kontrol",dsk."Tanggal_cetak_surat_kontrol",
ds2."Spesialis",ds."Subspesialis",dsk."Tipe_surat_kontrol",
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, dsk."User_created_surat_kontrol", dsk."User_updated_surat_kontrol",dsk."Tipe_rawat" ,
dsk."Status_surat_kontrol"
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"
left join daftar_spesialis ds2 on ds."FK_daftar_spesialis_ID" = ds2."id"
where dkp2."NOMR" = ? order by dsk."Status_surat_kontrol" != '1',dsk."Tanggal_rencana_kontrol" desc offset ? limit ?`, norm, offset, limit).Scan(&dataHistoriSurKon).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("data tidak ada")
log.Println(errMsg)
return nil, errMsg
}
}
return dataHistoriSurKon, nil
}
+6 -2
View File
@@ -10,7 +10,11 @@ services:
- 8080:8080
volumes:
- .:/app
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
environment:
# TIMEZONE
- TZ=Asia/Jakarta
# DATABASE SIMRS V3.0
- POSTGRE_DB_HOST=10.10.123.223
- POSTGRE_DB_PORT=5432
@@ -24,10 +28,10 @@ services:
- SATUDATA_NAME=satu_db
- SATUDATA_PORT=5000
# BPJS
- BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id
- BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id/
- CONS_ID=5257
- USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482
- SECRET_KEY=1bV363512D
- SECRET_KEY=UKu0o2wLB3
# SERVICE ANTROL
- ANTREAN_RS=antreanrs
# BPJS VCLAIM
+27
View File
@@ -0,0 +1,27 @@
!/bin/bash
#get image name
remote_url=$(git remote get-url origin)
image=$(echo $remote_url | sed 's|https://||g; s|.git||g')
#get branch name
branch_name=$(git rev-parse --abbrev-ref HEAD)
clean_branch_name=${branch_name##*/}
#get timestamp for the tag
timestamp=$(date +%Y%m%d%H%M%S)
tag=$image:$timestamp-$clean_branch_name
latest=$image:latest-$clean_branch_name
#build image
docker build -t $tag .
docker tag $tag $latest
#push to dockerhub
docker login git.rssa.top -u stim -p 4fde63b07906e7bfa6b3493d76d153a3981039b9
docker push $tag
docker push $latest
#remove dangling images
docker system prune -f
+141 -141
View File
@@ -1,141 +1,141 @@
// Package docs Code generated by swaggo/swag. DO NOT EDIT
package docs
import "github.com/swaggo/swag"
const docTemplate = `{
"schemes": {{ marshal .Schemes }},
"swagger": "2.0",
"info": {
"description": "{{escape .Description}}",
"title": "{{.Title}}",
"contact": {},
"version": "{{.Version}}"
},
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/api/user": {
"get": {
"description": "returs list of all users from the database",
"tags": [
"Users"
],
"summary": "return list of all",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.User"
}
}
}
}
},
"/api/user/create": {
"post": {
"description": "Insert Data User",
"tags": [
"Users"
],
"summary": "Insert Data User",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Response"
}
}
}
}
},
"/api/user/delete/:id": {
"delete": {
"description": "Delete Data User",
"tags": [
"Users"
],
"summary": "Delete Data User",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Response"
}
}
}
}
},
"/api/user/update/:id": {
"put": {
"description": "Update Data User",
"tags": [
"Users"
],
"summary": "Update Data User",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Response"
}
}
}
}
}
},
"definitions": {
"models.Response": {
"type": "object",
"properties": {
"response_code": {
"type": "string"
},
"response_message": {
"type": "string"
}
}
},
"models.User": {
"type": "object",
"properties": {
"agama": {
"type": "string"
},
"alamat": {
"type": "string"
},
"id": {
"type": "string"
},
"jenis_kelamin": {
"type": "string"
},
"nama": {
"type": "string"
},
"umur": {
"type": "integer"
}
}
}
}
}`
// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
Version: "1",
Host: "localhost:8080",
BasePath: "",
Schemes: []string{},
Title: "Crud User",
Description: "Rest API CRUD User",
InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
LeftDelim: "{{",
RightDelim: "}}",
}
func init() {
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}
// Package docs Code generated by swaggo/swag. DO NOT EDIT
package docs
import "github.com/swaggo/swag"
const docTemplate = `{
"schemes": {{ marshal .Schemes }},
"swagger": "2.0",
"info": {
"description": "{{escape .Description}}",
"title": "{{.Title}}",
"contact": {},
"version": "{{.Version}}"
},
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/api/user": {
"get": {
"description": "returs list of all users from the database",
"tags": [
"Users"
],
"summary": "return list of all",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.User"
}
}
}
}
},
"/api/user/create": {
"post": {
"description": "Insert Data User",
"tags": [
"Users"
],
"summary": "Insert Data User",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Response"
}
}
}
}
},
"/api/user/delete/:id": {
"delete": {
"description": "Delete Data User",
"tags": [
"Users"
],
"summary": "Delete Data User",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Response"
}
}
}
}
},
"/api/user/update/:id": {
"put": {
"description": "Update Data User",
"tags": [
"Users"
],
"summary": "Update Data User",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Response"
}
}
}
}
}
},
"definitions": {
"models.Response": {
"type": "object",
"properties": {
"response_code": {
"type": "string"
},
"response_message": {
"type": "string"
}
}
},
"models.User": {
"type": "object",
"properties": {
"agama": {
"type": "string"
},
"alamat": {
"type": "string"
},
"id": {
"type": "string"
},
"jenis_kelamin": {
"type": "string"
},
"nama": {
"type": "string"
},
"umur": {
"type": "integer"
}
}
}
}
}`
// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
Version: "1",
Host: "localhost:8080",
BasePath: "",
Schemes: []string{},
Title: "Crud User",
Description: "Rest API CRUD User",
InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
LeftDelim: "{{",
RightDelim: "}}",
}
func init() {
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}
+16
View File
@@ -1,7 +1,9 @@
package utils
import (
"fmt"
"log"
"strconv"
"strings"
)
@@ -43,3 +45,17 @@ func ReplaceGelar(gelar string) string {
gelar = strings.ReplaceAll(gelar, ",", " ")
return gelar
}
func GetNoUrut(noSurKon string) (string, error) {
noSurKonSlice := strings.Split(noSurKon, "/")
noUrut := noSurKonSlice[3]
noUrutInt, err := strconv.Atoi(noUrut)
if err != nil {
return "", err
}
noUrutInt++
noUrutStr := fmt.Sprintf("%03d", noUrutInt)
log.Println("No Urut: ", noUrutStr)
return noUrutStr, nil
}
+2 -4
View File
@@ -3,12 +3,11 @@ module bridging-rssa
go 1.23.0
require (
github.com/andrean360/bridging-bpjs-go v1.0.1
github.com/daku10/go-lz-string v0.0.6
github.com/gin-contrib/cors v1.7.2
github.com/gin-gonic/gin v1.10.0
github.com/joho/godotenv v1.5.1
github.com/mashingan/smapping v0.1.19
github.com/rs/cors v1.11.1
github.com/swaggo/files v1.0.1
github.com/swaggo/gin-swagger v1.6.0
github.com/swaggo/swag v1.16.3
@@ -23,7 +22,6 @@ require (
github.com/cloudwego/iasm v0.2.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/gabriel-vasile/mimetype v1.4.5 // indirect
github.com/gin-contrib/cors v1.7.2 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
@@ -43,7 +41,6 @@ require (
github.com/leodido/go-urn v1.4.0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
@@ -65,6 +62,7 @@ require (
github.com/google/uuid v1.6.0
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/robfig/cron/v3 v3.0.1
golang.org/x/text v0.18.0 // indirect
gorm.io/driver/postgres v1.5.9
)
+2 -6
View File
@@ -1,7 +1,5 @@
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
github.com/andrean360/bridging-bpjs-go v1.0.1 h1:06eJ23vcI2tNyPryr8p3jxJ+Vy4P4/nneNPWuUrgnLg=
github.com/andrean360/bridging-bpjs-go v1.0.1/go.mod h1:sRBG5zI4Ky/UMCI7u/QuMTlrzREV2UQn043lhrejfFE=
github.com/bytedance/sonic v1.12.2 h1:oaMFuRTpMHYLpCntGca65YWt5ny+wAceDERTkT2L9lg=
github.com/bytedance/sonic v1.12.2/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
@@ -84,8 +82,6 @@ github.com/mashingan/smapping v0.1.19 h1:SsEtuPn2UcM1croIupPtGLgWgpYRuS0rSQMvKD9
github.com/mashingan/smapping v0.1.19/go.mod h1:FjfiwFxGOuNxL/OT1WcrNAwTPx0YJeg5JiXwBB1nyig=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -96,10 +92,10 @@ github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xl
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA=
github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+264
View File
@@ -0,0 +1,264 @@
package icare
import (
"bridging-rssa/database/satu_data/dokter"
log_api "bridging-rssa/database/satu_data/log_api"
"bridging-rssa/database/satu_data/pasien"
"bridging-rssa/models/config"
logapi "bridging-rssa/models/log_api"
"encoding/json"
"fmt"
"log"
"net/http"
"os"
"strconv"
"strings"
"time"
cfg "bridging-rssa/config"
ic "bridging-rssa/models/bpjs/i_care"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
)
func GetFKRTL(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("I_CARE_JKN")
param := os.Getenv("GET_FKRTL")
url := baseUrl + endpoint + param
log.Println("URL :", url)
var req *ic.ReqICare
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: err.Error(),
})
return
}
reqICare := &ic.RequestICare{
Param: req.Param,
KodeDokter: req.KodeDokter,
}
reqJson, errMarshal := json.Marshal(reqICare)
if errMarshal != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: errMarshal.Error(),
})
return
}
log.Println("REQUEST: ", string(reqJson))
conf := config.ConfigBpjs{}
icare := true
header := cfg.SetHeader(icare, 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",
}
log.Println("Headers : ", headers)
var headerStringBuilder strings.Builder
for key, value := range headers {
headerStringBuilder.WriteString(fmt.Sprintf("%s: %s; ", key, value))
}
headerString := strings.TrimSuffix(headerStringBuilder.String(), "; ")
dpjp := strconv.Itoa(req.KodeDokter)
dataDokter, err := dokter.GetHFISCode(dpjp)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: err.Error(),
})
return
}
reqICare.KodeDokter, err = strconv.Atoi(dataDokter.HfisCode)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: err.Error(),
})
return
}
kunjunganPasien, err := pasien.GetDataKunjunganPasien(req.IDXDaftar)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: err.Error(),
})
return
}
uuid := uuid.New().String()
logTimeStart := time.Now().Format("2006-01-02 15:04:05")
res, err := ResponseGetFKRTL(url, header, headers, reqICare)
if err != nil {
responJson, errMarshal2 := json.Marshal(res)
if errMarshal2 != nil {
log.Println(errMarshal2)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: errMarshal2.Error(),
})
return
}
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
reqInsertLog := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
UserAgent: req.User,
IP: c.ClientIP(),
Parameter: "BPJS-ICare-FKRTL",
Header: headerString,
Method: "POST",
Url: url,
Request: reqJson,
Respon: responJson,
ResponCode: strconv.Itoa(res.MetaData.Code),
ResponTimeStart: logTimeStart,
ResponTimeEnd: logTimeEnd,
Comment: res.MetaData.Message,
}
errInsert := log_api.InsertLogAPI(reqInsertLog)
if errInsert != nil {
log.Println(errInsert)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: errInsert.Error(),
})
return
}
log.Println(err)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: err.Error(),
})
return
}
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: err.Error(),
})
return
}
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
reqInsertLog := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
UserAgent: req.User,
IP: c.ClientIP(),
Parameter: "BPJS-ICare-FKRTL",
Header: headerString,
Method: "POST",
Url: url,
Request: reqJson,
Respon: responJson,
ResponCode: strconv.Itoa(res.MetaData.Code),
ResponTimeStart: logTimeStart,
ResponTimeEnd: logTimeEnd,
Comment: res.MetaData.Message,
}
err = log_api.InsertLogAPI(reqInsertLog)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: err.Error(),
})
return
}
reqInsert := &logapi.InsertLogICare{
ID: uuid,
DateCreated: logTimeEnd,
Ruangan: kunjunganPasien.Ruangan,
Dokter: dataDokter.ID,
Kunjungan_pasien: kunjunganPasien.ID,
WaktuTransaksi: logTimeEnd,
}
errInsert := log_api.InsertLogICare(reqInsert)
if errInsert != nil {
log.Println(errInsert)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: errInsert.Error(),
})
return
}
c.JSON(http.StatusOK, res)
}
func GetFKTP(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("I_CARE_JKN")
param := os.Getenv("GET_FKRTL")
url := baseUrl + endpoint + param
log.Println("URL :", url)
var req *ic.RequestICare
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: err.Error(),
})
return
}
log.Println("REQUEST: ", req)
conf := config.ConfigBpjs{}
header := cfg.SetHeaderDev(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/json",
}
log.Println("Headers : ", headers)
res, err := ResponseGetFKRTL(url, header, headers, req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &ic.Metadata{
Code: 0,
Message: err.Error(),
})
return
}
c.JSON(http.StatusOK, res)
}
+222
View File
@@ -0,0 +1,222 @@
package icare
import (
"bridging-rssa/docs"
ic "bridging-rssa/models/bpjs/i_care"
"bridging-rssa/models/config"
"bytes"
"encoding/json"
"errors"
"fmt"
"io"
"log"
"net/http"
"strings"
"time"
)
func ResponseGetFKRTL(url string, header *config.Header, headers map[string]string, request *ic.RequestICare) (*ic.ResponseGet, error) {
log.Println("URL", url)
reqMarshall, err := json.Marshal(request)
if err != nil {
log.Printf("Error json marshal: %v", err)
}
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{
Timeout: 10 * time.Second,
}
responses := &ic.ResponseGet{}
response, err := client.Do(req)
if err != nil {
if strings.Contains(strings.ToLower(err.Error()), "deadline exceeded") {
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses)
return responses, err
}
log.Printf("Error making external API request: %v", err)
return responses, err
}
log.Println("RESPONSE: ", response)
if response.StatusCode == http.StatusGatewayTimeout { // 504
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
responses.MetaData.Code = 504
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses)
return responses, err
}
key := header.ConsID + header.SecretKey + header.TimeStamp
res, err := io.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
return nil, err
}
log.Println("Res:", string(res))
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 {
errMsg := errors.New(resFkrtlRaw.MetaData.Message)
if strings.Contains(strings.ToLower(resFkrtlRaw.MetaData.Message), "Gagal simpan!") {
message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal"
resFkrtlRaw.MetaData.Message = message
}
log.Printf("error : %v", errMsg)
responses.MetaData.Code = resFkrtlRaw.MetaData.Code
responses.MetaData.Message = resFkrtlRaw.MetaData.Message
log.Println("responses: ", responses)
return responses, errMsg
}
dataResp, err := docs.StringDecrypt(key, resFkrtlRaw.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
log.Println("res: ", dataResp)
return nil, err
}
var resFkrtl ic.Response
log.Println("dataresp: ", dataResp)
err = json.Unmarshal([]byte(dataResp), &resFkrtl)
if err != nil {
log.Printf("Error Decode: %v", err)
return nil, err
}
responses = &ic.ResponseGet{
Response: resFkrtl,
MetaData: resFkrtlRaw.MetaData,
}
return responses, nil
}
func ResponseGetFKTP(url string, header *config.Header, headers map[string]string, request *ic.ReqFKTP) (*ic.ResponseGet, error) {
log.Println("URL", url)
reqMarshall, err := json.Marshal(request)
if err != nil {
log.Printf("Error json marshal: %v", err)
}
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{
Timeout: 10 * time.Second,
}
responses := &ic.ResponseGet{}
response, err := client.Do(req)
if err != nil {
if strings.Contains(strings.ToLower(err.Error()), "deadline exceeded") {
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses)
return responses, err
}
log.Printf("Error making external API request: %v", err)
return responses, err
}
log.Println("RESPONSE: ", response)
if response.StatusCode == http.StatusGatewayTimeout { // 504
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
responses.MetaData.Code = 504
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses)
return responses, err
}
key := header.ConsID + header.SecretKey + header.TimeStamp
res, err := io.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
return nil, err
}
log.Println("Res:", string(res))
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 {
errMsg := errors.New(resFkrtlRaw.MetaData.Message)
if strings.Contains(strings.ToLower(resFkrtlRaw.MetaData.Message), "Gagal simpan!") {
message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal"
resFkrtlRaw.MetaData.Message = message
}
log.Printf("error : %v", errMsg)
responses.MetaData.Code = resFkrtlRaw.MetaData.Code
responses.MetaData.Message = resFkrtlRaw.MetaData.Message
log.Println("responses: ", responses)
return responses, errMsg
}
dataResp, err := docs.StringDecrypt(key, resFkrtlRaw.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
log.Println("res: ", dataResp)
return nil, err
}
var resFkrtl ic.Response
log.Println("dataresp: ", dataResp)
err = json.Unmarshal([]byte(dataResp), &resFkrtl)
if err != nil {
log.Printf("Error Decode: %v", err)
return nil, err
}
responses = &ic.ResponseGet{
Response: resFkrtl,
MetaData: resFkrtlRaw.MetaData,
}
return responses, nil
}
File diff suppressed because it is too large Load diff
+129 -69
View File
@@ -1,69 +1,129 @@
package jadwal_dokter
import (
"bridging-rssa/docs"
"bridging-rssa/models/bpjs/jadwal_dokter"
"bridging-rssa/models/config"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
)
func JadwalDokterGetResponse(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)
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 {
fmt.Println(err)
}
var jadwalDokterRaw jadwal_dokter.JadwalDokterRaw
err = json.Unmarshal([]byte(res), &jadwalDokterRaw)
if err != nil {
log.Printf("Error Unmarshaling: %v", err)
}
if jadwalDokterRaw.MetaData.Code == 201 {
log.Println("No Data Found")
return nil, nil
}
dataResp, err := docs.StringDecrypt(key, jadwalDokterRaw.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
}
var listDokter []jadwal_dokter.ListDokter
log.Println("dataresp: ", dataResp)
err = json.Unmarshal([]byte(dataResp), &listDokter)
if err != nil {
log.Printf("Error Decode: %v", err)
}
log.Println("res: ", &listDokter)
return &listDokter, nil
}
package jadwal_dokter
import (
"bridging-rssa/docs"
"bridging-rssa/models/bpjs/jadwal_dokter"
"bridging-rssa/models/config"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
)
func JadwalDokterGetResponse(url string, header *config.Header, headers map[string]string) (*jadwal_dokter.JadwalDokter, 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 {
fmt.Println(err)
}
var jadwalDokterRaw jadwal_dokter.JadwalDokterRaw
err = json.Unmarshal([]byte(res), &jadwalDokterRaw)
if err != nil {
log.Printf("Error Unmarshaling: %v", err)
}
responses := &jadwal_dokter.JadwalDokter{}
if jadwalDokterRaw.MetaData.Code != 200 {
responses.MetaData.Code = jadwalDokterRaw.MetaData.Code
responses.MetaData.Message = jadwalDokterRaw.MetaData.Message
log.Println("No Data Found")
return responses, nil
}
dataResp, err := docs.StringDecrypt(key, jadwalDokterRaw.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
}
var listDokter []*jadwal_dokter.ListDokter
log.Println("dataresp: ", dataResp)
err = json.Unmarshal([]byte(dataResp), &listDokter)
if err != nil {
log.Printf("Error Decode: %v", err)
}
log.Println("res: ", &listDokter)
responses = &jadwal_dokter.JadwalDokter{
Response: listDokter,
MetaData: jadwalDokterRaw.MetaData,
}
return responses, nil
}
func JadwalDokterGetResponseApi(url string, header *config.Header, headers map[string]string) ([]*jadwal_dokter.ListDokter, 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 {
fmt.Println(err)
}
var jadwalDokterRaw jadwal_dokter.JadwalDokterRaw
err = json.Unmarshal([]byte(res), &jadwalDokterRaw)
if err != nil {
log.Printf("Error Unmarshaling: %v", err)
}
if jadwalDokterRaw.MetaData.Code == 201 {
log.Println("No Data Found")
return nil, nil
}
dataResp, err := docs.StringDecrypt(key, jadwalDokterRaw.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
}
var listDokter []*jadwal_dokter.ListDokter
log.Println("dataresp: ", dataResp)
err = json.Unmarshal([]byte(dataResp), &listDokter)
if err != nil {
log.Printf("Error Decode: %v", err)
}
log.Println("res: ", &listDokter)
return listDokter, nil
}
+322
View File
@@ -0,0 +1,322 @@
package bpjs
import (
sk "bridging-rssa/models/bpjs/surat_kontrol"
"github.com/gin-gonic/gin"
"net/http"
"strconv"
)
func HandleResponse(c *gin.Context, res *sk.Response) {
code, err := strconv.Atoi(res.MetaData.Code)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Invalid status code"})
return
}
// Map status codes ke HTTP status constants
switch code {
// 1xx Informational
case 100:
c.JSON(http.StatusContinue, res.MetaData)
case 101:
c.JSON(http.StatusSwitchingProtocols, res.MetaData)
case 102:
c.JSON(http.StatusProcessing, res.MetaData)
case 103:
c.JSON(http.StatusEarlyHints, res.MetaData)
// 2xx Success
//case 200:
// c.JSON(http.StatusOK, &sk.Response{
// MetaData: sk.MetadataString{
// Code: res.MetaData.Code,
// Message: res.MetaData.Message,
// },
// })
case 200:
c.JSON(http.StatusOK, res.MetaData)
case 201:
c.JSON(http.StatusCreated, res.MetaData)
case 202:
c.JSON(http.StatusAccepted, res.MetaData)
case 203:
c.JSON(http.StatusNonAuthoritativeInfo, res.MetaData)
case 204:
c.JSON(http.StatusNoContent, res.MetaData)
case 205:
c.JSON(http.StatusResetContent, res.MetaData)
case 206:
c.JSON(http.StatusPartialContent, res.MetaData)
case 207:
c.JSON(http.StatusMultiStatus, res.MetaData)
case 208:
c.JSON(http.StatusAlreadyReported, res.MetaData)
case 226:
c.JSON(http.StatusIMUsed, res.MetaData)
// 3xx Redirection
case 300:
c.JSON(http.StatusMultipleChoices, res.MetaData)
case 301:
c.JSON(http.StatusMovedPermanently, res.MetaData)
case 302:
c.JSON(http.StatusFound, res.MetaData)
case 303:
c.JSON(http.StatusSeeOther, res.MetaData)
case 304:
c.JSON(http.StatusNotModified, res.MetaData)
case 305:
c.JSON(http.StatusUseProxy, res.MetaData)
case 307:
c.JSON(http.StatusTemporaryRedirect, res.MetaData)
case 308:
c.JSON(http.StatusPermanentRedirect, res.MetaData)
// 4xx Client Error
case 400:
c.JSON(http.StatusBadRequest, res.MetaData)
case 401:
c.JSON(http.StatusUnauthorized, res.MetaData)
case 402:
c.JSON(http.StatusPaymentRequired, res.MetaData)
case 403:
c.JSON(http.StatusForbidden, res.MetaData)
case 404:
c.JSON(http.StatusNotFound, res.MetaData)
case 405:
c.JSON(http.StatusMethodNotAllowed, res.MetaData)
case 406:
c.JSON(http.StatusNotAcceptable, res.MetaData)
case 407:
c.JSON(http.StatusProxyAuthRequired, res.MetaData)
case 408:
c.JSON(http.StatusRequestTimeout, res.MetaData)
case 409:
c.JSON(http.StatusConflict, res.MetaData)
case 410:
c.JSON(http.StatusGone, res.MetaData)
case 411:
c.JSON(http.StatusLengthRequired, res.MetaData)
case 412:
c.JSON(http.StatusPreconditionFailed, res.MetaData)
case 413:
c.JSON(http.StatusRequestEntityTooLarge, res.MetaData)
case 414:
c.JSON(http.StatusRequestURITooLong, res.MetaData)
case 415:
c.JSON(http.StatusUnsupportedMediaType, res.MetaData)
case 416:
c.JSON(http.StatusRequestedRangeNotSatisfiable, res.MetaData)
case 417:
c.JSON(http.StatusExpectationFailed, res.MetaData)
case 418:
c.JSON(http.StatusTeapot, res.MetaData)
case 421:
c.JSON(http.StatusMisdirectedRequest, res.MetaData)
case 422:
c.JSON(http.StatusUnprocessableEntity, res.MetaData)
case 425:
c.JSON(http.StatusTooEarly, res.MetaData)
case 423:
c.JSON(http.StatusLocked, res.MetaData)
case 424:
c.JSON(http.StatusFailedDependency, res.MetaData)
case 426:
c.JSON(http.StatusUpgradeRequired, res.MetaData)
case 428:
c.JSON(http.StatusPreconditionRequired, res.MetaData)
case 429:
c.JSON(http.StatusTooManyRequests, res.MetaData)
case 431:
c.JSON(http.StatusRequestHeaderFieldsTooLarge, res.MetaData)
case 451:
c.JSON(http.StatusUnavailableForLegalReasons, res.MetaData)
// 5xx Server Error
case 500:
c.JSON(http.StatusInternalServerError, res.MetaData)
case 501:
c.JSON(http.StatusNotImplemented, res.MetaData)
case 502:
c.JSON(http.StatusBadGateway, res.MetaData)
case 503:
c.JSON(http.StatusServiceUnavailable, res.MetaData)
case 504:
c.JSON(http.StatusGatewayTimeout, res.MetaData)
case 505:
c.JSON(http.StatusHTTPVersionNotSupported, res.MetaData)
case 506:
c.JSON(http.StatusVariantAlsoNegotiates, res.MetaData)
case 507:
c.JSON(http.StatusInsufficientStorage, res.MetaData)
case 508:
c.JSON(http.StatusLoopDetected, res.MetaData)
case 510:
c.JSON(http.StatusNotExtended, res.MetaData)
case 511:
c.JSON(http.StatusNetworkAuthenticationRequired, res.MetaData)
// Default case untuk status code yang tidak dikenali
default:
c.JSON(http.StatusInternalServerError, gin.H{"error": "Unknown status code"})
}
}
func HandleResponseSPRI(c *gin.Context, res *sk.Responsespri) {
code, err := strconv.Atoi(res.MetaData.Code)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Invalid status code"})
return
}
// Map status codes ke HTTP status constants
switch code {
// 1xx Informational
case 100:
c.JSON(http.StatusContinue, res.MetaData)
case 101:
c.JSON(http.StatusSwitchingProtocols, res.MetaData)
case 102:
c.JSON(http.StatusProcessing, res.MetaData)
case 103:
c.JSON(http.StatusEarlyHints, res.MetaData)
// 2xx Success
//case 200:
// c.JSON(http.StatusOK, &sk.Response{
// MetaData: sk.MetadataString{
// Code: res.MetaData.Code,
// Message: res.MetaData.Message,
// },
// })
case 200:
c.JSON(http.StatusOK, res.MetaData)
case 201:
c.JSON(http.StatusCreated, res.MetaData)
case 202:
c.JSON(http.StatusAccepted, res.MetaData)
case 203:
c.JSON(http.StatusNonAuthoritativeInfo, res.MetaData)
case 204:
c.JSON(http.StatusNoContent, res.MetaData)
case 205:
c.JSON(http.StatusResetContent, res.MetaData)
case 206:
c.JSON(http.StatusPartialContent, res.MetaData)
case 207:
c.JSON(http.StatusMultiStatus, res.MetaData)
case 208:
c.JSON(http.StatusAlreadyReported, res.MetaData)
case 226:
c.JSON(http.StatusIMUsed, res.MetaData)
// 3xx Redirection
case 300:
c.JSON(http.StatusMultipleChoices, res.MetaData)
case 301:
c.JSON(http.StatusMovedPermanently, res.MetaData)
case 302:
c.JSON(http.StatusFound, res.MetaData)
case 303:
c.JSON(http.StatusSeeOther, res.MetaData)
case 304:
c.JSON(http.StatusNotModified, res.MetaData)
case 305:
c.JSON(http.StatusUseProxy, res.MetaData)
case 307:
c.JSON(http.StatusTemporaryRedirect, res.MetaData)
case 308:
c.JSON(http.StatusPermanentRedirect, res.MetaData)
// 4xx Client Error
case 400:
c.JSON(http.StatusBadRequest, res.MetaData)
case 401:
c.JSON(http.StatusUnauthorized, res.MetaData)
case 402:
c.JSON(http.StatusPaymentRequired, res.MetaData)
case 403:
c.JSON(http.StatusForbidden, res.MetaData)
case 404:
c.JSON(http.StatusNotFound, res.MetaData)
case 405:
c.JSON(http.StatusMethodNotAllowed, res.MetaData)
case 406:
c.JSON(http.StatusNotAcceptable, res.MetaData)
case 407:
c.JSON(http.StatusProxyAuthRequired, res.MetaData)
case 408:
c.JSON(http.StatusRequestTimeout, res.MetaData)
case 409:
c.JSON(http.StatusConflict, res.MetaData)
case 410:
c.JSON(http.StatusGone, res.MetaData)
case 411:
c.JSON(http.StatusLengthRequired, res.MetaData)
case 412:
c.JSON(http.StatusPreconditionFailed, res.MetaData)
case 413:
c.JSON(http.StatusRequestEntityTooLarge, res.MetaData)
case 414:
c.JSON(http.StatusRequestURITooLong, res.MetaData)
case 415:
c.JSON(http.StatusUnsupportedMediaType, res.MetaData)
case 416:
c.JSON(http.StatusRequestedRangeNotSatisfiable, res.MetaData)
case 417:
c.JSON(http.StatusExpectationFailed, res.MetaData)
case 418:
c.JSON(http.StatusTeapot, res.MetaData)
case 421:
c.JSON(http.StatusMisdirectedRequest, res.MetaData)
case 422:
c.JSON(http.StatusUnprocessableEntity, res.MetaData)
case 423:
c.JSON(http.StatusLocked, res.MetaData)
case 424:
c.JSON(http.StatusFailedDependency, res.MetaData)
case 425:
c.JSON(http.StatusTooEarly, res.MetaData)
case 426:
c.JSON(http.StatusUpgradeRequired, res.MetaData)
case 428:
c.JSON(http.StatusPreconditionRequired, res.MetaData)
case 429:
c.JSON(http.StatusTooManyRequests, res.MetaData)
case 431:
c.JSON(http.StatusRequestHeaderFieldsTooLarge, res.MetaData)
case 451:
c.JSON(http.StatusUnavailableForLegalReasons, res.MetaData)
// 5xx Server Error
case 500:
c.JSON(http.StatusInternalServerError, res.MetaData)
case 501:
c.JSON(http.StatusNotImplemented, res.MetaData)
case 502:
c.JSON(http.StatusBadGateway, res.MetaData)
case 503:
c.JSON(http.StatusServiceUnavailable, res.MetaData)
case 504:
c.JSON(http.StatusGatewayTimeout, res.MetaData)
case 505:
c.JSON(http.StatusHTTPVersionNotSupported, res.MetaData)
case 506:
c.JSON(http.StatusVariantAlsoNegotiates, res.MetaData)
case 507:
c.JSON(http.StatusInsufficientStorage, res.MetaData)
case 508:
c.JSON(http.StatusLoopDetected, res.MetaData)
case 510:
c.JSON(http.StatusNotExtended, res.MetaData)
case 511:
c.JSON(http.StatusNetworkAuthenticationRequired, res.MetaData)
// Default case untuk status code yang tidak dikenali
default:
c.JSON(http.StatusInternalServerError, gin.H{"error": "Unknown status code"})
}
}
+282 -21
View File
@@ -12,9 +12,110 @@ import (
"log"
"net/http"
"strings"
"time"
)
func PostDataSPRI(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Responsespri, error) {
log.Println("URL", url)
reqMarshall, err := json.Marshal(request)
if err != nil {
log.Printf("Error json marshal: %v", err)
}
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{}
responses := &suratkontrol.Responsespri{}
response, err := client.Do(req)
if err != nil {
responses.MetaData.Code = "203"
responses.MetaData.Message = err.Error()
log.Printf("Error making external API request: %v", err)
log.Println("responses: ", responses)
return responses, err
}
log.Println("RESPONSE: ", response)
if response.StatusCode == http.StatusGatewayTimeout { // 504
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
responses.MetaData.Code = "504"
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses)
return responses, errMsg
}
key := header.ConsID + header.SecretKey + header.TimeStamp
res, err := io.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
return nil, err
}
log.Println("Res:", string(res))
var resSuratKontrolRaw suratkontrol.ResponseRaw
err = json.Unmarshal([]byte(string(res)), &resSuratKontrolRaw)
if err != nil {
log.Printf("Error Unmarshaling: %v", err)
return nil, err
}
log.Println("ResponseRaw : ", resSuratKontrolRaw)
if resSuratKontrolRaw.MetaData.Code != "200" {
if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Nomor SEP Sudah pernah digunakan!." {
message := "Gagal simpan! Nomor SEP pernah diterbitkan Surat Kontrol!."
resSuratKontrolRaw.MetaData.Message = message
log.Println("masuk sini kan")
} else if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Poli Tujuan Kontrol tidak sama dengan Poli Asal Rujukan Awal." {
message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal"
resSuratKontrolRaw.MetaData.Message = message
}
log.Printf("error : %v", resSuratKontrolRaw.MetaData.Message)
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
log.Println("responses: ", responses)
return responses, errMsg
}
dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
log.Println("res: ", dataResp)
return nil, err
}
var resSuratKontrol suratkontrol.ResponseSuratKontrolSPRI
log.Println("dataresp: ", dataResp)
err = json.Unmarshal([]byte(dataResp), &resSuratKontrol)
if err != nil {
log.Printf("Error Decode: %v", err)
return nil, err
}
responses = &suratkontrol.Responsespri{
MetaData: resSuratKontrolRaw.MetaData,
Response: resSuratKontrol,
}
return responses, nil
}
func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) {
log.Println("URL", url)
@@ -37,13 +138,36 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
log.Println("REQ", req.Header)
client := http.Client{}
responses := &suratkontrol.Response{}
response, err := client.Do(req)
if err != nil {
responses.MetaData.Code = "203"
responses.MetaData.Message = err.Error()
log.Printf("Error making external API request: %v", err)
return nil, err
log.Println("responses: ", responses)
return responses, err
}
log.Println("RESPONSE: ", response)
if response.StatusCode == http.StatusGatewayTimeout { // 504
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
responses.MetaData.Code = "504"
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses)
return responses, errMsg
}
if response.StatusCode == http.StatusInternalServerError { // 500
errMsg := errors.New("Server BPJS Down")
log.Printf("error : %v", errMsg)
responses.MetaData.Code = "500"
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses)
return responses, errMsg
}
key := header.ConsID + header.SecretKey + header.TimeStamp
res, err := io.ReadAll(response.Body)
if err != nil {
@@ -62,12 +186,19 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
log.Println("ResponseRaw : ", resSuratKontrolRaw)
responses := &suratkontrol.Response{}
if resSuratKontrolRaw.MetaData.Code != "200" {
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
log.Printf("error : %v", errMsg)
if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Nomor SEP Sudah pernah digunakan!." {
message := "Gagal simpan! Nomor SEP pernah diterbitkan Surat Kontrol!."
resSuratKontrolRaw.MetaData.Message = message
log.Println("masuk sini kan")
} else if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Poli Tujuan Kontrol tidak sama dengan Poli Asal Rujukan Awal." {
message := "Surat kontrol gagal diterbitkan, pastikan klinik tujuan sama dengan klinik asal pada rujukan awal"
resSuratKontrolRaw.MetaData.Message = message
}
log.Printf("error : %v", resSuratKontrolRaw.MetaData.Message)
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
log.Println("responses: ", responses)
return responses, errMsg
}
@@ -118,26 +249,20 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
}
log.Println("REQ", req.Header)
client := http.Client{
Timeout: 10 * time.Second,
}
client := http.Client{}
responses := &suratkontrol.Response{}
response, err := client.Do(req)
if err != nil {
if strings.Contains(strings.ToLower(err.Error()), "deadline exceeded") {
errMsg := errors.New("Gagal Proses Selama 10 Detik, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses)
return responses, err
}
responses.MetaData.Code = "504"
responses.MetaData.Message = err.Error()
log.Println("responses: ", responses)
log.Printf("Error making external API request: %v", err)
return responses, err
}
log.Println("RESPONSE: ", response)
if response.StatusCode == http.StatusGatewayTimeout { // 504
errMsg := errors.New("Gagal Proses Selama 10 Detik, Silahkan Coba Lagi")
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
responses.MetaData.Code = "504"
responses.MetaData.Message = errMsg.Error()
@@ -162,10 +287,18 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
}
if resSuratKontrolRaw.MetaData.Code != "200" {
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
log.Printf("error : %v", errMsg)
if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Nomor SEP Sudah pernah digunakan!." {
message := "Gagal simpan! Nomor SEP pernah diterbitkan Surat Kontrol!."
resSuratKontrolRaw.MetaData.Message = message
log.Println("masuk sini kan")
} 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"
resSuratKontrolRaw.MetaData.Message = message
}
log.Printf("error : %v", resSuratKontrolRaw.MetaData.Message)
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
log.Println("responses: ", responses)
return responses, errMsg
}
@@ -194,7 +327,105 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
return responses, nil
}
func ResponseUpdateSuratKontrolSPRI(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Responsespri, error) {
log.Println("URL", url)
reqMarshall, err := json.Marshal(request)
if err != nil {
log.Printf("Error json marshal: %v", err)
}
log.Println("REQUEST: ", string(reqMarshall))
req, err := http.NewRequest("PUT", 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{}
responses := &suratkontrol.Responsespri{}
response, err := client.Do(req)
if err != nil {
responses.MetaData.Code = "504"
responses.MetaData.Message = err.Error()
log.Println("responses: ", responses)
log.Printf("Error making external API request: %v", err)
return responses, err
}
log.Println("RESPONSE: ", response)
if response.StatusCode == http.StatusGatewayTimeout { // 504
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
responses.MetaData.Code = "504"
responses.MetaData.Message = errMsg.Error()
log.Println("responses: ", responses)
return responses, err
}
log.Println("RESPONSE: ", response)
key := header.ConsID + header.SecretKey + header.TimeStamp
res, err := io.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
return nil, err
}
var resSuratKontrolRaw suratkontrol.ResponseRawUpper
err = json.Unmarshal([]byte(res), &resSuratKontrolRaw)
if err != nil {
log.Printf("Error Unmarshaling: %v", err)
return nil, err
}
if resSuratKontrolRaw.MetaData.Code != "200" {
if resSuratKontrolRaw.MetaData.Message == "Gagal simpan! Nomor SEP Sudah pernah digunakan!." {
message := "Gagal simpan! Nomor SEP pernah diterbitkan Surat Kontrol!."
resSuratKontrolRaw.MetaData.Message = message
log.Println("masuk sini kan")
} 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"
resSuratKontrolRaw.MetaData.Message = message
}
log.Printf("error : %v", resSuratKontrolRaw.MetaData.Message)
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
log.Println("responses: ", responses)
return responses, errMsg
}
dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
log.Println("res: ", dataResp)
return nil, err
}
var resSuratKontrol *suratkontrol.ResponseSuratKontrolSPRI
log.Println("dataresp: ", dataResp)
err = json.Unmarshal([]byte(dataResp), &resSuratKontrol)
if err != nil {
log.Printf("Error Decode: %v", err)
return nil, err
}
responses = &suratkontrol.Responsespri{
MetaData: resSuratKontrolRaw.MetaData,
Response: *resSuratKontrol,
}
return responses, nil
}
func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.Response, error) {
log.Println("URL", url)
@@ -237,7 +468,17 @@ func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[s
return nil, err
}
responses := &suratkontrol.Response{
responses := &suratkontrol.Response{}
if resSuratKontrolRaw.MetaData.Code != "200" {
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
log.Printf("error : %v", errMsg)
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
log.Println("responses: ", responses)
return responses, errMsg
}
responses = &suratkontrol.Response{
MetaData: resSuratKontrolRaw.MetaData,
}
@@ -280,6 +521,16 @@ func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map
return nil, err
}
responses := &suratkontrol.ResponseGetSuratKontrol{}
if resNoSuratKontrolRaw.MetaData.Code != "200" {
errMsg := errors.New(resNoSuratKontrolRaw.MetaData.Message)
log.Printf("error : %v", errMsg)
responses.MetaData.Code = resNoSuratKontrolRaw.MetaData.Code
responses.MetaData.Message = resNoSuratKontrolRaw.MetaData.Message
log.Println("responses: ", responses)
return responses, errMsg
}
dataResp, err := docs.StringDecrypt(key, resNoSuratKontrolRaw.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
@@ -295,7 +546,7 @@ func ResponseGetNomorSuratKontrol(url string, header *config.Header, headers map
return nil, err
}
responses := &suratkontrol.ResponseGetSuratKontrol{
responses = &suratkontrol.ResponseGetSuratKontrol{
MetaData: resNoSuratKontrolRaw.MetaData,
Response: responseNoSuratKontrol,
}
@@ -337,6 +588,16 @@ func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map
return nil, err
}
responses := &suratkontrol.ResponseGetSuratKontrolBySEP{}
if resSurKonSEP.MetaData.Code != "200" {
errMsg := errors.New(resSurKonSEP.MetaData.Message)
log.Printf("error : %v", errMsg)
responses.MetaData.Code = resSurKonSEP.MetaData.Code
responses.MetaData.Message = resSurKonSEP.MetaData.Message
log.Println("responses: ", responses)
return responses, errMsg
}
dataResp, err := docs.StringDecrypt(key, resSurKonSEP.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
@@ -354,7 +615,7 @@ func ResponseGetSuratKontrolBySEP(url string, header *config.Header, headers map
log.Println("res: ", resSurKonSEP)
responses := &suratkontrol.ResponseGetSuratKontrolBySEP{
responses = &suratkontrol.ResponseGetSuratKontrolBySEP{
MetaData: resSurKonSEP.MetaData,
Response: responseNoSuratKontrol,
}
File diff suppressed because it is too large Load diff
+143 -81
View File
@@ -1,81 +1,143 @@
package main
import (
"bridging-rssa/config"
"bridging-rssa/handlers/bpjs"
"bridging-rssa/handlers/bpjs/jadwal_dokter"
suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol"
"log"
_ "bridging-rssa/docs"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
"github.com/joho/godotenv"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
)
// @title Crud User
// @version 1
// @Description Rest API CRUD User
// @host localhost:8080
func main() {
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
config.ConnectDB()
r := gin.Default()
v1 := r.Group("/api")
subspesialis := v1.Group("/subspesialis")
{
subspesialis.GET("/", bpjs.GetAllSubspesialis)
}
jadwalDokter := v1.Group("/jadwaldokter")
{
jadwalDokter.GET("/", jadwal_dokter.GetJadwalDokter)
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/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis)
jadwalDokter.GET("/tanggal/:tanggal/subspesialis/:subspesialis", jadwal_dokter.GetDokterBySubspesialis)
}
suratKontrol := v1.Group("/suratkontrol")
{
suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon)
suratKontrol.GET("/idxdaftar/:idxdaftar", suratkontrol.GetDataSurKonByID)
suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol)
suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP)
suratKontrol.GET("/printSurKon/:idxdaftar", suratkontrol.PrintSurKon)
suratKontrol.POST("/cari", suratkontrol.CariPasienTPP)
suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol)
suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol)
suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol)
}
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
r.DELETE("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
r.Use(cors.New(cors.Config{
AllowOrigins: []string{"*"}, // or specific domains like "http://example.com"
AllowMethods: []string{"GET", "POST", "PUT", "DELETE"},
AllowHeaders: []string{"Origin", "Content-Type"},
AllowCredentials: true,
}))
log.Println("JALAN DI PORT : 8081")
err = r.Run(":8081")
if err != nil {
log.Fatal(err)
}
}
package main
import (
"bridging-rssa/config"
"bridging-rssa/handlers/bpjs"
icare "bridging-rssa/handlers/bpjs/i_care"
"bridging-rssa/handlers/bpjs/jadwal_dokter"
suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol"
"github.com/gin-contrib/cors"
"github.com/robfig/cron/v3"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
"log"
_ "bridging-rssa/docs"
"github.com/gin-gonic/gin"
"github.com/joho/godotenv"
//cron "github.com/robfig/cron/v3"
)
// @title Crud User
// @version 1
// @Description Rest API CRUD User
// @host localhost:8080
func main() {
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
config.ConnectDB()
r := gin.Default()
r.Use(cors.New(cors.Config{
AllowOrigins: []string{"*"}, // or specific domains like "http://example.com"
AllowMethods: []string{"GET", "POST", "PUT", "DELETE"},
AllowHeaders: []string{"Origin", "Content-Type"},
AllowCredentials: true,
}))
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
r.DELETE("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
scheduler := cron.New()
defer scheduler.Stop()
// SCHEDULE HARIAN
scheduler.AddFunc("10 4 * * *", func() {
log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===")
for {
success := jadwal_dokter.GetJadwalDokternew()
if success {
log.Println("=== SCHEDULE GET JADWAL HARIAN DOKTER DONE ===")
break
}
}
})
//SCHEDULE TIAP 3 BULAN
scheduler.AddFunc("35 4 * * 2", func() {
log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER MONTHLY===")
for {
success := jadwal_dokter.GetDataJadwalDokter()
if success {
log.Println("=== SCHEDULE GET JADWAL DOKTER MONTHLY DONE ===")
break
}
}
})
go scheduler.Start()
v1 := r.Group("/api")
subspesialis := v1.Group("/subspesialis")
{
subspesialis.GET("/", bpjs.GetAllSubspesialis)
}
test := v1.Group("/test")
{
test.GET("/test", jadwal_dokter.GetJadwalbaru)
}
//API UNTUK JADWAL DOKTER
jadwalDokter := v1.Group("/jadwaldokter")
{
jadwalDokter.GET("/daftar", jadwal_dokter.GetJadwalDokterManual)
jadwalDokter.GET("/data", jadwal_dokter.GetDataJadwalDokterbulanan)
jadwalDokter.GET("/date/:tanggal", jadwal_dokter.GetJadwalDokter)
jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP)
jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate)
jadwalDokter.GET("/tanggal/:tanggal/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis)
jadwalDokter.GET("/tanggal/:tanggal/subspesialis/:subspesialis", jadwal_dokter.GetDokterBySubspesialis)
}
// API UNTUK SURAT KONTROL
suratKontrol := v1.Group("/suratkontrol")
{
suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon)
suratKontrol.GET("/idxdaftar/:idxdaftar/tiperawat/:tiperawat", suratkontrol.GetDataSurKonByID)
suratKontrol.GET("datapasien/idxdaftar/:idxdaftar/tiperawat/:tiperawat", suratkontrol.NewGetDataSurKonByID)
suratKontrol.GET("/preview/idxdaftar/:idxdaftar/nomorsurkon/:nomorsurkon", suratkontrol.GetDataSurKonByNoSurkon)
suratKontrol.GET("/previewbyid/idxdaftar/:idxdaftar/id/:id", suratkontrol.GetDataSurKonByIDSurkon)
suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol)
suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP)
suratKontrol.GET("/printSurKon/:idxdaftar/tiperawat/:tiperawat", suratkontrol.PrintSurKon)
suratKontrol.POST("/cari", suratkontrol.CariPasienTPP)
suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol)
suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol)
suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol)
suratKontrol.GET("/norm/:norm/limit/:limit/offset/:offset", suratkontrol.GethistoribyNorm)
suratKontrol.POST("/insertsurkon", suratkontrol.InsertSuratkontrolNew)
suratKontrol.PUT("/updatesurkon", suratkontrol.UpdateSuratKontrolnew)
suratKontrol.POST("/deletesurkon", suratkontrol.DeleteSuratKontrolNew)
suratKontrol.POST("/parse", suratkontrol.Parse)
suratKontrol.POST("/IDX", suratkontrol.Coba)
}
iCare := v1.Group("/icare")
{
iCare.POST("/rs/validate", icare.GetFKRTL)
iCare.POST("/pcare/validate", icare.GetFKTP)
}
Spri := v1.Group("/spri")
{
Spri.POST("/insert", suratkontrol.InsertSpri)
Spri.PUT("/update", suratkontrol.UpdateSpri)
Spri.DELETE("/delete", suratkontrol.DeleteSpri)
}
log.Println("JALAN DI PORT : 8080")
err = r.Run(":8080")
if err != nil {
log.Fatal(err)
}
}
+36
View File
@@ -0,0 +1,36 @@
package icare
type ReqICare struct {
IDXDaftar string `json:"idxdaftar"`
Param string `json:"param"`
KodeDokter int `json:"kodedokter"`
User string `json:"user"`
}
type RequestICare struct {
Param string `json:"param"`
KodeDokter int `json:"kodedokter"`
}
type ReqFKTP struct {
Param string `json:"param"`
}
type Metadata struct {
Code int `json:"code"`
Message string `json:"message"`
}
type Response struct {
Url string `json:"url"`
}
type ResponseGet struct {
Response Response `json:"response"`
MetaData Metadata `json:"metaData"`
}
type ResponseGetRaw struct {
Response string `json:"response"`
MetaData Metadata `json:"metaData"`
}
+94 -72
View File
@@ -1,72 +1,94 @@
package jadwal_dokter
type JadwalDokterRaw struct {
Response string `json:"response"`
MetaData Metadata `json:"metadata"`
}
type Metadata struct {
Code int `json:"code"`
Message string `json:"message"`
}
type ListDokter struct {
KodeSubspesialis string `json:"kodesubspesialis"`
Hari int `json:"hari"`
KapasitasPasien int `json:"kapasitaspasien"`
Libur int `json:"libur"`
NamaHari string `json:"namahari"`
Jadwal string `json:"jadwal"`
NamaSubspesialis string `json:"namasubspesialis"`
NamaDokter string `json:"namadokter"`
KodePoli string `json:"kodepoli"`
NamaPoli string `json:"namapoli"`
KodeDokter int `json:"kodedokter"`
}
type DaftarSpesialis struct {
ID int `json:"id"`
Kode string `json:"Kode"`
Spesialis string `json:"Spesialis"`
}
type JadwalDokterSatuData 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"`
}
type JadwalDokterTempSatuData 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 string `gorm:"column:Spesialis" json:"Spesialis"`
SubSpesialis string `gorm:"column:Sub_spesialis" json:"Sub_spesialis"`
Status int `gorm:"column:Status" json:"Status"`
}
type ResponseListHari struct {
IDSpesialis int `json:"id_spesialis"`
Kode string `json:"Kode"`
Spesialis string `json:"Spesialis"`
Subspesialis string `json:"Subspesialis"`
IDSubspesialis string `json:"id_subspesialis"`
NamaLengkap string `json:"nama_lengkap"`
HFISCode string `json:"HFIS_code"`
KodeDPJP string `json:"DPJP_code"`
IDDokter string `json:"id_dokter"`
JadwalDokter []ListJadwalDokter `json:"Jadwal_dokter"`
}
type ListJadwalDokter struct {
NamaHari string `json:"Nama_hari"`
KodeHari int `json:"Kode_hari"`
Waktu string `json:"Waktu"`
}
package jadwal_dokter
type JadwalDokterRaw struct {
Response string `json:"response"`
MetaData Metadata `json:"metadata"`
}
type JadwalDokter struct {
Response []*ListDokter `json:"response"`
MetaData Metadata `json:"metadata"`
}
type Metadata struct {
Code int `json:"code"`
Message string `json:"message"`
}
type ListDokter struct {
KodeSubspesialis string `json:"kodesubspesialis"`
Hari int `json:"hari"`
KapasitasPasien int `json:"kapasitaspasien"`
Libur int `json:"libur"`
NamaHari string `json:"namahari"`
Jadwal string `json:"jadwal"`
NamaSubspesialis string `json:"namasubspesialis"`
NamaDokter string `json:"namadokter"`
KodePoli string `json:"kodepoli"`
NamaPoli string `json:"namapoli"`
KodeDokter int `json:"kodedokter"`
}
type DaftarSpesialis struct {
ID int `json:"id"`
Kode string `json:"Kode"`
Spesialis string `json:"Spesialis"`
}
type JadwalDokterSatuData 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"`
}
type DataJadwalDokterSatuData struct {
ID string `gorm:"column:id" json:"id"`
DateCreated string `gorm:"column:date_created" json:"Date_created"`
Hari string `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"`
TanggalJadwal string `gorm:"column:Tanggal_jadwal" json:"Tanggal_jadwal"`
}
type JadwalDokterTempSatuData 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 string `gorm:"column:Spesialis" json:"Spesialis"`
SubSpesialis string `gorm:"column:Sub_spesialis" json:"Sub_spesialis"`
Status int `gorm:"column:Status" json:"Status"`
}
type ResponseListHari struct {
IDSpesialis int `json:"id_spesialis"`
Kode string `json:"Kode"`
Spesialis string `json:"Spesialis"`
Subspesialis string `json:"Subspesialis"`
IDSubspesialis int `json:"id_subspesialis"`
NamaLengkap string `json:"nama_lengkap"`
HFISCode string `json:"HFIS_code"`
KodeDPJP string `json:"DPJP_code"`
IDDokter string `json:"id_dokter"`
JadwalDokter []ListJadwalDokter `json:"Jadwal_dokter"`
}
type ListJadwalDokter struct {
NamaHari string `json:"Nama_hari"`
KodeHari int `json:"Kode_hari"`
Waktu string `json:"Waktu"`
}
type RequestJadwalDokter struct {
KodePoli string `json:"kodepoli"`
Tanggal string `json:"tanggal"`
}
@@ -21,4 +21,37 @@ type KunjunganPasien struct {
DisplayDiagnosisAkhirKeluar string `gorm:"column:Display_diagnosis_akhir_keluar" json:"Display_diagnosis_akhir_keluar"`
DiagnosisPrimerUtama string `gorm:"column:Diagnosis_primer_utama" json:"Diagnosis_primer_utama"`
DisplayDiagnosisPrimerUtama string `gorm:"column:Display_diagnosis_primer_utama" json:"Display_diagnosis_primer_utama"`
NomorRM string `gorm:"column:No_rm" json:"No_rm"`
}
type Addmission struct {
ID int `gorm:"column:id_admission" json:"id"`
Nomr string `gorm:"column:nomr" json:"nomr"`
DokterPengirim int `gorm:"column:dokterpengirim" json:"dokterpengirim"`
NoSEP string `gorm:"column:nosep" json:"no_sep"`
NamaLengkap string `gorm:"column:nama" json:"namalengkap"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
MasukRS string `gorm:"column:masukrs" json:"masukrs"`
}
type Pendaftaran struct {
ID int `gorm:"column:idxdaftar" json:"idxdaftar"`
Nomr string `gorm:"column:nomr" json:"nomr"`
DokterPengirim int `gorm:"column:kddokter" json:"kddokter"`
NoSEP string `gorm:"column:nosep" json:"nosep"`
NamaLengkap string `gorm:"column:nama" json:"namalengkap"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
MasukRS string `gorm:"column:jamreg" json:"jamreg"`
}
type InsertKunjunganPasien struct {
ID string `gorm:"column:id" json:"id"`
IdxDaftar int `gorm:"column:IDXDAFTAR" json:"idxdaftar"`
Nomr string `gorm:"column:NOMR" json:"nomr"`
NamaLengkap string `gorm:"column:Nama_lengkap" json:"namalengkap"`
NIK string `gorm:"column:NIK" json:"nik"`
DPJP string `gorm:"column:DPJP" json:"dpjp"`
TanggalMasuk string `gorm:"column:Tanggal_masuk" json:"tanggalmasuk"`
JamMasuk string `gorm:"column:Jam_masuk" json:"jammasuk"`
DateCreated string `gorm:"column:date_created" json:"date_created"`
}
+174 -6
View File
@@ -21,25 +21,43 @@ type ReqUpdateRencanaKontrol struct {
User string `json:"user"`
}
type ReqUpdateRencanaKontrolspri struct {
NoSPRI string `json:"noSPRI"`
KodeDokter string `json:"kodeDokter"`
PoliKontrol string `json:"poliKontrol"`
TglRencanaKontrol string `json:"tglRencanaKontrol"`
User string `json:"user"`
}
type RequestInsertRencanaKontrol struct {
IDXDaftar string `json:"idxdaftar"`
NoSEP string `json:"noSEP"`
NoRM string `json:"noRM"`
KodeHFIS string `json:"kodeHFIS"`
KodePoli string `json:"kodePoli"`
Subspesialis string `json:"subspesialis"`
TglRencanaKontrol string `json:"tglRencanaKontrol"`
User string `json:"user"`
IDDokter string `json:"id_dokter"`
KodeDiagnosa string `json:"kode_diagnosa"`
NamaDiagnosa string `json:"nama_diagnosa"`
KodeDiagnosa string `json:"Kode_diagnosa"`
NamaDiagnosa string `json:"Nama_diagnosa"`
TipeSurKon string `json:"tipe_surkon"`
TipeRawat string `json:"tipe_rawat"`
Ruangan string `json:"ruangan"`
}
type ReqDeleteRencanaKontrol struct {
IDDataSurKon string `json:"id_surat_kontrol"`
NomorSurKon string `json:"Nomor_surat_kontrol"`
User string `json:"user"`
TipeSurKon string `json:"tipe_surkon"`
}
type ReqDeleteRencanaKontrolSPRI struct {
IDDataSurKon string `json:"id_surat_kontrol"`
NomorSurKon string `json:"Nomor_surat_kontrol"`
User string `json:"user"`
TipeSurKon string `json:"tipe_surkon"`
}
type RequestUpdateRencanaKontrol struct {
IDXDaftar string `json:"idxdaftar"`
IDSurKon string `json:"idSurKon"`
@@ -52,8 +70,33 @@ type RequestUpdateRencanaKontrol struct {
User string `json:"user"`
KodeDiagnosa string `json:"Kode_diagnosa"`
NamaDiagnosa string `json:"Nama_diagnosa"`
TipeSurKon string `json:"tipe_surkon"`
TipeRawat string `json:"tipe_rawat"`
}
type RequestUpdateRencanaKontrolNew struct {
IDXDaftar string `json:"idxdaftar"`
IDSurKon string `json:"idSurKon"`
NoSuratKontrol string `json:"noSuratKontrol"`
NoSEP string `json:"noSEP"`
KodeHFIS string `json:"kodeHFIS"`
KodePoli string `json:"kodePoli"`
TglRencanaKontrol string `json:"tglRencanaKontrol"`
User string `json:"user"`
TipeSurKon string `json:"tipe_surkon"`
TipeRawat string `json:"tipe_rawat"`
}
type RequestUpdateRencanaKontrolspri struct {
IDXDaftar string `json:"idxdaftar"`
IDSurKon string `json:"idSurKon"`
NoSPRI string `json:"noSuratKontrol"`
KodeHFIS string `json:"kodeHFIS"`
KodePoli string `json:"kodePoli"`
TglRencanaKontrol string `json:"tglRencanaKontrol"`
User string `json:"user"`
TipeSurKon string `json:"tipe_surkon"`
TipeRawat string `json:"tipe_rawat"`
}
type TSuratKontrol struct {
RequestDelete RequestDeleteRencanaKontrol `json:"t_suratkontrol"`
}
@@ -103,6 +146,11 @@ type Response struct {
Response ResponseSuratKontrol `json:"response"`
}
type Responsespri struct {
MetaData MetadataString `json:"metadata"`
Response ResponseSuratKontrolSPRI `json:"response"`
}
type ResponseUpper struct {
MetaData MetadataString `json:"metaData"`
Response ResponseSuratKontrol `json:"response"`
@@ -135,6 +183,16 @@ type ResponseSuratKontrol struct {
TglLahir string `json:"tglLahir"`
NamaDiagnosa string `json:"namaDiagnosa"`
}
type ResponseSuratKontrolSPRI struct {
NoSPRI string `json:"noSPRI"`
TglRencanaKontrol string `json:"tglRencanaKontrol"`
NamaDokter string `json:"namaDokter"`
NoKartu string `json:"noKartu"`
Nama string `json:"nama"`
Kelamin string `json:"kelamin"`
TglLahir string `json:"tglLahir"`
NamaDiagnosa string `json:"namaDiagnosa"`
}
type RequestRencanaKontrol struct {
IDXDaftar string `json:"idxdaftar"`
@@ -181,8 +239,8 @@ type Peserta struct {
}
type ProvUmum struct {
KodedProvider string `json:"kdProvider"`
NamaProvider string `json:"nmProvider"`
KodeProvider string `json:"kdProvider"`
NamaProvider string `json:"nmProvider"`
}
type ProvPerujuk struct {
@@ -204,6 +262,9 @@ type DataSuratKontrol struct {
TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"`
TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"`
NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"`
NomorKartu string `gorm:"column:Nomor_kartu" json:"Nomor_kartu"`
KodeIcd string `gorm:"column:Kode_icd" json:"Kode_icd"`
Diagnosa string `gorm:"column:Diagnosa" json:"Diagnosa"`
KunjunganPasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"`
RuanganSurKon int `gorm:"column:Ruangan_surat_kontrol" json:"Ruangan_surat_kontrol"`
DPJPSurKon string `gorm:"column:DPJP_surat_kontrol" json:"DPJP_surat_kontrol"`
@@ -211,6 +272,8 @@ type DataSuratKontrol struct {
UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_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"`
TipeRawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"`
IdxDaftarSurkon string `gorm:"column:Idxdaftar_surat_kontrol" json:"IdxDaftar_surkon"`
}
type ResponseSuratKontrolBySEP struct {
@@ -243,10 +306,15 @@ type GetDataSuratKontrol struct {
NomorKartu string `gorm:"column:No_kartu" json:"No_kartu"`
IDPoli string `gorm:"column:ID_poli" json:"id_poli"`
IDDokter string `gorm:"column:id_dokter" json:"id_dokter"`
KodeDPJP string `gorm:"column:Kode_dpjp" json:"Kode_dpjp"`
NoRM string `gorm:"column:No_rm" json:"No_rm"`
KodeDiagnosa string `gorm:"column:Kode_diagnosa" json:"Kode_diagnosa"`
NamaDiagnosa string `gorm:"column:Nama_diagnosa" json:"Nama_diagnosa"`
KodeIcd string `gorm:"column:Kode_icd" json:"Kode_icd"`
Diagnosa string `gorm:"column:Diagnosa" json:"Diagnosa"`
TipeSurKon string `gorm:"column:Tipe_SurKon" json:"Tipe_SurKon"`
TipeRawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"`
User string `gorm:"column:User" json:"User"`
}
type ResponseGetDataSuratKontrol struct {
@@ -264,12 +332,22 @@ type ResponseGetDataSuratKontrol struct {
Subspesialis string `json:"Subspesialis"`
KodePoli string `json:"Kode_poli"`
KodeDokter string `json:"Kode_dokter"`
KodeDPJP string `json:"Kode_dpjp"`
IDPoli string `json:"id_poli"`
IDDokter string `json:"id_dokter"`
NoRM string `json:"No_rm"`
KodeDiagnosa string `json:"Kode_diagnosa"`
NamaDiagnosa string `json:"Nama_diagnosa"`
KodeIcd string `json:"Kode_icd"`
Diagnosa string `json:"Diagnosa"`
TipeSurKon string `json:"Tipe_SurKon"`
TipeRawat string `json:"Tipe_rawat"`
User string `json:"User"`
}
type ResponseCariDataSuratKontrol struct {
JumlahData int `json:"jumlah_data"`
ListDataSuratKontrol []*ResponseGetDataSuratKontrol `json:"list_data"`
}
type RequestCariPasien struct {
@@ -278,6 +356,96 @@ type RequestCariPasien struct {
PoliKlinik string `json:"poliklinik"`
TanggalAwal string `json:"tanggal_awal"`
TanggalAkhir string `json:"tanggal_akhir"`
TipeSurKon string `json:"tipe_surkon"`
Offset string `json:"offset"`
Limit string `json:"limit"`
}
}
type HistoriSurkon struct {
NamaPasien string `gorm:"column:Nama_lengkap" json:"Nama_pasien"`
NoSEP string `gorm:"column:Nomor_sep" json:"No_SEP"`
IdSurkon string `gorm:"column:id" json:"id"`
Idxdaftar string `gorm:"column:IDXDAFTAR" json:"IDXDAFTAR"`
NomorSuratkontrol string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_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"`
TipeSurkon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"`
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"`
IdSurkon string `json:"id_surkon"`
Idxdaftar string `json:"Idxdaftar"`
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"`
TipeSurkon string `json:"Tipe_surat_kontrol"`
UserCreate string `json:"User_create"`
UserUpdate string `json:"User_update"`
Status string `json:"Status_surat_kontrol"`
}
type RequestInsertSPRI struct {
NoKartu string `json:"noKartu"`
IDXDaftar string `json:"idxdaftar"`
NoRM string `json:"noRM"`
KodeHFIS string `json:"kodeHFIS"`
KodePoli string `json:"kodePoli"`
TglRencanaKontrol string `json:"tglRencanaKontrol"`
User string `json:"user"`
KodeDiagnosa string `json:"Kode_diagnosa"`
NamaDiagnosa string `json:"Nama_diagnosa"`
TipeSurKon string `json:"tipe_surkon"`
TipeRawat string `json:"tipe_rawat"`
Ruangan string `json:"ruangan"`
}
type ReqInsertSPRIbpjs struct {
NoKartu string `json:"noKartu"`
KodeDokter string `json:"kodeDokter"`
PoliKontrol string `json:"poliKontrol"`
TglRencanaKontrol string `json:"tglRencanaKontrol"`
User string `json:"user"`
}
type ResponseInsertSuratKontrolSPRI struct {
MetaData MetadataString `json:"metaData"`
Response ResponseDataSPRI `json:"response"`
}
type ResponseDataSPRI struct {
NoSPRI string `json:"noSPRI"`
TglRencanaKontrol string `json:"tglRencanaKontrol"`
NamaDokter string `json:"namaDokter"`
NoKartu string `json:"noKartu"`
Nama string `json:"nama"`
Kelamin string `json:"kelamin"`
TglLahir string `json:"tglLahir"`
NamaDiagnosa string `json:"namaDiagnosa"`
}
type Created struct {
UserCreate string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"`
DataCreate string `gorm:"column:date_created" json:"date_created"`
TanggalKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"`
}
type Parse struct {
Diagnosa string `json:"diagnosa"`
}
type IDXDAFTAR struct {
IDXDAFTAR string `json:"IDXDAFTAR"`
}
+2
View File
@@ -16,6 +16,7 @@ type NamaLengkap struct {
NamaLengkap string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"`
GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"`
HFISCode string `gorm:"column:HFIS_code" json:"HFIS_code"`
DPJPCode string `gorm:"column:DPJP_code" json:"DPJP_code"`
}
type ResponseDokter struct {
@@ -31,4 +32,5 @@ type ResponseDokterNew struct {
Subspesialis int `json:"subspesialis"`
HFISCode string `json:"HFIS_code"`
KodePoli string `json:"kode_poli"`
DPJPCode string `json:"DPJP_code"`
}
+7
View File
@@ -0,0 +1,7 @@
package jadwal
type DaftarJadwalLiburPelayanan struct {
NamaLiburPelayanan string `gorm:"column:Nama_libur_pelayanan" json:"Nama_libur_pelayanan"`
KeteranganLiburPelayanan string `gorm:"column:Keterangan_libur_pelayanan" json:"Keterangan_libur_pelayanan"`
TanggalLiburPelayanan string `gorm:"column:Tanggal_libur_pelayanan" json:"Tanggal_libur_pelayanan"`
}
+10
View File
@@ -0,0 +1,10 @@
package logapi
type InsertLogICare struct {
ID string `gorm:"column:id" json:"id"`
DateCreated string `gorm:"column:date_created" json:"date_created"`
Ruangan int `gorm:"column:Ruangan" json:"Ruangan"`
Dokter string `gorm:"column:Dokter" json:"Dokter"`
Kunjungan_pasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"`
WaktuTransaksi string `gorm:"column:Waktu_transaksi" json:"Waktu_transaksi"`
}
+6
View File
@@ -0,0 +1,6 @@
package pasien
type KunjunganPasien struct {
ID string `gorm:"column:id" json:"id"`
Ruangan int `gorm:"column:Ruangan" json:"Ruangan"`
}