feat (vclaim/bpjs/jkn): add several endpoint
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
package controlplan
|
||||
|
||||
type ReadListDto struct {
|
||||
PathValue1 string `json:"-"` // jenis kontrol
|
||||
PathValue2 string `json:"-"` // kode poli
|
||||
PathValue3 string `json:"-"` // tanggal
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package controlplan
|
||||
|
||||
type Response struct {
|
||||
MetaData MetaData `json:"metaData"`
|
||||
Response *ResponseItems `json:"response"` // nullable
|
||||
}
|
||||
|
||||
type MetaData struct {
|
||||
Code string `json:"code"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
type ResponseItems struct {
|
||||
List []DoctorSchedule `json:"list"`
|
||||
}
|
||||
|
||||
type DoctorSchedule struct {
|
||||
JadwalPraktek string `json:"jadwalPraktek"`
|
||||
Kapasitas string `json:"kapasitas"`
|
||||
KodeDokter string `json:"kodeDokter"`
|
||||
NamaDokter string `json:"namaDokter"`
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package referral
|
||||
|
||||
type ReadDetailDto struct {
|
||||
Number *string `json:"number"` // nomor rujukan
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
package referral
|
||||
|
||||
type Response struct {
|
||||
MetaData MetaData `json:"metaData"`
|
||||
Response *ReferralDetail `json:"response"` // nullable
|
||||
}
|
||||
|
||||
type MetaData struct {
|
||||
Code string `json:"code"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
type ReferralDetail struct {
|
||||
AsalFaskes string `json:"asalFaskes"`
|
||||
Rujukan RujukanDetail `json:"rujukan"`
|
||||
}
|
||||
|
||||
type RujukanDetail struct {
|
||||
Diagnosa Diagnosa `json:"diagnosa"`
|
||||
Keluhan *string `json:"keluhan"` // nullable
|
||||
NoKunjungan string `json:"noKunjungan"`
|
||||
Pelayanan Pelayanan `json:"pelayanan"`
|
||||
Peserta Peserta `json:"peserta"`
|
||||
PoliRujukan Poli `json:"poliRujukan"`
|
||||
ProvPerujuk Provider `json:"provPerujuk"`
|
||||
TglKunjungan string `json:"tglKunjungan"`
|
||||
}
|
||||
|
||||
type Diagnosa struct {
|
||||
Kode string `json:"kode"`
|
||||
Nama string `json:"nama"`
|
||||
}
|
||||
|
||||
type Pelayanan struct {
|
||||
Kode string `json:"kode"`
|
||||
Nama string `json:"nama"`
|
||||
}
|
||||
|
||||
type Peserta struct {
|
||||
Cob Cob `json:"cob"`
|
||||
HakKelas KeteranganKode `json:"hakKelas"`
|
||||
Informasi Informasi `json:"informasi"`
|
||||
JenisPeserta KeteranganKode `json:"jenisPeserta"`
|
||||
Mr Mr `json:"mr"`
|
||||
Nama string `json:"nama"`
|
||||
Nik string `json:"nik"`
|
||||
NoKartu string `json:"noKartu"`
|
||||
Pisa string `json:"pisa"`
|
||||
ProvUmum Provider `json:"provUmum"`
|
||||
Sex string `json:"sex"`
|
||||
StatusPeserta KeteranganKode `json:"statusPeserta"`
|
||||
TglCetakKartu string `json:"tglCetakKartu"`
|
||||
TglLahir string `json:"tglLahir"`
|
||||
TglTAT string `json:"tglTAT"`
|
||||
TglTMT string `json:"tglTMT"`
|
||||
Umur Umur `json:"umur"`
|
||||
}
|
||||
|
||||
type Cob struct {
|
||||
NmAsuransi *string `json:"nmAsuransi"` // nullable
|
||||
NoAsuransi *string `json:"noAsuransi"`
|
||||
TglTAT *string `json:"tglTAT"`
|
||||
TglTMT *string `json:"tglTMT"`
|
||||
}
|
||||
|
||||
type KeteranganKode struct {
|
||||
Keterangan string `json:"keterangan"`
|
||||
Kode string `json:"kode"`
|
||||
}
|
||||
|
||||
type Informasi struct {
|
||||
Dinsos *string `json:"dinsos"`
|
||||
ESep *string `json:"eSEP"`
|
||||
NoSKTM *string `json:"noSKTM"`
|
||||
ProlanisPRB *string `json:"prolanisPRB"`
|
||||
}
|
||||
|
||||
type Mr struct {
|
||||
NoMR string `json:"noMR"`
|
||||
NoTelepon string `json:"noTelepon"`
|
||||
}
|
||||
|
||||
type Provider struct {
|
||||
Kode string `json:"kdProvider" json:"kode"` // API sometimes uses different keys
|
||||
NmProvider string `json:"nmProvider" json:"nama"`
|
||||
}
|
||||
|
||||
type Poli struct {
|
||||
Kode string `json:"kode"`
|
||||
Nama string `json:"nama"`
|
||||
}
|
||||
|
||||
type Umur struct {
|
||||
UmurSaatPelayanan string `json:"umurSaatPelayanan"`
|
||||
UmurSekarang string `json:"umurSekarang"`
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package controlplan
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
e "simrs-vx/internal/domain/bpjs-entities/control-plan"
|
||||
u "simrs-vx/internal/use-case/bpjs-use-case/control-plan"
|
||||
|
||||
d "github.com/karincake/dodol"
|
||||
rw "github.com/karincake/risoles"
|
||||
)
|
||||
|
||||
func GetList(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
pValue1 := rw.ValidateString(w, "controlType", r.PathValue("controlType"))
|
||||
if pValue1 == "" {
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "controlType is required"}, nil)
|
||||
}
|
||||
pValue2 := rw.ValidateString(w, "polyCode", r.PathValue("polyCode"))
|
||||
if pValue2 == "" {
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "polyCode is required"}, nil)
|
||||
}
|
||||
pValue3 := rw.ValidateString(w, "date", r.PathValue("date"))
|
||||
if pValue3 == "" {
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "date is required"}, nil)
|
||||
}
|
||||
dto.PathValue1 = pValue1
|
||||
dto.PathValue2 = pValue2
|
||||
dto.PathValue3 = pValue3
|
||||
res, err := u.ReadList(dto)
|
||||
rw.DataResponse(w, res, err)
|
||||
}
|
||||
@@ -125,9 +125,11 @@ import (
|
||||
"simrs-vx/internal/interface/main-handler/home"
|
||||
|
||||
/******************** BPJS ********************/
|
||||
controlplan "simrs-vx/internal/interface/main-handler/control-plan"
|
||||
member "simrs-vx/internal/interface/main-handler/member"
|
||||
monitoring "simrs-vx/internal/interface/main-handler/monitoring"
|
||||
reference "simrs-vx/internal/interface/main-handler/reference"
|
||||
referral "simrs-vx/internal/interface/main-handler/referral"
|
||||
vclaimsep "simrs-vx/internal/interface/main-handler/vclaim-sep"
|
||||
vclaimsephist "simrs-vx/internal/interface/main-handler/vclaim-sep-hist"
|
||||
vclaimsepprint "simrs-vx/internal/interface/main-handler/vclaim-sep-print"
|
||||
@@ -382,9 +384,9 @@ func SetRoutes() http.Handler {
|
||||
|
||||
/******************** BPJS ********************/
|
||||
hk.GroupRoutes("/v1/vclaim-sep", r, hk.MapHandlerFunc{
|
||||
"POST /": vclaimsep.O.Create,
|
||||
"GET /{id}": vclaimsep.O.GetDetail,
|
||||
"DELETE /{id}": vclaimsep.O.Delete,
|
||||
"POST /": vclaimsep.O.Create,
|
||||
"GET /{number}": vclaimsep.O.GetDetail,
|
||||
"DELETE /{number}": vclaimsep.O.Delete,
|
||||
})
|
||||
|
||||
hk.GroupRoutes("/v1/vclaim-sep-hist", r, hk.MapHandlerFunc{
|
||||
@@ -417,6 +419,14 @@ func SetRoutes() http.Handler {
|
||||
"GET /hist/{cardNumber}/{startDate}/{endDate}": monitoring.GetListHist,
|
||||
})
|
||||
|
||||
hk.GroupRoutes("/v1/control-plan", r, hk.MapHandlerFunc{
|
||||
"GET /{controlType}/{polyCode}/{date}": controlplan.GetList,
|
||||
})
|
||||
|
||||
hk.GroupRoutes("/v1/referral", r, hk.MapHandlerFunc{
|
||||
"GET /{number}": referral.GetList,
|
||||
})
|
||||
|
||||
/////
|
||||
return cmw.SetCors(handlerlogger.SetLog(r))
|
||||
}
|
||||
|
||||
@@ -14,11 +14,11 @@ func GetListByBpjsNumber(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
pValue1 := rw.ValidateString(w, "cardNumber", r.PathValue("cardNumber"))
|
||||
if pValue1 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "cardNumber is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "cardNumber is required"}, nil)
|
||||
}
|
||||
pValue2 := rw.ValidateString(w, "sepDate", r.PathValue("sepDate"))
|
||||
if pValue2 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "sepDate is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "sepDate is required"}, nil)
|
||||
}
|
||||
dto.ReferenceType = e.RTBpjs
|
||||
dto.PathValue1 = pValue1
|
||||
@@ -31,11 +31,11 @@ func GetListByNik(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
pValue1 := rw.ValidateString(w, "nik", r.PathValue("nik"))
|
||||
if pValue1 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "nik is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "nik is required"}, nil)
|
||||
}
|
||||
pValue2 := rw.ValidateString(w, "sepDate", r.PathValue("sepDate"))
|
||||
if pValue2 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "sepDate is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "sepDate is required"}, nil)
|
||||
}
|
||||
dto.ReferenceType = e.RTNik
|
||||
dto.PathValue1 = pValue1
|
||||
|
||||
@@ -14,11 +14,11 @@ func GetListVisit(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
pValue1 := rw.ValidateString(w, "date", r.PathValue("date"))
|
||||
if pValue1 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "date is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "date is required"}, nil)
|
||||
}
|
||||
pValue2 := rw.ValidateString(w, "serviceType", r.PathValue("serviceType"))
|
||||
if pValue2 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "serviceType is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "serviceType is required"}, nil)
|
||||
}
|
||||
dto.ReferenceType = e.RTVisit
|
||||
dto.PathValue1 = pValue1
|
||||
@@ -31,15 +31,15 @@ func GetListHist(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
pValue1 := rw.ValidateString(w, "cardNumber", r.PathValue("cardNumber"))
|
||||
if pValue1 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "cardNumber is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "cardNumber is required"}, nil)
|
||||
}
|
||||
pValue2 := rw.ValidateString(w, "startDate", r.PathValue("startDate"))
|
||||
if pValue2 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "startDate is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "startDate is required"}, nil)
|
||||
}
|
||||
pValue3 := rw.ValidateString(w, "endDate", r.PathValue("endDate"))
|
||||
if pValue3 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "endDate is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "endDate is required"}, nil)
|
||||
}
|
||||
dto.ReferenceType = e.RTHist
|
||||
dto.PathValue1 = pValue1
|
||||
|
||||
@@ -21,7 +21,7 @@ func GetListCities(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
pValue := rw.ValidateString(w, "provinceCode", r.PathValue("provinceCode"))
|
||||
if pValue == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "provinceCode is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "provinceCode is required"}, nil)
|
||||
}
|
||||
dto.ReferenceType = e.RTCities
|
||||
dto.PathValue1 = pValue
|
||||
@@ -33,7 +33,7 @@ func GetListDistrict(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
pValue := rw.ValidateString(w, "regencyCode", r.PathValue("regencyCode"))
|
||||
if pValue == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "regencyCode is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "regencyCode is required"}, nil)
|
||||
}
|
||||
dto.ReferenceType = e.RTDistrict
|
||||
dto.PathValue1 = pValue
|
||||
@@ -45,7 +45,7 @@ func GetListDiagnose(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
pValue := rw.ValidateString(w, "keyword", r.PathValue("keyword"))
|
||||
if pValue == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "keyword is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "keyword is required"}, nil)
|
||||
}
|
||||
dto.ReferenceType = e.RTDiagnose
|
||||
dto.PathValue1 = pValue
|
||||
@@ -64,7 +64,7 @@ func GetListMedicinePrb(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
pValue := rw.ValidateString(w, "keyword", r.PathValue("keyword"))
|
||||
if pValue == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "keyword is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "keyword is required"}, nil)
|
||||
}
|
||||
dto.ReferenceType = e.RTMedicinePrb
|
||||
dto.PathValue1 = pValue
|
||||
@@ -76,7 +76,7 @@ func GetListUnit(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
pValue := rw.ValidateString(w, "unitCode", r.PathValue("unitCode"))
|
||||
if pValue == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "unitCode is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "unitCode is required"}, nil)
|
||||
}
|
||||
dto.ReferenceType = e.RTUnit
|
||||
dto.PathValue1 = pValue
|
||||
@@ -88,11 +88,11 @@ func GetListHealthcare(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
pValue1 := rw.ValidateString(w, "healthcare", r.PathValue("healthcare"))
|
||||
if pValue1 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "healthcare is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "healthcare is required"}, nil)
|
||||
}
|
||||
pValue2 := rw.ValidateString(w, "healthcareType", r.PathValue("healthcareType"))
|
||||
if pValue2 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "healthcareType is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "healthcareType is required"}, nil)
|
||||
}
|
||||
dto.ReferenceType = e.RTHealthcare
|
||||
dto.PathValue1 = pValue1
|
||||
@@ -105,15 +105,15 @@ func GetListDoctor(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
pValue1 := rw.ValidateString(w, "serviceType", r.PathValue("serviceType"))
|
||||
if pValue1 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "serviceType is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "serviceType is required"}, nil)
|
||||
}
|
||||
pValue2 := rw.ValidateString(w, "serviceDate", r.PathValue("serviceDate"))
|
||||
if pValue2 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "serviceDate is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "serviceDate is required"}, nil)
|
||||
}
|
||||
pValue3 := rw.ValidateString(w, "specialistCode", r.PathValue("specialistCode"))
|
||||
if pValue3 == "" {
|
||||
rw.WriteJSON(w, http.StatusUnauthorized, d.IS{"message": "specialistCode is required"}, nil)
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "specialistCode is required"}, nil)
|
||||
}
|
||||
dto.PathValue1 = pValue1
|
||||
dto.PathValue2 = pValue2
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package referral
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
e "simrs-vx/internal/domain/bpjs-entities/referral"
|
||||
u "simrs-vx/internal/use-case/bpjs-use-case/referral"
|
||||
|
||||
d "github.com/karincake/dodol"
|
||||
rw "github.com/karincake/risoles"
|
||||
)
|
||||
|
||||
func GetList(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadDetailDto{}
|
||||
number := rw.ValidateString(w, "number", r.PathValue("number"))
|
||||
if number == "" {
|
||||
rw.WriteJSON(w, http.StatusBadRequest, d.IS{"message": "number is required"}, nil)
|
||||
}
|
||||
dto.Number = &number
|
||||
res, err := u.ReadDetail(dto)
|
||||
rw.DataResponse(w, res, err)
|
||||
}
|
||||
@@ -30,12 +30,12 @@ func (obj myBase) Create(w http.ResponseWriter, r *http.Request) {
|
||||
// }
|
||||
|
||||
func (obj myBase) GetDetail(w http.ResponseWriter, r *http.Request) {
|
||||
id := rw.ValidateInt(w, "id", r.PathValue("id"))
|
||||
if id <= 0 {
|
||||
number := rw.ValidateString(w, "number", r.PathValue("number"))
|
||||
if number <= "" {
|
||||
return
|
||||
}
|
||||
dto := e.ReadDetailDto{}
|
||||
dto.Id = uint(id)
|
||||
dto.Number = &number
|
||||
res, err := u.ReadDetail(dto)
|
||||
rw.DataResponse(w, res, err)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package controlplan
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
e "simrs-vx/internal/domain/bpjs-entities/control-plan"
|
||||
ibpjs "simrs-vx/internal/infra/bpjs"
|
||||
)
|
||||
|
||||
func endpointMapper(input *e.ReadListDto) string {
|
||||
return fmt.Sprintf("%sRencanaKontrol/jadwalDokter?jeniskontrol=%s&kodepoli=%s&tanggalkontrol=%s", ibpjs.O.BaseUrl, input.PathValue1, input.PathValue2, input.PathValue3)
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package controlplan
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
e "simrs-vx/internal/domain/bpjs-entities/control-plan"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func ReadList(input *e.ReadListDto, data *e.Response, tx *gorm.DB) error {
|
||||
endpoint := endpointMapper(input)
|
||||
req, err := http.NewRequest("GET", endpoint, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(body, &data); err != nil {
|
||||
return fmt.Errorf("failed to parse response JSON: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package referral
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
e "simrs-vx/internal/domain/bpjs-entities/referral"
|
||||
ibpjs "simrs-vx/internal/infra/bpjs"
|
||||
)
|
||||
|
||||
func endpointMapper(input *e.ReadDetailDto) string {
|
||||
return fmt.Sprintf("%sRujukan/RS/%s", ibpjs.O.BaseUrl, *input.Number)
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package referral
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
e "simrs-vx/internal/domain/bpjs-entities/referral"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func ReadDetail(input *e.ReadDetailDto, data *e.Response, tx *gorm.DB) error {
|
||||
endpoint := endpointMapper(input)
|
||||
req, err := http.NewRequest("GET", endpoint, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(body, &data); err != nil {
|
||||
return fmt.Errorf("failed to parse response JSON: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -66,7 +66,7 @@ func CreateSep(input *e.CreateDto, data *e.VclaimSep, tx *gorm.DB) error {
|
||||
}
|
||||
|
||||
func ReadDetailSep(input *e.ReadDetailDto, data *e.VclaimSep, tx *gorm.DB) error {
|
||||
endpoint := fmt.Sprintf("sep/%s", *data.Number)
|
||||
endpoint := fmt.Sprintf("sep/%s", input.Number)
|
||||
req, err := http.NewRequest("GET", ibpjs.O.BaseUrl+endpoint, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -96,7 +96,7 @@ func ReadDetailSep(input *e.ReadDetailDto, data *e.VclaimSep, tx *gorm.DB) error
|
||||
|
||||
func DeleteSep(input *e.DeleteDto, data *e.VclaimSep, tx *gorm.DB) error {
|
||||
payload := e.SepDeleteRequest{}
|
||||
payload.Request.TSep.NoSep = *data.Number
|
||||
payload.Request.TSep.NoSep = *input.Number
|
||||
payload.Request.TSep.User = "Coba Ws"
|
||||
|
||||
jsonPayload, err := json.Marshal(payload)
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package controlplan
|
||||
|
||||
import (
|
||||
e "simrs-vx/internal/domain/bpjs-entities/control-plan"
|
||||
|
||||
dg "github.com/karincake/apem/db-gorm-pg"
|
||||
|
||||
pl "simrs-vx/pkg/logger"
|
||||
pu "simrs-vx/pkg/use-case-helper"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
const source = "control-plan"
|
||||
|
||||
func ReadList(input e.ReadListDto) (*e.Response, error) {
|
||||
var data e.Response
|
||||
var err error
|
||||
|
||||
event := pl.Event{
|
||||
Feature: "ReadList",
|
||||
Source: source,
|
||||
}
|
||||
|
||||
// Start log
|
||||
pl.SetLogInfo(&event, input, "started", "readList")
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
mwRunner := newMiddlewareRunner(&event, tx)
|
||||
mwRunner.setMwType(pu.MWTPre)
|
||||
// Run pre-middleware
|
||||
if err := mwRunner.RunReadListMiddleware(readListPreMw, &input, &data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mwRunner.setMwType(pu.MWTPost)
|
||||
// Run post-middleware
|
||||
if err := mwRunner.RunReadListMiddleware(readListPostMw, &input, &data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &data, nil
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package controlplan
|
||||
|
||||
import (
|
||||
e "simrs-vx/internal/domain/bpjs-entities/control-plan"
|
||||
pl "simrs-vx/pkg/logger"
|
||||
pu "simrs-vx/pkg/use-case-helper"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type middlewareRunner struct {
|
||||
Event *pl.Event
|
||||
Tx *gorm.DB
|
||||
MwType pu.MWType
|
||||
}
|
||||
|
||||
// NewMiddlewareExecutor creates a new middleware executor
|
||||
func newMiddlewareRunner(event *pl.Event, tx *gorm.DB) *middlewareRunner {
|
||||
return &middlewareRunner{
|
||||
Event: event,
|
||||
Tx: tx,
|
||||
}
|
||||
}
|
||||
|
||||
func (me *middlewareRunner) RunReadListMiddleware(middlewares []readListMw, input *e.ReadListDto, data *e.Response) error {
|
||||
for _, middleware := range middlewares {
|
||||
logData := pu.GetLogData(input, data)
|
||||
|
||||
pl.SetLogInfo(me.Event, logData, "started", middleware.Name)
|
||||
|
||||
if err := middleware.Func(input, data, me.Tx); err != nil {
|
||||
return pu.HandleMiddlewareError(me.Event, string(me.MwType), middleware.Name, logData, err)
|
||||
}
|
||||
|
||||
pl.SetLogInfo(me.Event, nil, "complete")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (me *middlewareRunner) setMwType(mwType pu.MWType) {
|
||||
me.MwType = mwType
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package controlplan
|
||||
|
||||
import (
|
||||
pcp "simrs-vx/internal/use-case/bpjs-plugin/control-plan"
|
||||
)
|
||||
|
||||
func init() {
|
||||
readListPreMw = append(readListPreMw,
|
||||
readListMw{Name: "readList-control-plan", Func: pcp.ReadList},
|
||||
)
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
member is peserta
|
||||
*/
|
||||
package controlplan
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
|
||||
e "simrs-vx/internal/domain/bpjs-entities/control-plan"
|
||||
)
|
||||
|
||||
type readListMw struct {
|
||||
Name string
|
||||
Func func(input *e.ReadListDto, data *e.Response, tx *gorm.DB) error
|
||||
}
|
||||
|
||||
var readListPreMw []readListMw // ..
|
||||
var readListPostMw []readListMw // ..
|
||||
@@ -0,0 +1,50 @@
|
||||
package referral
|
||||
|
||||
import (
|
||||
e "simrs-vx/internal/domain/bpjs-entities/referral"
|
||||
|
||||
dg "github.com/karincake/apem/db-gorm-pg"
|
||||
|
||||
pl "simrs-vx/pkg/logger"
|
||||
pu "simrs-vx/pkg/use-case-helper"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
const source = "referral"
|
||||
|
||||
func ReadDetail(input e.ReadDetailDto) (*e.Response, error) {
|
||||
var data e.Response
|
||||
var err error
|
||||
|
||||
event := pl.Event{
|
||||
Feature: "ReadDetail",
|
||||
Source: source,
|
||||
}
|
||||
|
||||
// Start log
|
||||
pl.SetLogInfo(&event, input, "started", "readDetail")
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
mwRunner := newMiddlewareRunner(&event, tx)
|
||||
mwRunner.setMwType(pu.MWTPre)
|
||||
// Run pre-middleware
|
||||
if err := mwRunner.RunReadDetailMiddleware(readDetailPreMw, &input, &data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mwRunner.setMwType(pu.MWTPost)
|
||||
// Run post-middleware
|
||||
if err := mwRunner.RunReadDetailMiddleware(readDetailPostMw, &input, &data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &data, nil
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package referral
|
||||
|
||||
import (
|
||||
e "simrs-vx/internal/domain/bpjs-entities/referral"
|
||||
pl "simrs-vx/pkg/logger"
|
||||
pu "simrs-vx/pkg/use-case-helper"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type middlewareRunner struct {
|
||||
Event *pl.Event
|
||||
Tx *gorm.DB
|
||||
MwType pu.MWType
|
||||
}
|
||||
|
||||
// NewMiddlewareExecutor creates a new middleware executor
|
||||
func newMiddlewareRunner(event *pl.Event, tx *gorm.DB) *middlewareRunner {
|
||||
return &middlewareRunner{
|
||||
Event: event,
|
||||
Tx: tx,
|
||||
}
|
||||
}
|
||||
|
||||
func (me *middlewareRunner) RunReadDetailMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.Response) error {
|
||||
for _, middleware := range middlewares {
|
||||
logData := pu.GetLogData(input, data)
|
||||
|
||||
pl.SetLogInfo(me.Event, logData, "started", middleware.Name)
|
||||
|
||||
if err := middleware.Func(input, data, me.Tx); err != nil {
|
||||
return pu.HandleMiddlewareError(me.Event, string(me.MwType), middleware.Name, logData, err)
|
||||
}
|
||||
|
||||
pl.SetLogInfo(me.Event, nil, "complete")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (me *middlewareRunner) setMwType(mwType pu.MWType) {
|
||||
me.MwType = mwType
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package referral
|
||||
|
||||
import (
|
||||
pr "simrs-vx/internal/use-case/bpjs-plugin/referral"
|
||||
)
|
||||
|
||||
func init() {
|
||||
readDetailPreMw = append(readDetailPreMw,
|
||||
readDetailMw{Name: "read-detail-referral", Func: pr.ReadDetail},
|
||||
)
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
member is peserta
|
||||
*/
|
||||
package referral
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
|
||||
e "simrs-vx/internal/domain/bpjs-entities/referral"
|
||||
)
|
||||
|
||||
type readDetailMw struct {
|
||||
Name string
|
||||
Func func(input *e.ReadDetailDto, data *e.Response, tx *gorm.DB) error
|
||||
}
|
||||
|
||||
var readDetailPreMw []readDetailMw
|
||||
var readDetailPostMw []readDetailMw
|
||||
Reference in New Issue
Block a user