first commit

This commit is contained in:
Sas Andy
2024-12-09 09:51:19 +07:00
commit ecc5dfd9c0
69 changed files with 5365 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
package terminology
import (
"fmt"
"net/http"
"github.com/go-playground/validator/v10"
"github.com/gorilla/mux"
"sismedika.com/sas/westone/services/auth"
"sismedika.com/sas/westone/types"
"sismedika.com/sas/westone/utils"
)
type Handler struct {
store types.TerminologyStore
}
func NewHandler(store types.TerminologyStore) *Handler {
return &Handler{store: store}
}
func (h *Handler) RegisterRoutes(router *mux.Router) {
router.HandleFunc("/termicheck", h.checkAPI).Methods(http.MethodGet)
termi := router.PathPrefix("/terminology").Subrouter()
termi.Use(auth.AuthMiddleware)
termi.HandleFunc("/getdisplay", h.handleTerminologyDisplay).Methods(http.MethodGet)
}
func (h *Handler) checkAPI(w http.ResponseWriter, _ *http.Request) {
utils.WriteJSON(w, http.StatusOK, "Connected")
}
func (h *Handler) handleTerminologyDisplay(w http.ResponseWriter, r *http.Request) {
var payload types.GetTerminologyDisplayPayload
if err := utils.ParseJSON(r, &payload); err != nil {
utils.WriteError(w, http.StatusBadRequest, err)
return
}
if err := utils.Validate.Struct(payload); err != nil {
erros := err.(validator.ValidationErrors)
utils.WriteError(w, http.StatusBadRequest, fmt.Errorf("invalid payload: %v", erros))
return
}
response, err := h.store.GetTerminologyDisplay(payload.Code, payload.CodeSystem)
if err != nil {
utils.WriteError(w, http.StatusInternalServerError, err)
return
}
utils.WriteJSON(w, http.StatusOK, response)
}

View File

@@ -0,0 +1,29 @@
package terminology
import (
"github.com/jmoiron/sqlx"
"sismedika.com/sas/westone/types"
)
type Store struct {
db *sqlx.DB
}
func NewStore(db *sqlx.DB) *Store {
return &Store{db: db}
}
func (s *Store) GetTerminologyDisplay(code string, system string) (*types.CodeableTerminology, error) {
term := new(types.CodeableTerminology)
qry := `
SELECT code, display, code_system
FROM terminology
WHERE code = ? AND code_system = ?
`
if err := s.db.Get(term, qry, code, system); err != nil {
return nil, err
}
return term, nil
}