Author SHA256 Message Date
mirza.millahsyafiq.0912 81b7cb08e8 new branch 2024-12-20 08:57:06 +07:00
44 changed files with 1436 additions and 3230 deletions
+2 -10
View File
@@ -10,19 +10,13 @@ SIMRS_PASSWORD=simrs.rssa
SIMRS_NAME=simrs
SIMRS_PORT=5000
SIMRS_STAG_HOST=10.10.123.223
SIMRS_STAG_USERNAME=simtest
SIMRS_STAG_PASSWORD=12345
SIMRS_STAG_NAME=simrs-stag
SIMRS_STAG_PORT=5432
BASEURL_BPJS=https://apijkn.bpjs-kesehatan.go.id/
ANTREAN_RS=antreanrs
I_CARE_JKN=ihs
CONS_ID=5257
USER_KEY=4cf1cbef8c008440bbe9ef9ba789e482
SECRET_KEY=1bV363512D
USER_KEY_ICARE=1cd65acaa349684be6353bea5149e2e2
SECRET_KEY=1bV363512D
CONS_ID_DEV=16041
USER_KEY_DEV=467a2817fde5070f66c9a41fbeb8dc2c
@@ -44,6 +38,4 @@ GET_NOMOR_RUJUKAN_BATCH=/Rujukan/List/Peserta/
GET_REFERENSI_DOKTER=/referensi/dokter/
GET_FKRTL=/api/rs/validate
GET_FKTP=/api/pcare/validate
LIS_MIKROBIOLOGI_URL=http://10.10.123.218/registerpasien
GET_FKTP=/api/pcare/validate
-8
View File
@@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
-9
View File
@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="Go" enabled="true" />
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
-17
View File
@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="[email protected]" uuid="8e7d33a6-2774-4cbb-95d4-4caf4b6482be">
<driver-ref>postgresql</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
<jdbc-url>jdbc:postgresql://10.10.123.223:5432/simrs-stag</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>
-8
View File
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/bridging-rssa.iml" filepath="$PROJECT_DIR$/.idea/bridging-rssa.iml" />
</modules>
</component>
</project>
Generated
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
+1 -7
View File
@@ -1,11 +1,5 @@
FROM golang:1.23-alpine AS builder
# Install tzdata dan dependencies build
RUN apk add --no-cache tzdata build-base
# Set timezone ke Asia/Jakarta
ENV TZ=Asia/Jakarta
WORKDIR /app
COPY go.mod go.sum ./
@@ -24,5 +18,5 @@ WORKDIR /root/
COPY --from=builder /app/main .
COPY --from=builder /app/.env .
EXPOSE 8082
EXPOSE 8080
CMD ["./main"]
+147 -147
View File
@@ -1,147 +1,147 @@
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 SimrsDB *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")
}
// hostSimrs := os.Getenv("SIMRS_HOST")
// userNameSimrs := os.Getenv("SIMRS_USERNAME")
// passwordSimrs := os.Getenv("SIMRS_PASSWORD")
// dbNameSimrs := os.Getenv("SIMRS_NAME")
// portSimrs := os.Getenv("SIMRS_PORT")
// simrs := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSimrs, userNameSimrs, passwordSimrs, dbNameSimrs, portSimrs)
// SimrsDB, err = gorm.Open(postgres.Open(simrs), &gorm.Config{})
// if err != nil {
// log.Fatal("Failed to connect to Satu Data database: ", err)
// } else {
// log.Println("Successfully connected to the database")
// }
}
func SetHeader(isIcare bool, cfg config.ConfigBpjs) *config.Header {
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 SetHeaderFKRTL(cfg config.ConfigBpjs) *config.Header {
timestamp := time.Now().UTC().Unix()
cfg.Cons_id = os.Getenv("CONS_ID")
cfg.User_key = os.Getenv("USER_KEY")
cfg.Secret_key = os.Getenv("SECRET_KEY")
secret := []byte(cfg.Secret_key)
message := []byte(cfg.Cons_id + "&" + fmt.Sprint(timestamp))
hash := hmac.New(sha256.New, secret)
hash.Write(message)
// to lowercase hexits
hex.EncodeToString(hash.Sum(nil))
// to base64
X_signature := base64.StdEncoding.EncodeToString(hash.Sum(nil))
header := &config.Header{
ConsID: cfg.Cons_id,
SecretKey: cfg.Secret_key,
UserKey: cfg.User_key,
TimeStamp: fmt.Sprint(timestamp),
XSignature: X_signature,
}
return header
}
func SetHeaderDev(cfg config.ConfigBpjs) *config.Header {
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")
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 SimrsDB *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")
}
hostSimrs := os.Getenv("SIMRS_HOST")
userNameSimrs := os.Getenv("SIMRS_USERNAME")
passwordSimrs := os.Getenv("SIMRS_PASSWORD")
dbNameSimrs := os.Getenv("SIMRS_NAME")
portSimrs := os.Getenv("SIMRS_PORT")
simrs := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSimrs, userNameSimrs, passwordSimrs, dbNameSimrs, portSimrs)
SimrsDB, err = gorm.Open(postgres.Open(simrs), &gorm.Config{})
if err != nil {
log.Fatal("Failed to connect to Satu Data database: ", err)
} else {
log.Println("Successfully connected to the database")
}
}
func SetHeader(isIcare bool, cfg config.ConfigBpjs) *config.Header {
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 SetHeaderFKRTL(cfg config.ConfigBpjs) *config.Header {
timestamp := time.Now().UTC().Unix()
cfg.Cons_id = os.Getenv("CONS_ID")
cfg.User_key = os.Getenv("USER_KEY")
cfg.Secret_key = os.Getenv("SECRET_KEY")
secret := []byte(cfg.Secret_key)
message := []byte(cfg.Cons_id + "&" + fmt.Sprint(timestamp))
hash := hmac.New(sha256.New, secret)
hash.Write(message)
// to lowercase hexits
hex.EncodeToString(hash.Sum(nil))
// to base64
X_signature := base64.StdEncoding.EncodeToString(hash.Sum(nil))
header := &config.Header{
ConsID: cfg.Cons_id,
SecretKey: cfg.Secret_key,
UserKey: cfg.User_key,
TimeStamp: fmt.Sprint(timestamp),
XSignature: X_signature,
}
return header
}
func SetHeaderDev(cfg config.ConfigBpjs) *config.Header {
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")
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
}
+156 -215
View File
@@ -1,215 +1,156 @@
package dokter
import (
"bridging-rssa/config"
"bridging-rssa/models/bpjs/jadwal_dokter"
"errors"
"log"
"strconv"
"strings"
"github.com/google/uuid"
"gorm.io/gorm"
)
func GetJadwalDokterByDPJP(dpjp string) ([]jadwal_dokter.JadwalDokterSatuData, error) {
var hari []jadwal_dokter.JadwalDokterSatuData
errSelect := config.SatuDataDB.Debug().Raw(`select djd.* from "daftar_jadwal_dokter" djd
left join "data_pegawai" dp on djd."Dokter" = dp."id" where dp."Code_dpjp" = ? order by djd."id"`, dpjp).Scan(&hari).Error
if errSelect != nil {
if errors.Is(errSelect, gorm.ErrRecordNotFound) {
errMsg := errors.New("Dokter Tidak Terdaftar di HFIS")
log.Println(errMsg)
return nil, errMsg
}
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
}
return hari, nil
}
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
if errSelect != nil {
if errors.Is(errSelect, gorm.ErrRecordNotFound) {
errMsg := errors.New("Dokter Tidak Terdaftar di HFIS")
log.Println(errMsg)
return nil, errMsg
}
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
}
return hari, nil
}
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
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
}
return spesialis, nil
}
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
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
}
return subspesialis, nil
}
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
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
}
return listDokter, nil
}
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
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
}
return listDokter, nil
}
func DeleteJadwalDokter() error {
err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter"`).Error
if err != nil {
log.Printf("Failed truncate data : %v", err)
return err
}
log.Println("Success truncate data")
return nil
}
func DeleteJadwalDokterTemp() error {
err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter_temp"`).Error
if err != nil {
log.Printf("Failed truncate data : %v", err)
return err
}
log.Println("Success truncate data")
return nil
}
func DeleteDataJadwalDokter(tx *gorm.DB, tanggal string) error {
queryDelete := `delete from "data_jadwal_dokter" where "Tanggal_jadwal" = ?`
err := tx.Exec(queryDelete, tanggal).Error
if err != nil {
log.Printf("Failed delete data : %v", err)
return err
}
log.Println("Success delete data")
return nil
}
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
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
}
log.Println("Success insert data")
return nil
}
func InsertJadwalDokterTemp(reqInsert *jadwal_dokter.JadwalDokterSatuData) error {
spesialis := strconv.Itoa(reqInsert.Spesialis)
subspesialis := strconv.Itoa(reqInsert.SubSpesialis)
id := uuid.New()
err := config.SatuDataDB.Debug().Exec(`insert into "daftar_jadwal_dokter_temp" ("id", "Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis", "Sub_spesialis", "Status") values (?, ?, ?, ?, ?, ?, ?, ?)`, id, reqInsert.Hari, reqInsert.NamaHari, reqInsert.Waktu, reqInsert.Dokter, spesialis, subspesialis, reqInsert.Status).Error
if err != nil {
log.Printf("Failed insert data : %v", err)
return err
}
log.Println("Success insert data")
return nil
}
func GetAllJadwalDokter(condition string, args []interface{}) ([]*jadwal_dokter.ListDaftarJadwalDokter, error) {
var listDokter []*jadwal_dokter.ListDaftarJadwalDokter
query := `select djd."Hari" as valuehari, djd."Nama_hari" as hari, djd."Waktu" as waktu, ds."Spesialis" as spesialis, dss."Subspesialis" as subspesialis,
array(
select dgd."Gelar_depan"
from data_pegawai_daftar_gelar_depan dpdgd
left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id
where dpdgd.data_pegawai_id = dp.id
) AS gelardepan,
dkt. "Nama_lengkap" as namalengkap,
array(
select dgb."Gelar_belakang"
from data_pegawai_daftar_gelar_belakang dpdgb
left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id
where dpdgb.data_pegawai_id = dp.id
) AS gelarbelakang
from daftar_jadwal_dokter djd
join daftar_spesialis ds on ds.id = djd."Spesialis"
join daftar_subspesialis dss on dss.id = djd."Sub_spesialis"
join data_pegawai dp on dp.id = djd."Dokter"
join data_ktp dkt on dkt.id = dp."KTP" `
order := ` order by djd."Hari" asc, ds."Spesialis" asc, dss."Subspesialis" asc, djd."Waktu" asc`
query += condition + order
err := config.SatuDataDB.Debug().Raw(query, args...).Scan(&listDokter).Error
if err != nil {
log.Printf("Failed Get data : %v", err)
return nil, err
}
return listDokter, nil
}
func GetDaftarJadwalDokterByHari(hari int) ([]*jadwal_dokter.JadwalDokterSatuData, error) {
var JadwalDokter []*jadwal_dokter.JadwalDokterSatuData
query := `select djd.*, dp."HFIS_code" from daftar_jadwal_dokter djd
left join data_pegawai dp on dp."id" = djd."Dokter"
where djd."Hari" = ?`
err := config.SatuDataDB.Debug().Raw(query, hari).Scan(&JadwalDokter).Error
if err != nil {
log.Printf("Failed Get data : %v", err)
return nil, err
}
return JadwalDokter, nil
}
func UpdateJadwalDokter(req *jadwal_dokter.JadwalDokterSatuData) (bool, error) {
var condition []string
var args []interface{}
condition = append(condition, `where "Nama_hari" = ? and "Sub_spesialis" = ? `)
args = append(args, req.Status, req.NamaHari, req.SubSpesialis)
if req.Dokter != "" {
condition = append(condition, `and "Dokter" = ?`)
args = append(args, req.Dokter)
}
query := `update "daftar_jadwal_dokter" set "Status" = ? `
query += strings.Join(condition, " ")
q := config.SatuDataDB.Debug().Exec(query, args...)
if q.RowsAffected == 0 {
log.Printf("Data belum ada")
return false, nil
}
if q.Error != nil {
log.Printf("Failed Update data : %v", q.Error)
return false, q.Error
}
return true, nil
}
package dokter
import (
"bridging-rssa/config"
"bridging-rssa/models/bpjs/jadwal_dokter"
"errors"
"log"
"strconv"
"github.com/google/uuid"
"gorm.io/gorm"
)
func GetJadwalDokterByDPJP(dpjp string) ([]jadwal_dokter.JadwalDokterSatuData, error) {
var hari []jadwal_dokter.JadwalDokterSatuData
errSelect := config.SatuDataDB.Debug().Raw(`select djd.* from "daftar_jadwal_dokter" djd
left join "data_pegawai" dp on djd."Dokter" = dp."id" where dp."Code_dpjp" = ? order by djd."id"`, dpjp).Scan(&hari).Error
if errSelect != nil {
if errors.Is(errSelect, gorm.ErrRecordNotFound) {
errMsg := errors.New("Dokter Tidak Terdaftar di HFIS")
log.Println(errMsg)
return nil, errMsg
}
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
}
return hari, nil
}
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
if errSelect != nil {
if errors.Is(errSelect, gorm.ErrRecordNotFound) {
errMsg := errors.New("Dokter Tidak Terdaftar di HFIS")
log.Println(errMsg)
return nil, errMsg
}
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
}
return hari, nil
}
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
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
}
return spesialis, nil
}
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
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
}
return subspesialis, nil
}
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
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
}
return listDokter, nil
}
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
if errSelect != nil {
log.Printf("Failed get data : %v", errSelect)
return nil, errSelect
}
return listDokter, nil
}
func DeleteJadwalDokter() error {
err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter"`).Error
if err != nil {
log.Printf("Failed truncate data : %v", err)
return err
}
log.Println("Success truncate data")
return nil
}
func DeleteJadwalDokterTemp() error {
err := config.SatuDataDB.Debug().Exec(`truncate table "daftar_jadwal_dokter_temp"`).Error
if err != nil {
log.Printf("Failed truncate data : %v", err)
return err
}
log.Println("Success truncate data")
return nil
}
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
if err != nil {
log.Printf("Failed insert data : %v", err)
return err
}
log.Println("Success insert data")
return nil
}
func InsertJadwalDokterTemp(reqInsert *jadwal_dokter.JadwalDokterSatuData) error {
spesialis := strconv.Itoa(reqInsert.Spesialis)
subspesialis := strconv.Itoa(reqInsert.SubSpesialis)
id := uuid.New()
err := config.SatuDataDB.Debug().Exec(`insert into "daftar_jadwal_dokter_temp" ("id", "Hari", "Nama_hari", "Waktu", "Dokter", "Spesialis", "Sub_spesialis", "Status") values (?, ?, ?, ?, ?, ?, ?, ?)`, id, reqInsert.Hari, reqInsert.NamaHari, reqInsert.Waktu, reqInsert.Dokter, spesialis, subspesialis, reqInsert.Status).Error
if err != nil {
log.Printf("Failed insert data : %v", err)
return err
}
log.Println("Success insert data")
return nil
}
func GetAllJadwalDokter() ([]*jadwal_dokter.ListDaftarJadwalDokter, error) {
var listDokter []*jadwal_dokter.ListDaftarJadwalDokter
query := `select djd."Hari" as valuehari, djd."Nama_hari" as hari, djd."Waktu" as waktu, ds."Spesialis" as spesialis, dss."Subspesialis" as subspesialis,
array(
select dgd."Gelar_depan"
from data_pegawai_daftar_gelar_depan dpdgd
left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id
where dpdgd.data_pegawai_id = dp.id
) AS gelardepan,
dkt. "Nama_lengkap" as namalengkap,
array(
select dgb."Gelar_belakang"
from data_pegawai_daftar_gelar_belakang dpdgb
left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id
where dpdgb.data_pegawai_id = dp.id
) AS gelarbelakang
from daftar_jadwal_dokter djd
join daftar_spesialis ds on ds.id = djd."Spesialis"
join daftar_subspesialis dss on dss.id = djd."Sub_spesialis"
join data_pegawai dp on dp.id = djd."Dokter"
join data_ktp dkt on dkt.id = dp."KTP"
order by djd."Hari" asc, ds."Spesialis" asc, dss."Subspesialis" asc, djd."Waktu" asc`
err := config.SatuDataDB.Debug().Raw(query).Scan(&listDokter).Error
if err != nil {
log.Printf("Failed Get data : %v", err)
return nil, err
}
return listDokter, nil
}
-21
View File
@@ -1,21 +0,0 @@
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,41 +0,0 @@
package kunjunganpasien
import (
"bridging-rssa/config"
kunjunganpasien "bridging-rssa/models/kunjungan_pasien"
"log"
)
func GetListKunjunganPasien(req *kunjunganpasien.RequestListKunjunganPasien) ([]*kunjunganpasien.ListKunjunganPasien, error) {
var dataKunjunganPasien []*kunjunganpasien.ListKunjunganPasien
query := `select
dkp. "NOMR" as nomr, dkp. "Nama_lengkap" as namalengkap, dkp. "Tanggal_lahir" as tanggallahir,
dkp. "Jenis_kelamin" as jeniskelamin, dkp. "Tanggal_masuk" as tanggalmasukkunjungan,
dkp."Jam_masuk" as jammasukkunjungan, dkp. "Diagnosis_awal_masuk" as dxawalmasuk,
dkp. "Display_diagnosis_awal_masuk" as displaydxawalmasuk, dlr. "Nama" as namaruang,
array(
select dgd. "Gelar_depan"
from data_pegawai_daftar_gelar_depan dpdgd
left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id
where dpdgd.data_pegawai_id = dp.id
) AS gelardepan,
dkt. "Nama_lengkap" as namalengkapdokter,
array(
select dgb. "Gelar_belakang"
from data_pegawai_daftar_gelar_belakang dpdgb
left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id
where dpdgb.data_pegawai_id = dp.id
) AS gelarbelakang
from data_kunjungan_pasien dkp
join daftar_lokasi_ruang dlr on dlr.id = dkp. "Ruangan"
join data_pegawai dp on dp.id = dkp. "DPJP"
join data_ktp dkt on dkt.id = dp. "KTP"
where dkp."Tanggal_masuk" between ? and ?
order by dkp. "Tanggal_masuk" desc, dkp. "Jam_masuk" desc`
err := config.SatuDataDB.Debug().Raw(query, req.TanggalAwal, req.TanggalAkhir).Scan(&dataKunjunganPasien).Error
if err != nil {
log.Println(err)
return nil, err
}
return dataKunjunganPasien, nil
}
@@ -4,7 +4,6 @@ import (
"bridging-rssa/config"
"errors"
"log"
"strconv"
"gorm.io/gorm"
)
@@ -16,12 +15,7 @@ func GetDaftarLokasiRuang(idSimgos string) (int, error) {
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
log.Println(err)
idInt, errConv := strconv.Atoi(idSimgos)
if errConv != nil {
log.Println(err)
return 0, err
}
return idInt, nil
return 128, nil
}
log.Println(err)
return 0, err
+345 -356
View File
@@ -1,356 +1,345 @@
package suratkontrol
import (
"bridging-rssa/config"
suratkontrol "bridging-rssa/models/bpjs/surat_kontrol"
"errors"
"log"
"gorm.io/gorm"
)
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,
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,
dsu."Kode" as kodesubspesialis, dsu."Subspesialis" as subspesialis,
ds."Spesialis" as spesialis,
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,
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,
dkp."Ruangan" as ruangan,
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
left join data_ktp dk on dp."KTP" = dk.id
left join daftar_subspesialis dsu on dp."Subspesialis" = dsu.id
left join daftar_spesialis ds on dsu."FK_daftar_spesialis_ID" = ds.id
where dkp."IDXDAFTAR" = ?`, 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
}
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,
reqInsert.ID,
reqInsert.DateCreated,
reqInsert.TglCetakSurKon,
reqInsert.TglRencanaKontrol,
reqInsert.NomorSurKon,
reqInsert.KunjunganPasien,
reqInsert.RuanganSurKon,
reqInsert.DPJPSurKon,
reqInsert.StatusSurKon,
reqInsert.UserCreatedSurKon,
reqInsert.TipeSurKon,
reqInsert.UserUpdatedSurKon,
).Error
if err != nil {
log.Println(err)
return err
}
return nil
}
func GetDataSuratKontrol() ([]*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",
(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"
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'`).Scan(&dataSurKon).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("DPJP anda belum ada subspesialis")
log.Println(errMsg)
return nil, errMsg
}
}
return dataSurKon, nil
}
func GetDataSuratKontrolByID(idxdaftar 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",
(select dlr."Nama"
from data_kunjungan_pasien dkp
left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal",
dlr."Nama" as "Poli_tuju",
dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR",
array(
select dgd. "Gelar_depan"
from data_pegawai_daftar_gelar_depan dpdgd
left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id
) AS gelardepan ,
dk."Nama_lengkap" as "Nama_lengkap_dokter",
array(
select dgb. "Gelar_belakang"
from data_pegawai_daftar_gelar_belakang dpdgb
left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id where dpdgb.data_pegawai_id = dp.id
) AS gelarbelakang,
ds."Subspesialis",
ds."Kode" as "Kode_poli",
ds."id" as "ID_poli",
dp."HFIS_code" as "Kode_dokter",
dp."id" as "id_dokter",
dp."Code_dpjp" as "Kode_dpjp",
dkp2."NOMR" as "No_rm",
dkp2."Diagnosis_primer_utama" as "Kode_diagnosa",
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
dsk."Tipe_surat_kontrol" as "Tipe_SurKon",
dsk."User_created_surat_kontrol" as "User"
from data_surat_kontrol dsk
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dkp2."IDXDAFTAR" = ?`, idxdaftar).First(&dataSurKon).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("DPJP anda belum ada subspesialis")
log.Println(errMsg)
return nil, errMsg
}
}
return dataSurKon, nil
}
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
if err != nil {
log.Println(err)
return err
}
return nil
}
func GetIDXDaftarBySurKon(idSurKon string) (string, error) {
var idxDaftar string
err := config.SatuDataDB.Debug().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
if err != nil {
log.Println(err)
return "", err
}
return idxDaftar, err
}
func GetDataSuratKontrolByTanggal(tanggal string) ([]*suratkontrol.DataSuratKontrol, error) {
var dataSurKon []*suratkontrol.DataSuratKontrol
err := config.SatuDataDB.Debug().Raw(`select * from "data_surat_kontrol" where "Tanggal_rencaca_kontrol" = ?`, tanggal).Scan(&dataSurKon).Error
if err != nil {
log.Println(err)
return nil, err
}
return dataSurKon, nil
}
func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) ([]*suratkontrol.GetDataSuratKontrol, error) {
var dataSurKon []*suratkontrol.GetDataSuratKontrol
queryDate := ` and date(dsk."Tanggal_rencana_kontrol") between ? and ? offset ? limit ?`
if req.IsTanggalEntri {
queryDate = ` and date(dsk."Tanggal_cetak_surat_kontrol") between ? and ? offset ? limit ?`
}
query += queryDate
querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
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"
from data_surat_kontrol dsk
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
querySelect += query
err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&dataSurKon).Error
if err != nil {
log.Println(err)
return nil, err
}
return dataSurKon, nil
}
func SearchDataSurKonNew(req suratkontrol.RequestCariPasien, query string, args []interface{}) ([]*suratkontrol.GetDataSuratKontrol, error) {
var dataSurKon []*suratkontrol.GetDataSuratKontrol
queryDate := ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?`
if req.IsTanggalEntri {
queryDate = ` and date(dsk."Tanggal_cetak_surat_kontrol") between ? and ?`
}
query += queryDate
querySelect := `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"
from data_surat_kontrol dsk
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
querySelect += query
err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&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
queryDate := ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?`
if req.IsTanggalEntri {
queryDate = ` and date(dsk."Tanggal_cetak_surat_kontrol") between ? and ?`
}
query += queryDate
querySelect := `select count(dsk.*)
from data_surat_kontrol dsk
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
querySelect += query
err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&jumlahData).Error
if err != nil {
log.Println(err)
return 0, err
}
return jumlahData, nil
}
func GetNomorSurKon(idPasien string) (string, error) {
var noSurKon string
querySelect := `select dsk."Nomor_surat_kontrol" from data_surat_kontrol dsk where dsk."Kunjungan_pasien" = ? and dsk."Tipe_surat_kontrol" <> '1' order by dsk."date_created"`
err := config.SatuDataDB.Debug().Raw(querySelect, idPasien).Scan(&noSurKon).Error
if err != nil {
log.Println(err)
return "", err
}
log.Println("Nomor SurKon :", noSurKon)
return noSurKon, nil
}
func GetAllNomorSurKon(date string) ([]*suratkontrol.DataNomorSuratKontrol, error) {
var listNoSurKon []*suratkontrol.DataNomorSuratKontrol
querySelect := `select dsk."id", dsk."Nomor_surat_kontrol", date(dsk."Tanggal_rencana_kontrol") as "Tanggal_rencana_kontrol" from data_surat_kontrol dsk where dsk."Tipe_surat_kontrol" = '1' and date(dsk.date_created) = ?`
err := config.SatuDataDB.Debug().Raw(querySelect, date).Scan(&listNoSurKon).Error
if err != nil {
log.Println(err)
return nil, err
}
return listNoSurKon, nil
}
package suratkontrol
import (
"bridging-rssa/config"
suratkontrol "bridging-rssa/models/bpjs/surat_kontrol"
"errors"
"log"
"gorm.io/gorm"
)
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,
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,
dsu."Kode" as kodesubspesialis, dsu."Subspesialis" as subspesialis,
ds."Spesialis" as spesialis,
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,
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,
dkp."Ruangan" as ruangan,
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
left join data_ktp dk on dp."KTP" = dk.id
left join daftar_subspesialis dsu on dp."Subspesialis" = dsu.id
left join daftar_spesialis ds on dsu."FK_daftar_spesialis_ID" = ds.id
where dkp."IDXDAFTAR" = ?`, 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
}
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,
reqInsert.ID,
reqInsert.DateCreated,
reqInsert.TglCetakSurKon,
reqInsert.TglRencanaKontrol,
reqInsert.NomorSurKon,
reqInsert.KunjunganPasien,
reqInsert.RuanganSurKon,
reqInsert.DPJPSurKon,
reqInsert.StatusSurKon,
reqInsert.UserCreatedSurKon,
reqInsert.TipeSurKon,
reqInsert.UserUpdatedSurKon,
).Error
if err != nil {
log.Println(err)
return err
}
return nil
}
func GetDataSuratKontrol() ([]*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",
(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"
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'`).Scan(&dataSurKon).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("DPJP anda belum ada subspesialis")
log.Println(errMsg)
return nil, errMsg
}
}
return dataSurKon, nil
}
func GetDataSuratKontrolByID(idxdaftar 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",
(select dlr."Nama"
from data_kunjungan_pasien dkp
left join daftar_lokasi_ruang dlr on dkp."Ruangan" = dlr.id where dkp."id" = dsk."Kunjungan_pasien" LIMIT 1) as "Poli_asal",
dlr."Nama" as "Poli_tuju",
dkp2."Nomor_sep", dkp2."Nama_lengkap", dkp2."IDXDAFTAR",
array(
select dgd. "Gelar_depan"
from data_pegawai_daftar_gelar_depan dpdgd
left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id
) AS gelardepan ,
dk."Nama_lengkap" as "Nama_lengkap_dokter",
array(
select dgb. "Gelar_belakang"
from data_pegawai_daftar_gelar_belakang dpdgb
left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id where dpdgb.data_pegawai_id = dp.id
) AS gelarbelakang,
ds."Subspesialis",
ds."Kode" as "Kode_poli",
ds."id" as "ID_poli",
dp."HFIS_code" as "Kode_dokter",
dp."id" as "id_dokter",
dp."Code_dpjp" as "Kode_dpjp",
dkp2."NOMR" as "No_rm",
dkp2."Diagnosis_primer_utama" as "Kode_diagnosa",
dkp2."Display_diagnosis_primer_utama" as "Nama_diagnosa",
dsk."Tipe_surat_kontrol" as "Tipe_SurKon",
dsk."User_created_surat_kontrol" as "User"
from data_surat_kontrol dsk
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dkp2."IDXDAFTAR" = ?`, idxdaftar).First(&dataSurKon).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
errMsg := errors.New("DPJP anda belum ada subspesialis")
log.Println(errMsg)
return nil, errMsg
}
}
return dataSurKon, nil
}
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
if err != nil {
log.Println(err)
return err
}
return nil
}
func GetIDXDaftarBySurKon(idSurKon string) (string, error) {
var idxDaftar string
err := config.SatuDataDB.Debug().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
if err != nil {
log.Println(err)
return "", err
}
return idxDaftar, err
}
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
if err != nil {
log.Println(err)
return nil, err
}
return dataSurKon, nil
}
func SearchDataSurKon(req suratkontrol.RequestCariPasien, query string, args []interface{}) ([]*suratkontrol.GetDataSuratKontrol, error) {
var dataSurKon []*suratkontrol.GetDataSuratKontrol
queryDate := ` and date(dsk."Tanggal_rencana_kontrol") between ? and ? offset ? limit ?`
if req.IsTanggalEntri {
queryDate = ` and date(dsk."Tanggal_cetak_surat_kontrol") between ? and ? offset ? limit ?`
}
query += queryDate
querySelect := `select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol",
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"
from data_surat_kontrol dsk
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
querySelect += query
err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&dataSurKon).Error
if err != nil {
log.Println(err)
return nil, err
}
return dataSurKon, nil
}
func SearchDataSurKonNew(req suratkontrol.RequestCariPasien, query string, args []interface{}) ([]*suratkontrol.GetDataSuratKontrol, error) {
var dataSurKon []*suratkontrol.GetDataSuratKontrol
queryDate := ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?`
if req.IsTanggalEntri {
queryDate = ` and date(dsk."Tanggal_cetak_surat_kontrol") between ? and ?`
}
query += queryDate
querySelect := `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"
from data_surat_kontrol dsk
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
querySelect += query
err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&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
queryDate := ` and date(dsk."Tanggal_rencana_kontrol") between ? and ?`
if req.IsTanggalEntri {
queryDate = ` and date(dsk."Tanggal_cetak_surat_kontrol") between ? and ?`
}
query += queryDate
querySelect := `select count(dsk.*)
from data_surat_kontrol dsk
left join data_kunjungan_pasien dkp2 on dkp2."id" = dsk."Kunjungan_pasien"
left join daftar_lokasi_ruang dlr on dsk."Ruangan_surat_kontrol" = dlr."id"
left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id"
left join data_ktp dk on dp."KTP" = dk. "id"
left join daftar_subspesialis ds on dp."Subspesialis" = ds."id"
where dsk."Status_surat_kontrol" = '1' and dsk."Tipe_surat_kontrol" = ? `
querySelect += query
err := config.SatuDataDB.Debug().Raw(querySelect, args...).Find(&jumlahData).Error
if err != nil {
log.Println(err)
return 0, err
}
return jumlahData, nil
}
func GetNomorSurKon(idPasien string) (string, error) {
var noSurKon string
querySelect := `select dsk."Nomor_surat_kontrol" from data_surat_kontrol dsk where dsk."Kunjungan_pasien" = ? and dsk."Tipe_surat_kontrol" <> '1' order by dsk."date_created"`
err := config.SatuDataDB.Debug().Raw(querySelect, idPasien).Scan(&noSurKon).Error
if err != nil {
log.Println(err)
return "", err
}
log.Println("Nomor SurKon :", noSurKon)
return noSurKon, nil
}
-17
View File
@@ -1,17 +0,0 @@
package dokter
import (
"bridging-rssa/config"
"log"
)
func GetNamaDokter(kdDokter string) (string, error) {
var namaDokter string
querySelect := `SELECT namadokter FROM m_dokter where "kddokter" = ?`
errSelect := config.SimrsDB.Debug().Raw(querySelect, kdDokter).Scan(&namaDokter).Error
if errSelect != nil {
log.Println(errSelect)
return "", errSelect
}
return namaDokter, nil
}
@@ -41,43 +41,3 @@ func GetDataMikroBiologi(req *mikrobiologi.RequestPasienMikrobiologi) ([]*mikrob
}
return dataPasien, nil
}
func GetDataMikroBiologiByNoMR(req *mikrobiologi.RequestPasienMikrobiologi) ([]*mikrobiologi.OrderLabMikroMain, error) {
var data []*mikrobiologi.OrderLabMikroMain
query := `select * from "t_orderlabmikro_main" where "nomr" = ? and "idxdaftar" = ? and "nolab" = ?`
errSelect := config.SimrsDB.Debug().Raw(query, req.NOMR, req.IDXDaftar, req.NoLab).Scan(&data).Error
if errSelect != nil {
if errors.Is(errSelect, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data Tidak Ditemukan")
log.Println(errMsg)
return nil, errMsg
}
log.Println(errSelect)
return nil, errSelect
}
return data, nil
}
func GetDataLabMikro(noLab string) (*mikrobiologi.OrderLabMikro, bool, error) {
var dataMikro *mikrobiologi.OrderLabMikro
querySelect := `select olm."idxordermikro", olm."jenis_pemeriksaan"
from t_orderlabmikro olm
left join "m_form_lab" fl on olm."idxform" = fl."form_id"
where olm."nolab" = ? and fl."sub_kelompok" = 'Jenis Pemeriksaan' limit 1`
errSelect := config.SimrsDB.Debug().Raw(querySelect, noLab).Scan(&dataMikro).Error
if errSelect != nil {
log.Println(errSelect)
return nil, false, errSelect
}
return dataMikro, true, nil
}
func UpdateLabMikro(req *mikrobiologi.ReqUpdateLisMikro) error {
queryUpdate := `update "t_orderlabmikro" set "no_lokal" = ? where "idxordermikro" = ?`
errUpdate := config.SimrsDB.Debug().Exec(queryUpdate, req.NoLokal, req.IdxOrderMikro).Error
if errUpdate != nil {
log.Println(errUpdate)
return errUpdate
}
return nil
}
-19
View File
@@ -1,19 +0,0 @@
package pasien
import (
"bridging-rssa/config"
"bridging-rssa/models/simrs/mikrobiologi"
"bridging-rssa/models/simrs/pasien"
"log"
)
func GetMPasien(req *mikrobiologi.RequestPasienMikrobiologi) (*pasien.MPasien, error) {
var dataPasien *pasien.MPasien
querySelect := `select * from m_pasien where "nomr" = ?`
errSelect := config.SimrsDB.Debug().Raw(querySelect, req.NOMR).First(&dataPasien).Error
if errSelect != nil {
log.Println(errSelect)
return nil, errSelect
}
return dataPasien, nil
}
-20
View File
@@ -1,20 +0,0 @@
package pendaftaran
import (
"bridging-rssa/config"
"bridging-rssa/models/simrs/mikrobiologi"
"log"
)
func GetCaraBayar(req *mikrobiologi.OrderLabMikroMain) (string, error) {
var CaraBayar string
query := `select mcb."nama" from t_pendaftaran tp
left join m_carabayar mcb on tp."kdcarabayar" = mcb.kode
where tp."idxdaftar" = ?`
errSelect := config.SimrsDB.Debug().Raw(query, req.IdxDaftar).First(&CaraBayar).Error
if errSelect != nil {
log.Println(errSelect)
return "", errSelect
}
return CaraBayar, nil
}
-18
View File
@@ -1,18 +0,0 @@
package ruang
import (
"bridging-rssa/config"
"bridging-rssa/models/simrs/ruang"
"log"
)
func GetNamaRuang(kdPoli string) (*ruang.MRuang, error) {
var poli *ruang.MRuang
query := `select "nama", "subsistem" from m_ruang where "no" = ?`
errSelect := config.SimrsDB.Debug().Raw(query, kdPoli).Scan(&poli).Error
if errSelect != nil {
log.Println(errSelect)
return nil, errSelect
}
return poli, nil
}
+2 -4
View File
@@ -7,12 +7,10 @@ services:
container_name: api-rssa
restart: always
ports:
- 8082:8082
- 8080:8080
volumes:
- .:/app
environment:
# Set timezone to Asia/Jakarta
- ENV TZ=Asia/Jakarta
# DATABASE SIMRS V3.0
- POSTGRE_DB_HOST=10.10.123.223
- POSTGRE_DB_PORT=5432
@@ -26,7 +24,7 @@ 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
-27
View File
@@ -1,27 +0,0 @@
!/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
-1
View File
@@ -65,7 +65,6 @@ 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
View File
@@ -96,8 +96,6 @@ 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=
+7 -16
View File
@@ -54,15 +54,6 @@ func ResponseGetFKRTL(url string, header *config.Header, headers map[string]stri
}
log.Println("RESPONSE: ", response)
// if response.StatusCode != 200 {
// errMsg := errors.New(response.Status)
// log.Printf("error : %v", errMsg)
// responses.MetaData.Code = 503
// responses.MetaData.Message = errMsg.Error()
// log.Println("responses: ", responses)
// return responses, err
// }
if response.StatusCode == http.StatusGatewayTimeout { // 504
errMsg := errors.New("Koneksi BPJS Terputus, Silahkan Coba Lagi")
log.Printf("error : %v", errMsg)
@@ -185,6 +176,13 @@ func ResponseGetFKTP(url string, header *config.Header, headers map[string]strin
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)
@@ -198,13 +196,6 @@ func ResponseGetFKTP(url string, header *config.Header, headers map[string]strin
log.Println("responses: ", responses)
return responses, errMsg
}
err = json.Unmarshal([]byte(string(res)), &resFkrtlRaw)
if err != nil {
log.Printf("Error Unmarshaling: %v", err)
return nil, err
}
log.Println("ResponseRaw : ", resFkrtlRaw)
dataResp, err := docs.StringDecrypt(key, resFkrtlRaw.Response)
if err != nil {
File diff suppressed because it is too large Load Diff
+69 -131
View File
@@ -1,131 +1,69 @@
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.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, 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, 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
}
+3 -12
View File
@@ -21,7 +21,6 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
reqMarshall, err := json.Marshal(request)
if err != nil {
log.Printf("Error json marshal: %v", err)
return nil, err
}
log.Println("REQUEST: ", string(reqMarshall))
@@ -85,11 +84,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ
if resSuratKontrolRaw.MetaData.Code != "200" {
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
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") {
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
}
@@ -191,15 +186,11 @@ func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[s
if resSuratKontrolRaw.MetaData.Code != "200" {
errMsg := errors.New(resSuratKontrolRaw.MetaData.Message)
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") {
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)
log.Printf("error : %v", errMsg)
responses.MetaData.Code = resSuratKontrolRaw.MetaData.Code
responses.MetaData.Message = resSuratKontrolRaw.MetaData.Message
log.Println("responses: ", responses)
+80 -256
View File
@@ -2,7 +2,6 @@ package suratkontrol
import (
cfg "bridging-rssa/config"
"bridging-rssa/database/satu_data/jadwal"
log_api "bridging-rssa/database/satu_data/log_api"
lokasiruang "bridging-rssa/database/satu_data/lokasi_ruang"
suratkontrol "bridging-rssa/database/satu_data/surat_kontrol"
@@ -24,7 +23,7 @@ import (
func InsertSuratKontrol(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("VCLAIM_RS")
endpoint := os.Getenv("SURAT_KONTROL_RS")
param := os.Getenv("INSERT_SURAT_KONTROL")
url := baseUrl + endpoint + param
@@ -44,27 +43,6 @@ func InsertSuratKontrol(c *gin.Context) {
return
}
jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(req.TglRencanaKontrol)
if errLibur != nil {
log.Println(errLibur)
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: errLibur.Error(),
},
})
return
} else if isLibur {
log.Println(jadwalLibur.KeteranganLiburPelayanan)
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: jadwalLibur.NamaLiburPelayanan,
},
})
return
}
reqJson, err := json.Marshal(req)
if err != nil {
log.Println(err)
@@ -376,35 +354,18 @@ func UpdateSuratKontrol(c *gin.Context) {
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
jadwalLibur, isLibur, errLibur := jadwal.GetJadwalLibur(req.TglRencanaKontrol)
if errLibur != nil {
log.Println(errLibur)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
} else if isLibur {
log.Println(jadwalLibur.KeteranganLiburPelayanan)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: jadwalLibur.NamaLiburPelayanan,
})
return
}
reqJson, err := json.Marshal(req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -417,8 +378,8 @@ func UpdateSuratKontrol(c *gin.Context) {
kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -429,19 +390,32 @@ func UpdateSuratKontrol(c *gin.Context) {
dataSurkon, err := suratkontrol.GetNomorSurKon(kunjunganPasien.ID)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
noUrut := "001"
if dataSurkon != "" {
noUrut, err = utils.GetNoUrut(dataSurkon)
if err != nil {
log.Println(err)
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
}
noSurKon := "SI/" + req.TipeRawat + "/" + kunjunganPasien.NomorRM + "/" + noUrut
reqInsert := &sk.DataSuratKontrol{
ID: uuid,
DateCreated: timeNow,
TglCetakSurKon: timeNow,
TglRencanaKontrol: req.TglRencanaKontrol,
NomorSurKon: dataSurkon, //TODO How to get Nomor SurKon
NomorSurKon: noSurKon, //TODO How to get Nomor SurKon
KunjunganPasien: kunjunganPasien.ID,
RuanganSurKon: kunjunganPasien.Ruangan,
DPJPSurKon: req.IDDokter,
@@ -450,17 +424,16 @@ func UpdateSuratKontrol(c *gin.Context) {
UserUpdatedSurKon: req.User,
}
reqUpdate := &sk.DataSuratKontrol{
DateUpdated: timeNow,
ID: req.IDSurKon,
StatusSurKon: 2,
UserUpdatedSurKon: req.User,
DateUpdated: timeNow,
ID: req.IDSurKon,
StatusSurKon: 2,
}
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -468,8 +441,8 @@ func UpdateSuratKontrol(c *gin.Context) {
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -519,8 +492,8 @@ func UpdateSuratKontrol(c *gin.Context) {
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -536,7 +509,7 @@ func UpdateSuratKontrol(c *gin.Context) {
DateCreated: logTimeEnd,
UserAgent: req.User,
IP: c.ClientIP(),
Parameter: "BPJS-VClaim-RencanaKontrol",
Parameter: "",
Header: headerString,
Method: "PUT",
Url: url,
@@ -551,21 +524,21 @@ func UpdateSuratKontrol(c *gin.Context) {
err = log_api.InsertLogAPI(reqInsertLog)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
log.Println(err)
c.JSON(http.StatusInternalServerError, res.MetaData)
c.JSON(http.StatusOK, res.MetaData)
return
}
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -582,8 +555,8 @@ func UpdateSuratKontrol(c *gin.Context) {
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -610,18 +583,19 @@ func UpdateSuratKontrol(c *gin.Context) {
err = suratkontrol.InsertDataSuratKontrol(reqInsert)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
}
reqInsertLog := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
UserAgent: req.User,
IP: c.ClientIP(),
Parameter: "BPJS-VClaim-RencanaKontrol",
Parameter: "",
Header: headerString,
Method: "PUT",
Url: url,
@@ -636,8 +610,8 @@ func UpdateSuratKontrol(c *gin.Context) {
err = log_api.InsertLogAPI(reqInsertLog)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -657,17 +631,8 @@ func DeleteSuratKontrol(c *gin.Context) {
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
reqJson, err := json.Marshal(req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -688,8 +653,8 @@ func DeleteSuratKontrol(c *gin.Context) {
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -715,12 +680,6 @@ func DeleteSuratKontrol(c *gin.Context) {
}
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(), "; ")
request := &sk.RequestHeaderRencanaKontrol{
Request: &sk.TSuratKontrol{
RequestDelete: sk.RequestDeleteRencanaKontrol{
@@ -730,89 +689,10 @@ func DeleteSuratKontrol(c *gin.Context) {
},
}
logTimeStart := time.Now().Format("2006-01-02 15:04:05")
res, err := ResponseDeleteSuratKontrol(url, header, headers, request)
if err != nil {
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
uuid := uuid.New().String()
reqInsertLog := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
UserAgent: req.User,
IP: c.ClientIP(),
Parameter: "BPJS-VClaim-RencanaKontrol",
Header: headerString,
Method: "DELETE",
Url: url,
Request: reqJson,
Respon: responJson,
ResponCode: 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, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
return
}
log.Printf("Error making external API request: %v", err)
c.JSON(http.StatusInternalServerError, err)
return
}
responJson, err := json.Marshal(res)
if err != nil {
log.Println(err)
c.JSON(http.StatusPreconditionFailed, &sk.ResponseInsertSuratKontrol{
MetaData: sk.MetadataString{
Code: "203",
Message: err.Error(),
},
})
return
}
logTimeEnd := time.Now().Format("2006-01-02 15:04:05")
uuid := uuid.New().String()
reqInsertLog := &logapi.DataLogAPI{
ID: uuid,
DateCreated: logTimeEnd,
UserAgent: req.User,
IP: c.ClientIP(),
Parameter: "BPJS-VClaim-RencanaKontrol",
Header: headerString,
Method: "DELETE",
Url: url,
Request: reqJson,
Respon: responJson,
ResponCode: 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, &sk.MetadataString{
Code: "",
Message: err.Error(),
})
c.JSON(http.StatusOK, err)
return
}
@@ -826,8 +706,8 @@ func DeleteSuratKontrol(c *gin.Context) {
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -858,7 +738,7 @@ func GetNomorSuratKontrol(c *gin.Context) {
res, err := ResponseGetNomorSuratKontrol(url, header, headers)
if err != nil {
log.Printf("Error making external API request: %v", err)
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
c.JSON(http.StatusOK, gin.H{"error": err.Error()})
return
}
@@ -888,7 +768,7 @@ func GetSuratKontrolBySEP(c *gin.Context) {
res, err := ResponseGetSuratKontrolBySEP(url, header, headers)
if err != nil {
log.Printf("Error making external API request: %v", err)
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
c.JSON(http.StatusOK, err)
return
}
@@ -899,8 +779,8 @@ func GetDataSurKon(c *gin.Context) {
data, err := suratkontrol.GetDataSuratKontrol()
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -947,8 +827,8 @@ func GetDataSurKonByID(c *gin.Context) {
data, err := suratkontrol.GetDataSuratKontrolByID(id)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -995,8 +875,8 @@ func PrintSurKon(c *gin.Context) {
data, err := suratkontrol.GetDataSuratKontrolByID(id)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -1035,8 +915,8 @@ func CariPasienTPP(c *gin.Context) {
err := c.ShouldBindJSON(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusPreconditionFailed, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -1055,8 +935,8 @@ func CariPasienTPP(c *gin.Context) {
count, err = suratkontrol.CountDataSurKon(req, query, argsCount)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -1065,8 +945,8 @@ func CariPasienTPP(c *gin.Context) {
data, err = suratkontrol.SearchDataSurKon(req, query, args)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -1077,8 +957,8 @@ func CariPasienTPP(c *gin.Context) {
count, err = suratkontrol.CountDataSurKon(req, query, argsCount)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -1087,8 +967,8 @@ func CariPasienTPP(c *gin.Context) {
data, err = suratkontrol.SearchDataSurKon(req, query, args)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -1099,8 +979,8 @@ func CariPasienTPP(c *gin.Context) {
count, err = suratkontrol.CountDataSurKon(req, query, argsCount)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -1109,8 +989,8 @@ func CariPasienTPP(c *gin.Context) {
data, err = suratkontrol.SearchDataSurKon(req, query, args)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -1120,8 +1000,8 @@ func CariPasienTPP(c *gin.Context) {
count, err = suratkontrol.CountDataSurKon(req, query, argsCount)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -1130,8 +1010,8 @@ func CariPasienTPP(c *gin.Context) {
data, err = suratkontrol.SearchDataSurKon(req, query, args)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, &sk.MetadataString{
Code: "",
c.JSON(http.StatusOK, &sk.MetadataString{
Code: "203",
Message: err.Error(),
})
return
@@ -1329,62 +1209,6 @@ func CariPasienTPPNew(c *gin.Context) {
c.JSON(http.StatusOK, resSurKon)
}
func UpdateSuratKontrolSchedule() error {
baseUrl := os.Getenv("BASEURL_BPJS")
endpoint := os.Getenv("VCLAIM_RS")
param := os.Getenv("GET_NOMOR_SURAT_KONTROL")
dateNow := time.Now().Format("2006-01-02")
timeNow := time.Now().Format("2006-01-02 15:04:05")
dataNoSurKon, err := suratkontrol.GetAllNomorSurKon(dateNow)
if err != nil {
log.Println(err)
return err
}
for _, v := range dataNoSurKon {
url := baseUrl + endpoint + param + v.NomorSuratKontrol
conf := config.ConfigBpjs{}
header := cfg.SetHeader(false, conf)
headers := map[string]string{
"X-cons-id": header.ConsID,
"X-timestamp": header.TimeStamp,
"X-signature": header.XSignature,
"user_key": header.UserKey,
"Content-Type": "Application/x-www-form-urlencoded",
}
log.Println("Headers : ", headers)
res, err := ResponseGetNomorSuratKontrol(url, header, headers)
if err != nil {
if res.MetaData.Message == "No.Rencana Kontrol tidak ada atau sudah terpakai!" {
reqUpdate := &sk.DataSuratKontrol{
DateUpdated: timeNow,
ID: v.ID,
StatusSurKon: 0,
UserUpdatedSurKon: "ADMIN IT",
}
err = suratkontrol.UpdateDataSuratKontrol(reqUpdate)
if err != nil {
log.Println(err)
continue
}
log.Println("Berhasil update nomor SurKon :", v.NomorSuratKontrol)
continue
}
log.Printf("Error making external API request: %v", err)
continue
}
log.Println("TIdak ada perubahan data untuk nomor SurKon :", v.NomorSuratKontrol)
continue
}
return nil
}
func GetDataLogAPI(c *gin.Context) {
var req logapi.ReqGetDataLogAPI
@@ -1396,7 +1220,7 @@ func GetDataLogAPI(c *gin.Context) {
Code: "203",
Message: err.Error(),
},
})
})
return
}
@@ -1,4 +1,4 @@
package vclaim
package Vclaim
import (
"crypto/hmac"
+50
View File
@@ -0,0 +1,50 @@
package Vclaim
import (
"crypto/aes"
"crypto/cipher"
"crypto/sha256"
"encoding/base64"
"errors"
"bridging-rssa/docs"
lzstring "github.com/daku10/go-lz-string"
)
func ResponseVclaim(encrypted string, key string) (string, error) {
cipherText, err := base64.StdEncoding.DecodeString(encrypted)
if err != nil {
return "", err
}
hash := sha256.Sum256([]byte(key))
block, err := aes.NewCipher(hash[:])
if err != nil {
return "", err
}
if len(cipherText) < aes.BlockSize {
return "", errors.New("cipherText too short")
}
iv := hash[:aes.BlockSize]
if len(cipherText)%aes.BlockSize != 0 {
return "", errors.New("cipherText is not a multiple of the block size")
}
mode := cipher.NewCBCDecrypter(block, iv)
mode.CryptBlocks(cipherText, cipherText)
// cipherText, _ = pkcs7.Unpad(cipherText, aes.BlockSize)
cipherText = docs.RemovePKCS7Padding(cipherText)
data, err := lzstring.DecompressFromEncodedURIComponent(string(cipherText))
// data, err := helper.DecompressFromEncodedUriComponent(string(cipherText))
if err != nil {
return "", err
}
return data, nil
}
@@ -1,7 +1,6 @@
package vclaim
package Vclaim
import (
"bridging-rssa/models/config"
"bytes"
"encoding/json"
"fmt"
@@ -9,11 +8,7 @@ import (
"io/ioutil"
"log"
"net/http"
"os"
cfg "bridging-rssa/config"
"github.com/gin-gonic/gin"
"github.com/mashingan/smapping"
)
@@ -125,33 +120,3 @@ func PostRequest(endpoint string, cfg interface{}, data interface{}) interface{}
return &resp
}
func GetReferensiDokter(c *gin.Context) {
baseUrl := os.Getenv("BASEURL_BPJS_DEV")
endpoint := os.Getenv("VCLAIM_RS_DEV")
param := os.Getenv("GET_REFERENSI_DOKTER")
dpjp := c.Param("dpjp")
url := baseUrl + endpoint + param + dpjp
conf := config.ConfigBpjs{}
header := cfg.SetHeaderDev(conf)
headers := map[string]string{
"X-cons-id": header.ConsID,
"X-timestamp": header.TimeStamp,
"X-signature": header.XSignature,
"user_key": header.UserKey,
"Content-Type": "application/json; charset=utf-8",
}
log.Println("Headers : ", headers)
res, err := ResponseGetReferensiDokter(url, header, headers)
if err != nil {
log.Println(err)
c.JSON(http.StatusInternalServerError, res.MetaData)
return
}
c.JSON(http.StatusOK, res)
}
-127
View File
@@ -1,127 +0,0 @@
package vclaim
import (
"bridging-rssa/docs"
"bridging-rssa/models/config"
"crypto/aes"
"crypto/cipher"
"crypto/sha256"
"encoding/base64"
"encoding/json"
"errors"
"io"
"log"
"net/http"
vclaim "bridging-rssa/models/bpjs/v_claim"
lzstring "github.com/daku10/go-lz-string"
)
func ResponseVclaim(encrypted string, key string) (string, error) {
cipherText, err := base64.StdEncoding.DecodeString(encrypted)
if err != nil {
return "", err
}
hash := sha256.Sum256([]byte(key))
block, err := aes.NewCipher(hash[:])
if err != nil {
return "", err
}
if len(cipherText) < aes.BlockSize {
return "", errors.New("cipherText too short")
}
iv := hash[:aes.BlockSize]
if len(cipherText)%aes.BlockSize != 0 {
return "", errors.New("cipherText is not a multiple of the block size")
}
mode := cipher.NewCBCDecrypter(block, iv)
mode.CryptBlocks(cipherText, cipherText)
// cipherText, _ = pkcs7.Unpad(cipherText, aes.BlockSize)
cipherText = docs.RemovePKCS7Padding(cipherText)
data, err := lzstring.DecompressFromEncodedURIComponent(string(cipherText))
// data, err := helper.DecompressFromEncodedUriComponent(string(cipherText))
if err != nil {
return "", err
}
return data, nil
}
func ResponseGetReferensiDokter(url string, header *config.Header, headers map[string]string) (*vclaim.ResponseGetReferensiDokter, error) {
log.Println("URL", url)
req, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Printf("Error creating request: %v", err)
return nil, err
}
for key, value := range headers {
req.Header.Set(key, value)
}
log.Println("REQ", req.Header)
client := http.Client{}
response, err := client.Do(req)
if err != nil {
log.Printf("Error making external API request: %v", err)
}
log.Println("RESPONSE: ", response)
key := header.ConsID + header.SecretKey + header.TimeStamp
res, err := io.ReadAll(response.Body)
if err != nil {
log.Println(err)
return nil, err
}
var resReferensiDotker vclaim.ResponseGetReferensiDokterRaw
err = json.Unmarshal([]byte(string(res)), &resReferensiDotker)
if err != nil {
log.Printf("Error Unmarshaling: %v", err)
return nil, err
}
responses := &vclaim.ResponseGetReferensiDokter{}
if resReferensiDotker.MetaData.Code != "200" {
errMsg := errors.New(resReferensiDotker.MetaData.Message)
log.Printf("error : %v", errMsg)
responses.MetaData.Code = resReferensiDotker.MetaData.Code
responses.MetaData.Message = resReferensiDotker.MetaData.Message
log.Println("responses: ", responses)
return responses, errMsg
}
dataResp, err := docs.StringDecrypt(key, resReferensiDotker.Response)
if err != nil {
log.Printf("Error Decrypt: %v", err)
return nil, err
}
var responseListDokter vclaim.ResponseReferensiDokter
log.Println("dataresp: ", dataResp)
err = json.Unmarshal([]byte(dataResp), &responseListDokter)
if err != nil {
log.Printf("Error Decode: %v", err)
return nil, err
}
log.Println("res: ", resReferensiDotker)
responses = &vclaim.ResponseGetReferensiDokter{
MetaData: resReferensiDotker.MetaData,
Response: responseListDokter,
}
return responses, nil
}
@@ -1,7 +1,7 @@
package kunjunganpasien
import (
"bridging-rssa/database/satu_data/pasien"
pasien "bridging-rssa/database/satu_data/pasien"
"bridging-rssa/docs/utils"
pasien_model "bridging-rssa/models/pasien"
"log"
+4 -149
View File
@@ -1,15 +1,10 @@
package mikrobiologi
import (
"bridging-rssa/database/simrs/dokter"
mikrobiologiDB "bridging-rssa/database/simrs/mikrobiologi"
"bridging-rssa/database/simrs/pasien"
"bridging-rssa/database/simrs/pendaftaran"
"bridging-rssa/database/simrs/ruang"
"bridging-rssa/models/simrs/mikrobiologi"
"log"
"net/http"
"time"
"github.com/gin-gonic/gin"
)
@@ -36,10 +31,6 @@ func GetDataPasienMikrobiologi(c *gin.Context) {
}
var res []interface{}
for _, v := range dataPasien {
ktp := v.NoKTP
if v.NoKTPBaru != "" {
ktp = v.NoKTPBaru
}
if v.StatusAPS == 1 {
res = append(res, &mikrobiologi.ResponseDataPasienRajalAPS{
NOMR: v.NOMR,
@@ -69,7 +60,8 @@ func GetDataPasienMikrobiologi(c *gin.Context) {
NoLab: v.NoLab,
StatusRajal: v.StatusRajal,
Nama: v.Nama,
NoKTP: ktp,
NoKTP: v.NoKTP,
NoKTPBaru: v.NoKTPBaru,
TempatLahir: v.TempatLahir,
TanggalLahir: v.TanggalLahir,
JenisKelamin: v.JenisKelamin,
@@ -87,7 +79,8 @@ func GetDataPasienMikrobiologi(c *gin.Context) {
NoLab: v.NoLab,
StatusRajal: v.StatusRajal,
Nama: v.Nama,
NoKTP: ktp,
NoKTP: v.NoKTP,
NoKTPBaru: v.NoKTPBaru,
TempatLahir: v.TempatLahir,
TanggalLahir: v.TanggalLahir,
JenisKelamin: v.JenisKelamin,
@@ -101,141 +94,3 @@ func GetDataPasienMikrobiologi(c *gin.Context) {
}
c.JSON(http.StatusOK, res)
}
func SendDataLISMikro(c *gin.Context) {
var req *mikrobiologi.RequestPasienMikrobiologi
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusBadRequest, gin.H{
"message": err,
})
return
}
dataMikro, errData := mikrobiologiDB.GetDataMikroBiologiByNoMR(req)
if errData != nil {
log.Println(errData)
c.JSON(http.StatusBadRequest, gin.H{
"message": errData,
})
return
}
dataPasien, errPasien := pasien.GetMPasien(req)
if errPasien != nil {
log.Println(errPasien)
c.JSON(http.StatusBadRequest, gin.H{
"message": errPasien,
})
return
}
tglLahir, errParse := time.Parse(time.RFC3339, dataPasien.TanggalLahir)
if errParse != nil {
log.Println(errParse)
c.JSON(http.StatusBadRequest, gin.H{
"message": errParse,
})
return
}
var responseMikro []*mikrobiologi.ResponseLISMikro
var dataLisMikro *mikrobiologi.RequestLISMikro
tglLahirString := tglLahir.Format("2006-01-02")
for _, dataMikroMain := range dataMikro {
dataLabMikro, exist, errDiagnosa := mikrobiologiDB.GetDataLabMikro(dataMikroMain.NoLab)
if errDiagnosa != nil {
log.Println(errDiagnosa)
c.JSON(http.StatusBadRequest, gin.H{
"message": errDiagnosa,
})
return
}
if !exist {
log.Println("Data bukan pemeriksaan")
continue
}
namaDokter, errDokter := dokter.GetNamaDokter(dataMikroMain.DokterPengirim)
if errDokter != nil {
log.Println(errDokter)
c.JSON(http.StatusBadRequest, gin.H{
"message": errDokter,
})
return
}
poli, errDokter := ruang.GetNamaRuang(dataMikroMain.KodePoli)
if errDokter != nil {
log.Println(errDokter)
c.JSON(http.StatusBadRequest, gin.H{
"message": errDokter,
})
return
}
caraBayar, errCaraBayar := pendaftaran.GetCaraBayar(dataMikroMain)
if errCaraBayar != nil {
log.Println(errCaraBayar)
c.JSON(http.StatusBadRequest, gin.H{
"message": errCaraBayar,
})
return
}
dataLisMikro = &mikrobiologi.RequestLISMikro{
NoRM: dataMikroMain.NoMR,
Nama: dataPasien.Nama,
Alamat: dataPasien.Alamat,
Kota: dataPasien.Tempat,
TanggalLahir: tglLahirString,
NoHP: dataPasien.NoTelpon,
Kelamin: dataPasien.JenisKelamin,
NIK: dataPasien.NoKTP,
NoBPJS: dataPasien.NoKartu,
DokterPeminta: namaDokter,
AsalPasien: poli.NamaPoli,
Layanan: dataLabMikro.NamaPemeriksaan,
StatusBayar: "",
NoTransaksi: dataMikroMain.NoLab,
Asuransi: caraBayar,
Klinis: "",
KodeSpesimen: dataMikroMain.StatusSpesimen,
NamaSpesimen: dataMikroMain.Spesimen,
Pengambilan: "",
}
resMikro, errMikro := SendLisMikro(dataLisMikro)
if errMikro != nil {
log.Println(errMikro)
c.JSON(http.StatusBadRequest, gin.H{
"message": errMikro,
})
return
}
log.Println(resMikro)
reqUpdate := &mikrobiologi.ReqUpdateLisMikro{
IdxOrderMikro: dataLabMikro.IdxOrderMikro,
NoLokal: resMikro.Message,
}
errUpdate := mikrobiologiDB.UpdateLabMikro(reqUpdate)
if errUpdate != nil {
log.Println(errUpdate)
c.JSON(http.StatusBadRequest, gin.H{
"message": errUpdate,
})
return
}
responseMikro = append(responseMikro, &mikrobiologi.ResponseLISMikro{
NoLab: dataMikroMain.NoLab,
Status: resMikro.Status,
Message: resMikro.Message,
})
}
c.JSON(http.StatusOK, responseMikro)
}
-59
View File
@@ -1,59 +0,0 @@
package mikrobiologi
import (
"bridging-rssa/models/simrs/mikrobiologi"
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
)
func SendLisMikro(request *mikrobiologi.RequestLISMikro) (*mikrobiologi.Response, error) {
url := os.Getenv("LIS_MIKROBIOLOGI_URL")
log.Println("URL", url)
reqMarshall, err := json.Marshal(request)
if err != nil {
log.Printf("Error json marshal: %v", err)
return nil, err
}
headers := map[string]string{
"Accept": "application/json",
"Content-Type": "Application/x-www-form-urlencoded",
}
log.Println("REQUEST: ", string(reqMarshall))
req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall))
if err != nil {
log.Printf("Error creating request: %v", err)
return nil, err
}
for key, value := range headers {
req.Header.Set(key, value)
}
log.Println("REQ", req.Header)
client := http.Client{}
response, err := client.Do(req)
if err != nil {
log.Printf("Error making external API request: %v", err)
return nil, err
}
res, err := io.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
}
var responses *mikrobiologi.Response
log.Println("RESPONSE: ", string(res))
err = json.Unmarshal(res, &responses)
return responses, nil
}
+110 -145
View File
@@ -1,145 +1,110 @@
package main
import (
"bridging-rssa/config"
"bridging-rssa/handlers/bpjs"
icare "bridging-rssa/handlers/bpjs/i_care"
"bridging-rssa/handlers/bpjs/jadwal_dokter"
"bridging-rssa/handlers/bpjs/rujukan"
suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol"
vclaim "bridging-rssa/handlers/bpjs/v_claim"
kunjungan_pasien "bridging-rssa/handlers/kunjungan_pasien"
mikrobiologiHandler "bridging-rssa/handlers/mikrobiologi"
"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"
"log"
"time"
)
// @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()
// jakartaTime, _ := time.LoadLocation("Asia/Jakarta")
// scheduler := cron.New(cron.WithLocation(jakartaTime))
// defer scheduler.Stop()
// scheduler.AddFunc("41 09 * * *", func() {
// log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===")
// jadwal_dokter.GetDataJadwalDokter()
// log.Println("=== SCHEDULE GET JADWAL DOKTER DONE ===")
// })
// scheduler.AddFunc("0 12 * * *", func() {
// log.Println("=== RUNNING SCHEDULE DATA SURAT KONTROL ===")
// suratkontrol.UpdateSuratKontrolSchedule()
// log.Println("=== SCHEDULE DATA SURAT KONTROL DONE ===")
// })
// scheduler.AddFunc("59 23 * * *", func() {
// log.Println("=== RUNNING SCHEDULE DATA SURAT KONTROL ===")
// suratkontrol.UpdateSuratKontrolSchedule()
// log.Println("=== SCHEDULE DATA SURAT KONTROL DONE ===")
// })
// go scheduler.Start()
v1 := r.Group("/api")
subspesialis := v1.Group("/subspesialis")
{
subspesialis.GET("/", bpjs.GetAllSubspesialis)
}
jadwalDokter := v1.Group("/jadwaldokter")
{
jadwalDokter.POST("/getjadwal", jadwal_dokter.GetJadwalDokterApi)
jadwalDokter.GET("/getalljadwal", jadwal_dokter.GetAllJadwalDokter)
jadwalDokter.GET("/getalljadwalnew", jadwal_dokter.GetJadwalDokterNew)
jadwalDokter.GET("/getjadwaldokter", jadwal_dokter.GetDataJadwalDokter)
jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP)
// jadwalDokter.GET("/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)
jadwalDokter.POST("/detail", jadwal_dokter.GetDetailJadwalDokter)
//jadwalDokter.PUT("/update", jadwal_dokter.UpdateDataJadwalDokter)
}
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)
suratKontrol.POST("/datalog", suratkontrol.GetDataLogAPI)
}
kunjunganPasien := v1.Group("/kunjunganpasien")
{
kunjunganPasien.POST("/listkunjunganpasien", kunjungan_pasien.ListKunjunganPasien)
}
suratRujukan := v1.Group("/rujukan")
{
suratRujukan.GET("/noRujukan/:noRujukan", rujukan.GetSuratRujukan)
suratRujukan.GET("/list/peserta/:noKartu", rujukan.GetSuratRujukanBatch)
}
iCare := v1.Group("/icare")
{
iCare.POST("/rs/validate", icare.GetFKRTL)
iCare.POST("/pcare/validate", icare.GetFKTP)
}
referensi := v1.Group("/referensi")
{
referensi.GET("/dokter/:dpjp", vclaim.GetReferensiDokter)
}
mikrobiologi := v1.Group("/mikrobiologi")
{
mikrobiologi.POST("/datapasien", mikrobiologiHandler.GetDataPasienMikrobiologi)
mikrobiologi.POST("/sendmikro", mikrobiologiHandler.SendDataLISMikro)
}
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
r.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,
}))
localTime := time.Now()
log.Println("Local Time:", localTime)
log.Println("JALAN DI PORT : 8082")
err = r.Run(":8082")
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"
"bridging-rssa/handlers/bpjs/rujukan"
suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol"
kunjunganPasienHandler "bridging-rssa/handlers/kunjungan_pasien"
mikrobiologiHandler "bridging-rssa/handlers/mikrobiologi"
"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)
jadwalDokter.GET("/detail", jadwal_dokter.GetDetailJadwalDokter)
}
suratKontrol := v1.Group("/suratkontrol")
{
suratKontrol.GET("", 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("/carinew", suratkontrol.CariPasienTPPNew)
suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol)
suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol)
suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol)
suratKontrol.POST("/datalog", suratkontrol.GetDataLogAPI)
}
kunjunganPasien := v1.Group("/kunjunganpasien")
{
kunjunganPasien.POST("/listkunjunganpasien", kunjunganPasienHandler.ListKunjunganPasien)
}
suratRujukan := v1.Group("/rujukan")
{
suratRujukan.GET("/noRujukan/:noRujukan", rujukan.GetSuratRujukan)
suratRujukan.GET("/list/peserta/:noKartu", rujukan.GetSuratRujukanBatch)
}
iCare := v1.Group("/icare")
{
iCare.POST("/rs/validate", icare.GetFKRTL)
iCare.POST("/pcare/validate", icare.GetFKTP)
}
mikrobiologi := v1.Group("/mikrobiologi")
{
mikrobiologi.POST("/datapasien", mikrobiologiHandler.GetDataPasienMikrobiologi)
}
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 : 8082")
err = r.Run(":8082")
if err != nil {
log.Fatal(err)
}
}
+92 -140
View File
@@ -1,140 +1,92 @@
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"`
}
type RequestDataJadwalDokter struct {
NamaHari string `gorm:"column:Nama_hari" json:"hari"`
Subspesialis int `gorm:"column:Sub_spesialis" json:"subspesialis"`
}
type ListDataJadwalDokter struct {
Hari string `gorm:"column:Nama_hari" json:"Hari"`
NamaDokter string `gorm:"column:nama_lengkap"`
}
type ListDaftarJadwalDokter struct {
ValueHari string `gorm:"column:valuehari" json:"valuehari"`
NamaHari string `gorm:"column:hari" json:"hari"`
Waktu string `gorm:"column:waktu" json:"waktu"`
Spesialis string `gorm:"column:spesialis" json:"spesialis"`
Subspesialis string `gorm:"column:subspesialis" json:"subspesialis"`
GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"`
NamaLengkap string `gorm:"column:namalengkap" json:"namalengkap"`
GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"`
}
type ResponseDetailJadwalDokter struct {
ValueHari string `gorm:"column:valuehari" json:"valuehari"`
NamaHari string `gorm:"column:hari" json:"hari"`
Waktu string `gorm:"column:waktu" json:"waktu"`
Spesialis string `gorm:"column:spesialis" json:"spesialis"`
Subspesialis string `gorm:"column:subspesialis" json:"subspesialis"`
NamaLengkap string `gorm:"column:namalengkap" json:"namalengkap"`
}
type DaftarJadwalDokter struct {
ID int `gorm:"column:id" json:"id"`
Hari int `gorm:"column:Hari" json:"Hari"`
NamaHari string `gorm:"column:Nama_hari" json:"Nama_hari"`
Waktu string `gorm:"column:Waktu" json:"Waktu"`
Dokter string `gorm:"column:Dokter" json:"Dokter"`
Spesialis int `gorm:"column:Spesialis" json:"Spesialis"`
SubSpesialis int `gorm:"column:Sub_spesialis" json:"Sub_spesialis"`
Status int `gorm:"column:Status" json:"Status"`
HFISCode string `gorm:"column:HFIS_code" json:"HFIS_code"`
}
type RequestUpdateJadwalDokter struct {
Tanggal string `json:"tanggal"`
}
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 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 ListDaftarJadwalDokter struct {
ValueHari string `gorm:"column:valuehari" json:"valuehari"`
NamaHari string `gorm:"column:hari" json:"hari"`
Waktu string `gorm:"column:waktu" json:"waktu"`
Spesialis string `gorm:"column:spesialis" json:"spesialis"`
Subspesialis string `gorm:"column:subspesialis" json:"subspesialis"`
GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"`
NamaLengkap string `gorm:"column:namalengkap" json:"namalengkap"`
GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"`
}
type ResponseDetailJadwalDokter struct {
ValueHari string `gorm:"column:valuehari" json:"valuehari"`
NamaHari string `gorm:"column:hari" json:"hari"`
Waktu string `gorm:"column:waktu" json:"waktu"`
Spesialis string `gorm:"column:spesialis" json:"spesialis"`
Subspesialis string `gorm:"column:subspesialis" json:"subspesialis"`
NamaLengkap string `gorm:"column:namalengkap" json:"namalengkap"`
}
@@ -298,9 +298,3 @@ type RequestCariPasien struct {
Limit string `json:"limit"`
IsTanggalEntri bool `json:"is_tanggal_entri"`
}
type DataNomorSuratKontrol struct {
ID string `gorm:"column:id" json:"id"`
NomorSuratKontrol string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"`
TanggalRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"`
}
-25
View File
@@ -1,25 +0,0 @@
package vclaim
type ResponseGetReferensiDokterRaw struct {
MetaData MetadataString `json:"metaData"`
Response string `json:"response"`
}
type MetadataString struct {
Code string `json:"code"`
Message string `json:"message"`
}
type ResponseGetReferensiDokter struct {
MetaData MetadataString `json:"metaData"`
Response ResponseReferensiDokter `json:"response"`
}
type ResponseReferensiDokter struct {
List ListData `json:"list"`
}
type ListData struct {
Kode string `json:"kode"`
Nama string `json:"nama"`
}
-1
View File
@@ -24,7 +24,6 @@ type ResponseDokter struct {
NamaLengkap string `json:"nama_lengkap"`
Spesialis int `json:"spesialis"`
HFISCode string `json:"HFIS_code"`
DPJPCode string `json:"DPJP_code"`
}
type ResponseDokterNew struct {
-7
View File
@@ -1,7 +0,0 @@
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"`
}
@@ -1,34 +0,0 @@
package kunjunganpasien
type RequestListKunjunganPasien struct {
TanggalAwal string `json:"tanggalawal"`
TanggalAkhir string `json:"tanggalakhir"`
}
type ListKunjunganPasien struct {
NoMR string `gorm:"column:nomr" json:"nomr"`
NamaPasien string `gorm:"column:namalengkap" json:"namalengkap"`
TanggalLahir string `gorm:"column:tanggallahir" json:"tanggallahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
TanggalMasukKunjungan string `gorm:"column:tanggalmasukkunjungan" json:"tanggalmasukkunjungan"`
JamMasukKunjungan string `gorm:"column:jammasukkunjungan" json:"jammasukkunjungan"`
KodeDiagnosa string `gorm:"column:dxawalmasuk" json:"dxawalmasuk"`
NamaDiagnosa string `gorm:"column:displaydxawalmasuk" json:"displaydxawalmasuk"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"`
NamaLengkapDokter string `gorm:"column:namalengkapdokter" json:"namalengkapdokter"`
GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"`
}
type ResponseListKunjunganPasien struct {
NoMR string `gorm:"column:nomr" json:"nomr"`
NamaPasien string `gorm:"column:namalengkap" json:"namalengkap"`
TanggalLahir string `gorm:"column:tanggallahir" json:"tanggallahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
TanggalMasukKunjungan string `gorm:"column:tanggalmasukkunjungan" json:"tanggalmasukkunjungan"`
JamMasukKunjungan string `gorm:"column:jammasukkunjungan" json:"jammasukkunjungan"`
KodeDiagnosa string `gorm:"column:dxawalmasuk" json:"dxawalmasuk"`
NamaDiagnosa string `gorm:"column:displaydxawalmasuk" json:"displaydxawalmasuk"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
NamaLengkapDokter string `gorm:"column:namalengkapdokter" json:"namalengkapdokter"`
}
+2 -60
View File
@@ -3,7 +3,6 @@ package mikrobiologi
type RequestPasienMikrobiologi struct {
NOMR string `json:"nomr"`
IDXDaftar string `json:"idxdaftar"`
NoLab string `json:"nolab"`
}
type DataPasienMikrobiologi struct {
@@ -42,6 +41,7 @@ type ResponseDataPasienRanap struct {
StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"`
Nama string `gorm:"column:nama" json:"nama"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
NoKTPBaru string `gorm:"column:noktpbaru" json:"noktpbaru"`
TempatLahir string `gorm:"column:tmptlahir" json:"tmptlahir"`
TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
@@ -60,6 +60,7 @@ type ResponseDataPasienRajal struct {
StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"`
Nama string `gorm:"column:nama" json:"nama"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
NoKTPBaru string `gorm:"column:noktpbaru" json:"noktpbaru"`
TempatLahir string `gorm:"column:tmptlahir" json:"tmptlahir"`
TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
@@ -87,62 +88,3 @@ type ResponseDataPasienRajalAPS struct {
KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"`
KodeTarifRajal string `gorm:"column:kodetarifrajal" json:"kodetarifrajal"`
}
type RequestLISMikro struct {
NoRM string `json:"norm"`
Nama string `json:"nama"`
Alamat string `json:"alamat"`
Kota string `json:"kota"`
TanggalLahir string `json:"tgllahir"`
NoHP string `json:"nohap"`
Kelamin string `json:"kelamin"`
NIK string `json:"nik"`
NoBPJS string `json:"nobpjs"`
DokterPeminta string `json:"drpeminta"`
AsalPasien string `json:"asalpasien"`
Layanan string `json:"layanan"`
StatusBayar string `json:"statusbayar"`
NoTransaksi string `json:"notransaksi"`
Asuransi string `json:"asuransi"`
Klinis string `json:"klinis"`
KodeSpesimen string `json:"kode"`
NamaSpesimen string `json:"spesimen"`
Pengambilan string `json:"pengambilan"`
}
type OrderLabMikroMain struct {
IdxMikroMain string `gorm:"column:idxmikromain" json:"idxmikromain"`
NoLab string `gorm:"column:nolab" json:"nolab"`
IdxDaftar string `gorm:"column:idxdaftar" json:"idxdaftar"`
NoMR string `gorm:"column:nomr" json:"nomr"`
WaktuPengambilan string `gorm:"column:waktu_pengambilan" json:"waktu_pengambilan"`
TglOrder string `gorm:"column:tglorder" json:"tglorder"`
StatusSpesimen string `gorm:"column:status_specimen" json:"status_specimen"`
Spesimen string `gorm:"column:specimen" json:"specimen"`
DokterPengirim string `gorm:"column:drpengirim" json:"drpengirim"`
KodePoli string `gorm:"column:kdpoli" json:"kdpoli"`
NoNota string `gorm:"column:nonota" json:"nonota"`
StatusRajal string `gorm:"column:st_rajal" json:"st_rajal"`
StatusAPS string `gorm:"column:st_aps" json:"st_aps"`
}
type OrderLabMikro struct {
IdxOrderMikro string `gorm:"column:idxordermikro" json:"idxordermikro"`
NamaPemeriksaan string `gorm:"column:nama_pemeriksaan" json:"nama_pemeriksaan"`
}
type Response struct {
Status string `json:"status"`
Message string `json:"message"`
}
type ResponseLISMikro struct {
NoLab string `json:"nolab"`
Status string `json:"status"`
Message string `json:"message"`
}
type ReqUpdateLisMikro struct {
IdxOrderMikro string `gorm:"column:idxordermikro" json:"idxordermikro"`
NoLokal string `gorm:"column:no_lokal" json:"no_lokal"`
}
-14
View File
@@ -1,14 +0,0 @@
package pasien
type MPasien struct {
ID int `gorm:"column:id" json:"id"`
NoMR string `gorm:"column:no_mr" json:"no_mr"`
Nama string `gorm:"column:nama" json:"nama"`
Tempat string `gorm:"column:tempat" json:"tempat"`
TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
Alamat string `gorm:"column:alamat" json:"alamat"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
NoTelpon string `gorm:"column:notelp" json:"notelp"`
NoKartu string `gorm:"column:no_kartu" json:"no_kartu"`
}
-6
View File
@@ -1,6 +0,0 @@
package ruang
type MRuang struct {
NamaPoli string `gorm:"column:nama" json:"nama"`
Subsistem string `gorm:"column:subsistem" json:"subsistem"`
}