diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..a9778b5 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/api-bpjs-surkon.iml b/.idea/api-bpjs-surkon.iml new file mode 100644 index 0000000..31cd4c7 --- /dev/null +++ b/.idea/api-bpjs-surkon.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..e38219a --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..3b02f46 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index bf630e1..acd5bfb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,46 +1,22 @@ 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 - -# Install tzdata package for timezone data -RUN apk add --no-cache tzdata - -# Set the timezone to Asia/Jakarta -RUN cp /usr/share/zoneinfo/Asia/Jakarta /etc/localtime && echo "Asia/Jakarta" > /etc/timezone - -# Verify the timezone is set -RUN date - WORKDIR /app COPY go.mod go.sum ./ RUN go mod tidy -# Set timezone ke Asia/Jakarta -#ENV TZ="Asia/Jakarta" - COPY . . RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main . # RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app . FROM alpine:latest -RUN apk --no-cache add ca-certificates -# Install tzdata package for timezone data -RUN apk add --no-cache tzdata - -# Set the timezone to Asia/Jakarta -RUN cp /usr/share/zoneinfo/Asia/Jakarta /etc/localtime && echo "Asia/Jakarta" > /etc/timezone - -# Verify the timezone is set -RUN date +# Set timezone ke Asia/Jakarta +ENV TZ=Asia/Jakarta +RUN apk --no-cache add ca-certificates tzdata WORKDIR /root/ diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 2095d00..5af5d12 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -56,8 +56,8 @@ 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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` + "User_created_surat_kontrol", "Tipe_surat_kontrol", "User_updated_surat_kontrol", "Tipe_rawat") + values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` err := config.SatuDataDB.Exec(insertQuery, reqInsert.ID, reqInsert.DateCreated, @@ -71,6 +71,7 @@ func InsertDataSuratKontrol(reqInsert *suratkontrol.DataSuratKontrol) error { reqInsert.UserCreatedSurKon, reqInsert.TipeSurKon, reqInsert.UserUpdatedSurKon, + reqInsert.TipeRawat, ).Error if err != nil { log.Println(err) @@ -126,7 +127,7 @@ func GetDataSuratKontrol(offset, limit string) ([]*suratkontrol.GetDataSuratKont return dataSurKon, nil } -func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontrol, error) { +func GetDataSuratKontrolByID(idxdaftar string, tipe string) (*suratkontrol.GetDataSuratKontrol, error) { var dataSurKon *suratkontrol.GetDataSuratKontrol err := config.SatuDataDB.Raw(`select dsk."id", dsk."Tanggal_cetak_surat_kontrol", dsk."Tanggal_rencana_kontrol", dsk."Nomor_surat_kontrol", @@ -163,7 +164,7 @@ func GetDataSuratKontrolByID(idxdaftar string) (*suratkontrol.GetDataSuratKontro left join data_pegawai dp on dsk."DPJP_surat_kontrol" = dp."id" left join data_ktp dk on dp."KTP" = dk. "id" left join daftar_subspesialis ds on dp."Subspesialis" = ds."id" - where dsk."Status_surat_kontrol" = '1' and dkp2."IDXDAFTAR" = ?`, idxdaftar).First(&dataSurKon).Error + where dsk."Status_surat_kontrol" = '1' and dkp2."IDXDAFTAR" = ? and dsk."Tipe_rawat" = ?`, idxdaftar, tipe).First(&dataSurKon).Error if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { errMsg := errors.New("DPJP anda belum ada subspesialis") diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 72f5793..04999c3 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -169,6 +169,7 @@ func InsertSuratKontrol(c *gin.Context) { StatusSurKon: 1, // First Insert status always set to 1 UserCreatedSurKon: req.User, TipeSurKon: req.TipeSurKon, + TipeRawat: req.TipeRawat, } err = suratkontrol.InsertDataSuratKontrol(reqInsert) if err != nil { @@ -285,6 +286,7 @@ func InsertSuratKontrol(c *gin.Context) { StatusSurKon: 1, // First Insert status always set to 1 UserCreatedSurKon: req.User, TipeSurKon: "1", + TipeRawat: req.TipeRawat, } err = suratkontrol.InsertDataSuratKontrol(reqInsert) @@ -946,7 +948,8 @@ func GetDataSurKon(c *gin.Context) { func GetDataSurKonByID(c *gin.Context) { id := c.Param("idxdaftar") - data, err := suratkontrol.GetDataSuratKontrolByID(id) + tipe := c.Param("tiperawat") + data, err := suratkontrol.GetDataSuratKontrolByID(id, tipe) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, &sk.MetadataString{ @@ -994,7 +997,8 @@ func GetDataSurKonByID(c *gin.Context) { func PrintSurKon(c *gin.Context) { id := c.Param("idxdaftar") - data, err := suratkontrol.GetDataSuratKontrolByID(id) + tipe := c.Param("tiperawat") + data, err := suratkontrol.GetDataSuratKontrolByID(id, tipe) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, &sk.MetadataString{ diff --git a/main.go b/main.go index 68624e7..4498451 100644 --- a/main.go +++ b/main.go @@ -1,105 +1,105 @@ -package main - -import ( - "bridging-rssa/config" - "bridging-rssa/handlers/bpjs" - icare "bridging-rssa/handlers/bpjs/i_care" - "bridging-rssa/handlers/bpjs/jadwal_dokter" - suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol" - "log" - - _ "bridging-rssa/docs" - - "github.com/gin-contrib/cors" - "github.com/gin-gonic/gin" - "github.com/joho/godotenv" - cron "github.com/robfig/cron/v3" - 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() - - scheduler := cron.New() - - defer scheduler.Stop() - - scheduler.AddFunc("0 2 * * *", func() { - log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===") - for { - success := jadwal_dokter.GetJadwalDokter() - if success { - log.Println("=== SCHEDULE GET JADWAL DOKTER DONE ===") - break - } - } - }) - - go scheduler.Start() - - v1 := r.Group("/api") - - subspesialis := v1.Group("/subspesialis") - { - subspesialis.GET("/", bpjs.GetAllSubspesialis) - } - - jadwalDokter := v1.Group("/jadwaldokter") - { - // jadwalDokter.GET("/", jadwal_dokter.GetJadwalDokter) - jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP) - // jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetSpesialisByDate) - jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate) - jadwalDokter.GET("/tanggal/:tanggal/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis) - jadwalDokter.GET("/tanggal/:tanggal/subspesialis/:subspesialis", jadwal_dokter.GetDokterBySubspesialis) - } - - suratKontrol := v1.Group("/suratkontrol") - { - suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon) - suratKontrol.GET("/idxdaftar/:idxdaftar", suratkontrol.GetDataSurKonByID) - suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) - suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) - suratKontrol.GET("/printSurKon/:idxdaftar", suratkontrol.PrintSurKon) - suratKontrol.POST("/cari", suratkontrol.CariPasienTPP) - suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) - suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) - suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol) - } - - iCare := v1.Group("/icare") - { - iCare.POST("/rs/validate", icare.GetFKRTL) - iCare.POST("/pcare/validate", icare.GetFKTP) - } - 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 : 8080") - err = r.Run(":8080") - if err != nil { - log.Fatal(err) - } -} +package main + +import ( + "bridging-rssa/config" + "bridging-rssa/handlers/bpjs" + icare "bridging-rssa/handlers/bpjs/i_care" + "bridging-rssa/handlers/bpjs/jadwal_dokter" + suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol" + "log" + + _ "bridging-rssa/docs" + + "github.com/gin-contrib/cors" + "github.com/gin-gonic/gin" + "github.com/joho/godotenv" + cron "github.com/robfig/cron/v3" + 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() + + scheduler := cron.New() + + defer scheduler.Stop() + + //scheduler.AddFunc("0 2 * * *", func() { + // log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===") + // for { + // success := jadwal_dokter.GetJadwalDokter() + // if success { + // log.Println("=== SCHEDULE GET JADWAL DOKTER DONE ===") + // break + // } + // } + //}) + + go scheduler.Start() + + v1 := r.Group("/api") + + subspesialis := v1.Group("/subspesialis") + { + subspesialis.GET("/", bpjs.GetAllSubspesialis) + } + + jadwalDokter := v1.Group("/jadwaldokter") + { + // jadwalDokter.GET("/", jadwal_dokter.GetJadwalDokter) + jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP) + // jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetSpesialisByDate) + jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate) + jadwalDokter.GET("/tanggal/:tanggal/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis) + jadwalDokter.GET("/tanggal/:tanggal/subspesialis/:subspesialis", jadwal_dokter.GetDokterBySubspesialis) + } + + suratKontrol := v1.Group("/suratkontrol") + { + suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon) + suratKontrol.GET("/idxdaftar/:idxdaftar/tiperawat/:tiperawat", suratkontrol.GetDataSurKonByID) + suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) + suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) + suratKontrol.GET("/printSurKon/:idxdaftar/tiperawat/:tiperawat", suratkontrol.PrintSurKon) + suratKontrol.POST("/cari", suratkontrol.CariPasienTPP) + suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) + suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) + suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol) + } + + iCare := v1.Group("/icare") + { + iCare.POST("/rs/validate", icare.GetFKRTL) + iCare.POST("/pcare/validate", icare.GetFKTP) + } + r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) + r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) + r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) + r.DELETE("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) + r.Use(cors.New(cors.Config{ + AllowOrigins: []string{"*"}, // or specific domains like "http://example.com" + AllowMethods: []string{"GET", "POST", "PUT", "DELETE"}, + AllowHeaders: []string{"Origin", "Content-Type"}, + AllowCredentials: true, + })) + + log.Println("JALAN DI PORT : 8081") + err = r.Run(":8081") + if err != nil { + log.Fatal(err) + } +} diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index 4587ba9..72e9a8f 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -217,6 +217,7 @@ type DataSuratKontrol struct { UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` TipeSurKon string `gorm:"column:Tipe_surat_kontrol" json:"Tipe_surat_kontrol"` UserUpdatedSurKon string `gorm:"column:User_updated_surat_kontrol" json:"User_updated_surat_kontrol"` + TipeRawat string `gorm:"column:Tipe_rawat" json:"Tipe_rawat"` } type ResponseSuratKontrolBySEP struct {