Update Worker Satu Sehat
This commit is contained in:
@@ -1,38 +0,0 @@
|
||||
package antrol
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
antrolService "service/internal/bpjs/antrol/reference"
|
||||
"service/pkg/errors"
|
||||
"service/pkg/response"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type AntrolHandler struct {
|
||||
service antrolService.Service
|
||||
}
|
||||
|
||||
func NewAntrolHandler(service antrolService.Service) *AntrolHandler {
|
||||
return &AntrolHandler{service: service}
|
||||
}
|
||||
|
||||
func (h *AntrolHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/bpjs/antrol/reference")
|
||||
{
|
||||
group.GET("/poli", h.GetRefPoli)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *AntrolHandler) GetRefPoli(c *gin.Context) {
|
||||
ctx := c.Request.Context()
|
||||
res, err := h.service.GetRefPoli(ctx)
|
||||
if err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved BPJS Antrol Poli reference", res)
|
||||
}
|
||||
@@ -1,100 +0,0 @@
|
||||
package aplicare
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
bedService "service/internal/bpjs/aplicare/bed"
|
||||
"service/pkg/errors"
|
||||
"service/pkg/response"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type BedHandler struct {
|
||||
service bedService.Service
|
||||
}
|
||||
|
||||
func NewBedHandler(service bedService.Service) *BedHandler {
|
||||
return &BedHandler{service: service}
|
||||
}
|
||||
|
||||
func (h *BedHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/bpjs/aplicare/bed")
|
||||
{
|
||||
group.GET("/:kdppk/:start/:limit", h.GetBedList)
|
||||
group.POST("/:kdppk", h.CreateBed)
|
||||
group.PUT("/:kdppk", h.UpdateBed)
|
||||
group.DELETE("/:kdppk", h.DeleteBed)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *BedHandler) GetBedList(c *gin.Context) {
|
||||
kdPpk := c.Param("kdppk")
|
||||
start, _ := strconv.Atoi(c.Param("start"))
|
||||
limit, _ := strconv.Atoi(c.Param("limit"))
|
||||
|
||||
ctx := c.Request.Context()
|
||||
res, err := h.service.GetBedList(ctx, kdPpk, start, limit)
|
||||
if err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved BPJS Aplicares bed list", res)
|
||||
}
|
||||
|
||||
func (h *BedHandler) CreateBed(c *gin.Context) {
|
||||
kdPpk := c.Param("kdppk")
|
||||
var req bedService.BedData
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Invalid request body", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
ctx := c.Request.Context()
|
||||
if err := h.service.CreateBed(ctx, kdPpk, req); err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, http.StatusCreated, "Successfully created BPJS Aplicares bed data", nil)
|
||||
}
|
||||
|
||||
func (h *BedHandler) UpdateBed(c *gin.Context) {
|
||||
kdPpk := c.Param("kdppk")
|
||||
var req bedService.BedData
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Invalid request body", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
ctx := c.Request.Context()
|
||||
if err := h.service.UpdateBed(ctx, kdPpk, req); err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, http.StatusOK, "Successfully updated BPJS Aplicares bed data", nil)
|
||||
}
|
||||
|
||||
func (h *BedHandler) DeleteBed(c *gin.Context) {
|
||||
kdPpk := c.Param("kdppk")
|
||||
var req bedService.BedDeletePayload
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Invalid request body", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
ctx := c.Request.Context()
|
||||
if err := h.service.DeleteBed(ctx, kdPpk, req); err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, http.StatusOK, "Successfully deleted BPJS Aplicares bed data", nil)
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
package apotek
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
dphoService "service/internal/bpjs/apotek/reference/dpho"
|
||||
poliService "service/internal/bpjs/apotek/reference/poli"
|
||||
"service/pkg/errors"
|
||||
"service/pkg/response"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type ReferenceHandler struct {
|
||||
dphoService dphoService.Service
|
||||
poliService poliService.Service
|
||||
}
|
||||
|
||||
func NewReferenceHandler(dpho dphoService.Service, poli poliService.Service) *ReferenceHandler {
|
||||
return &ReferenceHandler{
|
||||
dphoService: dpho,
|
||||
poliService: poli,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *ReferenceHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/bpjs/apotek/reference")
|
||||
{
|
||||
group.GET("/dpho", h.GetDPHO)
|
||||
group.GET("/poli/:param", h.GetPoli)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *ReferenceHandler) GetDPHO(c *gin.Context) {
|
||||
res, err := h.dphoService.GetDPHO(c.Request.Context())
|
||||
if err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved BPJS Apotek DPHO reference", res)
|
||||
}
|
||||
|
||||
func (h *ReferenceHandler) GetPoli(c *gin.Context) {
|
||||
param := c.Param("param")
|
||||
res, err := h.poliService.GetPoli(c.Request.Context(), param)
|
||||
if err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved BPJS Apotek Poli reference", res)
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
package vclaim
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
pesertaService "service/internal/bpjs/vclaim/peserta"
|
||||
"service/pkg/errors"
|
||||
"service/pkg/response"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type PesertaHandler struct {
|
||||
service pesertaService.Service
|
||||
}
|
||||
|
||||
func NewPesertaHandler(service pesertaService.Service) *PesertaHandler {
|
||||
return &PesertaHandler{service: service}
|
||||
}
|
||||
|
||||
func (h *PesertaHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/bpjs/vclaim/peserta")
|
||||
{
|
||||
group.GET("/nik/:nik", h.GetPesertaByNIK)
|
||||
group.GET("/nokartu/:nokartu", h.GetPesertaByNoKartu)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *PesertaHandler) GetPesertaByNIK(c *gin.Context) {
|
||||
nik := c.Param("nik")
|
||||
tglSEP := c.Query("tgl_sep")
|
||||
if tglSEP == "" {
|
||||
tglSEP = time.Now().Format("2006-01-02")
|
||||
}
|
||||
|
||||
ctx := c.Request.Context()
|
||||
res, err := h.service.GetPesertaByNIK(ctx, nik, tglSEP)
|
||||
if err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved participant data by NIK", res)
|
||||
}
|
||||
|
||||
func (h *PesertaHandler) GetPesertaByNoKartu(c *gin.Context) {
|
||||
noKartu := c.Param("nokartu")
|
||||
tglSEP := c.Query("tgl_sep")
|
||||
if tglSEP == "" {
|
||||
tglSEP = time.Now().Format("2006-01-02")
|
||||
}
|
||||
|
||||
ctx := c.Request.Context()
|
||||
res, err := h.service.GetPesertaByNoKartu(ctx, noKartu, tglSEP)
|
||||
if err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved participant data by card number", res)
|
||||
}
|
||||
@@ -1,105 +0,0 @@
|
||||
package vclaim
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
sepService "service/internal/bpjs/vclaim/sep"
|
||||
"service/pkg/errors"
|
||||
"service/pkg/response"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// SepHandler menangani semua request HTTP terkait VClaim.
|
||||
type SepHandler struct {
|
||||
sepService sepService.Service
|
||||
}
|
||||
|
||||
// NewSepHandler membuat instance SepHandler baru.
|
||||
func NewSepHandler(sepService sepService.Service) *SepHandler {
|
||||
return &SepHandler{
|
||||
sepService: sepService,
|
||||
}
|
||||
}
|
||||
|
||||
// RegisterRoutes mendaftarkan semua rute untuk BPJS VClaim.
|
||||
func (h *SepHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
bpjsGroup := router.Group("/bpjs/vclaim")
|
||||
{
|
||||
sepGroup := bpjsGroup.Group("/sep")
|
||||
{
|
||||
sepGroup.POST("", h.CreateSEP)
|
||||
sepGroup.PUT("", h.UpdateSEP)
|
||||
// BPJS API untuk delete menggunakan method POST, tapi kita ekspos sebagai DELETE untuk konsistensi RESTful.
|
||||
sepGroup.DELETE("", h.DeleteSEP)
|
||||
sepGroup.GET("/:nosep", h.GetSEPDetail)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CreateSEP menangani request untuk membuat SEP baru.
|
||||
func (h *SepHandler) CreateSEP(c *gin.Context) {
|
||||
var req sepService.CreateSEPRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Invalid request body", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.sepService.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), nil)
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, http.StatusCreated, "Successfully created SEP", result)
|
||||
}
|
||||
|
||||
// UpdateSEP menangani request untuk memperbarui SEP.
|
||||
func (h *SepHandler) UpdateSEP(c *gin.Context) {
|
||||
var req sepService.UpdateSEPRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Invalid request body", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.sepService.Update(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), nil)
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, http.StatusOK, "Successfully updated SEP", result)
|
||||
}
|
||||
|
||||
// GetSEPDetail menangani request untuk mendapatkan detail SEP.
|
||||
func (h *SepHandler) GetSEPDetail(c *gin.Context) {
|
||||
noSEP := c.Param("no_sep")
|
||||
|
||||
result, err := h.sepService.GetDetail(c.Request.Context(), noSEP)
|
||||
if err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), nil)
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved SEP detail", result)
|
||||
}
|
||||
|
||||
// DeleteSEP menangani request untuk menghapus SEP.
|
||||
func (h *SepHandler) DeleteSEP(c *gin.Context) {
|
||||
var req sepService.DeleteSEPRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Invalid request body for SEP deletion", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.sepService.Delete(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), nil)
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, http.StatusOK, "Successfully deleted SEP", result)
|
||||
}
|
||||
@@ -1,90 +0,0 @@
|
||||
package reference
|
||||
|
||||
import (
|
||||
stdErrors "errors"
|
||||
"net/http"
|
||||
"service/internal/interfaces/satusehat"
|
||||
"service/internal/satusehat/reference/auth"
|
||||
"service/pkg/errors"
|
||||
"service/pkg/response"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// AuthHandler menangani endpoint HTTP untuk Auth Satu Sehat.
|
||||
type AuthHandler struct {
|
||||
service auth.Service
|
||||
}
|
||||
|
||||
// RegisterRoutes mendaftarkan endpoint handler ini ke router Gin
|
||||
func (h *AuthHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/reference")
|
||||
{
|
||||
group.GET("/auth/token", h.GetToken)
|
||||
group.POST("/auth/token/refresh", h.RefreshToken)
|
||||
}
|
||||
}
|
||||
|
||||
// NewAuthHandler membuat instance baru dari AuthHandler.
|
||||
func NewAuthHandler(service auth.Service) *AuthHandler {
|
||||
return &AuthHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
// handleSatuSehatError mengekstrak OperationOutcome agar JSON bisa tampil terstruktur di response
|
||||
func handleSatuSehatError(c *gin.Context, err error) {
|
||||
var ssErr *satusehat.ErrorOperationOutcome
|
||||
if stdErrors.As(err, &ssErr) {
|
||||
c.JSON(ssErr.StatusCode, gin.H{
|
||||
"status": "error",
|
||||
"message": ssErr.Outcome,
|
||||
"error": gin.H{
|
||||
"severity": "error",
|
||||
"timestamp": time.Now().UTC().Format(time.RFC3339),
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
appErr := errors.FromError(err)
|
||||
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
|
||||
}
|
||||
|
||||
// GetToken godoc
|
||||
//
|
||||
// @Summary Get SatuSehat Access Token
|
||||
// @Description Mendapatkan token aktif untuk API Satu Sehat Kemenkes (menggunakan cache internal)
|
||||
// @Tags Satu Sehat - Auth
|
||||
// @Produce json
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Router /satusehat/reference/auth/token [get]
|
||||
// @Security BearerAuth
|
||||
func (h *AuthHandler) GetToken(c *gin.Context) {
|
||||
data, err := h.service.GetToken(c.Request.Context())
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mendapatkan token Satu Sehat", data)
|
||||
}
|
||||
|
||||
// RefreshToken godoc
|
||||
//
|
||||
// @Summary Refresh SatuSehat Access Token
|
||||
// @Description Memaksa request token baru dari API Satu Sehat Kemenkes (bypass cache)
|
||||
// @Tags Satu Sehat - Auth
|
||||
// @Produce json
|
||||
// @Success 200 {object} response.Response
|
||||
// @Failure 500 {object} response.Response
|
||||
// @Router /satusehat/reference/auth/token/refresh [post]
|
||||
// @Security BearerAuth
|
||||
func (h *AuthHandler) RefreshToken(c *gin.Context) {
|
||||
data, err := h.service.RefreshToken(c.Request.Context())
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil me-refresh token Satu Sehat", data)
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
package reference
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/reference/kfa"
|
||||
"service/pkg/response"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type KFAHandler struct {
|
||||
service kfa.Service
|
||||
}
|
||||
|
||||
func NewKFAHandler(service kfa.Service) *KFAHandler {
|
||||
return &KFAHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
// GetByCode godoc
|
||||
//
|
||||
// @Summary Cari Produk KFA berdasarkan Kode
|
||||
// @Description Mencari detail produk farmasi/alkes dari API Kamus Farmasi dan Alat Kesehatan (KFA) Satu Sehat
|
||||
// @Tags Satu Sehat - KFA
|
||||
// @Produce json
|
||||
// @Param code path string true "Kode KFA (contoh: 93000469)"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Router /satusehat/reference/kfa/products/{code} [get]
|
||||
// @Security BearerAuth
|
||||
func (h *KFAHandler) GetByCode(c *gin.Context) {
|
||||
code := c.Param("code")
|
||||
data, err := h.service.GetByCode(c.Request.Context(), code)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mendapatkan data produk KFA", data)
|
||||
}
|
||||
|
||||
// GetProducts godoc
|
||||
//
|
||||
// @Summary Daftar Produk KFA
|
||||
// @Description Mengambil daftar produk KFA dengan kapabilitas paginasi
|
||||
// @Tags Satu Sehat - KFA
|
||||
// @Produce json
|
||||
// @Param page query int false "Nomor Halaman (default: 1)"
|
||||
// @Param size query int false "Jumlah Data (default: 10)"
|
||||
// @Param product_type query string false "Tipe Produk (farmasi/alkes)"
|
||||
// @Param keyword query string false "Kata Kunci Pencarian"
|
||||
// @Param from_ query string false "Parameter waktu (from_)"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Router /satusehat/reference/kfa/products [get]
|
||||
// @Security BearerAuth
|
||||
func (h *KFAHandler) GetProducts(c *gin.Context) {
|
||||
var params kfa.KFASearchParams
|
||||
if err := c.ShouldBindQuery(¶ms); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Format parameter tidak valid", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
data, err := h.service.GetProducts(c.Request.Context(), params)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mengambil daftar produk KFA", data)
|
||||
}
|
||||
|
||||
func (h *KFAHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/reference/kfa")
|
||||
{
|
||||
group.GET("/products/:code", h.GetByCode)
|
||||
group.GET("/products", h.GetProducts)
|
||||
}
|
||||
}
|
||||
-126
@@ -1,126 +0,0 @@
|
||||
package reference
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/reference/location"
|
||||
"service/pkg/response"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type LocationHandler struct {
|
||||
service location.Service
|
||||
}
|
||||
|
||||
func NewLocationHandler(service location.Service) *LocationHandler {
|
||||
return &LocationHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
// GetByID godoc
|
||||
//
|
||||
// @Summary Cari Lokasi (Satu Sehat) berdasarkan ID
|
||||
// @Description Mencari data Location FHIR Satu Sehat berdasarkan ID
|
||||
// @Tags Satu Sehat - Location
|
||||
// @Produce json
|
||||
// @Param id path string true "Location ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Router /satusehat/reference/location/{id} [get]
|
||||
// @Security BearerAuth
|
||||
func (h *LocationHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
data, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mendapatkan data lokasi", data)
|
||||
}
|
||||
|
||||
// Search godoc
|
||||
//
|
||||
// @Summary Pencarian Lokasi (Satu Sehat)
|
||||
// @Description Mencari data Location berdasarkan parameter
|
||||
// @Tags Satu Sehat - Location
|
||||
// @Produce json
|
||||
// @Param name query string false "Nama Lokasi"
|
||||
// @Param organization query string false "ID Organisasi Pemilik"
|
||||
// @Param identifier query string false "Identifier Lokasi"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Router /satusehat/reference/location [get]
|
||||
// @Security BearerAuth
|
||||
func (h *LocationHandler) Search(c *gin.Context) {
|
||||
var params location.LocationSearchParams
|
||||
if err := c.ShouldBindQuery(¶ms); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Format pencarian tidak valid", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
data, err := h.service.Search(c.Request.Context(), params)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mendapatkan data lokasi", data)
|
||||
}
|
||||
|
||||
func (h *LocationHandler) Create(c *gin.Context) {
|
||||
var payload map[string]interface{}
|
||||
if err := c.ShouldBindJSON(&payload); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Format request tidak valid", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
data, err := h.service.Create(c.Request.Context(), payload)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Berhasil membuat data lokasi", data)
|
||||
}
|
||||
|
||||
func (h *LocationHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var payload map[string]interface{}
|
||||
if err := c.ShouldBindJSON(&payload); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Format request tidak valid", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
data, err := h.service.Update(c.Request.Context(), id, payload)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mengubah data lokasi", data)
|
||||
}
|
||||
|
||||
func (h *LocationHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var payload interface{}
|
||||
if err := c.ShouldBindJSON(&payload); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Format request tidak valid", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
data, err := h.service.Patch(c.Request.Context(), id, payload)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil melakukan patch data lokasi", data)
|
||||
}
|
||||
|
||||
// RegisterRoutes mendaftarkan endpoint handler ini ke router Gin
|
||||
func (h *LocationHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/reference")
|
||||
{
|
||||
group.GET("/location/:id", h.GetByID)
|
||||
group.GET("/location", h.Search)
|
||||
group.POST("/location", h.Create)
|
||||
group.PUT("/location/:id", h.Update)
|
||||
group.PATCH("/location/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
-133
@@ -1,133 +0,0 @@
|
||||
package reference
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/reference/organization"
|
||||
"service/pkg/response"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type OrganizationHandler struct {
|
||||
service organization.Service
|
||||
}
|
||||
|
||||
func NewOrganizationHandler(service organization.Service) *OrganizationHandler {
|
||||
return &OrganizationHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
// GetByID godoc
|
||||
//
|
||||
// @Summary Cari Organisasi (Satu Sehat) berdasarkan ID
|
||||
// @Description Mencari data Organization FHIR Satu Sehat berdasarkan ID
|
||||
// @Tags Satu Sehat - Organization
|
||||
// @Produce json
|
||||
// @Param id path string true "Organization ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Router /satusehat/reference/organization/{id} [get]
|
||||
// @Security BearerAuth
|
||||
func (h *OrganizationHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
data, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mendapatkan data organisasi", data)
|
||||
}
|
||||
|
||||
// Search godoc
|
||||
//
|
||||
// @Summary Pencarian Organisasi (Satu Sehat)
|
||||
// @Description Mencari data Organization berdasarkan Name atau PartOf
|
||||
// @Tags Satu Sehat - Organization
|
||||
// @Produce json
|
||||
// @Param name query string false "Nama Organisasi"
|
||||
// @Param partof query string false "ID Organisasi Induk"
|
||||
// @Param identifier query string false "Identifier Organisasi"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Router /satusehat/reference/organization [get]
|
||||
// @Security BearerAuth
|
||||
func (h *OrganizationHandler) Search(c *gin.Context) {
|
||||
var params organization.OrganizationSearchParams
|
||||
if err := c.ShouldBindQuery(¶ms); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Format pencarian tidak valid", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// Validasi mandiri sebelum menembak ke API Kemenkes
|
||||
if params.Name == "" && params.PartOf == "" && params.Identifier == "" {
|
||||
response.Error(c, http.StatusBadRequest, "Parameter pencarian tidak lengkap", "Harap masukkan minimal salah satu parameter query: name, partof, atau identifier")
|
||||
return
|
||||
}
|
||||
|
||||
data, err := h.service.Search(c.Request.Context(), params)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mendapatkan data organisasi", data)
|
||||
}
|
||||
|
||||
func (h *OrganizationHandler) Create(c *gin.Context) {
|
||||
var payload map[string]interface{}
|
||||
if err := c.ShouldBindJSON(&payload); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Format request tidak valid", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
data, err := h.service.Create(c.Request.Context(), payload)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Berhasil membuat data organisasi", data)
|
||||
}
|
||||
|
||||
func (h *OrganizationHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var payload map[string]interface{}
|
||||
if err := c.ShouldBindJSON(&payload); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Format request tidak valid", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
data, err := h.service.Update(c.Request.Context(), id, payload)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mengubah data organisasi", data)
|
||||
}
|
||||
|
||||
func (h *OrganizationHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
// JSON Patch biasanya array of objects, jadi gunakan interface{} general
|
||||
var payload interface{}
|
||||
if err := c.ShouldBindJSON(&payload); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Format request tidak valid", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
data, err := h.service.Patch(c.Request.Context(), id, payload)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil melakukan patch data organisasi", data)
|
||||
}
|
||||
|
||||
// RegisterRoutes mendaftarkan endpoint handler ini ke router Gin
|
||||
func (h *OrganizationHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/reference")
|
||||
{
|
||||
group.GET("/organization/:id", h.GetByID)
|
||||
group.GET("/organization", h.Search)
|
||||
group.POST("/organization", h.Create)
|
||||
group.PUT("/organization/:id", h.Update)
|
||||
group.PATCH("/organization/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
-127
@@ -1,127 +0,0 @@
|
||||
package reference
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"service/internal/satusehat/reference/patient"
|
||||
"service/pkg/response"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// PatientHandler menangani endpoint HTTP untuk resource Patient Satu Sehat.
|
||||
type PatientHandler struct {
|
||||
service patient.Service
|
||||
}
|
||||
|
||||
// RegisterRoutes mendaftarkan endpoint handler ini ke router Gin
|
||||
func (h *PatientHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/reference")
|
||||
{
|
||||
group.GET("/patient/nik/:nik", h.GetByNIK)
|
||||
group.GET("/patient/:id", h.GetByID)
|
||||
group.GET("/patient", h.Search)
|
||||
group.POST("/patient", h.Create)
|
||||
}
|
||||
}
|
||||
|
||||
// NewPatientHandler membuat instance baru dari PatientHandler.
|
||||
func NewPatientHandler(service patient.Service) *PatientHandler {
|
||||
return &PatientHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
// GetByNIK godoc
|
||||
//
|
||||
// @Summary Cari Pasien (Satu Sehat) berdasarkan NIK
|
||||
// @Description Mencari data pasien FHIR Satu Sehat berdasarkan Nomor Induk Kependudukan (NIK)
|
||||
// @Tags Satu Sehat - Patient
|
||||
// @Produce json
|
||||
// @Param nik path string true "Nomor Induk Kependudukan"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Router /satusehat/reference/patient/nik/{nik} [get]
|
||||
// @Security BearerAuth
|
||||
func (h *PatientHandler) GetByNIK(c *gin.Context) {
|
||||
nik := c.Param("nik")
|
||||
data, err := h.service.GetByNIK(c.Request.Context(), nik)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mendapatkan data pasien", data)
|
||||
}
|
||||
|
||||
// GetByID godoc
|
||||
//
|
||||
// @Summary Cari Pasien (Satu Sehat) berdasarkan ID
|
||||
// @Description Mencari data pasien FHIR Satu Sehat berdasarkan IHS Number / ID
|
||||
// @Tags Satu Sehat - Patient
|
||||
// @Produce json
|
||||
// @Param id path string true "IHS Number / Patient ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Router /satusehat/reference/patient/{id} [get]
|
||||
// @Security BearerAuth
|
||||
func (h *PatientHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
data, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mendapatkan data pasien", data)
|
||||
}
|
||||
|
||||
// Search godoc
|
||||
//
|
||||
// @Summary Pencarian Pasien (Satu Sehat) Multi-Parameter
|
||||
// @Description Mencari data pasien FHIR Satu Sehat berdasarkan kombinasi parameter (Nama, NIK, NIK Ibu, Tanggal Lahir, Gender)
|
||||
// @Tags Satu Sehat - Patient
|
||||
// @Produce json
|
||||
// @Param nik query string false "Nomor Induk Kependudukan"
|
||||
// @Param nik_ibu query string false "Nomor Induk Kependudukan Ibu (Untuk bayi)"
|
||||
// @Param name query string false "Nama Pasien"
|
||||
// @Param birthdate query string false "Tanggal Lahir (YYYY-MM-DD)"
|
||||
// @Param gender query string false "Jenis Kelamin (male/female)"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Router /satusehat/reference/patient [get]
|
||||
// @Security BearerAuth
|
||||
func (h *PatientHandler) Search(c *gin.Context) {
|
||||
var params patient.PatientSearchParams
|
||||
if err := c.ShouldBindQuery(¶ms); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Format pencarian tidak valid", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
data, err := h.service.Search(c.Request.Context(), params)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mendapatkan data pasien", data)
|
||||
}
|
||||
|
||||
// Create godoc
|
||||
//
|
||||
// @Summary Daftar Pasien Baru (Satu Sehat)
|
||||
// @Description Mendaftarkan data pasien baru ke API Satu Sehat dan mengembalikan IHS Number
|
||||
// @Tags Satu Sehat - Patient
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param request body patient.CreatePatientRequest true "Data Pasien Baru"
|
||||
// @Success 201 {object} response.Response
|
||||
// @Router /satusehat/reference/patient [post]
|
||||
// @Security BearerAuth
|
||||
func (h *PatientHandler) Create(c *gin.Context) {
|
||||
var req patient.CreatePatientRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Format request tidak valid", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
data, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Berhasil mendaftarkan pasien", data)
|
||||
}
|
||||
-98
@@ -1,98 +0,0 @@
|
||||
package reference
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/reference/practitioner"
|
||||
"service/pkg/response"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type PractitionerHandler struct {
|
||||
service practitioner.Service
|
||||
}
|
||||
|
||||
func NewPractitionerHandler(service practitioner.Service) *PractitionerHandler {
|
||||
return &PractitionerHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
// GetByNIK godoc
|
||||
//
|
||||
// @Summary Cari Tenaga Medis (Satu Sehat) berdasarkan NIK
|
||||
// @Description Mencari data Practitioner FHIR Satu Sehat berdasarkan NIK
|
||||
// @Tags Satu Sehat - Practitioner
|
||||
// @Produce json
|
||||
// @Param nik path string true "Nomor Induk Kependudukan"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Router /satusehat/reference/practitioner/nik/{nik} [get]
|
||||
// @Security BearerAuth
|
||||
func (h *PractitionerHandler) GetByNIK(c *gin.Context) {
|
||||
nik := c.Param("nik")
|
||||
data, err := h.service.GetByNIK(c.Request.Context(), nik)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mendapatkan data tenaga medis", data)
|
||||
}
|
||||
|
||||
// GetByID godoc
|
||||
//
|
||||
// @Summary Cari Tenaga Medis (Satu Sehat) berdasarkan ID
|
||||
// @Description Mencari data Practitioner FHIR Satu Sehat berdasarkan IHS Number / ID
|
||||
// @Tags Satu Sehat - Practitioner
|
||||
// @Produce json
|
||||
// @Param id path string true "IHS Number / Practitioner ID"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Router /satusehat/reference/practitioner/{id} [get]
|
||||
// @Security BearerAuth
|
||||
func (h *PractitionerHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
data, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mendapatkan data tenaga medis", data)
|
||||
}
|
||||
|
||||
// Search godoc
|
||||
//
|
||||
// @Summary Pencarian Tenaga Medis (Satu Sehat) Multi-Parameter
|
||||
// @Description Mencari data Practitioner FHIR Satu Sehat berdasarkan parameter
|
||||
// @Tags Satu Sehat - Practitioner
|
||||
// @Produce json
|
||||
// @Param nik query string false "Nomor Induk Kependudukan"
|
||||
// @Param name query string false "Nama Tenaga Medis"
|
||||
// @Param gender query string false "Jenis Kelamin (male/female)"
|
||||
// @Param birthdate query string false "Tanggal Lahir (YYYY-MM-DD)"
|
||||
// @Success 200 {object} response.Response
|
||||
// @Router /satusehat/reference/practitioner [get]
|
||||
// @Security BearerAuth
|
||||
func (h *PractitionerHandler) Search(c *gin.Context) {
|
||||
var params practitioner.PractitionerSearchParams
|
||||
if err := c.ShouldBindQuery(¶ms); err != nil {
|
||||
response.Error(c, http.StatusBadRequest, "Format pencarian tidak valid", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
data, err := h.service.Search(c.Request.Context(), params)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Berhasil mendapatkan data tenaga medis", data)
|
||||
}
|
||||
|
||||
// RegisterRoutes mendaftarkan endpoint handler ini ke router Gin
|
||||
func (h *PractitionerHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/reference")
|
||||
{
|
||||
group.GET("/practitioner/nik/:nik", h.GetByNIK)
|
||||
group.GET("/practitioner/:id", h.GetByID)
|
||||
group.GET("/practitioner", h.Search)
|
||||
}
|
||||
}
|
||||
-81
@@ -1,81 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"service/internal/satusehat/usecase/allergyintolerance"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type AllergyIntoleranceHandler struct{ service allergyintolerance.Service }
|
||||
|
||||
func NewAllergyIntoleranceHandler(s allergyintolerance.Service) *AllergyIntoleranceHandler {
|
||||
return &AllergyIntoleranceHandler{service: s}
|
||||
}
|
||||
|
||||
func (h *AllergyIntoleranceHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
g := router.Group("/satusehat/allergyintolerance")
|
||||
g.POST("", h.Create)
|
||||
g.GET("", h.Search)
|
||||
g.GET("/:id", h.GetByID)
|
||||
g.PUT("/:id", h.Update)
|
||||
g.PATCH("/:id", h.Patch)
|
||||
}
|
||||
|
||||
func (h *AllergyIntoleranceHandler) Create(c *gin.Context) {
|
||||
var req allergyintolerance.AllergyIntoleranceRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid request", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *AllergyIntoleranceHandler) Update(c *gin.Context) {
|
||||
var req allergyintolerance.AllergyIntoleranceRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid request", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Update(c.Request.Context(), c.Param("id"), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *AllergyIntoleranceHandler) Patch(c *gin.Context) {
|
||||
var req allergyintolerance.AllergyIntolerancePatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid patch", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Patch(c.Request.Context(), c.Param("id"), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *AllergyIntoleranceHandler) GetByID(c *gin.Context) {
|
||||
res, err := h.service.GetByID(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *AllergyIntoleranceHandler) Search(c *gin.Context) {
|
||||
res, err := h.service.Search(c.Request.Context(), c.Request.URL.Query())
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
@@ -1,79 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"service/internal/satusehat/usecase/careplan"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type CarePlanHandler struct{ service careplan.Service }
|
||||
|
||||
func NewCarePlanHandler(s careplan.Service) *CarePlanHandler { return &CarePlanHandler{service: s} }
|
||||
|
||||
func (h *CarePlanHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
g := router.Group("/satusehat/careplan")
|
||||
g.POST("", h.Create)
|
||||
g.GET("", h.Search)
|
||||
g.GET("/:id", h.GetByID)
|
||||
g.PUT("/:id", h.Update)
|
||||
g.PATCH("/:id", h.Patch)
|
||||
}
|
||||
|
||||
func (h *CarePlanHandler) Create(c *gin.Context) {
|
||||
var req careplan.CarePlanRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid request", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *CarePlanHandler) Update(c *gin.Context) {
|
||||
var req careplan.CarePlanRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid request", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Update(c.Request.Context(), c.Param("id"), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *CarePlanHandler) Patch(c *gin.Context) {
|
||||
var req careplan.CarePlanPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid patch", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Patch(c.Request.Context(), c.Param("id"), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *CarePlanHandler) GetByID(c *gin.Context) {
|
||||
res, err := h.service.GetByID(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *CarePlanHandler) Search(c *gin.Context) {
|
||||
res, err := h.service.Search(c.Request.Context(), c.Request.URL.Query())
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
-81
@@ -1,81 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
clinicalimpression "service/internal/satusehat/usecase/clinicalImpression"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type ClinicalImpressionHandler struct{ service clinicalimpression.Service }
|
||||
|
||||
func NewClinicalImpressionHandler(s clinicalimpression.Service) *ClinicalImpressionHandler {
|
||||
return &ClinicalImpressionHandler{service: s}
|
||||
}
|
||||
|
||||
func (h *ClinicalImpressionHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
g := router.Group("/satusehat/clinicalimpression")
|
||||
g.POST("", h.Create)
|
||||
g.GET("", h.Search)
|
||||
g.GET("/:id", h.GetByID)
|
||||
g.PUT("/:id", h.Update)
|
||||
g.PATCH("/:id", h.Patch)
|
||||
}
|
||||
|
||||
func (h *ClinicalImpressionHandler) Create(c *gin.Context) {
|
||||
var req clinicalimpression.ClinicalImpressionRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid request", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *ClinicalImpressionHandler) Update(c *gin.Context) {
|
||||
var req clinicalimpression.ClinicalImpressionRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid request", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Update(c.Request.Context(), c.Param("id"), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *ClinicalImpressionHandler) Patch(c *gin.Context) {
|
||||
var req clinicalimpression.ClinicalImpressionPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid patch", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Patch(c.Request.Context(), c.Param("id"), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *ClinicalImpressionHandler) GetByID(c *gin.Context) {
|
||||
res, err := h.service.GetByID(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *ClinicalImpressionHandler) Search(c *gin.Context) {
|
||||
res, err := h.service.Search(c.Request.Context(), c.Request.URL.Query())
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
-102
@@ -1,102 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/usecase/composition"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type CompositionHandler struct {
|
||||
service composition.Service
|
||||
}
|
||||
|
||||
func NewCompositionHandler(service composition.Service) *CompositionHandler {
|
||||
return &CompositionHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *CompositionHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/composition")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *CompositionHandler) Create(c *gin.Context) {
|
||||
var req composition.CompositionRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Successfully created Composition", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *CompositionHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req composition.CompositionRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated Composition", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *CompositionHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req composition.CompositionPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched Composition", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *CompositionHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
result, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved Composition", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *CompositionHandler) Search(c *gin.Context) {
|
||||
queryParams := c.Request.URL.Query()
|
||||
result, err := h.service.Search(c.Request.Context(), queryParams)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved Compositions", result.FullResponse)
|
||||
}
|
||||
-102
@@ -1,102 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/usecase/condition"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type ConditionHandler struct {
|
||||
service condition.Service
|
||||
}
|
||||
|
||||
func NewConditionHandler(service condition.Service) *ConditionHandler {
|
||||
return &ConditionHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *ConditionHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/condition")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *ConditionHandler) Create(c *gin.Context) {
|
||||
var req condition.ConditionRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Successfully created Condition", result)
|
||||
}
|
||||
|
||||
func (h *ConditionHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req condition.ConditionRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated Condition", result)
|
||||
}
|
||||
|
||||
func (h *ConditionHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req condition.ConditionPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched Condition", result)
|
||||
}
|
||||
|
||||
func (h *ConditionHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
result, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved Condition", result)
|
||||
}
|
||||
|
||||
func (h *ConditionHandler) Search(c *gin.Context) {
|
||||
queryParams := c.Request.URL.Query()
|
||||
result, err := h.service.Search(c.Request.Context(), queryParams)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved Conditions", result)
|
||||
}
|
||||
-81
@@ -1,81 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"service/internal/satusehat/usecase/diagnosticreport"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type DiagnosticReportHandler struct{ service diagnosticreport.Service }
|
||||
|
||||
func NewDiagnosticReportHandler(s diagnosticreport.Service) *DiagnosticReportHandler {
|
||||
return &DiagnosticReportHandler{service: s}
|
||||
}
|
||||
|
||||
func (h *DiagnosticReportHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
g := router.Group("/satusehat/diagnosticreport")
|
||||
g.POST("", h.Create)
|
||||
g.GET("", h.Search)
|
||||
g.GET("/:id", h.GetByID)
|
||||
g.PUT("/:id", h.Update)
|
||||
g.PATCH("/:id", h.Patch)
|
||||
}
|
||||
|
||||
func (h *DiagnosticReportHandler) Create(c *gin.Context) {
|
||||
var req diagnosticreport.DiagnosticReportRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid request", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *DiagnosticReportHandler) Update(c *gin.Context) {
|
||||
var req diagnosticreport.DiagnosticReportRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid request", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Update(c.Request.Context(), c.Param("id"), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *DiagnosticReportHandler) Patch(c *gin.Context) {
|
||||
var req diagnosticreport.DiagnosticReportPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid patch", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Patch(c.Request.Context(), c.Param("id"), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *DiagnosticReportHandler) GetByID(c *gin.Context) {
|
||||
res, err := h.service.GetByID(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *DiagnosticReportHandler) Search(c *gin.Context) {
|
||||
res, err := h.service.Search(c.Request.Context(), c.Request.URL.Query())
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
-149
@@ -1,149 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"service/internal/interfaces/satusehat"
|
||||
"service/internal/satusehat/usecase/encounter"
|
||||
pkgErrors "service/pkg/errors"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type EncounterHandler struct {
|
||||
service encounter.Service
|
||||
}
|
||||
|
||||
func NewEncounterHandler(service encounter.Service) *EncounterHandler {
|
||||
return &EncounterHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *EncounterHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/encounter")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.POST("/sync/:idxdaftar", h.SyncFromSIMRS)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
// handleSatuSehatError mengekstrak OperationOutcome agar JSON bisa tampil terstruktur
|
||||
func handleSatuSehatError(c *gin.Context, err error) {
|
||||
var ssErr *satusehat.ErrorOperationOutcome
|
||||
if errors.As(err, &ssErr) {
|
||||
c.Error(err) // Log error asli
|
||||
c.JSON(ssErr.StatusCode, gin.H{
|
||||
"status": "error",
|
||||
"message": ssErr.Outcome,
|
||||
"error": gin.H{
|
||||
"severity": "error",
|
||||
"timestamp": time.Now().UTC().Format(time.RFC3339),
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
appErr := pkgErrors.FromError(err)
|
||||
response.ErrorWithLog(c, err, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
|
||||
}
|
||||
|
||||
func (h *EncounterHandler) Create(c *gin.Context) {
|
||||
var req encounter.EncounterRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
// Di sini, Anda bisa menyimpan result.RawResponse atau result.ID ke database log jika diperlukan.
|
||||
// Contoh:
|
||||
// go logService.Create(c.Request.Context(), "encounter_create", req, result.RawResponse, http.StatusCreated)
|
||||
|
||||
response.Success(c, http.StatusCreated, "Successfully created Encounter", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *EncounterHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req encounter.EncounterRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated Encounter", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *EncounterHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req encounter.EncounterPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched Encounter", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *EncounterHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
result, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved Encounter", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *EncounterHandler) Search(c *gin.Context) {
|
||||
// Get query parameters string natively and fetch it directly (like: ?patient=xxx&status=active)
|
||||
queryParams := c.Request.URL.Query()
|
||||
result, err := h.service.Search(c.Request.Context(), queryParams)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved Encounters", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *EncounterHandler) SyncFromSIMRS(c *gin.Context) {
|
||||
idxdaftarStr := c.Param("idxdaftar")
|
||||
idxdaftar, err := strconv.ParseInt(idxdaftarStr, 10, 64)
|
||||
if err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format idxdaftar tidak valid", nil)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.SyncFromSIMRS(c.Request.Context(), idxdaftar)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully synced Encounter from SIMRS", result.FullResponse)
|
||||
}
|
||||
-102
@@ -1,102 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/usecase/episodeofcare"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type EpisodeOfCareHandler struct {
|
||||
service episodeofcare.Service
|
||||
}
|
||||
|
||||
func NewEpisodeOfCareHandler(service episodeofcare.Service) *EpisodeOfCareHandler {
|
||||
return &EpisodeOfCareHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *EpisodeOfCareHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/episodeofcare")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *EpisodeOfCareHandler) Create(c *gin.Context) {
|
||||
var req episodeofcare.EpisodeOfCareRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Successfully created EpisodeOfCare", result)
|
||||
}
|
||||
|
||||
func (h *EpisodeOfCareHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req episodeofcare.EpisodeOfCareRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated EpisodeOfCare", result)
|
||||
}
|
||||
|
||||
func (h *EpisodeOfCareHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req episodeofcare.EpisodeOfCarePatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched EpisodeOfCare", result)
|
||||
}
|
||||
|
||||
func (h *EpisodeOfCareHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
result, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved EpisodeOfCare", result)
|
||||
}
|
||||
|
||||
func (h *EpisodeOfCareHandler) Search(c *gin.Context) {
|
||||
queryParams := c.Request.URL.Query()
|
||||
result, err := h.service.Search(c.Request.Context(), queryParams)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved EpisodeOfCare records", result)
|
||||
}
|
||||
-102
@@ -1,102 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/usecase/imagingstudy"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type ImagingStudyHandler struct {
|
||||
service imagingstudy.Service
|
||||
}
|
||||
|
||||
func NewImagingStudyHandler(service imagingstudy.Service) *ImagingStudyHandler {
|
||||
return &ImagingStudyHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *ImagingStudyHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/imagingstudy")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *ImagingStudyHandler) Create(c *gin.Context) {
|
||||
var req imagingstudy.ImagingStudyRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Successfully created ImagingStudy", result)
|
||||
}
|
||||
|
||||
func (h *ImagingStudyHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req imagingstudy.ImagingStudyRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated ImagingStudy", result)
|
||||
}
|
||||
|
||||
func (h *ImagingStudyHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req imagingstudy.ImagingStudyPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched ImagingStudy", result)
|
||||
}
|
||||
|
||||
func (h *ImagingStudyHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
result, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved ImagingStudy", result)
|
||||
}
|
||||
|
||||
func (h *ImagingStudyHandler) Search(c *gin.Context) {
|
||||
queryParams := c.Request.URL.Query()
|
||||
result, err := h.service.Search(c.Request.Context(), queryParams)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved ImagingStudies", result)
|
||||
}
|
||||
-81
@@ -1,81 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"service/internal/satusehat/usecase/immunization"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type ImmunizationHandler struct{ service immunization.Service }
|
||||
|
||||
func NewImmunizationHandler(s immunization.Service) *ImmunizationHandler {
|
||||
return &ImmunizationHandler{service: s}
|
||||
}
|
||||
|
||||
func (h *ImmunizationHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
g := router.Group("/satusehat/immunization")
|
||||
g.POST("", h.Create)
|
||||
g.GET("", h.Search)
|
||||
g.GET("/:id", h.GetByID)
|
||||
g.PUT("/:id", h.Update)
|
||||
g.PATCH("/:id", h.Patch)
|
||||
}
|
||||
|
||||
func (h *ImmunizationHandler) Create(c *gin.Context) {
|
||||
var req immunization.ImmunizationRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid request", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *ImmunizationHandler) Update(c *gin.Context) {
|
||||
var req immunization.ImmunizationRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid request", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Update(c.Request.Context(), c.Param("id"), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *ImmunizationHandler) Patch(c *gin.Context) {
|
||||
var req immunization.ImmunizationPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid patch", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Patch(c.Request.Context(), c.Param("id"), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *ImmunizationHandler) GetByID(c *gin.Context) {
|
||||
res, err := h.service.GetByID(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *ImmunizationHandler) Search(c *gin.Context) {
|
||||
res, err := h.service.Search(c.Request.Context(), c.Request.URL.Query())
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
-102
@@ -1,102 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/usecase/medication"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type MedicationHandler struct {
|
||||
service medication.Service
|
||||
}
|
||||
|
||||
func NewMedicationHandler(service medication.Service) *MedicationHandler {
|
||||
return &MedicationHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *MedicationHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/medication")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *MedicationHandler) Create(c *gin.Context) {
|
||||
var req medication.MedicationRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Successfully created Medication", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req medication.MedicationRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated Medication", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req medication.MedicationPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched Medication", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
result, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved Medication", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationHandler) Search(c *gin.Context) {
|
||||
queryParams := c.Request.URL.Query()
|
||||
result, err := h.service.Search(c.Request.Context(), queryParams)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved Medications", result.FullResponse)
|
||||
}
|
||||
-91
@@ -1,91 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/usecase/medicationdispense"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type MedicationDispenseHandler struct {
|
||||
service medicationdispense.Service
|
||||
}
|
||||
|
||||
func NewMedicationDispenseHandler(service medicationdispense.Service) *MedicationDispenseHandler {
|
||||
return &MedicationDispenseHandler{service: service}
|
||||
}
|
||||
|
||||
func (h *MedicationDispenseHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/medicationdispense")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *MedicationDispenseHandler) Create(c *gin.Context) {
|
||||
var req medicationdispense.MedicationDispenseRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Successfully created MedicationDispense", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationDispenseHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req medicationdispense.MedicationDispenseRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated MedicationDispense", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationDispenseHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req medicationdispense.MedicationDispensePatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched MedicationDispense", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationDispenseHandler) GetByID(c *gin.Context) {
|
||||
result, err := h.service.GetByID(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved", result.FullResponse)
|
||||
}
|
||||
func (h *MedicationDispenseHandler) Search(c *gin.Context) {
|
||||
result, err := h.service.Search(c.Request.Context(), c.Request.URL.Query())
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved", result.FullResponse)
|
||||
}
|
||||
-91
@@ -1,91 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/usecase/medicationrequest"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type MedicationRequestHandler struct {
|
||||
service medicationrequest.Service
|
||||
}
|
||||
|
||||
func NewMedicationRequestHandler(service medicationrequest.Service) *MedicationRequestHandler {
|
||||
return &MedicationRequestHandler{service: service}
|
||||
}
|
||||
|
||||
func (h *MedicationRequestHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/medicationrequest")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *MedicationRequestHandler) Create(c *gin.Context) {
|
||||
var req medicationrequest.MedicationRequestRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Successfully created MedicationRequest", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationRequestHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req medicationrequest.MedicationRequestRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated MedicationRequest", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationRequestHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req medicationrequest.MedicationRequestPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched MedicationRequest", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationRequestHandler) GetByID(c *gin.Context) {
|
||||
result, err := h.service.GetByID(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved", result.FullResponse)
|
||||
}
|
||||
func (h *MedicationRequestHandler) Search(c *gin.Context) {
|
||||
result, err := h.service.Search(c.Request.Context(), c.Request.URL.Query())
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved", result.FullResponse)
|
||||
}
|
||||
-91
@@ -1,91 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/usecase/medicationstatement"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type MedicationStatementHandler struct {
|
||||
service medicationstatement.Service
|
||||
}
|
||||
|
||||
func NewMedicationStatementHandler(service medicationstatement.Service) *MedicationStatementHandler {
|
||||
return &MedicationStatementHandler{service: service}
|
||||
}
|
||||
|
||||
func (h *MedicationStatementHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/medicationstatement")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *MedicationStatementHandler) Create(c *gin.Context) {
|
||||
var req medicationstatement.MedicationStatementRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Successfully created MedicationStatement", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationStatementHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req medicationstatement.MedicationStatementRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated MedicationStatement", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationStatementHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req medicationstatement.MedicationStatementPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched MedicationStatement", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *MedicationStatementHandler) GetByID(c *gin.Context) {
|
||||
result, err := h.service.GetByID(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved", result.FullResponse)
|
||||
}
|
||||
func (h *MedicationStatementHandler) Search(c *gin.Context) {
|
||||
result, err := h.service.Search(c.Request.Context(), c.Request.URL.Query())
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved", result.FullResponse)
|
||||
}
|
||||
-102
@@ -1,102 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/usecase/observation"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type ObservationHandler struct {
|
||||
service observation.Service
|
||||
}
|
||||
|
||||
func NewObservationHandler(service observation.Service) *ObservationHandler {
|
||||
return &ObservationHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *ObservationHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/observation")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *ObservationHandler) Create(c *gin.Context) {
|
||||
var req observation.ObservationRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Successfully created Observation", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *ObservationHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req observation.ObservationRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated Observation", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *ObservationHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req observation.ObservationPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched Observation", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *ObservationHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
result, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved Observation", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *ObservationHandler) Search(c *gin.Context) {
|
||||
queryParams := c.Request.URL.Query()
|
||||
result, err := h.service.Search(c.Request.Context(), queryParams)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved Observations", result.FullResponse)
|
||||
}
|
||||
-102
@@ -1,102 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/usecase/procedure"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type ProcedureHandler struct {
|
||||
service procedure.Service
|
||||
}
|
||||
|
||||
func NewProcedureHandler(service procedure.Service) *ProcedureHandler {
|
||||
return &ProcedureHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *ProcedureHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/procedure")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *ProcedureHandler) Create(c *gin.Context) {
|
||||
var req procedure.ProcedureRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Successfully created Procedure", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *ProcedureHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req procedure.ProcedureRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated Procedure", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *ProcedureHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req procedure.ProcedurePatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched Procedure", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *ProcedureHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
result, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved Procedure", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *ProcedureHandler) Search(c *gin.Context) {
|
||||
queryParams := c.Request.URL.Query()
|
||||
result, err := h.service.Search(c.Request.Context(), queryParams)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved Procedures", result.FullResponse)
|
||||
}
|
||||
-91
@@ -1,91 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/usecase/questionnaireresponse"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type QuestionnaireResponseHandler struct {
|
||||
service questionnaireresponse.Service
|
||||
}
|
||||
|
||||
func NewQuestionnaireResponseHandler(service questionnaireresponse.Service) *QuestionnaireResponseHandler {
|
||||
return &QuestionnaireResponseHandler{service: service}
|
||||
}
|
||||
|
||||
func (h *QuestionnaireResponseHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/questionnaireresponse")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *QuestionnaireResponseHandler) Create(c *gin.Context) {
|
||||
var req questionnaireresponse.QuestionnaireResponseRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Successfully created QuestionnaireResponse", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *QuestionnaireResponseHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req questionnaireresponse.QuestionnaireResponseRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated QuestionnaireResponse", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *QuestionnaireResponseHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req questionnaireresponse.QuestionnaireResponsePatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched QuestionnaireResponse", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *QuestionnaireResponseHandler) GetByID(c *gin.Context) {
|
||||
result, err := h.service.GetByID(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved", result.FullResponse)
|
||||
}
|
||||
func (h *QuestionnaireResponseHandler) Search(c *gin.Context) {
|
||||
result, err := h.service.Search(c.Request.Context(), c.Request.URL.Query())
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved", result.FullResponse)
|
||||
}
|
||||
-102
@@ -1,102 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"service/internal/satusehat/usecase/servicerequest"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type ServiceRequestHandler struct {
|
||||
service servicerequest.Service
|
||||
}
|
||||
|
||||
func NewServiceRequestHandler(service servicerequest.Service) *ServiceRequestHandler {
|
||||
return &ServiceRequestHandler{
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *ServiceRequestHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
group := router.Group("/satusehat/servicerequest")
|
||||
{
|
||||
group.POST("", h.Create)
|
||||
group.GET("", h.Search)
|
||||
group.GET("/:id", h.GetByID)
|
||||
group.PUT("/:id", h.Update)
|
||||
group.PATCH("/:id", h.Patch)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *ServiceRequestHandler) Create(c *gin.Context) {
|
||||
var req servicerequest.ServiceRequestRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Successfully created ServiceRequest", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *ServiceRequestHandler) Update(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req servicerequest.ServiceRequestRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Update(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully updated ServiceRequest", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *ServiceRequestHandler) Patch(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req servicerequest.ServiceRequestPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
customErr := validator.TranslateError(err)
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Format permintaan patch tidak valid", customErr)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.service.Patch(c.Request.Context(), id, req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully patched ServiceRequest", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *ServiceRequestHandler) GetByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
result, err := h.service.GetByID(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved ServiceRequest", result.FullResponse)
|
||||
}
|
||||
|
||||
func (h *ServiceRequestHandler) Search(c *gin.Context) {
|
||||
queryParams := c.Request.URL.Query()
|
||||
result, err := h.service.Search(c.Request.Context(), queryParams)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Successfully retrieved ServiceRequests", result.FullResponse)
|
||||
}
|
||||
@@ -1,79 +0,0 @@
|
||||
package usecase
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"service/internal/satusehat/usecase/specimen"
|
||||
"service/pkg/response"
|
||||
"service/pkg/utils/validator"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type SpecimenHandler struct{ service specimen.Service }
|
||||
|
||||
func NewSpecimenHandler(s specimen.Service) *SpecimenHandler { return &SpecimenHandler{service: s} }
|
||||
|
||||
func (h *SpecimenHandler) RegisterRoutes(router *gin.RouterGroup) {
|
||||
g := router.Group("/satusehat/specimen")
|
||||
g.POST("", h.Create)
|
||||
g.GET("", h.Search)
|
||||
g.GET("/:id", h.GetByID)
|
||||
g.PUT("/:id", h.Update)
|
||||
g.PATCH("/:id", h.Patch)
|
||||
}
|
||||
|
||||
func (h *SpecimenHandler) Create(c *gin.Context) {
|
||||
var req specimen.SpecimenRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid request", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Create(c.Request.Context(), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusCreated, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *SpecimenHandler) Update(c *gin.Context) {
|
||||
var req specimen.SpecimenRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid request", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Update(c.Request.Context(), c.Param("id"), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *SpecimenHandler) Patch(c *gin.Context) {
|
||||
var req specimen.SpecimenPatchRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWithLog(c, err, http.StatusBadRequest, "Invalid patch", validator.TranslateError(err))
|
||||
return
|
||||
}
|
||||
res, err := h.service.Patch(c.Request.Context(), c.Param("id"), req)
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *SpecimenHandler) GetByID(c *gin.Context) {
|
||||
res, err := h.service.GetByID(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
func (h *SpecimenHandler) Search(c *gin.Context) {
|
||||
res, err := h.service.Search(c.Request.Context(), c.Request.URL.Query())
|
||||
if err != nil {
|
||||
handleSatuSehatError(c, err)
|
||||
return
|
||||
}
|
||||
response.Success(c, http.StatusOK, "Success", res.FullResponse)
|
||||
}
|
||||
@@ -8,15 +8,9 @@ import (
|
||||
"service/internal/infrastructure/config"
|
||||
"service/internal/infrastructure/transport/http/middleware"
|
||||
|
||||
antrolHttp "service/internal/infrastructure/transport/http/handlers/bpjs/antrol"
|
||||
aplicareHttp "service/internal/infrastructure/transport/http/handlers/bpjs/aplicare"
|
||||
apotekHttp "service/internal/infrastructure/transport/http/handlers/bpjs/apotek"
|
||||
vclaimHttp "service/internal/infrastructure/transport/http/handlers/bpjs/vclaim"
|
||||
authHttp "service/internal/infrastructure/transport/http/handlers/main/auth"
|
||||
healthHttp "service/internal/infrastructure/transport/http/handlers/main/health"
|
||||
roleHttp "service/internal/infrastructure/transport/http/handlers/main/master/roles"
|
||||
satuSehatRefHttp "service/internal/infrastructure/transport/http/handlers/satusehat/reference"
|
||||
satuSehatUsecaseHttp "service/internal/infrastructure/transport/http/handlers/satusehat/usecase"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
swaggerFiles "github.com/swaggo/files"
|
||||
@@ -26,40 +20,10 @@ import (
|
||||
// ModuleHandlers menampung seluruh HTTP handler opsional dari berbagai modul.
|
||||
// Jika sebuah handler bernilai nil, maka rutenya akan otomatis diabaikan (disabled).
|
||||
type ModuleHandlers struct {
|
||||
Auth *authHttp.AuthHandler
|
||||
RolePages *roleHttp.RolPagesHandler
|
||||
RolePermission *roleHttp.RolPermissionHandler
|
||||
RoleMaster *roleHttp.RoleMasterHandler
|
||||
Sep *vclaimHttp.SepHandler
|
||||
Peserta *vclaimHttp.PesertaHandler
|
||||
Antrol *antrolHttp.AntrolHandler
|
||||
AplicareBed *aplicareHttp.BedHandler
|
||||
ApotekReference *apotekHttp.ReferenceHandler
|
||||
SatuSehatAuth *satuSehatRefHttp.AuthHandler
|
||||
SatuSehatPatient *satuSehatRefHttp.PatientHandler
|
||||
SatuSehatPractitioner *satuSehatRefHttp.PractitionerHandler
|
||||
SatuSehatOrganization *satuSehatRefHttp.OrganizationHandler
|
||||
SatuSehatLocation *satuSehatRefHttp.LocationHandler
|
||||
SatuSehatKFA *satuSehatRefHttp.KFAHandler
|
||||
SSAllergyIntolerance *satuSehatUsecaseHttp.AllergyIntoleranceHandler
|
||||
SSCarePlan *satuSehatUsecaseHttp.CarePlanHandler
|
||||
SSClinicalImpression *satuSehatUsecaseHttp.ClinicalImpressionHandler
|
||||
SSComposition *satuSehatUsecaseHttp.CompositionHandler
|
||||
SSCondition *satuSehatUsecaseHttp.ConditionHandler
|
||||
SSDiagnosticReport *satuSehatUsecaseHttp.DiagnosticReportHandler
|
||||
SSEncounter *satuSehatUsecaseHttp.EncounterHandler
|
||||
SSEpisodeOfCare *satuSehatUsecaseHttp.EpisodeOfCareHandler
|
||||
SSImagingStudy *satuSehatUsecaseHttp.ImagingStudyHandler
|
||||
SSImmunization *satuSehatUsecaseHttp.ImmunizationHandler
|
||||
SSMedication *satuSehatUsecaseHttp.MedicationHandler
|
||||
SSMedicationDispense *satuSehatUsecaseHttp.MedicationDispenseHandler
|
||||
SSMedicationRequest *satuSehatUsecaseHttp.MedicationRequestHandler
|
||||
SSMedicationStatement *satuSehatUsecaseHttp.MedicationStatementHandler
|
||||
SSObservation *satuSehatUsecaseHttp.ObservationHandler
|
||||
SSProcedure *satuSehatUsecaseHttp.ProcedureHandler
|
||||
SSQuestionnaireResponse *satuSehatUsecaseHttp.QuestionnaireResponseHandler
|
||||
SSServiceRequest *satuSehatUsecaseHttp.ServiceRequestHandler
|
||||
SSSpecimen *satuSehatUsecaseHttp.SpecimenHandler
|
||||
Auth *authHttp.AuthHandler
|
||||
RolePages *roleHttp.RolPagesHandler
|
||||
RolePermission *roleHttp.RolPermissionHandler
|
||||
RoleMaster *roleHttp.RoleMasterHandler
|
||||
}
|
||||
|
||||
// SetupRoutes mendaftarkan seluruh endpoint API secara dinamis berdasarkan
|
||||
@@ -153,111 +117,6 @@ func SetupRoutes(
|
||||
if h.RoleMaster != nil {
|
||||
h.RoleMaster.RegisterRoutes(protected)
|
||||
}
|
||||
|
||||
// --- Routes Modul BPJS VClaim ---
|
||||
if h.Sep != nil {
|
||||
h.Sep.RegisterRoutes(protected)
|
||||
}
|
||||
if h.Peserta != nil {
|
||||
h.Peserta.RegisterRoutes(protected)
|
||||
}
|
||||
|
||||
// --- Routes Modul BPJS Antrol ---
|
||||
if h.Antrol != nil {
|
||||
h.Antrol.RegisterRoutes(protected)
|
||||
}
|
||||
|
||||
// --- Routes Modul BPJS Aplicares ---
|
||||
if h.AplicareBed != nil {
|
||||
h.AplicareBed.RegisterRoutes(protected)
|
||||
}
|
||||
|
||||
// --- Routes Modul BPJS Apotek ---
|
||||
if h.ApotekReference != nil {
|
||||
h.ApotekReference.RegisterRoutes(protected)
|
||||
}
|
||||
|
||||
// --- Routes Modul Satu Sehat ---
|
||||
// Buat grup khusus untuk membatasi traffic hit API ke Kemenkes
|
||||
satuSehatGroup := protected.Group("")
|
||||
satuSehatGroup.Use(middleware.MemoryRateLimitMiddleware(5.0, 10)) // Max 5 RPS, Burst capacity 10
|
||||
{
|
||||
if h.SatuSehatAuth != nil {
|
||||
h.SatuSehatAuth.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SatuSehatPatient != nil {
|
||||
h.SatuSehatPatient.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SatuSehatPractitioner != nil {
|
||||
h.SatuSehatPractitioner.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SatuSehatOrganization != nil {
|
||||
h.SatuSehatOrganization.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SatuSehatLocation != nil {
|
||||
h.SatuSehatLocation.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SatuSehatKFA != nil {
|
||||
h.SatuSehatKFA.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSAllergyIntolerance != nil {
|
||||
h.SSAllergyIntolerance.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSCarePlan != nil {
|
||||
h.SSCarePlan.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSClinicalImpression != nil {
|
||||
h.SSClinicalImpression.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSComposition != nil {
|
||||
h.SSComposition.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSCondition != nil {
|
||||
h.SSCondition.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSDiagnosticReport != nil {
|
||||
h.SSDiagnosticReport.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSEncounter != nil {
|
||||
h.SSEncounter.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSEpisodeOfCare != nil {
|
||||
h.SSEpisodeOfCare.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSImagingStudy != nil {
|
||||
h.SSImagingStudy.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSImmunization != nil {
|
||||
h.SSImmunization.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSMedication != nil {
|
||||
h.SSMedication.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSMedicationDispense != nil {
|
||||
h.SSMedicationDispense.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSMedicationRequest != nil {
|
||||
h.SSMedicationRequest.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSMedicationStatement != nil {
|
||||
h.SSMedicationStatement.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSObservation != nil {
|
||||
h.SSObservation.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSProcedure != nil {
|
||||
h.SSProcedure.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSQuestionnaireResponse != nil {
|
||||
h.SSQuestionnaireResponse.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSServiceRequest != nil {
|
||||
h.SSServiceRequest.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
if h.SSSpecimen != nil {
|
||||
h.SSSpecimen.RegisterRoutes(satuSehatGroup)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,40 +8,9 @@ import (
|
||||
"gorm.io/gorm"
|
||||
|
||||
"service/internal/auth"
|
||||
antrol "service/internal/bpjs/antrol/reference"
|
||||
aplicareBed "service/internal/bpjs/aplicare/bed"
|
||||
apotekDpho "service/internal/bpjs/apotek/reference/dpho"
|
||||
apotekPoli "service/internal/bpjs/apotek/reference/poli"
|
||||
peserta "service/internal/bpjs/vclaim/peserta"
|
||||
sep "service/internal/bpjs/vclaim/sep"
|
||||
roleMaster "service/internal/master/role/master"
|
||||
rolePages "service/internal/master/role/pages"
|
||||
rolePermission "service/internal/master/role/permission"
|
||||
satuSehatAuth "service/internal/satusehat/reference/auth"
|
||||
satuSehatKfa "service/internal/satusehat/reference/kfa"
|
||||
satuSehatLocation "service/internal/satusehat/reference/location"
|
||||
satuSehatOrganization "service/internal/satusehat/reference/organization"
|
||||
satuSehatPatient "service/internal/satusehat/reference/patient"
|
||||
satuSehatPractitioner "service/internal/satusehat/reference/practitioner"
|
||||
"service/internal/satusehat/usecase/allergyintolerance"
|
||||
"service/internal/satusehat/usecase/careplan"
|
||||
clinicalimpression "service/internal/satusehat/usecase/clinicalImpression"
|
||||
"service/internal/satusehat/usecase/composition"
|
||||
"service/internal/satusehat/usecase/condition"
|
||||
"service/internal/satusehat/usecase/diagnosticreport"
|
||||
"service/internal/satusehat/usecase/encounter"
|
||||
"service/internal/satusehat/usecase/episodeofcare"
|
||||
"service/internal/satusehat/usecase/imagingstudy"
|
||||
"service/internal/satusehat/usecase/immunization"
|
||||
"service/internal/satusehat/usecase/medication"
|
||||
"service/internal/satusehat/usecase/medicationdispense"
|
||||
"service/internal/satusehat/usecase/medicationrequest"
|
||||
"service/internal/satusehat/usecase/medicationstatement"
|
||||
"service/internal/satusehat/usecase/observation"
|
||||
"service/internal/satusehat/usecase/procedure"
|
||||
"service/internal/satusehat/usecase/questionnaireresponse"
|
||||
"service/internal/satusehat/usecase/servicerequest"
|
||||
"service/internal/satusehat/usecase/specimen"
|
||||
)
|
||||
|
||||
// MasterServices menampung kumpulan service untuk domain Master Data
|
||||
@@ -51,59 +20,6 @@ type MasterServices struct {
|
||||
RoleMaster roleMaster.Service
|
||||
}
|
||||
|
||||
// VClaimServices menampung kumpulan service untuk integrasi BPJS VClaim
|
||||
type VClaimServices struct {
|
||||
Sep sep.Service
|
||||
Peserta peserta.Service
|
||||
}
|
||||
|
||||
// AntrolServices menampung kumpulan service untuk integrasi BPJS Antrean RS
|
||||
type AntrolServices struct {
|
||||
Reference antrol.Service
|
||||
}
|
||||
|
||||
// AplicaresServices menampung kumpulan service untuk integrasi BPJS Aplicares
|
||||
type AplicaresServices struct {
|
||||
Bed aplicareBed.Service
|
||||
}
|
||||
|
||||
// ApotekServices menampung kumpulan service untuk integrasi BPJS Apotek
|
||||
type ApotekServices struct {
|
||||
DPHO apotekDpho.Service
|
||||
Poli apotekPoli.Service
|
||||
}
|
||||
|
||||
// SatuSehatServices menampung kumpulan service untuk integrasi Kemenkes Satu Sehat
|
||||
type SatuSehatServices struct {
|
||||
Auth satuSehatAuth.Service
|
||||
Patient satuSehatPatient.Service
|
||||
Practitioner satuSehatPractitioner.Service
|
||||
Organization satuSehatOrganization.Service
|
||||
Location satuSehatLocation.Service
|
||||
KFA satuSehatKfa.Service
|
||||
|
||||
// Usecase Services
|
||||
AllergyIntolerance allergyintolerance.Service
|
||||
CarePlan careplan.Service
|
||||
ClinicalImpression clinicalimpression.Service
|
||||
Composition composition.Service
|
||||
Condition condition.Service
|
||||
DiagnosticReport diagnosticreport.Service
|
||||
Encounter encounter.Service
|
||||
EpisodeOfCare episodeofcare.Service
|
||||
ImagingStudy imagingstudy.Service
|
||||
Immunization immunization.Service
|
||||
Medication medication.Service
|
||||
MedicationDispense medicationdispense.Service
|
||||
MedicationRequest medicationrequest.Service
|
||||
MedicationStatement medicationstatement.Service
|
||||
Observation observation.Service
|
||||
Procedure procedure.Service
|
||||
QuestionnaireResponse questionnaireresponse.Service
|
||||
ServiceRequest servicerequest.Service
|
||||
Specimen specimen.Service
|
||||
}
|
||||
|
||||
// ServiceRegistry berfungsi sebagai Dependency Injection Container untuk transport HTTP.
|
||||
// Struktur ini mencegah membengkaknya parameter pada saat inisialisasi API.
|
||||
type ServiceRegistry struct {
|
||||
@@ -115,9 +31,4 @@ type ServiceRegistry struct {
|
||||
// Modul Aplikasi (Pisahkan berdasarkan Bounded Context)
|
||||
AuthService auth.Service
|
||||
Master *MasterServices
|
||||
VClaim *VClaimServices
|
||||
Antrol *AntrolServices
|
||||
Aplicare *AplicaresServices
|
||||
Apotek *ApotekServices
|
||||
SatuSehat *SatuSehatServices
|
||||
}
|
||||
@@ -13,15 +13,9 @@ import (
|
||||
"service/internal/infrastructure/transport/http/middleware"
|
||||
"service/internal/infrastructure/transport/http/routes"
|
||||
|
||||
antrolHttp "service/internal/infrastructure/transport/http/handlers/bpjs/antrol"
|
||||
aplicareHttp "service/internal/infrastructure/transport/http/handlers/bpjs/aplicare"
|
||||
apotekHttp "service/internal/infrastructure/transport/http/handlers/bpjs/apotek"
|
||||
vclaimHttp "service/internal/infrastructure/transport/http/handlers/bpjs/vclaim"
|
||||
authHttp "service/internal/infrastructure/transport/http/handlers/main/auth"
|
||||
healthHttp "service/internal/infrastructure/transport/http/handlers/main/health"
|
||||
roleHttp "service/internal/infrastructure/transport/http/handlers/main/master/roles"
|
||||
satuSehatRefHttp "service/internal/infrastructure/transport/http/handlers/satusehat/reference"
|
||||
satuSehatUsecaseHttp "service/internal/infrastructure/transport/http/handlers/satusehat/usecase"
|
||||
|
||||
// Inisialisasi pkg
|
||||
"service/pkg/errors"
|
||||
@@ -88,118 +82,6 @@ func NewHTTPServer(
|
||||
}
|
||||
}
|
||||
|
||||
// Inisialisasi Handlers Modul VClaim
|
||||
if registry.VClaim != nil {
|
||||
if registry.VClaim.Sep != nil {
|
||||
appHandlers.Sep = vclaimHttp.NewSepHandler(registry.VClaim.Sep)
|
||||
}
|
||||
if registry.VClaim.Peserta != nil {
|
||||
appHandlers.Peserta = vclaimHttp.NewPesertaHandler(registry.VClaim.Peserta)
|
||||
}
|
||||
}
|
||||
|
||||
// Inisialisasi Handlers Modul Antrol
|
||||
if registry.Antrol != nil {
|
||||
if registry.Antrol.Reference != nil {
|
||||
appHandlers.Antrol = antrolHttp.NewAntrolHandler(registry.Antrol.Reference)
|
||||
}
|
||||
}
|
||||
|
||||
// Inisialisasi Handlers Modul Aplicares
|
||||
if registry.Aplicare != nil {
|
||||
if registry.Aplicare.Bed != nil {
|
||||
appHandlers.AplicareBed = aplicareHttp.NewBedHandler(registry.Aplicare.Bed)
|
||||
}
|
||||
}
|
||||
|
||||
// Inisialisasi Handlers Modul Apotek
|
||||
if registry.Apotek != nil {
|
||||
if registry.Apotek.DPHO != nil && registry.Apotek.Poli != nil {
|
||||
appHandlers.ApotekReference = apotekHttp.NewReferenceHandler(registry.Apotek.DPHO, registry.Apotek.Poli)
|
||||
}
|
||||
}
|
||||
|
||||
// Inisialisasi Handlers Modul Satu Sehat
|
||||
if registry.SatuSehat != nil {
|
||||
if registry.SatuSehat.Auth != nil {
|
||||
appHandlers.SatuSehatAuth = satuSehatRefHttp.NewAuthHandler(registry.SatuSehat.Auth)
|
||||
}
|
||||
if registry.SatuSehat.Patient != nil {
|
||||
appHandlers.SatuSehatPatient = satuSehatRefHttp.NewPatientHandler(registry.SatuSehat.Patient)
|
||||
}
|
||||
if registry.SatuSehat.Practitioner != nil {
|
||||
appHandlers.SatuSehatPractitioner = satuSehatRefHttp.NewPractitionerHandler(registry.SatuSehat.Practitioner)
|
||||
}
|
||||
if registry.SatuSehat.Organization != nil {
|
||||
appHandlers.SatuSehatOrganization = satuSehatRefHttp.NewOrganizationHandler(registry.SatuSehat.Organization)
|
||||
}
|
||||
if registry.SatuSehat.Location != nil {
|
||||
appHandlers.SatuSehatLocation = satuSehatRefHttp.NewLocationHandler(registry.SatuSehat.Location)
|
||||
}
|
||||
if registry.SatuSehat.KFA != nil {
|
||||
appHandlers.SatuSehatKFA = satuSehatRefHttp.NewKFAHandler(registry.SatuSehat.KFA)
|
||||
}
|
||||
|
||||
// Inisialisasi Handlers Modul Satu Sehat Usecase
|
||||
if registry.SatuSehat.AllergyIntolerance != nil {
|
||||
appHandlers.SSAllergyIntolerance = satuSehatUsecaseHttp.NewAllergyIntoleranceHandler(registry.SatuSehat.AllergyIntolerance)
|
||||
}
|
||||
if registry.SatuSehat.CarePlan != nil {
|
||||
appHandlers.SSCarePlan = satuSehatUsecaseHttp.NewCarePlanHandler(registry.SatuSehat.CarePlan)
|
||||
}
|
||||
if registry.SatuSehat.ClinicalImpression != nil {
|
||||
appHandlers.SSClinicalImpression = satuSehatUsecaseHttp.NewClinicalImpressionHandler(registry.SatuSehat.ClinicalImpression)
|
||||
}
|
||||
if registry.SatuSehat.Composition != nil {
|
||||
appHandlers.SSComposition = satuSehatUsecaseHttp.NewCompositionHandler(registry.SatuSehat.Composition)
|
||||
}
|
||||
if registry.SatuSehat.Condition != nil {
|
||||
appHandlers.SSCondition = satuSehatUsecaseHttp.NewConditionHandler(registry.SatuSehat.Condition)
|
||||
}
|
||||
if registry.SatuSehat.DiagnosticReport != nil {
|
||||
appHandlers.SSDiagnosticReport = satuSehatUsecaseHttp.NewDiagnosticReportHandler(registry.SatuSehat.DiagnosticReport)
|
||||
}
|
||||
if registry.SatuSehat.Encounter != nil {
|
||||
appHandlers.SSEncounter = satuSehatUsecaseHttp.NewEncounterHandler(registry.SatuSehat.Encounter)
|
||||
}
|
||||
if registry.SatuSehat.EpisodeOfCare != nil {
|
||||
appHandlers.SSEpisodeOfCare = satuSehatUsecaseHttp.NewEpisodeOfCareHandler(registry.SatuSehat.EpisodeOfCare)
|
||||
}
|
||||
if registry.SatuSehat.ImagingStudy != nil {
|
||||
appHandlers.SSImagingStudy = satuSehatUsecaseHttp.NewImagingStudyHandler(registry.SatuSehat.ImagingStudy)
|
||||
}
|
||||
if registry.SatuSehat.Immunization != nil {
|
||||
appHandlers.SSImmunization = satuSehatUsecaseHttp.NewImmunizationHandler(registry.SatuSehat.Immunization)
|
||||
}
|
||||
if registry.SatuSehat.Medication != nil {
|
||||
appHandlers.SSMedication = satuSehatUsecaseHttp.NewMedicationHandler(registry.SatuSehat.Medication)
|
||||
}
|
||||
if registry.SatuSehat.MedicationDispense != nil {
|
||||
appHandlers.SSMedicationDispense = satuSehatUsecaseHttp.NewMedicationDispenseHandler(registry.SatuSehat.MedicationDispense)
|
||||
}
|
||||
if registry.SatuSehat.MedicationRequest != nil {
|
||||
appHandlers.SSMedicationRequest = satuSehatUsecaseHttp.NewMedicationRequestHandler(registry.SatuSehat.MedicationRequest)
|
||||
}
|
||||
if registry.SatuSehat.MedicationStatement != nil {
|
||||
appHandlers.SSMedicationStatement = satuSehatUsecaseHttp.NewMedicationStatementHandler(registry.SatuSehat.MedicationStatement)
|
||||
}
|
||||
if registry.SatuSehat.Observation != nil {
|
||||
appHandlers.SSObservation = satuSehatUsecaseHttp.NewObservationHandler(registry.SatuSehat.Observation)
|
||||
}
|
||||
if registry.SatuSehat.Procedure != nil {
|
||||
appHandlers.SSProcedure = satuSehatUsecaseHttp.NewProcedureHandler(registry.SatuSehat.Procedure)
|
||||
}
|
||||
if registry.SatuSehat.QuestionnaireResponse != nil {
|
||||
appHandlers.SSQuestionnaireResponse = satuSehatUsecaseHttp.NewQuestionnaireResponseHandler(registry.SatuSehat.QuestionnaireResponse)
|
||||
}
|
||||
if registry.SatuSehat.ServiceRequest != nil {
|
||||
appHandlers.SSServiceRequest = satuSehatUsecaseHttp.NewServiceRequestHandler(registry.SatuSehat.ServiceRequest)
|
||||
}
|
||||
if registry.SatuSehat.Specimen != nil {
|
||||
appHandlers.SSSpecimen = satuSehatUsecaseHttp.NewSpecimenHandler(registry.SatuSehat.Specimen)
|
||||
}
|
||||
}
|
||||
|
||||
// Inisialisasi Health Handler dengan dependensi yang benar
|
||||
// Gunakan constructor baru yang menerima cache manager
|
||||
healthHandler := healthHttp.NewHealthHandlerWithCache(registry.PrimaryDB, registry.CacheManager, registry.Config, registry.DBManager)
|
||||
|
||||
Reference in New Issue
Block a user