Merge branch 'migration' of https://github.com/dikstub-rssa/simrs-be into migration-vanilia

# Conflicts:
#	cmd/main-migration/migrations/atlas.sum
This commit is contained in:
vanilia
2025-12-09 09:30:42 +07:00
52 changed files with 1969 additions and 100 deletions

No files matched your search

@@ -81,8 +81,8 @@ type Mr struct {
}
type Provider struct {
Kode string `json:"kdProvider" json:"kode"` // API sometimes uses different keys
NmProvider string `json:"nmProvider" json:"nama"`
Kode string `son:"kode"`
NmProvider string `json:"nama"`
}
type Poli struct {
@@ -0,0 +1,23 @@
package apmcuorder
type CreateDto struct {
Encounter_Id uint `json:"encounter_id"`
Number uint64 `json:"number"`
Doctor_Code string `json:"-"`
Substances string `json:"substances"`
Fictations string `json:"fictations"`
Localization string `json:"localization"`
ClinicalDiagnoses string `json:"clinicalDiagnoses"`
Stadium string `json:"stadium"`
ClinicalNotes string `json:"clinicalNotes"`
CurrentHistory string `json:"currentHistory"`
PastHistory string `json:"pastHistory"`
PrevApMcu string `json:"prevApMcu"`
PrevApMcuNotes string `json:"prevApMcuNotes"`
SupportingExams string `json:"supportingExams"`
}
type UpdateDto struct {
Id uint64 `json:"id"`
CreateDto
}
@@ -0,0 +1,25 @@
package apmcuorder
import (
ecore "simrs-vx/internal/domain/base-entities/core"
erc "simrs-vx/internal/domain/references/common"
)
type ApMcuOrder struct {
ecore.BigMain
Encounter_Id uint `json:"encounter_id"`
Number uint64 `json:"number"`
Doctor_Code string `json:"doctor_code" gorm:"unique;size:20"`
Substances string `json:"substances"`
Fictations string `json:"fictations"`
Localization string `json:"localization"`
ClinicalDiagnoses string `json:"clinicalDiagnoses"`
Stadium string `json:"stadium"`
ClinicalNotes *string `json:"clinicalNotes"`
CurrentHistory string `json:"currentHistory"`
PastHistory string `json:"pastHistory"`
PrevApMcu *string `json:"prevApMcu"`
PrevApMcuNotes *string `json:"prevApMcuNotes"`
SupportingExams *string `json:"supportingExams"`
Status_Code erc.DataStatusCode `json:"status_code" gorm:"not null;size:10"`
}
@@ -0,0 +1,96 @@
package apmcuorder
import (
la "simrs-vx/internal/lib/auth"
ecore "simrs-vx/internal/domain/base-entities/core"
eamob "simrs-vx/internal/domain/main-entities/ap-mcu-order/base"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
)
type CreateDto struct {
eamob.CreateDto
la.AuthInfo
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Sort string `json:"sort"`
Pagination ecore.Pagination
}
type FilterDto struct {
McuOrder_Id string `json:"mcu-order-id"`
}
type ReadDetailDto struct {
Id uint64 `json:"id"`
}
type UpdateDto struct {
Id uint64 `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint64 `json:"id"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.BigMain
Encounter_Id uint `json:"encounter_id"`
Encounter *ee.Encounter
Number uint64 `json:"number"`
Doctor_Code string `json:"doctor_code"`
Doctor *ed.Doctor
Substances string `json:"substances"`
Fictations string `json:"fictations"`
Localization string `json:"localization"`
ClinicalDiagnoses string `json:"clinicalDiagnoses"`
Stadium string `json:"stadium"`
ClinicalNotes *string `json:"clinicalNotes"`
PastHistory string `json:"pastHistory"`
CurrentHistory string `json:"currentHistory"`
PrevApMcu *string `json:"prevApMcu"`
PrevApMcuNotes *string `json:"prevApMcuNotes"`
SupportingExams *string `json:"supportingExams"`
}
func (d ApMcuOrder) ToResponse() ResponseDto {
resp := ResponseDto{
Encounter_Id: d.Encounter_Id,
Encounter: d.Encounter,
Number: d.Number,
Doctor_Code: d.Doctor_Code,
Doctor: d.Doctor,
Substances: d.Substances,
Fictations: d.Fictations,
Localization: d.Localization,
ClinicalDiagnoses: d.ClinicalDiagnoses,
Stadium: d.Stadium,
ClinicalNotes: d.ClinicalNotes,
PastHistory: d.PastHistory,
CurrentHistory: d.CurrentHistory,
PrevApMcu: d.PrevApMcu,
PrevApMcuNotes: d.PrevApMcuNotes,
SupportingExams: d.SupportingExams,
}
resp.BigMain = d.BigMain
return resp
}
func ToResponseList(data []ApMcuOrder) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,26 @@
package apmcuorder
import (
eamob "simrs-vx/internal/domain/main-entities/ap-mcu-order/base"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
erc "simrs-vx/internal/domain/references/common"
)
type ApMcuOrder struct {
eamob.ApMcuOrder
Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"`
Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Code;references:Code"`
}
func (d ApMcuOrder) IsNotNew() bool {
return d.Status_Code != erc.DSCNew
}
func (d ApMcuOrder) IsCompleted() bool {
return d.Status_Code == erc.DSCDone
}
func (d ApMcuOrder) IsSameDoctor(doctor_code *string) bool {
return d.Doctor_Code == *doctor_code
}
@@ -0,0 +1,6 @@
package cpmcuorderitem
type SubCreateDto struct {
McuSrc_Code string `json:"mcuSrc_code" validate:"required"`
Note string `json:"note"`
}
@@ -0,0 +1,17 @@
package cpmcuorderitem
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ems "simrs-vx/internal/domain/main-entities/mcu-src"
erc "simrs-vx/internal/domain/references/common"
)
type CpMcuOrderItem struct {
ecore.BigMain // adjust this according to the needs
CpMcuOrder_Id uint64 `json:"cpMcuOrder_id" gorm:"uniqueIndex:idx_order_src"`
McuSrc_Code string `json:"mcuSrc_code" gorm:"uniqueIndex:idx_order_src"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty" gorm:"foreignKey:McuSrc_Code;references:Code"`
Note *string `json:"note" gorm:"size:1024"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
@@ -0,0 +1,80 @@
package cpmcuorderitem
import (
ecore "simrs-vx/internal/domain/base-entities/core"
emro "simrs-vx/internal/domain/main-entities/cp-mcu-order"
ems "simrs-vx/internal/domain/main-entities/mcu-src"
erc "simrs-vx/internal/domain/references/common"
"time"
)
type CreateDto struct {
CpMcuOrder_Id uint64 `json:"cpMcuOrder_id"`
McuSrc_Code string `json:"mcuSrc_code"`
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Pagination ecore.Pagination
}
type FilterDto struct {
CpMcuOrder_Id *uint64 `json:"cp-mcu-order-id"`
McuSrc_Code *string `json:"mcu-src-code"`
Status_Code erc.DataStatusCode `json:"status-code"`
}
type ReadDetailDto struct {
Id uint `json:"id"`
}
type UpdateDto struct {
Id uint `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint `json:"id"`
}
type SetScheduleDto struct {
Id uint `json:"id"`
ExaminationDate *time.Time `json:"examinationDate"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.BigMain
CpMcuOrder_Id uint64 `json:"cpMcuOrder_id"`
CpMcuOrder *emro.CpMcuOrder `json:"cpMcuOrder,omitempty"`
McuSrc_Code string `json:"mcuSrc_code"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
func (d CpMcuOrderItem) ToResponse() ResponseDto {
resp := ResponseDto{
CpMcuOrder_Id: d.CpMcuOrder_Id,
CpMcuOrder: d.CpMcuOrder,
McuSrc_Code: d.McuSrc_Code,
McuSrc: d.McuSrc,
Result: d.Result,
Status_Code: d.Status_Code,
}
resp.BigMain = d.BigMain
return resp
}
func ToResponseList(data []CpMcuOrderItem) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,17 @@
package cpmcuorderitem
import (
emo "simrs-vx/internal/domain/main-entities/cp-mcu-order"
emoib "simrs-vx/internal/domain/main-entities/cp-mcu-order-item/base"
erc "simrs-vx/internal/domain/references/common"
)
type CpMcuOrderItem struct {
emoib.CpMcuOrderItem
CpMcuOrder *emo.CpMcuOrder `json:"cpMcuOrder,omitempty" gorm:"foreignKey:CpMcuOrder_Id;references:Id"`
}
func (d CpMcuOrderItem) IsCompleted() bool {
return d.Status_Code == erc.DSCDone
}
@@ -0,0 +1,21 @@
package cpmcuorder
import (
"time"
ecore "simrs-vx/internal/domain/base-entities/core"
ercl "simrs-vx/internal/domain/references/clinical"
erc "simrs-vx/internal/domain/references/common"
)
type CpMcuOrder struct {
ecore.BigMain
Encounter_Id uint `json:"encounter_id"`
Number uint64 `json:"number"`
Doctor_Code string `json:"doctor_code" gorm:"unique;size:20"`
UrgencyLevel_Code ercl.McuUrgencyLevelCode `json:"urgencyLevel_code" gorm:"not null;size:15"`
OtherNotes *string `json:"otherNotes"`
ExamScheduleDate *time.Time `json:"examinationDate"`
Resume *string `json:"resume"`
Status_Code erc.DataStatusCode `json:"status_code" gorm:"not null;size:10"`
}
@@ -0,0 +1,84 @@
package cpmcuorder
import (
la "simrs-vx/internal/lib/auth"
ecore "simrs-vx/internal/domain/base-entities/core"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
)
type CreateDto struct {
Encounter_Id uint `json:"encounter_id" validate:"required"`
Number uint64 `json:"number"` // SHOULD BE AUTOMATIC WITHOUT SYNC
UrgencyLevel_Code string `json:"urgencyLevel_code" validate:"required"`
OtherNotes string `json:"otherNotes"`
la.AuthInfo
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Sort string `json:"sort"`
Pagination ecore.Pagination
}
type FilterDto struct {
Encounter_Id uint `json:"encounter-id"`
Doctor_Code string `json:"doctor-code"`
}
type ReadDetailDto struct {
Id uint64 `json:"id"`
Includes string `json:"includes"`
}
type UpdateDto struct {
Id uint64 `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint64 `json:"id"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.BigMain
Encounter_Id uint
Encounter *ee.Encounter
Number uint64 `json:"number"`
Doctor_Code string `json:"doctor_code"`
Doctor *ed.Doctor
UrgencyLevel_Code string `json:"urgencyLevel_code" gorm:"not null;size:15"`
OtherNotes *string `json:"otherNotes"`
Resume *string `json:"resume"`
}
func (d CpMcuOrder) ToResponse() ResponseDto {
resp := ResponseDto{
Encounter_Id: d.Encounter_Id,
Encounter: d.Encounter,
Number: d.Number,
Doctor_Code: d.Doctor_Code,
Doctor: d.Doctor,
UrgencyLevel_Code: string(d.UrgencyLevel_Code),
OtherNotes: d.OtherNotes,
Resume: d.Resume,
}
resp.BigMain = d.BigMain
return resp
}
func ToResponseList(data []CpMcuOrder) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,28 @@
package cpmcuorder
import (
ecmoi "simrs-vx/internal/domain/main-entities/cp-mcu-order-item/base"
eamob "simrs-vx/internal/domain/main-entities/cp-mcu-order/base"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
erc "simrs-vx/internal/domain/references/common"
)
type CpMcuOrder struct {
eamob.CpMcuOrder
Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"`
Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Code;references:Code"`
Items []*ecmoi.CpMcuOrderItem `json:"items" gorm:"foreignKey:CpMcuOrder_Id;references:Id"`
}
func (d CpMcuOrder) IsNotNew() bool {
return d.Status_Code != erc.DSCNew
}
func (d CpMcuOrder) IsCompleted() bool {
return d.Status_Code == erc.DSCDone
}
func (d CpMcuOrder) IsSameDoctor(doctor_code *string) bool {
return d.Doctor_Code == *doctor_code
}
@@ -89,8 +89,11 @@ type TRujukan struct {
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Pagination ecore.Pagination
Includes string `json:"includes"`
Pagination ecore.Pagination
Person_Name *string `json:"person-name"`
StartDate *string `json:"start-date"`
EndDate *string `json:"end-date"`
pa.AuthInfo
}
@@ -0,0 +1,6 @@
package micromcuorderitem
type SubCreateDto struct {
McuSrc_Code string `json:"mcuSrc_code" validate:"required"`
Note string `json:"note"`
}
@@ -0,0 +1,17 @@
package micromcuorderitem
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ems "simrs-vx/internal/domain/main-entities/mcu-src"
erc "simrs-vx/internal/domain/references/common"
)
type MicroMcuOrderItem struct {
ecore.BigMain // adjust this according to the needs
MicroMcuOrder_Id uint64 `json:"microMcuOrder_id" gorm:"uniqueIndex:idx_order_src"`
McuSrc_Code string `json:"mcuSrc_code" gorm:"uniqueIndex:idx_order_src"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty" gorm:"foreignKey:McuSrc_Code;references:Code"`
Note *string `json:"note" gorm:"size:1024"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
@@ -0,0 +1,80 @@
package micromcuorderitem
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ems "simrs-vx/internal/domain/main-entities/mcu-src"
emro "simrs-vx/internal/domain/main-entities/micro-mcu-order"
erc "simrs-vx/internal/domain/references/common"
"time"
)
type CreateDto struct {
MicroMcuOrder_Id uint64 `json:"microMcuOrder_id"`
McuSrc_Code string `json:"mcuSrc_code"`
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Pagination ecore.Pagination
}
type FilterDto struct {
MicroMcuOrder_Id *uint64 `json:"micro-mcu-order-id"`
McuSrc_Code *string `json:"mcu-src-code"`
Status_Code erc.DataStatusCode `json:"status-code"`
}
type ReadDetailDto struct {
Id uint `json:"id"`
}
type UpdateDto struct {
Id uint `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint `json:"id"`
}
type SetScheduleDto struct {
Id uint `json:"id"`
ExaminationDate *time.Time `json:"examinationDate"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.BigMain
MicroMcuOrder_Id uint64 `json:"microMcuOrder_id"`
MicroMcuOrder *emro.MicroMcuOrder `json:"microMcuOrder,omitempty"`
McuSrc_Code string `json:"mcuSrc_code"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
func (d MicroMcuOrderItem) ToResponse() ResponseDto {
resp := ResponseDto{
MicroMcuOrder_Id: d.MicroMcuOrder_Id,
MicroMcuOrder: d.MicroMcuOrder,
McuSrc_Code: d.McuSrc_Code,
McuSrc: d.McuSrc,
Result: d.Result,
Status_Code: d.Status_Code,
}
resp.BigMain = d.BigMain
return resp
}
func ToResponseList(data []MicroMcuOrderItem) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,18 @@
package micromcuorderitem
import (
ems "simrs-vx/internal/domain/main-entities/mcu-src"
emo "simrs-vx/internal/domain/main-entities/micro-mcu-order"
emoib "simrs-vx/internal/domain/main-entities/micro-mcu-order-item/base"
erc "simrs-vx/internal/domain/references/common"
)
type MicroMcuOrderItem struct {
emoib.MicroMcuOrderItem
MicroMcuOrder *emo.MicroMcuOrder `json:"microMcuOrder,omitempty" gorm:"foreignKey:MicroMcuOrder_Id;references:Id"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty" gorm:"foreignKey:McuSrc_Code;references:Code"`
}
func (d MicroMcuOrderItem) IsCompleted() bool {
return d.Status_Code == erc.DSCDone
}
@@ -0,0 +1,18 @@
package micromcuorder
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ercl "simrs-vx/internal/domain/references/clinical"
erc "simrs-vx/internal/domain/references/common"
)
type MicroMcuOrder struct {
ecore.BigMain
Encounter_Id uint `json:"encounter_id"`
Number uint64 `json:"number"`
Doctor_Code string `json:"doctor_code" gorm:"unique;size:20"`
Stage_Code ercl.McuOrderStageCode `json:"stage_code" gorm:"not null;size:10"`
AxillaryTemp float64 `json:"axillaryTemp"`
OtherNotes *string `json:"otherNotes"`
Status_Code erc.DataStatusCode `json:"status_code" gorm:"not null;size:10"`
}
@@ -0,0 +1,86 @@
package micromcuorder
import (
la "simrs-vx/internal/lib/auth"
ecore "simrs-vx/internal/domain/base-entities/core"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
ercl "simrs-vx/internal/domain/references/clinical"
)
type CreateDto struct {
Encounter_Id uint `json:"encounter_id" validate:"required"`
Number uint64 `json:"number"` // SHOULD BE AUTOMATIC WITHOUT SYNC
OrderStage_Code string `json:"orderStage_code" gorm:"not null;size:10"`
AxillaryTemp float64 `json:"axillaryTemp"`
OtherNotes string `json:"otherNotes"`
la.AuthInfo
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Sort string `json:"sort"`
Pagination ecore.Pagination
}
type FilterDto struct {
Encounter_Id uint `json:"encounter-id"`
Doctor_Code string `json:"doctor-code"`
}
type ReadDetailDto struct {
Id uint64 `json:"id"`
Includes string `json:"includes"`
}
type UpdateDto struct {
Id uint64 `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint64 `json:"id"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.BigMain
Encounter_Id uint
Encounter *ee.Encounter
Number uint64 `json:"number"`
Doctor_Code string `json:"doctor_code"`
Doctor *ed.Doctor
Stage_Code ercl.McuOrderStageCode `json:"stage_code" gorm:"not null;size:10"`
AxillaryTemp float64 `json:"axillaryTemp"`
OtherNotes *string `json:"otherNotes"`
}
func (d MicroMcuOrder) ToResponse() ResponseDto {
resp := ResponseDto{
Encounter_Id: d.Encounter_Id,
Encounter: d.Encounter,
Number: d.Number,
Doctor_Code: d.Doctor_Code,
Doctor: d.Doctor,
Stage_Code: d.Stage_Code,
AxillaryTemp: d.AxillaryTemp,
OtherNotes: d.OtherNotes,
}
resp.BigMain = d.BigMain
return resp
}
func ToResponseList(data []MicroMcuOrder) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,28 @@
package micromcuorder
import (
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
emmoi "simrs-vx/internal/domain/main-entities/micro-mcu-order-item/base"
eamob "simrs-vx/internal/domain/main-entities/micro-mcu-order/base"
erc "simrs-vx/internal/domain/references/common"
)
type MicroMcuOrder struct {
eamob.MicroMcuOrder
Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"`
Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Code;references:Code"`
Items []*emmoi.MicroMcuOrderItem `json:"items" gorm:"foreignKey:MicroMcuOrder_Id;references:Id"`
}
func (d MicroMcuOrder) IsNotNew() bool {
return d.Status_Code != erc.DSCNew
}
func (d MicroMcuOrder) IsCompleted() bool {
return d.Status_Code == erc.DSCDone
}
func (d MicroMcuOrder) IsSameDoctor(doctor_code *string) bool {
return d.Doctor_Code == *doctor_code
}
@@ -0,0 +1,12 @@
package procedureroomorder
import (
ecore "simrs-vx/internal/domain/base-entities/core"
)
type ProcedureRoomOrderItem struct {
ecore.BigMain
ProcedureRoomOrder_Id uint64 `json:"procedureRoomOrder_id"`
ProcedureRoom_Code string `json:"procedureRoom_code" gorm:"size:20"`
Note string `json:"note" gorm:"size:255"`
}
@@ -18,7 +18,8 @@ type ReadListDto struct {
}
type FilterDto struct {
Encounter_Id uint64 `json:"encounter-id"`
Encounter_Id uint64 `json:"encounter-id"`
ProcedureRoomOrder_Id uint64 `json:"procedure-room-order-id"`
}
type ReadDetailDto struct {
@@ -1,14 +1,13 @@
package procedureroomorder
import (
ecore "simrs-vx/internal/domain/base-entities/core"
epr "simrs-vx/internal/domain/main-entities/procedure-room"
epro "simrs-vx/internal/domain/main-entities/procedure-room-order"
eb "simrs-vx/internal/domain/main-entities/procedure-room-order-item/base"
)
type ProcedureRoomOrderItem struct {
ecore.BigMain
ProcedureRoomOrder_Id uint64 `json:"procedureRoomOrder_id"`
ProcedureRoom_Code string `json:"procedureRoom_code" gorm:"size:20"`
ProcedureRoom *epr.ProcedureRoom `json:"procedureRoom,omitempty" gorm:"foreignKey:ProcedureRoom_Code;references:Code"`
Note string `json:"note" gorm:"size:255"`
eb.ProcedureRoomOrderItem
ProcedureRoomOrder *epro.ProcedureRoomOrder `json:"procedureRoomOrder,omitempty" gorm:"foreignKey:ProcedureRoomOrder_Id;references:Id"`
ProcedureRoom *epr.ProcedureRoom `json:"procedureRoom,omitempty" gorm:"foreignKey:ProcedureRoom_Code;references:Code"`
}
@@ -9,9 +9,9 @@ import (
)
type CreateDto struct {
Encounter_Id uint64 `json:"encounter_id" validate:"required"`
Infra_Code string `json:"infra_code" validate:"required"`
MaterialPackage_Code string `json:"materialPackage_code" validate:"required"`
Encounter_Id uint64 `json:"encounter_id" validate:"required"`
// Infra_Code string `json:"infra_code" validate:"required"`
MaterialPackage_Code *string `json:"materialPackage_code"`
}
type ReadListDto struct {
@@ -48,7 +48,7 @@ type ResponseDto struct {
Encounter_Id uint64 `json:"encounter_id"`
Encounter *ec.Encounter `json:"encounter,omitempty"`
Infra_Code string `json:"procedure"`
MaterialPackage_Code string `json:"materialPackage_code"`
MaterialPackage_Code *string `json:"materialPackage_code"`
Status_Code erc.DataStatusCode `json:"status_code"`
ProcedureRoom *epr.ProcedureRoom `json:"procedureRoom,omitempty"`
MaterialPackage *emp.MaterialPackage `json:"materialPackage,omitempty"`
@@ -56,8 +56,8 @@ type ResponseDto struct {
func (d ProcedureRoomOrder) ToResponse() ResponseDto {
resp := ResponseDto{
Encounter_Id: d.Encounter_Id,
Infra_Code: d.Infra_Code,
Encounter_Id: d.Encounter_Id,
// Infra_Code: d.Infra_Code,
MaterialPackage_Code: d.MaterialPackage_Code,
Status_Code: d.Status_Code,
}
@@ -5,15 +5,20 @@ import (
ecore "simrs-vx/internal/domain/base-entities/core"
emp "simrs-vx/internal/domain/main-entities/material-package"
epr "simrs-vx/internal/domain/main-entities/procedure-room"
eproi "simrs-vx/internal/domain/main-entities/procedure-room-order-item/base"
)
type ProcedureRoomOrder struct {
ecore.BigMain
Encounter_Id uint64 `json:"encounter_id"`
Infra_Code string `json:"infra_code" gorm:"size:20"`
ProcedureRoom *epr.ProcedureRoom `json:"procedureRoom,omitempty" gorm:"foreignKey:Infra_Code;references:Code"`
MaterialPackage_Code string `json:"materialPackage_code" gorm:"size:20"`
MaterialPackage *emp.MaterialPackage `json:"materialPackage,omitempty" gorm:"foreignKey:MaterialPackage_Code;references:Code"`
Status_Code erc.DataStatusCode `json:"status_code" gorm:"size:20"`
Encounter_Id uint64 `json:"encounter_id"`
// Infra_Code string `json:"infra_code" gorm:"size:20"`
// ProcedureRoom *epr.ProcedureRoom `json:"procedureRoom,omitempty" gorm:"foreignKey:Infra_Code;references:Code"`
MaterialPackage_Code *string `json:"materialPackage_code" gorm:"size:20"`
MaterialPackage *emp.MaterialPackage `json:"materialPackage,omitempty" gorm:"foreignKey:MaterialPackage_Code;references:Code"`
Status_Code erc.DataStatusCode `json:"status_code" gorm:"size:20"`
Items []eproi.ProcedureRoomOrderItem `json:"items,omitempty" gorm:"foreignKey:ProcedureRoomOrder_Id;references:Id"`
}
func (d ProcedureRoomOrder) IsNotNew() bool {
return d.Status_Code != erc.DSCNew
}
@@ -25,7 +25,7 @@ type ReadListDto struct {
type FilterDto struct {
Infra_Code *string `json:"infra-code"`
Type_Code string `json:"type_code"`
Type_Code string `json:"type-code"`
Unit_Code *string `json:"unit-code"`
Specialist_Code *string `json:"specialist-code"`
Subspecialist_Code *string `json:"subspecialist-code"`
@@ -0,0 +1,6 @@
package radiologymcuorderitem
type SubCreateDto struct {
McuSrc_Code string `json:"mcuSrc_code" validate:"required"`
Note string `json:"note"`
}
@@ -0,0 +1,17 @@
package radiologymcuorderitem
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ems "simrs-vx/internal/domain/main-entities/mcu-src"
erc "simrs-vx/internal/domain/references/common"
)
type RadiologyMcuOrderItem struct {
ecore.BigMain // adjust this according to the needs
RadiologyMcuOrder_Id uint64 `json:"radiologyMcuOrder_id" gorm:"uniqueIndex:idx_order_src"`
McuSrc_Code string `json:"mcuSrc_code" gorm:"uniqueIndex:idx_order_src"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty" gorm:"foreignKey:McuSrc_Code;references:Code"`
Note *string `json:"note" gorm:"size:1024"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
@@ -0,0 +1,80 @@
package radiologymcuorderitem
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ems "simrs-vx/internal/domain/main-entities/mcu-src"
emro "simrs-vx/internal/domain/main-entities/radiology-mcu-order"
erc "simrs-vx/internal/domain/references/common"
"time"
)
type CreateDto struct {
RadiologyMcuOrder_Id uint64 `json:"radiologyMcuOrder_id"`
McuSrc_Code string `json:"mcuSrc_code"`
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Pagination ecore.Pagination
}
type FilterDto struct {
RadiologyMcuOrder_Id *uint64 `json:"radiology-mcu-order-id"`
McuSrc_Code *string `json:"mcu-src-code"`
Status_Code erc.DataStatusCode `json:"status-code"`
}
type ReadDetailDto struct {
Id uint `json:"id"`
}
type UpdateDto struct {
Id uint `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint `json:"id"`
}
type SetScheduleDto struct {
Id uint `json:"id"`
ExaminationDate *time.Time `json:"examinationDate"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.BigMain
RadiologyMcuOrder_Id uint64 `json:"radiologyMcuOrder_id"`
RadiologyMcuOrder *emro.RadiologyMcuOrder `json:"radiologyMcuOrder,omitempty"`
McuSrc_Code string `json:"mcuSrc_code"`
McuSrc *ems.McuSrc `json:"mcuSrc,omitempty"`
Result *string `json:"result"`
Status_Code erc.DataStatusCode `json:"status_code"`
}
func (d RadiologyMcuOrderItem) ToResponse() ResponseDto {
resp := ResponseDto{
RadiologyMcuOrder_Id: d.RadiologyMcuOrder_Id,
RadiologyMcuOrder: d.RadiologyMcuOrder,
McuSrc_Code: d.McuSrc_Code,
McuSrc: d.McuSrc,
Result: d.Result,
Status_Code: d.Status_Code,
}
resp.BigMain = d.BigMain
return resp
}
func ToResponseList(data []RadiologyMcuOrderItem) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,17 @@
package radiologymcuorderitem
import (
emo "simrs-vx/internal/domain/main-entities/radiology-mcu-order"
emoib "simrs-vx/internal/domain/main-entities/radiology-mcu-order-item/base"
erc "simrs-vx/internal/domain/references/common"
)
type RadiologyMcuOrderItem struct {
emoib.RadiologyMcuOrderItem
RadiologyMcuOrder *emo.RadiologyMcuOrder `json:"radiologyMcuOrder,omitempty" gorm:"foreignKey:RadiologyMcuOrder_Id;references:Id"`
}
func (d RadiologyMcuOrderItem) IsCompleted() bool {
return d.Status_Code == erc.DSCDone
}
@@ -0,0 +1,17 @@
package radiologymcuorder
import (
ecore "simrs-vx/internal/domain/base-entities/core"
erc "simrs-vx/internal/domain/references/common"
)
type RadiologyMcuOrder struct {
ecore.BigMain
Encounter_Id uint `json:"encounter_id"`
Number uint64 `json:"number"`
Doctor_Code string `json:"doctor_code" gorm:"unique;size:20"`
ClinicalNotes *string `json:"clinicalNotes"`
OtherNotes *string `json:"otherNotes"`
Resume *string `json:"resume"`
Status_Code erc.DataStatusCode `json:"status_code" gorm:"not null;size:10"`
}
@@ -0,0 +1,88 @@
package radiologymcuorder
import (
la "simrs-vx/internal/lib/auth"
ecore "simrs-vx/internal/domain/base-entities/core"
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
ermoi "simrs-vx/internal/domain/main-entities/radiology-mcu-order-item/base"
)
type CreateDto struct {
Encounter_Id uint `json:"encounter_id"`
Number *uint64 `json:"number"` // SHOULD BE AUTOMATIC WITHOUT SYNC
Doctor_Code string `json:"-" validate:"required"`
ClinicalNotes *string `json:"clinicalNotes"`
OtherNotes *string `json:"otherNotes"`
Items []ermoi.SubCreateDto `json:"items" validate:"required"`
la.AuthInfo
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Sort string `json:"sort"`
Pagination ecore.Pagination
}
type FilterDto struct {
Encounter_Id uint `json:"encounter-id"`
Doctor_Code string `json:"doctor-code"`
}
type ReadDetailDto struct {
Id uint64 `json:"id"`
Includes string `json:"includes"`
}
type UpdateDto struct {
Id uint64 `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint64 `json:"id"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.BigMain
Encounter_Id uint `json:"encounter_id"`
Encounter *ee.Encounter
Number uint64 `json:"number"`
Doctor_Code string `json:"doctor_code"`
Doctor *ed.Doctor
ClinicalNotes *string `json:"clinicalNotes"`
OtherNotes *string `json:"otherNotes"`
Resume *string `json:"resume"`
Items []*ermoi.RadiologyMcuOrderItem
}
func (d RadiologyMcuOrder) ToResponse() ResponseDto {
resp := ResponseDto{
Encounter_Id: d.Encounter_Id,
Encounter: d.Encounter,
Number: d.Number,
Doctor_Code: d.Doctor_Code,
Doctor: d.Doctor,
ClinicalNotes: d.ClinicalNotes,
OtherNotes: d.OtherNotes,
Resume: d.Resume,
}
resp.BigMain = d.BigMain
return resp
}
func ToResponseList(data []RadiologyMcuOrder) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,28 @@
package radiologymcuorder
import (
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
ermoi "simrs-vx/internal/domain/main-entities/radiology-mcu-order-item/base"
eamob "simrs-vx/internal/domain/main-entities/radiology-mcu-order/base"
erc "simrs-vx/internal/domain/references/common"
)
type RadiologyMcuOrder struct {
eamob.RadiologyMcuOrder
Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"`
Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Code;references:Code"`
Items []*ermoi.RadiologyMcuOrderItem `json:"items" gorm:"foreignKey:RadiologyMcuOrder_Id;references:Id"`
}
func (d RadiologyMcuOrder) IsNotNew() bool {
return d.Status_Code != erc.DSCNew
}
func (d RadiologyMcuOrder) IsCompleted() bool {
return d.Status_Code == erc.DSCDone
}
func (d RadiologyMcuOrder) IsSameDoctor(doctor_code *string) bool {
return d.Doctor_Code == *doctor_code
}
@@ -9,6 +9,7 @@ type (
InstructionCode string
HeadToToeCode string
McuUrgencyLevelCode string
McuOrderStageCode string
McuScopeCode string
SoapiTypeCode string
MedicalActionTypeCode string
@@ -125,6 +126,9 @@ const (
MULCPF McuUrgencyLevelCode = "priority-form" // Form Prioritas
MULCRT McuUrgencyLevelCode = "routine" // Pemeriksaan Rutin
MOSFirst McuOrderStageCode = "first" // Stage 1
MOSSecond McuOrderStageCode = "repeat" // Stage 2
STCEarlyNurse SoapiTypeCode = "early-nursery" // Kajian Awal Keperawatan
STCEEarlyMedic SoapiTypeCode = "early-medic" // Kajian Awal Rehab Medis
STCEarlyRehab SoapiTypeCode = "early-rehab" // Kajian Awal Rehab Medik