diff --git a/internal/interface/main-handler/encounter-document/handler.go b/internal/interface/main-handler/encounter-document/handler.go new file mode 100644 index 00000000..60fa6d6a --- /dev/null +++ b/internal/interface/main-handler/encounter-document/handler.go @@ -0,0 +1,71 @@ +package encounter_document + +import ( + "net/http" + + rw "github.com/karincake/risoles" + sf "github.com/karincake/semprit" + + e "simrs-vx/internal/domain/main-entities/encounter-document" + u "simrs-vx/internal/use-case/main-use-case/encounter-document" +) + +type myBase struct{} + +var O myBase + +func (obj myBase) Create(w http.ResponseWriter, r *http.Request) { + dto := e.CreateDto{} + if res := rw.ValidateStructByIOR(w, r.Body, &dto); !res { + return + } + res, err := u.Create(dto) + rw.DataResponse(w, res, err) +} + +func (obj myBase) GetList(w http.ResponseWriter, r *http.Request) { + dto := e.ReadListDto{} + sf.UrlQueryParam(&dto, *r.URL) + res, err := u.ReadList(dto) + rw.DataResponse(w, res, err) +} + +func (obj myBase) GetDetail(w http.ResponseWriter, r *http.Request) { + id := rw.ValidateInt(w, "id", r.PathValue("id")) + if id <= 0 { + return + } + dto := e.ReadDetailDto{} + + sf.UrlQueryParam(&dto, *r.URL) + dto.Id = uint16(id) + res, err := u.ReadDetail(dto) + rw.DataResponse(w, res, err) +} + +func (obj myBase) Update(w http.ResponseWriter, r *http.Request) { + id := rw.ValidateInt(w, "id", r.PathValue("id")) + if id <= 0 { + return + } + + dto := e.UpdateDto{} + if res := rw.ValidateStructByIOR(w, r.Body, &dto); !res { + return + } + dto.Id = uint16(id) + res, err := u.Update(dto) + rw.DataResponse(w, res, err) +} + +func (obj myBase) Delete(w http.ResponseWriter, r *http.Request) { + id := rw.ValidateInt(w, "id", r.PathValue("id")) + if id <= 0 { + return + } + + dto := e.DeleteDto{} + dto.Id = uint16(id) + res, err := u.Delete(dto) + rw.DataResponse(w, res, err) +} diff --git a/internal/interface/main-handler/main-handler.go b/internal/interface/main-handler/main-handler.go index 346436d0..c834d963 100644 --- a/internal/interface/main-handler/main-handler.go +++ b/internal/interface/main-handler/main-handler.go @@ -2,6 +2,7 @@ package handler import ( "net/http" + encounterdocument "simrs-vx/internal/interface/main-handler/encounter-document" /******************** main / transaction ********************/ adime "simrs-vx/internal/interface/main-handler/adime" @@ -72,6 +73,7 @@ import ( /******************** sources ********************/ device "simrs-vx/internal/interface/main-handler/device" diagnosesrc "simrs-vx/internal/interface/main-handler/diagnose-src" + district "simrs-vx/internal/interface/main-handler/district" division "simrs-vx/internal/interface/main-handler/division" divisionposition "simrs-vx/internal/interface/main-handler/division-position" doctorfee "simrs-vx/internal/interface/main-handler/doctor-fee" @@ -95,7 +97,10 @@ import ( medicinegroup "simrs-vx/internal/interface/main-handler/medicine-group" medicinemethod "simrs-vx/internal/interface/main-handler/medicine-method" pharmacycompany "simrs-vx/internal/interface/main-handler/pharmacy-company" + postalregion "simrs-vx/internal/interface/main-handler/postal-region" proceduresrc "simrs-vx/internal/interface/main-handler/procedure-src" + province "simrs-vx/internal/interface/main-handler/province" + regency "simrs-vx/internal/interface/main-handler/regency" specialist "simrs-vx/internal/interface/main-handler/specialist" specialistposition "simrs-vx/internal/interface/main-handler/specialist-position" subspecialist "simrs-vx/internal/interface/main-handler/subspecialist" @@ -106,11 +111,6 @@ import ( uom "simrs-vx/internal/interface/main-handler/uom" vehicle "simrs-vx/internal/interface/main-handler/vehicle" vehiclehist "simrs-vx/internal/interface/main-handler/vehicle-hist" - - district "simrs-vx/internal/interface/main-handler/district" - postalregion "simrs-vx/internal/interface/main-handler/postal-region" - province "simrs-vx/internal/interface/main-handler/province" - regency "simrs-vx/internal/interface/main-handler/regency" village "simrs-vx/internal/interface/main-handler/village" ///// Internal @@ -273,6 +273,7 @@ func SetRoutes() http.Handler { hc.RegCrud(r, "/v1/therapy-protocol", therapyprotocol.O) hc.RegCrud(r, "/v1/chemo-protocol", chemoprotocol.O) hc.RegCrud(r, "/v1/upload", upload.O) + hc.RegCrud(r, "/v1/encounter-document", encounterdocument.O) /******************** actor ********************/ hc.RegCrud(r, "/v1/person", person.O) diff --git a/internal/interface/main-handler/upload/handler.go b/internal/interface/main-handler/upload/handler.go index 9f1f45a0..abf8919d 100644 --- a/internal/interface/main-handler/upload/handler.go +++ b/internal/interface/main-handler/upload/handler.go @@ -6,11 +6,11 @@ import ( eru "simrs-vx/internal/domain/references/upload" + e "simrs-vx/internal/domain/main-entities/upload" + d "github.com/karincake/dodol" rw "github.com/karincake/risoles" - e "simrs-vx/internal/domain/main-entities/upload" - u "simrs-vx/internal/use-case/main-use-case/upload" ) @@ -86,4 +86,5 @@ func (obj myBase) Update(w http.ResponseWriter, r *http.Request) { } func (obj myBase) Delete(w http.ResponseWriter, r *http.Request) { + } diff --git a/internal/use-case/main-use-case/encounter-document/case.go b/internal/use-case/main-use-case/encounter-document/case.go index 206b5e1d..88592db7 100644 --- a/internal/use-case/main-use-case/encounter-document/case.go +++ b/internal/use-case/main-use-case/encounter-document/case.go @@ -244,13 +244,6 @@ func Delete(input e.DeleteDto) (*d.Data, error) { return err } - mwRunner := newMiddlewareRunner(&event, tx) - mwRunner.setMwType(pu.MWTPre) - // Run pre-middleware - if err := mwRunner.RunDeleteMiddleware(readDetailPreMw, &rdDto, data); err != nil { - return err - } - if err := removeUploadedFile(string(eru.ETCEncounter), *data.FilePath, &event); err != nil { return err } @@ -259,12 +252,6 @@ func Delete(input e.DeleteDto) (*d.Data, error) { return err } - mwRunner.setMwType(pu.MWTPost) - // Run post-middleware - if err := mwRunner.RunDeleteMiddleware(readDetailPostMw, &rdDto, data); err != nil { - return err - } - return nil }) diff --git a/internal/use-case/main-use-case/upload/case.go b/internal/use-case/main-use-case/upload/case.go index 40ff74f6..0d11a308 100644 --- a/internal/use-case/main-use-case/upload/case.go +++ b/internal/use-case/main-use-case/upload/case.go @@ -4,6 +4,7 @@ import ( "errors" pl "simrs-vx/pkg/logger" pu "simrs-vx/pkg/use-case-helper" + "strconv" dg "github.com/karincake/apem/db-gorm-pg" d "github.com/karincake/dodol" diff --git a/internal/use-case/main-use-case/upload/helper.go b/internal/use-case/main-use-case/upload/helper.go index 652d80fa..0ddfd220 100644 --- a/internal/use-case/main-use-case/upload/helper.go +++ b/internal/use-case/main-use-case/upload/helper.go @@ -164,29 +164,44 @@ func setEncounterDocument(input e.CreateDto, event *pl.Event, tx *gorm.DB) (*ee. Upload_Employee_Id: input.Upload_Employee_Id, } - if len(dataUpload) > 0 { - if err := removeUploadedFile(string(input.EntityType_Code), *dataUpload[0].FilePath, *dataUpload[0].Encounter_Id, event); err != nil { - return nil, err + if input.Type_Code == eru.UCSEP || input.Type_Code == eru.UCSIPP { + if len(dataUpload) > 0 { + data = dataUpload[0] + + // remove file + if err := removeUploadedFile(string(input.EntityType_Code), *data.FilePath, *data.Encounter_Id, event); err != nil { + return nil, err + } + + // update data + err = ue.UpdateData(ee.UpdateDto{ + Id: uint16(data.Id), + CreateDto: createDto}, &data, event, tx) + if err != nil { + return nil, err + } + + data.FilePath = &input.FilePath + + return &data, nil } - // update data - err = ue.UpdateData(ee.UpdateDto{ - Id: uint16(dataUpload[0].Id), - CreateDto: createDto}, &dataUpload[0], event, tx) - if err != nil { - return nil, err - } - - data = dataUpload[0] - data.FilePath = &input.FilePath - } else { // insert data resData, err := ue.CreateData(createDto, event, tx) if err != nil { return nil, err } data = *resData + + return &data, nil } + // insert data + resData, err := ue.CreateData(createDto, event, tx) + if err != nil { + return nil, err + } + data = *resData + return &data, nil }