Merge branch 'migration' of github.com:dikstub-rssa/simrs-be into feat/be-consultation-28

This commit is contained in:
dpurbosakti
2025-09-23 09:52:48 +07:00
30 changed files with 485 additions and 50 deletions
@@ -0,0 +1,87 @@
package consultation
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
eu "simrs-vx/internal/domain/main-entities/unit"
"time"
)
type CreateDto struct {
Encounter_Id *uint `json:"encounter_id"`
Case *string `json:"case" validate:"maxLength=2048"`
Unit_Id *uint `json:"unit_id"`
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Preloads []string `json:"-"`
}
type FilterDto struct {
Encounter_Id *uint `json:"encounter_id"`
Unit_Id *uint `json:"unit_id"`
Doctor_Id *uint `json:"doctor_id"`
Page int `json:"page"`
PageSize int `json:"page_size"`
NoPagination int `json:"no_pagination"`
}
type ReadDetailDto struct {
Id uint16 `json:"id"`
}
type UpdateDto struct {
Id uint `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint `json:"id"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.Main
Encounter_Id *uint `json:"encounter_id"`
Encounter *ee.Encounter `json:"encounter,omitempty"`
Case *string `json:"case"`
Solution *string `json:"solution"`
Unit_Id *uint `json:"unit_id"`
Unit *eu.Unit `json:"unit,omitempty"`
Doctor_Id *uint `json:"doctor_id"`
Doctor *ed.Doctor `json:"doctor,omitempty"`
RepliedAt *time.Time `json:"repliedAt"`
}
func (d Consultation) ToResponse() ResponseDto {
resp := ResponseDto{
Encounter_Id: d.Encounter_Id,
Encounter: d.Encounter,
Case: d.Case,
Solution: d.Solution,
Unit_Id: d.Unit_Id,
Unit: d.Unit,
Doctor_Id: d.Doctor_Id,
Doctor: d.Doctor,
RepliedAt: d.RepliedAt,
}
resp.Main = d.Main
return resp
}
func ToResponseList(data []Consultation) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,23 @@
package consultation
import (
"time"
ecore "simrs-vx/internal/domain/base-entities/core"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
eu "simrs-vx/internal/domain/main-entities/unit"
)
type Consultation struct {
ecore.Main // adjust this according to the needs
Encounter_Id *uint `json:"encounter_id"`
Encounter *ee.Encounter `json:"encounter" gorm:"foreignKey:Encounter_Id;references:Id"`
Case *string `json:"case" gorm:"size:2048"`
Solution *string `json:"solution" gorm:"size:2048"`
Unit_Id *uint `json:"unit_id"`
Unit *eu.Unit `json:"unit" gorm:"foreignKey:Unit_Id;references:Id"`
Doctor_Id *uint `json:"doctor_id"`
Doctor *ed.Doctor `json:"doctor" gorm:"foreignKey:Doctor_Id;references:Id"`
RepliedAt *time.Time `json:"repliedAt"`
}
@@ -4,16 +4,18 @@ import (
ecore "simrs-vx/internal/domain/base-entities/core"
emo "simrs-vx/internal/domain/main-entities/mcu-order"
ems "simrs-vx/internal/domain/main-entities/mcu-src"
"time"
erc "simrs-vx/internal/domain/references/common"
)
type McuOrderItem struct {
ecore.Main // adjust this according to the needs
McuOrder_Id *uint `json:"mcuOrder_id"`
McuOrder *emo.McuOrder `json:"mcuOrder,omitempty" gorm:"foreignKey:McuOrder_Id;references:Id"`
McuSrc_Id *uint `json:"mcuSrc_id"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty" gorm:"foreignKey:McuSrc_Id;references:Id"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
ecore.Main // adjust this according to the needs
McuOrder_Id *uint `json:"mcuOrder_id" gorm:"uniqueIndex:idx_order_src"`
McuOrder *emo.McuOrder `json:"mcuOrder,omitempty" gorm:"foreignKey:McuOrder_Id;references:Id"`
McuSrc_Id *uint `json:"mcuSrc_id" gorm:"uniqueIndex:idx_order_src"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty" gorm:"foreignKey:McuSrc_Id;references:Id"`
ExaminationDate *time.Time `json:"examinationDate"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
@@ -0,0 +1,81 @@
package mcuordersubitem
import (
ecore "simrs-vx/internal/domain/base-entities/core"
emoi "simrs-vx/internal/domain/main-entities/mcu-order-item"
emss "simrs-vx/internal/domain/main-entities/mcu-sub-src"
erc "simrs-vx/internal/domain/references/common"
)
type CreateDto struct {
McuSubSrc_Id *uint `json:"mcuSubSrc_id"`
McuOrderItem_Id *uint `json:"mcuOrderItem_id"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Preloads []string `json:"-"`
}
type FilterDto struct {
McuOrder_Id *uint `json:"mcuOrder_id"`
McuSrc_Id *uint `json:"mcuSrc_id"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
Page int `json:"page"`
PageSize int `json:"page_size"`
NoPagination int `json:"no_pagination"`
}
type ReadDetailDto struct {
Id uint16 `json:"id"`
}
type UpdateDto struct {
Id uint16 `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint16 `json:"id"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.Main
McuSubSrc_Id *uint `json:"mcuSubSrc_id"`
McuSubSrc *emss.McuSubSrc `json:"mcuSubSrc,omitempty"`
McuOrderItem_Id *uint `json:"mcuOrderItem_id"`
McuOrderItem *emoi.McuOrderItem `json:"mcuOrderItem,omitempty"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
func (d McuOrderSubItem) ToResponse() ResponseDto {
resp := ResponseDto{
McuSubSrc_Id: d.McuSubSrc_Id,
McuSubSrc: d.McuSubSrc,
McuOrderItem_Id: d.McuOrderItem_Id,
McuOrderItem: d.McuOrderItem,
Result: d.Result,
Status_Code: d.Status_Code,
}
resp.Main = d.Main
return resp
}
func ToResponseList(data []McuOrderSubItem) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,19 @@
package mcuordersubitem
import (
ecore "simrs-vx/internal/domain/base-entities/core"
emoi "simrs-vx/internal/domain/main-entities/mcu-order-item"
emss "simrs-vx/internal/domain/main-entities/mcu-sub-src"
erc "simrs-vx/internal/domain/references/common"
)
type McuOrderSubItem struct {
ecore.Main // adjust this according to the needs
McuSubSrc_Id *uint `json:"mcuSubSrc_id" gorm:"uniqueIndex:idx_order_sub_src"`
McuSubSrc *emss.McuSubSrc `json:"mcuSubSrc,omitempty" gorm:"foreignKey:McuSubSrc_Id;references:Id"`
McuOrderItem_Id *uint `json:"mcuOrderItem_id" gorm:"uniqueIndex:idx_order_sub_src"`
McuOrderItem *emoi.McuOrderItem `json:"mcuOrderItem,omitempty" gorm:"foreignKey:McuOrderItem_Id;references:Id"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
@@ -4,15 +4,22 @@ import (
ecore "simrs-vx/internal/domain/base-entities/core"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
"time"
ercl "simrs-vx/internal/domain/references/clinical"
erc "simrs-vx/internal/domain/references/common"
)
type McuOrder struct {
ecore.Main // adjust this according to the needs
Encounter_Id *uint `json:"encounter_id"`
Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"`
Status_Code erc.DataStatusCode `json:"status_code" gorm:"not null;size:10"`
Doctor_Id *uint `json:"doctor_id"`
Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Id;references:Id"`
ecore.Main // adjust this according to the needs
Encounter_Id *uint `json:"encounter_id"`
Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"`
Status_Code erc.DataStatusCode `json:"status_code" gorm:"not null;size:10"`
Doctor_Id *uint `json:"doctor_id"`
Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Id;references:Id"`
SpecimenPickTime *time.Time `json:"specimenPickTime"`
ExaminationDate *time.Time `json:"examinationDate"`
Number uint8 `json:"number"`
Temperature float64 `json:"temperature"`
McuUrgencyLevel_Code ercl.McuUrgencyLevelCode `json:"mcuUrgencyLevel_code" gorm:"not null;size:15"`
}
+10 -5
View File
@@ -2,6 +2,7 @@ package mcusrc
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ei "simrs-vx/internal/domain/main-entities/item"
)
type CreateDto struct {
@@ -47,10 +48,12 @@ type MetaDto struct {
}
type ResponseDto struct {
ecore.SmallMain
Code string `json:"code"`
Name string `json:"name"`
CheckupCategory_Code *string `json:"checkupCategory_code"`
ecore.Main
Code string `json:"code"`
Name string `json:"name"`
CheckupCategory_Code *string `json:"checkupCategory_code"`
Item_Id *uint `json:"item_id"`
Item *ei.Item `json:"item,omitempty"`
}
func (d McuSrc) ToResponse() ResponseDto {
@@ -58,8 +61,10 @@ func (d McuSrc) ToResponse() ResponseDto {
Code: d.Code,
Name: d.Name,
CheckupCategory_Code: d.CheckupCategory_Code,
Item_Id: d.Item_Id,
Item: d.Item,
}
resp.SmallMain = d.SmallMain
resp.Main = d.Main
return resp
}
@@ -2,13 +2,16 @@ package mcusrc
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ei "simrs-vx/internal/domain/main-entities/item"
emsc "simrs-vx/internal/domain/main-entities/mcu-src-category"
)
type McuSrc struct {
ecore.SmallMain // adjust this according to the needs
ecore.Main // adjust this according to the needs
Code string `json:"code" gorm:"unique;size:20"`
Name string `json:"name" gorm:"size:50"`
CheckupCategory_Code *string `json:"checkupCategory_code" gorm:"size:20"`
CheckupCategory *emsc.McuSrcCategory `json:"checkupCategory,omitempty" gorm:"foreignKey:CheckupCategory_Code;references:Code"`
Item_Id *uint `json:"item_id"`
Item *ei.Item `json:"item,omitempty" gorm:"foreignKey:Item_Id;references:Id"`
}
@@ -0,0 +1,80 @@
package mcusubsrc
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ei "simrs-vx/internal/domain/main-entities/item"
ems "simrs-vx/internal/domain/main-entities/mcu-src"
)
type CreateDto struct {
Code string `json:"code" validate:"maxLength=20"`
Name string `json:"name" validate:"maxLength=50"`
McuSrc_Id *uint `json:"mcuSrc_id"`
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Preloads []string `json:"-"`
}
type FilterDto struct {
Code string `json:"code"`
Name string `json:"name"`
CheckupCategory_Code *string `json:"checkupCategory_code"`
Page int `json:"page"`
PageSize int `json:"page_size"`
NoPagination int `json:"no_pagination"`
}
type ReadDetailDto struct {
Id uint16 `json:"id"`
Code *string `json:"code"`
}
type UpdateDto struct {
Id uint16 `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint16 `json:"id"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.Main
Code string `json:"code"`
Name string `json:"name"`
McuSrc_Id *uint `json:"mcuSrc_id"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty"`
Item_Id *uint `json:"item_id"`
Item *ei.Item `json:"item,omitempty"`
}
func (d McuSubSrc) ToResponse() ResponseDto {
resp := ResponseDto{
Code: d.Code,
Name: d.Name,
McuSrc_Id: d.McuSrc_Id,
McuSrc: d.McuSrc,
Item_Id: d.Item_Id,
Item: d.Item,
}
resp.Main = d.Main
return resp
}
func ToResponseList(data []McuSubSrc) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,17 @@
package mcusubsrc
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ei "simrs-vx/internal/domain/main-entities/item"
ems "simrs-vx/internal/domain/main-entities/mcu-src"
)
type McuSubSrc struct {
ecore.Main // adjust this according to the needs
Code string `json:"code" gorm:"unique;size:20"`
Name string `json:"name" gorm:"size:50"`
McuSrc_Id *uint `json:"mcuSrc_id"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty" gorm:"foreignKey:McuSrc_Id;references:Id"`
Item_Id *uint `json:"item_id"`
Item *ei.Item `json:"item,omitempty" gorm:"foreignKey:Item_Id;references:Id"`
}
@@ -22,4 +22,6 @@ type MedicationItem struct {
Interval uint8 `json:"interval"`
IntervalUnit_Code erc.TimeUnitCode `json:"intervalUnit_code"`
IsRedeemed bool `json:"isRedeemed"`
Quantity float64 `json:"quantity"`
Note *string `json:"note" gorm:"size:1024"`
}
@@ -3,7 +3,6 @@ package medicinemixitem
import (
ecore "simrs-vx/internal/domain/base-entities/core"
em "simrs-vx/internal/domain/main-entities/medicine"
emm "simrs-vx/internal/domain/main-entities/medicine-mix"
)
type CreateDto struct {
@@ -49,17 +48,15 @@ type MetaDto struct {
type ResponseDto struct {
ecore.Main
MedicineMix_Id *uint `json:"medicineMix_id"`
MedicineMix *emm.MedicineMix `json:"medicineMix,omitempty"`
Medicine_Id *uint `json:"medicine_id"`
Medicine *em.Medicine `json:"medicine,omitempty"`
Dose *uint8 `json:"dose"`
MedicineMix_Id *uint `json:"medicineMix_id"`
Medicine_Id *uint `json:"medicine_id"`
Medicine *em.Medicine `json:"medicine,omitempty"`
Dose *uint8 `json:"dose"`
}
func (d MedicineMixItem) ToResponse() ResponseDto {
resp := ResponseDto{
MedicineMix_Id: d.MedicineMix_Id,
MedicineMix: d.MedicineMix,
Medicine_Id: d.Medicine_Id,
Medicine: d.Medicine,
Dose: d.Dose,
@@ -3,14 +3,13 @@ package medicinemixitem
import (
ecore "simrs-vx/internal/domain/base-entities/core"
em "simrs-vx/internal/domain/main-entities/medicine"
emm "simrs-vx/internal/domain/main-entities/medicine-mix"
)
type MedicineMixItem struct {
ecore.Main // adjust this according to the needs
MedicineMix_Id *uint `json:"medicineMix_id"`
MedicineMix *emm.MedicineMix `json:"medicineMix,omitempty" gorm:"foreignKey:MedicineMix_Id;references:Id"`
Medicine_Id *uint `json:"medicine_id"`
Medicine *em.Medicine `json:"medicine,omitempty" gorm:"foreignKey:Medicine_Id;references:Id"`
Dose *uint8 `json:"dose"`
ecore.Main // adjust this according to the needs
MedicineMix_Id *uint `json:"medicineMix_id"`
Medicine_Id *uint `json:"medicine_id"`
Medicine *em.Medicine `json:"medicine,omitempty" gorm:"foreignKey:Medicine_Id;references:Id"`
Dose *uint8 `json:"dose"`
Note *string `json:"note" gom:"size:1024"`
}
@@ -2,6 +2,8 @@ package medicinemix
import (
ecore "simrs-vx/internal/domain/base-entities/core"
emmi "simrs-vx/internal/domain/main-entities/medicine-mix-item"
)
type CreateDto struct {
@@ -37,12 +39,14 @@ type MetaDto struct {
type ResponseDto struct {
ecore.Main
Name string `json:"name"`
Name string `json:"name"`
MixItems []*emmi.MedicineMixItem `json:"mixItems"`
}
func (d MedicineMix) ToResponse() ResponseDto {
resp := ResponseDto{
Name: d.Name,
Name: d.Name,
MixItems: d.MixItems,
}
resp.Main = d.Main
return resp
@@ -2,9 +2,11 @@ package medicinemix
import (
ecore "simrs-vx/internal/domain/base-entities/core"
emmi "simrs-vx/internal/domain/main-entities/medicine-mix-item"
)
type MedicineMix struct {
ecore.Main // adjust this according to the needs
Name string `json:"name" gorm:"size:50"`
ecore.Main // adjust this according to the needs
Name string `json:"name" gorm:"size:50"`
MixItems []*emmi.MedicineMixItem `json:"mixItems" gorm:"foreignKey:MedicineMix_Id;references:Id"`
}
@@ -17,6 +17,7 @@ type CreateDto struct {
Education_Code *erp.EducationCode `json:"education_code" validate:"maxLength=10"`
Occupation_Code *erp.OcupationCode `json:"occupation_code" validate:"maxLength=10"`
Occupation_Name *string `json:"occupation_name" validate:"maxLength=50"`
Responsible bool `json:"responsible"`
}
type ReadListDto struct {
@@ -37,6 +38,7 @@ type FilterDto struct {
Education_Code *erp.EducationCode `json:"education_code"`
Occupation_Code *erp.OcupationCode `json:"occupation_code"`
Occupation_Name *string `json:"occupation_name"`
Responsible bool `json:"responsible"`
Page int `json:"page"`
PageSize int `json:"page_size"`
@@ -78,6 +80,7 @@ type ResponseDto struct {
Education_Code *erp.EducationCode `json:"education_code"`
Occupation_Code *erp.OcupationCode `json:"occupation_code"`
Occupation_Name *string `json:"occupation_name"`
Responsible bool `json:"responsible"`
}
func (d *PersonRelative) ToResponse() ResponseDto {
@@ -19,4 +19,5 @@ type PersonRelative struct {
Education_Code *erp.EducationCode `json:"education_code" gorm:"size:10"`
Occupation_Code *erp.OcupationCode `json:"occupation_code" gorm:"size:10"`
Occupation_Name *string `json:"occupation_name" gorm:"size:50"`
Responsible bool `json:"responsible"`
}
@@ -21,4 +21,5 @@ type PrescriptionItem struct {
Usage float64 `json:"usage"`
Interval uint8 `json:"interval"`
IntervalUnit_Code erc.TimeUnitCode `json:"intervalUnit_code"`
Quantity float64 `json:"quantity"`
}
@@ -4,14 +4,18 @@ import (
ecore "simrs-vx/internal/domain/base-entities/core"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
"time"
erc "simrs-vx/internal/domain/references/common"
)
type Prescription struct {
ecore.Main // adjust this according to the needs
Encounter_Id *uint `json:"encounter_id"`
Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"`
Doctor_Id *uint `json:"doctor_id"`
Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Id;references:Id"`
IssuedAt *time.Time `json:"issuedAt"`
ecore.Main // adjust this according to the needs
Encounter_Id *uint `json:"encounter_id"`
Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"`
Doctor_Id *uint `json:"doctor_id"`
Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Id;references:Id"`
IssuedAt *time.Time `json:"issuedAt"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
@@ -2,11 +2,12 @@
package clinical
type (
SubjectCode string
ObjectCode string
AssessmentCode string
PlanCode string
InstructionCode string
SubjectCode string
ObjectCode string
AssessmentCode string
PlanCode string
InstructionCode string
McuUrgencyLevelCode string
)
const (
@@ -39,6 +40,13 @@ const (
ICMedAct InstructionCode = "med-act" // Tindakan medis
ICMedication InstructionCode = "medication" // Obat
ICMaterial InstructionCode = "material" // BMHP
MULCCITO McuUrgencyLevelCode = "cito"
MULCCITOIGD McuUrgencyLevelCode = "cito-igd"
MULCPonek McuUrgencyLevelCode = "ponek"
MULCBG McuUrgencyLevelCode = "blood-gas"
MULCPF McuUrgencyLevelCode = "priority-form"
MULCRT McuUrgencyLevelCode = "routine"
)
type Soapi struct {
@@ -4,6 +4,7 @@ import (
adime "simrs-vx/internal/domain/main-entities/adime"
ambulatory "simrs-vx/internal/domain/main-entities/ambulatory"
appointment "simrs-vx/internal/domain/main-entities/appointment"
consultation "simrs-vx/internal/domain/main-entities/consultation"
counter "simrs-vx/internal/domain/main-entities/counter"
device "simrs-vx/internal/domain/main-entities/device"
deviceorder "simrs-vx/internal/domain/main-entities/device-order"
@@ -31,8 +32,10 @@ import (
materialorderitem "simrs-vx/internal/domain/main-entities/material-order-item"
mcuorder "simrs-vx/internal/domain/main-entities/mcu-order"
mcuorderitem "simrs-vx/internal/domain/main-entities/mcu-order-item"
mcuordersubitem "simrs-vx/internal/domain/main-entities/mcu-order-sub-item"
mcusrc "simrs-vx/internal/domain/main-entities/mcu-src"
mcusrccategory "simrs-vx/internal/domain/main-entities/mcu-src-category"
mcusubsrc "simrs-vx/internal/domain/main-entities/mcu-sub-src"
medicalactionsrc "simrs-vx/internal/domain/main-entities/medical-action-src"
medicalactionsrcitem "simrs-vx/internal/domain/main-entities/medical-action-src-item"
medication "simrs-vx/internal/domain/main-entities/medication"
@@ -139,5 +142,8 @@ func getMainEntities() []any {
&materialorderitem.MaterialOrderItem{},
&mcuorder.McuOrder{},
&mcuorderitem.McuOrderItem{},
&mcusubsrc.McuSubSrc{},
&mcuordersubitem.McuOrderSubItem{},
&consultation.Consultation{},
}
}