From 363d9d7847321b04879369c219fc4533bc3601666173427baa1ed16c4302d854 Mon Sep 17 00:00:00 2001 From: mirza Date: Wed, 2 Oct 2024 13:33:51 +0700 Subject: [PATCH] update insert and get dokter --- .env | 1 + database/satu_data/dokter/dokter.go | 3 +- .../satu_data/surat_kontrol/surat_kontrol.go | 14 ++-- go.mod | 1 + go.sum | 2 + handlers/bpjs/jadwal_dokter/jadwal_dokter.go | 1 + handlers/bpjs/surat_kontrol/response.go | 79 ++++++++++++++++-- handlers/bpjs/surat_kontrol/surat_kontrol.go | 83 ++++++++++++++++--- main.go | 9 ++ models/bpjs/surat_kontrol/kunjugan_pasien.go | 2 +- models/bpjs/surat_kontrol/surat_kontrol.go | 27 +++++- models/dokter/dokter.go | 2 + 12 files changed, 197 insertions(+), 27 deletions(-) diff --git a/.env b/.env index 8a2c4d6..09627c1 100644 --- a/.env +++ b/.env @@ -14,4 +14,5 @@ BASEURL_BPJS_DEV=https://apijkn-dev.bpjs-kesehatan.go.id/ SURAT_KONTROL_RS_DEV=vclaim-rest-dev INSERT_SURAT_KONTROL=/RencanaKontrol/insert UPDATE_SURAT_KONTROL=/RencanaKontrol/Update +DELETE_SURAT_KONTROL=/RencanaKontrol/Delete GET_NOMOR_SURAT_KONTROL=/RencanaKontrol/noSuratKontrol \ No newline at end of file diff --git a/database/satu_data/dokter/dokter.go b/database/satu_data/dokter/dokter.go index 688617a..ea9a295 100644 --- a/database/satu_data/dokter/dokter.go +++ b/database/satu_data/dokter/dokter.go @@ -54,7 +54,8 @@ func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) { 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 + ) AS gelarbelakang, + dp."HFIS_code" from "data_pegawai" dp left join data_ktp dk on dp."KTP" = dk.id WHERE dp.id in ?`, idDokter).Find(&namaDokter) diff --git a/database/satu_data/surat_kontrol/surat_kontrol.go b/database/satu_data/surat_kontrol/surat_kontrol.go index 6f186b9..658cc77 100644 --- a/database/satu_data/surat_kontrol/surat_kontrol.go +++ b/database/satu_data/surat_kontrol/surat_kontrol.go @@ -6,8 +6,8 @@ import ( "log" ) -func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjuganPasien, error) { - var kunjuganPasien *suratkontrol.KunjuganPasien +func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjunganPasien, error) { + var kunjunganPasien *suratkontrol.KunjunganPasien err := config.SatuDataDB.Debug().Raw(`select 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, @@ -32,10 +32,14 @@ func GetDataKunjunganPasien(idxdaftar string) (*suratkontrol.KunjuganPasien, err 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(&kunjuganPasien).Error + where dkp."IDXDAFTAR" = ?`, idxdaftar).First(&kunjunganPasien).Error if err != nil { log.Println(err) } - log.Println("Data Kunjungan Pasien : ", kunjuganPasien) - return kunjuganPasien, err + log.Println("Data Kunjungan Pasien : ", kunjunganPasien) + return kunjunganPasien, err +} + +func InsertDataSuratKontrol(reqInsert suratkontrol.InsertDataSuratKontrol) error { + return nil } diff --git a/go.mod b/go.mod index 4c17746..4874b1d 100644 --- a/go.mod +++ b/go.mod @@ -23,6 +23,7 @@ require ( github.com/cloudwego/iasm v0.2.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gabriel-vasile/mimetype v1.4.5 // indirect + github.com/gin-contrib/cors v1.7.2 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect diff --git a/go.sum b/go.sum index 2e8ae1b..9b93f1e 100644 --- a/go.sum +++ b/go.sum @@ -19,6 +19,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/gabriel-vasile/mimetype v1.4.5 h1:J7wGKdGu33ocBOhGy0z653k/lFKLFDPJMG8Gql0kxn4= github.com/gabriel-vasile/mimetype v1.4.5/go.mod h1:ibHel+/kbxn9x2407k1izTA1S81ku1z/DlgOW2QE0M4= +github.com/gin-contrib/cors v1.7.2 h1:oLDHxdg8W/XDoN/8zamqk/Drgt4oVZDvaV0YmvVICQw= +github.com/gin-contrib/cors v1.7.2/go.mod h1:SUJVARKgQ40dmrzgXEVxj2m7Ig1v1qIboQkPDTQ9t2E= github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= diff --git a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go index 7e7d1e3..06eaf8b 100644 --- a/handlers/bpjs/jadwal_dokter/jadwal_dokter.go +++ b/handlers/bpjs/jadwal_dokter/jadwal_dokter.go @@ -183,6 +183,7 @@ func GetDokterBySpesialis(c *gin.Context) { ID: v.ID, NamaLengkap: namaLengkap, Spesialis: idSpesialis, + HFISCode: v.HFISCode, }) } c.JSON(http.StatusOK, resDokter) diff --git a/handlers/bpjs/surat_kontrol/response.go b/handlers/bpjs/surat_kontrol/response.go index a80a422..e35cbe5 100644 --- a/handlers/bpjs/surat_kontrol/response.go +++ b/handlers/bpjs/surat_kontrol/response.go @@ -12,7 +12,72 @@ import ( "net/http" ) -func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestRencanaKontrol) (interface{}, error) { +func PostData(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (*suratkontrol.ResponseInsertSuratKontrol, error) { + log.Println("URL", url) + + reqMarshall, err := json.Marshal(request) + if err != nil { + log.Printf("Error json marshal: %v", err) + } + + log.Println("REQUEST: ", 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 + } + log.Println("RESPONSE: ", response) + + key := header.ConsID + header.SecretKey + header.TimeStamp + res, err := io.ReadAll(response.Body) + if err != nil { + fmt.Println(err) + return nil, err + } + + var resSuratKontrolRaw suratkontrol.ResponseRaw + err = json.Unmarshal([]byte(res), &resSuratKontrolRaw) + if err != nil { + log.Printf("Error Unmarshaling: %v", err) + return nil, err + } + + dataResp, err := docs.StringDecrypt(key, resSuratKontrolRaw.Response) + if err != nil { + log.Printf("Error Decrypt: %v", err) + log.Println("res: ", dataResp) + return nil, err + } + + var resSuratKontrol *suratkontrol.ResponseInsertSuratKontrol + + log.Println("dataresp: ", dataResp) + + err = json.Unmarshal([]byte(dataResp), &resSuratKontrol) + if err != nil { + log.Printf("Error Decode: %v", err) + return nil, err + } + + log.Println("res: ", resSuratKontrol) + + return resSuratKontrol, nil +} + +func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestRencanaKontrol) (interface{}, error) { log.Println("URL", url) requestBody := &suratkontrol.RequestHeaderRencanaKontrol{ @@ -24,7 +89,7 @@ func PostData(url string, header *config.Header, headers map[string]string, requ log.Printf("Error json marshal: %v", err) } - req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall)) + req, err := http.NewRequest("PUT", url, bytes.NewReader(reqMarshall)) if err != nil { log.Printf("Error creating request: %v", err) return nil, err @@ -79,19 +144,15 @@ func PostData(url string, header *config.Header, headers map[string]string, requ return resSuratKontrol, nil } -func ResponseUpdateSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestRencanaKontrol) (interface{}, error) { +func ResponseDeleteSuratKontrol(url string, header *config.Header, headers map[string]string, request *suratkontrol.RequestHeaderRencanaKontrol) (interface{}, error) { log.Println("URL", url) - requestBody := &suratkontrol.RequestHeaderRencanaKontrol{ - Request: *request, - } - - reqMarshall, err := json.Marshal(requestBody) + reqMarshall, err := json.Marshal(request) if err != nil { log.Printf("Error json marshal: %v", err) } - req, err := http.NewRequest("POST", url, bytes.NewReader(reqMarshall)) + req, err := http.NewRequest("PUT", url, bytes.NewReader(reqMarshall)) if err != nil { log.Printf("Error creating request: %v", err) return nil, err diff --git a/handlers/bpjs/surat_kontrol/surat_kontrol.go b/handlers/bpjs/surat_kontrol/surat_kontrol.go index 07efe3d..1ae0c8b 100644 --- a/handlers/bpjs/surat_kontrol/surat_kontrol.go +++ b/handlers/bpjs/surat_kontrol/surat_kontrol.go @@ -38,18 +38,20 @@ func InsertSuratKontrol(c *gin.Context) { "Content-Type": "Application/x-www-form-urlencoded", } log.Println("Headers : ", headers) - kunjuganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) } - reqSuratKontrol := &sk.RequestRencanaKontrol{ - NoSEP: kunjuganPasien.NomorSEP, - KodeDokter: kunjuganPasien.KodeHfisDokter, - PoliKontrol: req.KodePoli, - TglRencanaKontrol: req.Tanggal, - User: req.User, + reqSuratKontrol := &sk.RequestHeaderRencanaKontrol{ + Request: &sk.RequestRencanaKontrol{ + NoSEP: kunjunganPasien.NomorSEP, + KodeDokter: kunjunganPasien.KodeHfisDokter, + PoliKontrol: req.KodePoli, + TglRencanaKontrol: req.Tanggal, + User: req.User, + }, } res, err := PostData(url, header, headers, reqSuratKontrol) @@ -87,15 +89,15 @@ func UpdateSuratKontrol(c *gin.Context) { "Content-Type": "Application/x-www-form-urlencoded", } log.Println("Headers : ", headers) - kunjuganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) + kunjunganPasien, err := suratkontrol.GetDataKunjunganPasien(req.IDXDaftar) if err != nil { log.Println(err) c.JSON(http.StatusInternalServerError, err) } reqSuratKontrol := &sk.RequestRencanaKontrol{ - NoSEP: kunjuganPasien.NomorSEP, - KodeDokter: kunjuganPasien.KodeHfisDokter, + NoSEP: kunjunganPasien.NomorSEP, + KodeDokter: kunjunganPasien.KodeHfisDokter, PoliKontrol: req.KodePoli, TglRencanaKontrol: req.Tanggal, User: req.User, @@ -107,6 +109,67 @@ func UpdateSuratKontrol(c *gin.Context) { c.JSON(http.StatusInternalServerError, err) } + // reqInsert := &sk.InsertDataSuratKontrol{ + // ID: "", + // Status: "", + // Sort: 0, + // UserCreated: "", + // DateCreated: "", + // UserUpdated: "", + // DateUpdated: "", + // TglCetakSurKon: "", + // TglRencanaKontrol: "", + // NomorSurKon: "", + // KunjunganPasien: "", + // RuanganSurKon: 0, + // DPJPSurKon: "", + // StatusSurKon: 0, + // UserCreatedSurKon: "", + // } + + c.JSON(http.StatusOK, res) +} + +func DeleteSuratKontrol(c *gin.Context) { + baseUrl := os.Getenv("BASEURL_BPJS_DEV") + endpoint := os.Getenv("SURAT_KONTROL_RS_DEV") + param := os.Getenv("UPDATE_SURAT_KONTROL") + url := baseUrl + endpoint + param + + var req sk.RequestInsertRencanaKontrol + + err := c.Bind(req) + if err != nil { + log.Println(err) + c.JSON(http.StatusInternalServerError, err) + } + + conf := config.ConfigBpjs{} + + header := cfg.SetHeader(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) + + request := &sk.RequestHeaderRencanaKontrol{ + Request: &sk.RequestDeleteRencanaKontrol{ + NoSuratKontrol: "", + User: "", + }, + } + + res, err := ResponseDeleteSuratKontrol(url, header, headers, request) + if err != nil { + log.Printf("Error making external API request: %v", err) + c.JSON(http.StatusInternalServerError, err) + } + c.JSON(http.StatusOK, res) } diff --git a/main.go b/main.go index e22837a..ba7c344 100644 --- a/main.go +++ b/main.go @@ -9,6 +9,7 @@ import ( _ "bridging-rssa/docs" + "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" "github.com/joho/godotenv" swaggerFiles "github.com/swaggo/files" @@ -48,6 +49,8 @@ func main() { suratKontrol := v1.Group("/suratkontrol") { suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) + suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) + suratKontrol.DELETE("/delete", suratkontrol.UpdateSuratKontrol) suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) } @@ -55,6 +58,12 @@ func main() { 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 { diff --git a/models/bpjs/surat_kontrol/kunjugan_pasien.go b/models/bpjs/surat_kontrol/kunjugan_pasien.go index 1b1f027..9478c76 100644 --- a/models/bpjs/surat_kontrol/kunjugan_pasien.go +++ b/models/bpjs/surat_kontrol/kunjugan_pasien.go @@ -1,6 +1,6 @@ package suratkontrol -type KunjuganPasien struct { +type KunjunganPasien struct { IDXDaftar int `gorm:"column:idxdaftar" json:"idxdaftar"` NomorSEP string `gorm:"column:nomorsep" json:"nomorsep"` NamaKlinik string `gorm:"column:namaklinik" json:"namaklinik"` diff --git a/models/bpjs/surat_kontrol/surat_kontrol.go b/models/bpjs/surat_kontrol/surat_kontrol.go index b03bbc9..2fa2474 100644 --- a/models/bpjs/surat_kontrol/surat_kontrol.go +++ b/models/bpjs/surat_kontrol/surat_kontrol.go @@ -1,7 +1,7 @@ package suratkontrol type RequestHeaderRencanaKontrol struct { - Request RequestRencanaKontrol `json:"request"` + Request interface{} `json:"request"` } type RequestRencanaKontrol struct { @@ -13,6 +13,12 @@ type RequestRencanaKontrol struct { User string `json:"user"` } +type RequestDeleteRencanaKontrol struct { + TSuratKontrol string `json:"t_suratkontrol"` + NoSuratKontrol string `json:"noSuratKontrol"` + User string `json:"user"` +} + type ResponseRaw struct { Response string `json:"response"` MetaData Metadata `json:"metadata"` @@ -34,6 +40,7 @@ type ResponseInsertSuratKontrol struct { } type RequestInsertRencanaKontrol struct { + NoSEP string `json:"noSEP"` IDXDaftar string `json:"idxdaftar"` Tanggal string `json:"tanggal"` KodePoli string `json:"kodePoli"` @@ -87,3 +94,21 @@ type ProvPerujuk struct { NoRujukan string `json:"noRujukan"` TglRujukan string `json:"tglRujukan"` } + +type InsertDataSuratKontrol struct { + ID string `gorm:"column:id" json:"id"` + Status string `gorm:"column:status" json:"status"` + Sort int `gorm:"column:sort" json:"sort"` + UserCreated string `gorm:"column:user_created" json:"user_created"` + DateCreated string `gorm:"column:date_created" json:"date_created"` + UserUpdated string `gorm:"column:user_updated" json:"user_updated"` + DateUpdated string `gorm:"column:date_updated" json:"date_updated"` + TglCetakSurKon string `gorm:"column:Tanggal_cetak_surat_kontrol" json:"Tanggal_cetak_surat_kontrol"` + TglRencanaKontrol string `gorm:"column:Tanggal_rencana_kontrol" json:"Tanggal_rencana_kontrol"` + NomorSurKon string `gorm:"column:Nomor_surat_kontrol" json:"Nomor_surat_kontrol"` + KunjunganPasien string `gorm:"column:Kunjungan_pasien" json:"Kunjungan_pasien"` + RuanganSurKon int `gorm:"column:Ruangan_surat_kontrol" json:"Ruangan_surat_kontrol"` + DPJPSurKon string `gorm:"column:DPJP_surat_kontrol" json:"DPJP_surat_kontrol"` + StatusSurKon int `gorm:"column:Status_surat_kontrol" json:"Status_surat_kontrol"` + UserCreatedSurKon string `gorm:"column:User_created_surat_kontrol" json:"User_created_surat_kontrol"` +} diff --git a/models/dokter/dokter.go b/models/dokter/dokter.go index 3b0f884..6b37bc3 100644 --- a/models/dokter/dokter.go +++ b/models/dokter/dokter.go @@ -15,10 +15,12 @@ type NamaLengkap struct { GelarDepan string `gorm:"column:gelardepan" json:"gelardepan"` NamaLengkap string `gorm:"column:Nama_lengkap" json:"Nama_lengkap"` GelarBelakang string `gorm:"column:gelarbelakang" json:"gelarbelakang"` + HFISCode string `gorm:"column:HFIS_code" json:"HFIS_code"` } type ResponseDokter struct { ID string `json:"id"` NamaLengkap string `json:"nama_lengkap"` Spesialis int `json:"spesialis"` + HFISCode string `json:"HFIS_code"` }