first commit

This commit is contained in:
2025-05-09 09:10:35 +07:00
commit 6358378739
32 changed files with 2159 additions and 0 deletions

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
package satu_data
import (
logapi "api-lis/pkg/models/simrs/log_api"
"log"
)
func InsertLogAPI(reqInsert *logapi.DataLogAPI) error {
query := `insert into "data_log_api" (
"id", "date_created", "User_agent", "IP", "Parameter", "Header", "Method", "URL", "Request", "Respon", "Respon_code", "Respontime_start", "Respontime_end", "Comment"
) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
err := s.SatuDataDB.Exec(query,
reqInsert.ID,
reqInsert.DateCreated,
reqInsert.UserAgent,
reqInsert.IP,
reqInsert.Parameter,
reqInsert.Header,
reqInsert.Method,
reqInsert.Url,
reqInsert.Request,
reqInsert.Respon,
reqInsert.ResponCode,
reqInsert.ResponTimeStart,
reqInsert.ResponTimeEnd,
reqInsert.Comment,
).Error
if err != nil {
log.Println(err)
return err
}
return nil
}
+106
View File
@@ -0,0 +1,106 @@
package databaserepo
import (
"api-lis/pkg/models/satudata"
satudata_models "api-lis/pkg/models/satudata"
"errors"
"gorm.io/gorm"
"log"
)
func (s *DatabaseService) Insertdataretribusi(req *satudata_models.DataRetribusiInsert) error {
query := `insert into data_retribusi ("id", "status", "Jenis" ,"Pelayanan", "Dinas" , "Kelompok_obyek", "Kode_tarif", "Uraian_1", "Uraian_2", "Uraian_3", "Tarif", "Satuan" ,"Tarif_overtime" , "Satuan_overtime", "Rekening_pokok","Rekening_denda")values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`
errQuery := s.DB.Debug().Exec(query,
req.ID,
req.Status,
req.Jenisretribusi,
req.Pelayananretribusi,
req.Dinas,
req.Kelompokobyek,
req.Kodetarif,
req.Uraian1,
req.Uraian2,
req.Uraian3,
req.Tarif,
req.Satuan,
req.Tarifovertime,
req.Satuanovertime,
req.Rekeningpokok,
req.Rekeningdenda,
).Error
if errQuery != nil {
log.Println(errQuery)
return errQuery
}
return nil
}
func (s *DatabaseService) GetAlldataretribusi(Limit, Offset string) ([]*satudata_models.DataRetribusiGetAll, error) {
var dataallretribusi []*satudata.DataRetribusiGetAll
query := `select * from data_retribusi LIMIT ? Offset ? `
errQuery := s.DB.Debug().Raw(query, Limit, Offset).Scan(&dataallretribusi).Error
if errQuery != nil {
if errors.Is(errQuery, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data Tidak Ditemukan")
log.Println(errMsg)
return nil, errMsg
}
log.Println(errQuery)
return nil, errQuery
}
return dataallretribusi, nil
}
/* *todo get data by kode tarif*/
func (s *DatabaseService) Getdataretribusi(Kodetarif, Limit, Offset string) ([]*satudata_models.DataRetribusiGet, error) {
var dataretribusi []*satudata.DataRetribusiGet
query := `select * from data_retribusi where "Kode_tarif" = ? LIMIT ? Offset ? `
errQuery := s.DB.Debug().Raw(query, Kodetarif, Limit, Offset).Scan(&dataretribusi).Error
if errQuery != nil {
if errors.Is(errQuery, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data Tidak Ditemukan")
log.Println(errMsg)
return nil, errMsg
}
log.Println(errQuery)
return nil, errQuery
}
return dataretribusi, nil
}
func (s *DatabaseService) Putdataretribusi(req *satudata_models.DataRetribusiPut) error {
query := ` update data_retribusi set "status" = ?,"Jenis"=?,"Pelayanan" = ?,"Dinas"=?,"Kelompok_obyek"=? ,"Kode_tarif"=? ,"Uraian_1"=? ,"Uraian_2"=? ,"Uraian_3"=? ,"Tarif"=? ,"Satuan"=?,"Tarif_overtime"=?,"Satuan_overtime"=? ,"Rekening_pokok"=? ,"Rekening_denda"=? where "id" = ? `
errUpdate := s.DB.Debug().Exec(query,
req.Status,
req.Jenisretribusi,
req.Pelayananretribusi,
req.Dinas,
req.Kelompokobyek,
req.Kodetarif,
req.Uraian1,
req.Uraian2,
req.Uraian3,
req.Tarif,
req.Satuan,
req.Tarifovertime,
req.Satuanovertime,
req.Rekeningpokok,
req.Rekeningdenda,
req.ID,
).Error
if errUpdate != nil {
log.Println(errUpdate)
return errUpdate
}
return nil
}
func (s *DatabaseService) Deletedataretribusi(ID string) error {
query := `delete from data_retribusi where "id" = ? `
errDelete := s.DB.Debug().Exec(query, ID).Error
if errDelete != nil {
log.Println(errDelete)
return errDelete
}
return nil
}
+11
View File
@@ -0,0 +1,11 @@
package databaserepo
import "gorm.io/gorm"
type DatabaseService struct {
DB *gorm.DB
}
func NewDatabaseService(db *gorm.DB) *DatabaseService {
return &DatabaseService{DB: db}
}
+16
View File
@@ -0,0 +1,16 @@
package databaserepo
import (
"log"
)
func (s *DatabaseService) GetNamaDokter(kdDokter string) (string, error) {
var namaDokter string
querySelect := `SELECT namadokter FROM m_dokter where "kddokter" = ?`
errSelect := s.DB.Debug().Raw(querySelect, kdDokter).Scan(&namaDokter).Error
if errSelect != nil {
log.Println(errSelect)
return "", errSelect
}
return namaDokter, nil
}
+82
View File
@@ -0,0 +1,82 @@
package databaserepo
import (
"api-lis/pkg/models/simrs/mikrobiologi"
"errors"
"log"
"gorm.io/gorm"
)
func (s *DatabaseService) GetDataMikroBiologi(req *mikrobiologi.RequestPasienMikrobiologi) ([]*mikrobiologi.DataPasienMikrobiologi, error) {
var dataPasien []*mikrobiologi.DataPasienMikrobiologi
query := `select tom."nomr" as nomr, tomm."nonota" as nonota, tom."idxdaftar" as idxdaftar, tom."tglorder" as tglorder, tom."nolab" as nolab, tom."rajal" as statusrajal, tom."aps" as statusaps,
mp."nama" as nama, mp."noktp" as noktp, mp."noktp_baru" as noktpbaru, mp."tempat" as tmptlahir, mp."tgllahir" as tgllahir, mp."jeniskelamin" as jeniskelamin, mp."alamat" as alamat,
mpa."nama" as namaaps, mpa."noktp" as noktpaps, mpa."tempat" as tmptlahiraps, mpa."tgllahir" as tgllahiraps, mpa."jeniskelamin" as jeniskelaminaps, mpa."alamat" as alamataps,
mr."nama" as namaruang, mr."kelas" as kelasruang,
trj."kodetarif" as kodetarifrajal,
trp."kodetarif" as kodetarifranap
from t_orderlabmikro tom
left join m_pasien mp on mp."nomr" = tom."nomr"
left join m_pasien_aps mpa on mpa."nomr" = tom."nomr"
left join m_ruang mr on mr."no" = tom."kdpoli"
left join t_orderlabmikro_main tomm on tomm."nolab" = tom."nolab"
left join t_billrajal trj on trj."nonota" = CAST(tomm."nonota" AS int8)
left join t_billranap trp on trp."nonota" = CAST(tomm."nonota" AS int8)
where tom."nomr" = ?
and tom."idxdaftar" = ?
group by (tom."nomr",tomm."nonota",tom."idxdaftar",tom."tglorder",tom."nolab",tom."rajal",tom."aps",mp."nama",mp."noktp",mp."noktp_baru",mp."tempat",mp."tgllahir",mp."jeniskelamin",mp."alamat",mpa."nama",mpa."noktp",
mpa."tempat",mpa."tgllahir",mpa."jeniskelamin",mpa."alamat",mr."nama",mr."kelas",trj."kodetarif",trp."kodetarif")
`
errQuery := s.DB.Debug().Raw(query, req.NOMR, req.IDXDaftar).Scan(&dataPasien).Error
if errQuery != nil {
if errors.Is(errQuery, gorm.ErrRecordNotFound) {
errMsg := errors.New("Data Tidak Ditemukan")
log.Println(errMsg)
return nil, errMsg
}
log.Println(errQuery)
return nil, errQuery
}
return dataPasien, nil
}
func (s *DatabaseService) GetDataMikroBiologiByNoMR(req *mikrobiologi.RequestPasienMikrobiologi) ([]*mikrobiologi.OrderLabMikroMain, error) {
var data []*mikrobiologi.OrderLabMikroMain
query := `select * from "t_orderlabmikro_main" where "nomr" = ? and "idxdaftar" = ? and "nolab" = ?`
errSelect := s.DB.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 (s *DatabaseService) 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'`
errSelect := s.DB.Debug().Raw(querySelect, noLab).Scan(&dataMikro).Error
if errSelect != nil {
log.Println(errSelect)
return nil, false, errSelect
}
return dataMikro, true, nil
}
func (s *DatabaseService) UpdateLabMikro(req *mikrobiologi.ReqUpdateLisMikro) error {
queryUpdate := `update "t_orderlabmikro" set "no_lokal" = ? where "idxordermikro" = ?`
errUpdate := s.DB.Debug().Exec(queryUpdate, req.NoLokal, req.IdxOrderMikro).Error
if errUpdate != nil {
log.Println(errUpdate)
return errUpdate
}
return nil
}
+18
View File
@@ -0,0 +1,18 @@
package databaserepo
import (
"api-lis/pkg/models/simrs/mikrobiologi"
"api-lis/pkg/models/simrs/pasien"
"log"
)
func (s *DatabaseService) GetMPasien(req *mikrobiologi.RequestPasienMikrobiologi) (*pasien.MPasien, error) {
var dataPasien *pasien.MPasien
querySelect := `select * from m_pasien where "nomr" = ?`
errSelect := s.DB.Debug().Raw(querySelect, req.NOMR).First(&dataPasien).Error
if errSelect != nil {
log.Println(errSelect)
return nil, errSelect
}
return dataPasien, nil
}
+19
View File
@@ -0,0 +1,19 @@
package databaserepo
import (
"api-lis/pkg/models/simrs/mikrobiologi"
"log"
)
func (s *DatabaseService) 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 := s.DB.Debug().Raw(query, req.IdxDaftar).First(&CaraBayar).Error
if errSelect != nil {
log.Println(errSelect)
return "", errSelect
}
return CaraBayar, nil
}
+17
View File
@@ -0,0 +1,17 @@
package databaserepo
import (
"api-lis/pkg/models/simrs/ruang"
"log"
)
func (s *DatabaseService) GetNamaRuang(kdPoli string) (*ruang.MRuang, error) {
var poli *ruang.MRuang
query := `select "nama", "subsistem" from m_ruang where "no" = ?`
errSelect := s.DB.Debug().Raw(query, kdPoli).Scan(&poli).Error
if errSelect != nil {
log.Println(errSelect)
return nil, errSelect
}
return poli, nil
}
@@ -0,0 +1,126 @@
package data_retribusi
import (
"api-lis/internal/database"
connDatabase "api-lis/pkg/database/simrs"
satudata_models "api-lis/pkg/models/satudata"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"log"
"net/http"
)
func InsertDataRetribusi(c *gin.Context) {
db := database.New().GetDB("satudata")
satudata := connDatabase.NewDatabaseService(db)
var req *satudata_models.DataRetribusiInsert
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusBadRequest, gin.H{
"message": err,
})
return
}
log.Println("REQUEST", req)
req.ID = uuid.New().String()
errData := satudata.Insertdataretribusi(req)
if errData != nil {
log.Println(errData)
c.JSON(http.StatusBadRequest, gin.H{
"message": errData,
})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Successfully insert User"})
}
func GetAllDataRetribusi(c *gin.Context) {
db := database.New().GetDB("satudata")
satudata := connDatabase.NewDatabaseService(db)
Limit := c.Param("limit")
Offset := c.Param("offset")
dataallretribusi, errData := satudata.GetAlldataretribusi(Limit, Offset)
if errData != nil {
log.Println(errData)
c.JSON(http.StatusBadRequest, gin.H{
"message": errData,
})
return
}
c.JSON(http.StatusOK, dataallretribusi)
}
func Dataretribusiget(c *gin.Context) {
db := database.New().GetDB("satudata")
satudata := connDatabase.NewDatabaseService(db)
kodetarif := c.Param("kodetarif")
limit := c.Param("limit")
offset := c.Param("offset")
log.Println("REQUEST", kodetarif)
dataRetribusi, errData := satudata.Getdataretribusi(kodetarif, limit, offset)
if errData != nil {
log.Println(errData)
c.JSON(http.StatusBadRequest, gin.H{
"message": errData,
})
return
}
c.JSON(http.StatusOK, dataRetribusi)
}
func UpdateDataRetribusi(c *gin.Context) {
db := database.New().GetDB("satudata")
satudata := connDatabase.NewDatabaseService(db)
var req *satudata_models.DataRetribusiPut
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusBadRequest, gin.H{
"message": err,
})
return
}
log.Println("REQUEST", req)
errData := satudata.Putdataretribusi(req)
if errData != nil {
log.Println(errData)
c.JSON(http.StatusBadRequest, gin.H{
"message": errData,
})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Successfully Updated User"})
}
func DeleteDataRetribusi(c *gin.Context) {
db := database.New().GetDB("satudata")
satudata := connDatabase.NewDatabaseService(db)
var req *satudata_models.DataRetribusiDelete
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusBadRequest, gin.H{
"message": err,
})
return
}
log.Println("REQUEST", req)
errData := satudata.Deletedataretribusi(req.ID)
if errData != nil {
log.Println(errData)
c.JSON(http.StatusBadRequest, gin.H{
"message": errData,
})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Successfully Delete"})
}
+156
View File
@@ -0,0 +1,156 @@
package mikrobiologi
import (
"api-lis/internal/database"
connDatabase "api-lis/pkg/database/simrs"
"api-lis/pkg/models/simrs/mikrobiologi"
"log"
"net/http"
"time"
"github.com/gin-gonic/gin"
)
func SendDataLISMikro(c *gin.Context) {
db := database.New().GetDB("simrs")
simrsDB := connDatabase.NewDatabaseService(db)
var req *mikrobiologi.RequestPasienMikrobiologi
err := c.Bind(&req)
if err != nil {
log.Println(err)
c.JSON(http.StatusBadRequest, gin.H{
"message": err,
})
return
}
log.Println("REQUEST", req)
dataMikro, errData := simrsDB.GetDataMikroBiologiByNoMR(req)
if errData != nil {
log.Println(errData)
c.JSON(http.StatusBadRequest, gin.H{
"message": errData,
})
return
}
dataPasien, errPasien := simrsDB.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 := simrsDB.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 := simrsDB.GetNamaDokter(dataMikroMain.DokterPengirim)
if errDokter != nil {
log.Println(errDokter)
c.JSON(http.StatusBadRequest, gin.H{
"message": errDokter,
})
return
}
poli, errDokter := simrsDB.GetNamaRuang(dataMikroMain.KodePoli)
if errDokter != nil {
log.Println(errDokter)
c.JSON(http.StatusBadRequest, gin.H{
"message": errDokter,
})
return
}
caraBayar, errCaraBayar := simrsDB.GetCaraBayar(dataMikroMain)
if errCaraBayar != nil {
log.Println(errCaraBayar)
c.JSON(http.StatusBadRequest, gin.H{
"message": errCaraBayar,
})
return
}
for _, value := range dataLabMikro {
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: value.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.Error(),
})
return
}
log.Println(resMikro)
reqUpdate := &mikrobiologi.ReqUpdateLisMikro{
IdxOrderMikro: value.IdxOrderMikro,
NoLokal: resMikro.Message,
}
errUpdate := simrsDB.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,
})
}
}
log.Println("RESPONSE", responseMikro)
c.JSON(http.StatusOK, responseMikro)
}
+83
View File
@@ -0,0 +1,83 @@
package mikrobiologi
import (
"api-lis/pkg/models/simrs/mikrobiologi"
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
)
func SendLisMikro(request *mikrobiologi.RequestLISMikro) (*mikrobiologi.Response, error) {
baseUrl := os.Getenv("LIS_MIKROBIOLOGI_URL")
endpoint := os.Getenv("LIS_REGISTERPASIEN")
url := baseUrl + endpoint
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/json",
}
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)
}
client := http.Client{}
response, err := client.Do(req)
if err != nil {
log.Printf("Error making external API request: %v", err)
return nil, err
}
log.Println(response)
res, err := io.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
}
if response.StatusCode != 201 {
var responseError *mikrobiologi.ResponseError
err = json.Unmarshal(res, &responseError)
if err != nil {
log.Printf("Error unmarshalling response: %v", err)
return nil, err
}
log.Println("MASUK SINI?")
log.Println(responseError.Error)
return nil, fmt.Errorf(responseError.Error)
}
var responses *mikrobiologi.Response
log.Println("RESPONSE: ", string(res))
err = json.Unmarshal(res, &responses)
if err != nil {
log.Printf("Error unmarshalling response: %v", err)
return nil, err
}
return responses, nil
}
func ResponseBatalMikro(request *mikrobiologi.RequestBatalMikro) {
}
+113
View File
@@ -0,0 +1,113 @@
package middleware
import (
"net/http"
"github.com/gin-gonic/gin"
)
var validAPIKeys = map[string]string{
"ADMINAPI": "admin",
"GUESTAPI": "guest",
}
var validSignatures = map[string]string{
"MAILADMIN123": "admin",
"2fc40b52-6b21-4705-a88a-4e4b674a2490": "guest",
"967ae409-fd44-4853-ab15-4cab3a611a81": "guest",
"99d4f94c-419d-4556-849a-3ad6a466527a": "guest",
"ad8697db-9491-4faf-aac2-bf415de0de32": "guest",
"f67a17ba-e1f1-4356-87f8-33ece72750cc": "guest",
"e7b6deae-4177-45d0-b8e3-ac9f96c5427a": "guest",
"9accd55b-b868-475c-a54b-d6cd05a46eb3": "guest",
"8e593935-65b5-407c-9fb3-d16fbbe6bd65": "guest",
"20d4b986-9bea-4277-923f-1a7fd107ca52": "guest",
}
func APIKeySignatureMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
// Ambil API key dari header X-API-Key
apiKey := c.GetHeader("X-API-Key")
if apiKey == "" {
c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
"status": "error",
"message": "API key diperlukan dalam header X-API-Key",
})
return
}
roleFromAPIKey, validAPIKey := validAPIKeys[apiKey]
if !validAPIKey {
c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
"status": "error",
"message": "API key tidak valid",
})
c.Abort()
return
}
signature := c.GetHeader("X-SIGNATURE")
if signature == "" {
c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
"status": "error",
"message": "Signature diperlukan dalam header X-SIGNATURE",
})
return
}
roleFromSignature, validSignature := validSignatures[signature]
if !validSignature {
c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
"status": "error",
"message": "Signature tidak valid",
})
c.Abort()
return
}
if roleFromAPIKey != roleFromSignature {
c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
"status": "error",
"message": "API key dan signature tidak sesuai",
})
c.Abort()
return
}
c.Set("role", roleFromAPIKey)
c.Next()
}
}
func RoleMiddleware(allowedRoles ...string) gin.HandlerFunc {
return func(c *gin.Context) {
role, exists := c.Get("role")
if !exists {
c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
"status": "error",
"message": "API key tidak terdeteksi",
})
return
}
roleStr := role.(string)
roleAllowed := false
for _, r := range allowedRoles {
if r == roleStr {
roleAllowed = true
break
}
}
if !roleAllowed {
c.AbortWithStatusJSON(http.StatusForbidden, gin.H{
"status": "error",
"message": "Anda tidak memiliki izin untuk mengakses resource ini",
})
return
}
c.Next()
}
}
+99
View File
@@ -0,0 +1,99 @@
package satudata
type DataRetribusiInsert struct {
ID string `gorm:"column:id" json:"id"`
Status string `gorm:"column:status" json:"status"`
Jenisretribusi string `gorm:"column:Jenis" json:"Jenis"`
Pelayananretribusi string `gorm:"column:Pelayanan" json:"Pelayanan"`
Dinas string `gorm:"column:Dinas" json:"Dinas"`
Kelompokobyek string `gorm:"column:Kelompok_obyek" json:"Kelompok_obyek"`
Kodetarif string `gorm:"column:Kode_tarif" json:"Kode_tarif"`
Uraian1 string `gorm:"column:Uraian_1" json:"Uraian_1"`
Uraian2 string `gorm:"column:Uraian_2" json:"Uraian_2"`
Uraian3 string `gorm:"column:Uraian_3" json:"Uraian_3"`
Tarif string `gorm:"column:Tarif" json:"Tarif"`
Satuan string `gorm:"column:Satuan" json:"Satuan"`
Tarifovertime string `gorm:"column:Tarif_overtime" json:"Tarif_overtime"`
Satuanovertime string `gorm:"column:Satuan_overtime" json:"Satuan_overtime"`
Rekeningpokok string `gorm:"column:Rekening_pokok" json:"Rekening_pokok"`
Rekeningdenda string `gorm:"column:Rekening_denda" json:"Rekening_denda"`
}
type DataRetribusiPost struct {
ID string `gorm:"column:id" json:"id"`
Status string `gorm:"column:status" json:"status"`
Jenisretribusi string `gorm:"column:Jenis" json:"Jenis"`
Pelayananretribusi string `gorm:"column:Pelayanan" json:"Pelayanan"`
Dinas string `gorm:"column:Dinas" json:"Dinas"`
Kelompokobyek string `gorm:"column:Kelompok_obyek" json:"Kelompok_obyek"`
Kodetarif string `gorm:"column:Kode_tarif" json:"Kode_tarif"`
Uraian1 string `gorm:"column:Uraian_1" json:"Uraian_1"`
Uraian2 string `gorm:"column:Uraian_2" json:"Uraian_2"`
Uraian3 string `gorm:"column:Uraian_3" json:"Uraian_3"`
Tarif string `gorm:"column:Tarif" json:"Tarif"`
Satuan string `gorm:"column:Satuan" json:"Satuan"`
Tarifovertime string `gorm:"column:Tarif_overtime" json:"Tarif_overtime"`
Satuanovertime string `gorm:"column:Satuan_overtime" json:"Satuan_overtime"`
Rekeningpokok string `gorm:"column:Rekening_pokok" json:"Rekening_pokok"`
Rekeningdenda string `gorm:"column:Rekening_denda" json:"Rekening_denda"`
}
type DataRetribusiGetAll struct {
ID string `gorm:"column:id" json:"id"`
Status string `gorm:"column:status" json:"status"`
Jenisretribusi string `gorm:"column:Jenis" json:"Jenis"`
Pelayananretribusi string `gorm:"column:Pelayanan" json:"Pelayanan"`
Dinas string `gorm:"column:Dinas" json:"Dinas"`
Kelompokobyek string `gorm:"column:Kelompok_obyek" json:"Kelompok_obyek"`
Kodetarif string `gorm:"column:Kode_tarif" json:"Kode_tarif"`
Uraian1 string `gorm:"column:Uraian_1" json:"Uraian_1"`
Uraian2 string `gorm:"column:Uraian_2" json:"Uraian_2"`
Uraian3 string `gorm:"column:Uraian_3" json:"Uraian_3"`
Tarif string `gorm:"column:Tarif" json:"Tarif"`
Satuan string `gorm:"column:Satuan" json:"Satuan"`
Tarifovertime string `gorm:"column:Tarif_overtime" json:"Tarif_overtime"`
Satuanovertime string `gorm:"column:Satuan_overtime" json:"Satuan_overtime"`
Rekeningpokok string `gorm:"column:Rekening_pokok" json:"Rekening_pokok"`
Rekeningdenda string `gorm:"column:Rekening_denda" json:"Rekening_denda"`
}
type DataRetribusiGet struct {
ID string `gorm:"column:id" json:"id"`
Status string `gorm:"column:status" json:"status"`
Jenisretribusi string `gorm:"column:Jenis" json:"Jenis"`
Pelayananretribusi string `gorm:"column:Pelayanan" json:"Pelayanan"`
Dinas string `gorm:"column:Dinas" json:"Dinas"`
Kelompokobyek string `gorm:"column:Kelompok_obyek" json:"Kelompok_obyek"`
Kodetarif string `gorm:"column:Kode_tarif" json:"Kode_tarif"`
Uraian1 string `gorm:"column:Uraian_1" json:"Uraian_1"`
Uraian2 string `gorm:"column:Uraian_2" json:"Uraian_2"`
Uraian3 string `gorm:"column:Uraian_3" json:"Uraian_3"`
Tarif string `gorm:"column:Tarif" json:"Tarif"`
Satuan string `gorm:"column:Satuan" json:"Satuan"`
Tarifovertime string `gorm:"column:Tarif_overtime" json:"Tarif_overtime"`
Satuanovertime string `gorm:"column:Satuan_overtime" json:"Satuan_overtime"`
Rekeningpokok string `gorm:"column:Rekening_pokok" json:"Rekening_pokok"`
Rekeningdenda string `gorm:"column:Rekening_denda" json:"Rekening_denda"`
Limit string `gorm:"column:Limit" json:"Limit"`
Offset string `gorm:"column:Offset" json:"Offset"`
}
type DataRetribusiPut struct {
ID string `gorm:"column:id" json:"id"`
Status string `gorm:"column:status" json:"status"`
Jenisretribusi string `gorm:"column:Jenis" json:"Jenis"`
Pelayananretribusi string `gorm:"column:Pelayanan" json:"Pelayanan"`
Dinas string `gorm:"column:Dinas" json:"Dinas"`
Kelompokobyek string `gorm:"column:Kelompok_obyek" json:"Kelompok_obyek"`
Kodetarif string `gorm:"column:Kode_tarif" json:"Kode_tarif"`
Uraian1 string `gorm:"column:Uraian_1" json:"Uraian_1"`
Uraian2 string `gorm:"column:Uraian_2" json:"Uraian_2"`
Uraian3 string `gorm:"column:Uraian_3" json:"Uraian_3"`
Tarif string `gorm:"column:Tarif" json:"Tarif"`
Satuan string `gorm:"column:Satuan" json:"Satuan"`
Tarifovertime string `gorm:"column:Tarif_overtime" json:"Tarif_overtime"`
Satuanovertime string `gorm:"column:Satuan_overtime" json:"Satuan_overtime"`
Rekeningpokok string `gorm:"column:Rekening_pokok" json:"Rekening_pokok"`
Rekeningdenda string `gorm:"column:Rekening_denda" json:"Rekening_denda"`
}
type DataRetribusiDelete struct {
ID string `gorm:"column:id" json:"id"`
}
+20
View File
@@ -0,0 +1,20 @@
package log_api
import "encoding/json"
type DataLogAPI struct {
ID string `gorm:"column:id" json:"ID"`
DateCreated string `gorm:"column:date_created" json:"date_created"`
UserAgent string `gorm:"column:User_agent" json:"User_agent"`
IP string `gorm:"column:IP" json:"IP"`
Parameter string `gorm:"column:Parameter" json:"Parameter"`
Header string `gorm:"column:Header" json:"Header"`
Method string `gorm:"column:Method" json:"Method"`
Url string `gorm:"column:URL" json:"URL"`
Request json.RawMessage `gorm:"column:Request" json:"Request"`
Respon json.RawMessage `gorm:"column:Respon" json:"Respon"`
ResponCode string `gorm:"column:Respon_code" json:"Respon_code"`
ResponTimeStart string `gorm:"column:Respontime_start" json:"Respontime_start"`
ResponTimeEnd string `gorm:"column:Respontime_end" json:"Respontime_end"`
Comment string `gorm:"column:Comment" json:"Comment"`
}
@@ -0,0 +1,157 @@
package mikrobiologi
type RequestPasienMikrobiologi struct {
NOMR string `json:"nomr"`
IDXDaftar string `json:"idxdaftar"`
NoLab string `json:"nolab"`
}
type DataPasienMikrobiologi struct {
NOMR string `gorm:"column:nomr" json:"nomr"`
NoNota string `gorm:"column:nonota" json:"nonota"`
IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"`
TanggalOrder string `gorm:"column:tglorder" json:"tglorder"`
NoLab string `gorm:"column:nolab" json:"nolab"`
StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"`
StatusAPS int `gorm:"column:statusaps" json:"statusaps"`
Nama string `gorm:"column:nama" json:"nama"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
NoKTPBaru string `gorm:"column:noktpbaru" json:"noktpbaru"`
TempatLahir string `gorm:"column:tmptlahir" json:"tmptlahir"`
TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
Alamat string `gorm:"column:alamat" json:"alamat"`
NamaAPS string `gorm:"column:namaaps" json:"namaaps"`
NoKTPAPS string `gorm:"column:noktpaps" json:"noktpaps"`
TempatLahirAPS string `gorm:"column:tmptlahiraps" json:"tmptlahiraps"`
TanggalLahirAPS string `gorm:"column:tgllahiraps" json:"tgllahiraps"`
JenisKelaminAPS string `gorm:"column:jeniskelaminaps" json:"jeniskelaminaps"`
AlamatAPS string `gorm:"column:alamataps" json:"alamataps"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"`
KodeTarifRajal string `gorm:"column:kodetarifrajal" json:"kodetarifrajal"`
KodeTarifRanap string `gorm:"column:kodetarifranap" json:"kodetarifranap"`
}
type ResponseDataPasienRanap struct {
NOMR string `gorm:"column:nomr" json:"nomr"`
NoNota string `gorm:"column:nonota" json:"nonota"`
IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"`
TanggalOrder string `gorm:"column:tglorder" json:"tglorder"`
NoLab string `gorm:"column:nolab" json:"nolab"`
StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"`
Nama string `gorm:"column:nama" json:"nama"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
TempatLahir string `gorm:"column:tmptlahir" json:"tmptlahir"`
TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
Alamat string `gorm:"column:alamat" json:"alamat"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"`
KodeTarifRanap string `gorm:"column:kodetarifranap" json:"kodetarifranap"`
}
type ResponseDataPasienRajal struct {
NOMR string `gorm:"column:nomr" json:"nomr"`
NoNota string `gorm:"column:nonota" json:"nonota"`
IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"`
TanggalOrder string `gorm:"column:tglorder" json:"tglorder"`
NoLab string `gorm:"column:nolab" json:"nolab"`
StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"`
Nama string `gorm:"column:nama" json:"nama"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
TempatLahir string `gorm:"column:tmptlahir" json:"tmptlahir"`
TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
Alamat string `gorm:"column:alamat" json:"alamat"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"`
KodeTarifRajal string `gorm:"column:kodetarifrajal" json:"kodetarifrajal"`
}
type ResponseDataPasienRajalAPS struct {
NOMR string `gorm:"column:nomr" json:"nomr"`
NoNota string `gorm:"column:nonota" json:"nonota"`
IdxDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"`
TanggalOrder string `gorm:"column:tglorder" json:"tglorder"`
NoLab string `gorm:"column:nolab" json:"nolab"`
StatusRajal int `gorm:"column:statusrajal" json:"statusrajal"`
StatusAPS int `gorm:"column:statusaps" json:"statusaps"`
NamaAPS string `gorm:"column:namaaps" json:"namaaps"`
NoKTPAPS string `gorm:"column:noktpaps" json:"noktpaps"`
TempatLahirAPS string `gorm:"column:tmptlahiraps" json:"tmptlahiraps"`
TanggalLahirAPS string `gorm:"column:tgllahiraps" json:"tgllahiraps"`
JenisKelaminAPS string `gorm:"column:jeniskelaminaps" json:"jeniskelaminaps"`
AlamatAPS string `gorm:"column:alamataps" json:"alamataps"`
NamaRuang string `gorm:"column:namaruang" json:"namaruang"`
KelasRuang string `gorm:"column:kelasruang" json:"kelasruang"`
KodeTarifRajal string `gorm:"column:kodetarifrajal" json:"kodetarifrajal"`
}
type RequestLISMikro struct {
NoRM string `json:"norm"`
Nama string `json:"nama"`
Alamat string `json:"alamat"`
Kota string `json:"kota"`
TanggalLahir string `json:"tgllahir"`
NoHP string `json:"nohap"`
Kelamin string `json:"kelamin"`
NIK string `json:"nik"`
NoBPJS string `json:"nobpjs"`
DokterPeminta string `json:"drpeminta"`
AsalPasien string `json:"asalpasien"`
Layanan string `json:"layanan"`
StatusBayar string `json:"statusbayar"`
NoTransaksi string `json:"notransaksi"`
Asuransi string `json:"asuransi"`
Klinis string `json:"klinis"`
KodeSpesimen string `json:"kode"`
NamaSpesimen string `json:"spesimen"`
Pengambilan string `json:"pengambilan"`
}
type OrderLabMikroMain struct {
IdxMikroMain string `gorm:"column:idxmikromain" json:"idxmikromain"`
NoLab string `gorm:"column:nolab" json:"nolab"`
IdxDaftar string `gorm:"column:idxdaftar" json:"idxdaftar"`
NoMR string `gorm:"column:nomr" json:"nomr"`
WaktuPengambilan string `gorm:"column:waktu_pengambilan" json:"waktu_pengambilan"`
TglOrder string `gorm:"column:tglorder" json:"tglorder"`
StatusSpesimen string `gorm:"column:status_specimen" json:"status_specimen"`
Spesimen string `gorm:"column:specimen" json:"specimen"`
DokterPengirim string `gorm:"column:drpengirim" json:"drpengirim"`
KodePoli string `gorm:"column:kdpoli" json:"kdpoli"`
NoNota string `gorm:"column:nonota" json:"nonota"`
StatusRajal string `gorm:"column:st_rajal" json:"st_rajal"`
StatusAPS string `gorm:"column:st_aps" json:"st_aps"`
}
type OrderLabMikro struct {
IdxOrderMikro string `gorm:"column:idxordermikro" json:"idxordermikro"`
NamaPemeriksaan string `gorm:"column:nama_pemeriksaan" json:"nama_pemeriksaan"`
}
type Response struct {
Status string `json:"status"`
Message string `json:"message"`
}
type ResponseError struct {
Error string `json:"error"`
}
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"`
}
type RequestBatalMikro struct {
NoLokal string `json:"no_lokal"`
Alasan string `json:"alasan"`
}
+14
View File
@@ -0,0 +1,14 @@
package pasien
type MPasien struct {
ID int `gorm:"column:id" json:"id"`
NoMR string `gorm:"column:no_mr" json:"no_mr"`
Nama string `gorm:"column:nama" json:"nama"`
Tempat string `gorm:"column:tempat" json:"tempat"`
TanggalLahir string `gorm:"column:tgllahir" json:"tgllahir"`
JenisKelamin string `gorm:"column:jeniskelamin" json:"jeniskelamin"`
Alamat string `gorm:"column:alamat" json:"alamat"`
NoKTP string `gorm:"column:noktp" json:"noktp"`
NoTelpon string `gorm:"column:notelp" json:"notelp"`
NoKartu string `gorm:"column:no_kartu" json:"no_kartu"`
}
+6
View File
@@ -0,0 +1,6 @@
package ruang
type MRuang struct {
NamaPoli string `gorm:"column:nama" json:"nama"`
Subsistem string `gorm:"column:subsistem" json:"subsistem"`
}