From 05682754b5240107455c981dab50ee6c338dfc67 Mon Sep 17 00:00:00 2001 From: vanilia Date: Fri, 14 Nov 2025 10:38:00 +0700 Subject: [PATCH 1/3] add constant upload --- internal/domain/references/upload/upload.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/internal/domain/references/upload/upload.go b/internal/domain/references/upload/upload.go index 603be6c8..b22960f4 100644 --- a/internal/domain/references/upload/upload.go +++ b/internal/domain/references/upload/upload.go @@ -8,13 +8,16 @@ type ( ) const ( - UCPRN UploadCode = "person-resident-number" // Person Resident Number - UCPDL UploadCode = "person-driver-license" // Person Driver License - UCPP UploadCode = "person-passport" // Person Passport - UCPFC UploadCode = "person-family-card" // Person Family Card - UCMIR UploadCode = "mcu-item-result" // Mcu Item Result - UCSEP UploadCode = "vclaim-sep" // SEP - UCSIPP UploadCode = "vclaim-sipp" // SIPP + UCPRN UploadCode = "person-resident-number" // Person Resident Number + UCPDL UploadCode = "person-driver-license" // Person Driver License + UCPP UploadCode = "person-passport" // Person Passport + UCPFC UploadCode = "person-family-card" // Person Family Card + UCMIR UploadCode = "mcu-item-result" // Mcu Item Result + UCEnPatient UploadCode = "encounter-patient" + UCEnSupport UploadCode = "encounter-support" + UcEnOther UploadCode = "encounter-other" + UCSEP UploadCode = "vclaim-sep" // SEP + UCSIPP UploadCode = "vclaim-sipp" // SIPP ETCPerson EntityTypeCode = "person" ETCEncounter EntityTypeCode = "encounter" @@ -26,7 +29,7 @@ var validUploadCodesByEntity = map[EntityTypeCode][]UploadCode{ UCPRN, UCPDL, UCPP, UCPFC, }, ETCEncounter: { - UCSEP, UCSIPP, + UCSEP, UCSIPP, UCEnPatient, UCEnSupport, UcEnOther, }, ETCMCU: { UCMIR, From b604216649a42d20fee2063796b35ebd3551f5e1 Mon Sep 17 00:00:00 2001 From: vanilia Date: Fri, 14 Nov 2025 11:27:43 +0700 Subject: [PATCH 2/3] adjust upload --- .../encounter-document/handler.go | 71 +++++++++++++++++++ .../interface/main-handler/main-handler.go | 11 +-- .../interface/main-handler/upload/handler.go | 5 +- .../main-use-case/encounter-document/case.go | 13 ---- .../use-case/main-use-case/upload/case.go | 1 + .../use-case/main-use-case/upload/helper.go | 43 +++++++---- 6 files changed, 110 insertions(+), 34 deletions(-) create mode 100644 internal/interface/main-handler/encounter-document/handler.go 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 } From 85761d9be4c8ab2785149c3a572ca65d4216c189 Mon Sep 17 00:00:00 2001 From: vanilia Date: Fri, 14 Nov 2025 12:03:18 +0700 Subject: [PATCH 3/3] adjust upload --- internal/interface/main-handler/main-handler.go | 2 +- internal/interface/main-handler/upload/handler.go | 7 +++---- internal/use-case/main-use-case/upload/helper.go | 9 --------- 3 files changed, 4 insertions(+), 14 deletions(-) diff --git a/internal/interface/main-handler/main-handler.go b/internal/interface/main-handler/main-handler.go index 707f6fd6..b6edbbee 100644 --- a/internal/interface/main-handler/main-handler.go +++ b/internal/interface/main-handler/main-handler.go @@ -2,7 +2,6 @@ package handler import ( "net/http" - encounterdocument "simrs-vx/internal/interface/main-handler/encounter-document" "simrs-vx/internal/interface/main-handler/upload" /******************** main / transaction ********************/ @@ -18,6 +17,7 @@ import ( deviceorder "simrs-vx/internal/interface/main-handler/device-order" deviceorderitem "simrs-vx/internal/interface/main-handler/device-order-item" encounter "simrs-vx/internal/interface/main-handler/encounter" + encounterdocument "simrs-vx/internal/interface/main-handler/encounter-document" internalreference "simrs-vx/internal/interface/main-handler/internal-reference" materialorder "simrs-vx/internal/interface/main-handler/material-order" materialorderitem "simrs-vx/internal/interface/main-handler/material-order-item" diff --git a/internal/interface/main-handler/upload/handler.go b/internal/interface/main-handler/upload/handler.go index abf8919d..72a71fbf 100644 --- a/internal/interface/main-handler/upload/handler.go +++ b/internal/interface/main-handler/upload/handler.go @@ -4,13 +4,12 @@ import ( "net/http" "strconv" - 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" + eru "simrs-vx/internal/domain/references/upload" + + e "simrs-vx/internal/domain/main-entities/upload" u "simrs-vx/internal/use-case/main-use-case/upload" ) diff --git a/internal/use-case/main-use-case/upload/helper.go b/internal/use-case/main-use-case/upload/helper.go index 0ddfd220..e9e0ff29 100644 --- a/internal/use-case/main-use-case/upload/helper.go +++ b/internal/use-case/main-use-case/upload/helper.go @@ -185,15 +185,6 @@ func setEncounterDocument(input e.CreateDto, event *pl.Event, tx *gorm.DB) (*ee. return &data, nil } - - // insert data - resData, err := ue.CreateData(createDto, event, tx) - if err != nil { - return nil, err - } - data = *resData - - return &data, nil } // insert data