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"
|
"simrs-vx/internal/interface/main-handler/home"
|
||||||
|
|
||||||
/******************** BPJS ********************/
|
/******************** BPJS ********************/
|
||||||
|
controlplan "simrs-vx/internal/interface/main-handler/control-plan"
|
||||||
member "simrs-vx/internal/interface/main-handler/member"
|
member "simrs-vx/internal/interface/main-handler/member"
|
||||||
monitoring "simrs-vx/internal/interface/main-handler/monitoring"
|
monitoring "simrs-vx/internal/interface/main-handler/monitoring"
|
||||||
reference "simrs-vx/internal/interface/main-handler/reference"
|
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"
|
vclaimsep "simrs-vx/internal/interface/main-handler/vclaim-sep"
|
||||||
vclaimsephist "simrs-vx/internal/interface/main-handler/vclaim-sep-hist"
|
vclaimsephist "simrs-vx/internal/interface/main-handler/vclaim-sep-hist"
|
||||||
vclaimsepprint "simrs-vx/internal/interface/main-handler/vclaim-sep-print"
|
vclaimsepprint "simrs-vx/internal/interface/main-handler/vclaim-sep-print"
|
||||||
@@ -382,9 +384,9 @@ func SetRoutes() http.Handler {
|
|||||||
|
|
||||||
/******************** BPJS ********************/
|
/******************** BPJS ********************/
|
||||||
hk.GroupRoutes("/v1/vclaim-sep", r, hk.MapHandlerFunc{
|
hk.GroupRoutes("/v1/vclaim-sep", r, hk.MapHandlerFunc{
|
||||||
"POST /": vclaimsep.O.Create,
|
"POST /": vclaimsep.O.Create,
|
||||||
"GET /{id}": vclaimsep.O.GetDetail,
|
"GET /{number}": vclaimsep.O.GetDetail,
|
||||||
"DELETE /{id}": vclaimsep.O.Delete,
|
"DELETE /{number}": vclaimsep.O.Delete,
|
||||||
})
|
})
|
||||||
|
|
||||||
hk.GroupRoutes("/v1/vclaim-sep-hist", r, hk.MapHandlerFunc{
|
hk.GroupRoutes("/v1/vclaim-sep-hist", r, hk.MapHandlerFunc{
|
||||||
@@ -417,6 +419,14 @@ func SetRoutes() http.Handler {
|
|||||||
"GET /hist/{cardNumber}/{startDate}/{endDate}": monitoring.GetListHist,
|
"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))
|
return cmw.SetCors(handlerlogger.SetLog(r))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ func GetListByBpjsNumber(w http.ResponseWriter, r *http.Request) {
|
|||||||
dto := e.ReadListDto{}
|
dto := e.ReadListDto{}
|
||||||
pValue1 := rw.ValidateString(w, "cardNumber", r.PathValue("cardNumber"))
|
pValue1 := rw.ValidateString(w, "cardNumber", r.PathValue("cardNumber"))
|
||||||
if pValue1 == "" {
|
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"))
|
pValue2 := rw.ValidateString(w, "sepDate", r.PathValue("sepDate"))
|
||||||
if pValue2 == "" {
|
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.ReferenceType = e.RTBpjs
|
||||||
dto.PathValue1 = pValue1
|
dto.PathValue1 = pValue1
|
||||||
@@ -31,11 +31,11 @@ func GetListByNik(w http.ResponseWriter, r *http.Request) {
|
|||||||
dto := e.ReadListDto{}
|
dto := e.ReadListDto{}
|
||||||
pValue1 := rw.ValidateString(w, "nik", r.PathValue("nik"))
|
pValue1 := rw.ValidateString(w, "nik", r.PathValue("nik"))
|
||||||
if pValue1 == "" {
|
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"))
|
pValue2 := rw.ValidateString(w, "sepDate", r.PathValue("sepDate"))
|
||||||
if pValue2 == "" {
|
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.ReferenceType = e.RTNik
|
||||||
dto.PathValue1 = pValue1
|
dto.PathValue1 = pValue1
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ func GetListVisit(w http.ResponseWriter, r *http.Request) {
|
|||||||
dto := e.ReadListDto{}
|
dto := e.ReadListDto{}
|
||||||
pValue1 := rw.ValidateString(w, "date", r.PathValue("date"))
|
pValue1 := rw.ValidateString(w, "date", r.PathValue("date"))
|
||||||
if pValue1 == "" {
|
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"))
|
pValue2 := rw.ValidateString(w, "serviceType", r.PathValue("serviceType"))
|
||||||
if pValue2 == "" {
|
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.ReferenceType = e.RTVisit
|
||||||
dto.PathValue1 = pValue1
|
dto.PathValue1 = pValue1
|
||||||
@@ -31,15 +31,15 @@ func GetListHist(w http.ResponseWriter, r *http.Request) {
|
|||||||
dto := e.ReadListDto{}
|
dto := e.ReadListDto{}
|
||||||
pValue1 := rw.ValidateString(w, "cardNumber", r.PathValue("cardNumber"))
|
pValue1 := rw.ValidateString(w, "cardNumber", r.PathValue("cardNumber"))
|
||||||
if pValue1 == "" {
|
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"))
|
pValue2 := rw.ValidateString(w, "startDate", r.PathValue("startDate"))
|
||||||
if pValue2 == "" {
|
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"))
|
pValue3 := rw.ValidateString(w, "endDate", r.PathValue("endDate"))
|
||||||
if pValue3 == "" {
|
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.ReferenceType = e.RTHist
|
||||||
dto.PathValue1 = pValue1
|
dto.PathValue1 = pValue1
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ func GetListCities(w http.ResponseWriter, r *http.Request) {
|
|||||||
dto := e.ReadListDto{}
|
dto := e.ReadListDto{}
|
||||||
pValue := rw.ValidateString(w, "provinceCode", r.PathValue("provinceCode"))
|
pValue := rw.ValidateString(w, "provinceCode", r.PathValue("provinceCode"))
|
||||||
if pValue == "" {
|
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.ReferenceType = e.RTCities
|
||||||
dto.PathValue1 = pValue
|
dto.PathValue1 = pValue
|
||||||
@@ -33,7 +33,7 @@ func GetListDistrict(w http.ResponseWriter, r *http.Request) {
|
|||||||
dto := e.ReadListDto{}
|
dto := e.ReadListDto{}
|
||||||
pValue := rw.ValidateString(w, "regencyCode", r.PathValue("regencyCode"))
|
pValue := rw.ValidateString(w, "regencyCode", r.PathValue("regencyCode"))
|
||||||
if pValue == "" {
|
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.ReferenceType = e.RTDistrict
|
||||||
dto.PathValue1 = pValue
|
dto.PathValue1 = pValue
|
||||||
@@ -45,7 +45,7 @@ func GetListDiagnose(w http.ResponseWriter, r *http.Request) {
|
|||||||
dto := e.ReadListDto{}
|
dto := e.ReadListDto{}
|
||||||
pValue := rw.ValidateString(w, "keyword", r.PathValue("keyword"))
|
pValue := rw.ValidateString(w, "keyword", r.PathValue("keyword"))
|
||||||
if pValue == "" {
|
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.ReferenceType = e.RTDiagnose
|
||||||
dto.PathValue1 = pValue
|
dto.PathValue1 = pValue
|
||||||
@@ -64,7 +64,7 @@ func GetListMedicinePrb(w http.ResponseWriter, r *http.Request) {
|
|||||||
dto := e.ReadListDto{}
|
dto := e.ReadListDto{}
|
||||||
pValue := rw.ValidateString(w, "keyword", r.PathValue("keyword"))
|
pValue := rw.ValidateString(w, "keyword", r.PathValue("keyword"))
|
||||||
if pValue == "" {
|
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.ReferenceType = e.RTMedicinePrb
|
||||||
dto.PathValue1 = pValue
|
dto.PathValue1 = pValue
|
||||||
@@ -76,7 +76,7 @@ func GetListUnit(w http.ResponseWriter, r *http.Request) {
|
|||||||
dto := e.ReadListDto{}
|
dto := e.ReadListDto{}
|
||||||
pValue := rw.ValidateString(w, "unitCode", r.PathValue("unitCode"))
|
pValue := rw.ValidateString(w, "unitCode", r.PathValue("unitCode"))
|
||||||
if pValue == "" {
|
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.ReferenceType = e.RTUnit
|
||||||
dto.PathValue1 = pValue
|
dto.PathValue1 = pValue
|
||||||
@@ -88,11 +88,11 @@ func GetListHealthcare(w http.ResponseWriter, r *http.Request) {
|
|||||||
dto := e.ReadListDto{}
|
dto := e.ReadListDto{}
|
||||||
pValue1 := rw.ValidateString(w, "healthcare", r.PathValue("healthcare"))
|
pValue1 := rw.ValidateString(w, "healthcare", r.PathValue("healthcare"))
|
||||||
if pValue1 == "" {
|
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"))
|
pValue2 := rw.ValidateString(w, "healthcareType", r.PathValue("healthcareType"))
|
||||||
if pValue2 == "" {
|
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.ReferenceType = e.RTHealthcare
|
||||||
dto.PathValue1 = pValue1
|
dto.PathValue1 = pValue1
|
||||||
@@ -105,15 +105,15 @@ func GetListDoctor(w http.ResponseWriter, r *http.Request) {
|
|||||||
dto := e.ReadListDto{}
|
dto := e.ReadListDto{}
|
||||||
pValue1 := rw.ValidateString(w, "serviceType", r.PathValue("serviceType"))
|
pValue1 := rw.ValidateString(w, "serviceType", r.PathValue("serviceType"))
|
||||||
if pValue1 == "" {
|
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"))
|
pValue2 := rw.ValidateString(w, "serviceDate", r.PathValue("serviceDate"))
|
||||||
if pValue2 == "" {
|
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"))
|
pValue3 := rw.ValidateString(w, "specialistCode", r.PathValue("specialistCode"))
|
||||||
if pValue3 == "" {
|
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.PathValue1 = pValue1
|
||||||
dto.PathValue2 = pValue2
|
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) {
|
func (obj myBase) GetDetail(w http.ResponseWriter, r *http.Request) {
|
||||||
id := rw.ValidateInt(w, "id", r.PathValue("id"))
|
number := rw.ValidateString(w, "number", r.PathValue("number"))
|
||||||
if id <= 0 {
|
if number <= "" {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
dto := e.ReadDetailDto{}
|
dto := e.ReadDetailDto{}
|
||||||
dto.Id = uint(id)
|
dto.Number = &number
|
||||||
res, err := u.ReadDetail(dto)
|
res, err := u.ReadDetail(dto)
|
||||||
rw.DataResponse(w, res, err)
|
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 {
|
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)
|
req, err := http.NewRequest("GET", ibpjs.O.BaseUrl+endpoint, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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 {
|
func DeleteSep(input *e.DeleteDto, data *e.VclaimSep, tx *gorm.DB) error {
|
||||||
payload := e.SepDeleteRequest{}
|
payload := e.SepDeleteRequest{}
|
||||||
payload.Request.TSep.NoSep = *data.Number
|
payload.Request.TSep.NoSep = *input.Number
|
||||||
payload.Request.TSep.User = "Coba Ws"
|
payload.Request.TSep.User = "Coba Ws"
|
||||||
|
|
||||||
jsonPayload, err := json.Marshal(payload)
|
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