feat (patient): upload done

This commit is contained in:
dpurbosakti
2025-09-24 14:24:57 +07:00
parent 016fcc667c
commit f618a2d6d0
10 changed files with 229 additions and 37 deletions
@@ -235,6 +235,7 @@ func SetRoutes() http.Handler {
"PATCH /{id}": patient.O.Update,
"DELETE /{id}": patient.O.Delete,
"GET /by-identifier": patient.O.Search,
"POST /{id}/upload": patient.O.Upload,
})
/******************** sources ********************/
@@ -10,6 +10,8 @@ import (
e "simrs-vx/internal/domain/main-entities/patient"
u "simrs-vx/internal/use-case/main-use-case/patient"
ere "simrs-vx/internal/domain/references/encounter"
)
type myBase struct{}
@@ -76,3 +78,37 @@ func (obj myBase) Search(w http.ResponseWriter, r *http.Request) {
res, err := u.Search(dto)
rw.DataResponse(w, res, err)
}
func (obj myBase) Upload(w http.ResponseWriter, r *http.Request) {
id := rw.ValidateInt(w, "id", r.PathValue("id"))
if id <= 0 {
return
}
err := r.ParseMultipartForm(10 << 20) // 10 MB
if err != nil {
rw.DataResponse(w, nil, err)
return
}
code := r.FormValue("code")
file, header, err := r.FormFile("content")
if err != nil {
rw.DataResponse(w, nil, err)
return
}
defer file.Close()
dto := e.UploadDto{}
dto.Id = uint(id)
dto.Code = ere.UploadCode(code)
dto.File = file
dto.FileHeader = header
dto.Filename = header.Filename
dto.Size = header.Size
dto.MimeType = header.Header.Get("Content-Type")
res, err := u.Upload(dto)
rw.DataResponse(w, res, err)
}