diff --git a/cmd/main-migration/migrations/atlas.sum b/cmd/main-migration/migrations/atlas.sum index 42b47eae..ffc79610 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:ymfgaEhen/ZEJoOaBP0BLfKbsTZRjKjQqNbO58caXLU= +h1:gsXdmKB45GiCscxejrBzxDakY0yPHDnnP5KKD5X6a40= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -50,4 +50,4 @@ h1:ymfgaEhen/ZEJoOaBP0BLfKbsTZRjKjQqNbO58caXLU= 20251017060617.sql h1:4T3t9ifWrEQTPMSM0XJ98pF7Qdt+UfgtMui17bhrnWI= 20251017082207.sql h1:8vLG1l/saRRMHXkyA4nelJyjaSddhZd6r7R+Uo4JS/c= 20251019093915.sql h1:vWqTEc9bZpnAj53DLNKaTYbEoiSqdQJ9Mx4Qv9zmXU8= -20251020062553.sql h1:llHc4558mdcMjVYMdrCb6ZClnjUd56DnJuwYGbae/Ms= +20251020062553.sql h1:TMlFzG+6P/rqIDzF6y8OLrWy4vusEDonVHhfRwRhrqw= diff --git a/internal/domain/main-entities/death-cause-src/dto.go b/internal/domain/main-entities/death-cause-src/dto.go new file mode 100644 index 00000000..6266484a --- /dev/null +++ b/internal/domain/main-entities/death-cause-src/dto.go @@ -0,0 +1,70 @@ +package diagnosesrc + +import ( + ecore "simrs-vx/internal/domain/base-entities/core" +) + +type CreateDto struct { + Code string `json:"code" validate:"maxLength=10"` + Name string `json:"name" validate:"maxLength=2048"` + IndName string `json:"indName" validate:"maxLength=2048"` +} + +type ReadListDto struct { + FilterDto + Includes string `json:"includes"` + Sort string `json:"sort"` + Pagination ecore.Pagination +} + +type FilterDto struct { + Code string `json:"code"` + Name string `json:"name"` + IndName string `json:"indName"` + Search string `json:"search" gormhelper:"searchColumns=Code,Name"` +} + +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"` + IndName string `json:"indName"` +} + +func (d DiagnoseSrc) ToResponse() ResponseDto { + resp := ResponseDto{ + Code: d.Code, + Name: d.Name, + IndName: d.IndName, + } + resp.Main = d.Main + return resp +} + +func ToResponseList(data []DiagnoseSrc) []ResponseDto { + resp := make([]ResponseDto, len(data)) + for i, u := range data { + resp[i] = u.ToResponse() + } + return resp +} diff --git a/internal/domain/main-entities/death-cause-src/entity.go b/internal/domain/main-entities/death-cause-src/entity.go new file mode 100644 index 00000000..82d55bb5 --- /dev/null +++ b/internal/domain/main-entities/death-cause-src/entity.go @@ -0,0 +1,12 @@ +package diagnosesrc + +import ( + ecore "simrs-vx/internal/domain/base-entities/core" +) + +type DiagnoseSrc struct { + ecore.Main // adjust this according to the needs + Code string `json:"code" gorm:"unique;size:10"` + Name string `json:"name" gorm:"size:2048"` + IndName string `json:"indName" gorm:"size:2048"` +} diff --git a/internal/domain/main-entities/edu-assessment/entity.go b/internal/domain/main-entities/edu-assessment/entity.go new file mode 100644 index 00000000..8f037c5a --- /dev/null +++ b/internal/domain/main-entities/edu-assessment/entity.go @@ -0,0 +1,17 @@ +package edu_assessment + +import ( + "simrs-vx/internal/domain/base-entities/core" + ee "simrs-vx/internal/domain/main-entities/encounter" +) + +type EduAssessment struct { + core.Main + Encounter_Id *uint `json:"encounter_id" gorm:"not null"` + Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` + + GeneralEdus *string `json:"generalEdus"` + SpecialEdus *string `json:"specialEdus"` + Assessments *string `json:"assessments"` + Plan *string `json:"plan"` +} diff --git a/internal/domain/main-entities/general-consent/entity.go b/internal/domain/main-entities/general-consent/entity.go new file mode 100644 index 00000000..96758406 --- /dev/null +++ b/internal/domain/main-entities/general-consent/entity.go @@ -0,0 +1,13 @@ +package general_consent + +import ( + "simrs-vx/internal/domain/base-entities/core" + ee "simrs-vx/internal/domain/main-entities/encounter" +) + +type GeneralConsent struct { + core.Main + Encounter_Id *uint `json:"encounter_id" gorm:"not null"` + Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` + Value *string `json:"value"` +} diff --git a/internal/domain/main-entities/therapy-protol/entity.go b/internal/domain/main-entities/therapy-protol/entity.go new file mode 100644 index 00000000..8d0ad775 --- /dev/null +++ b/internal/domain/main-entities/therapy-protol/entity.go @@ -0,0 +1,31 @@ +package therapy_protol + +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" + + common "simrs-vx/internal/domain/references/common" +) + +type TherapyEntity struct { + ecore.Main + Encounter_Id *uint `json:"encounter_id" gorm:"not null"` + 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"` + + Anamnesis *string `json:"anamnesis" gorm:"size:2048"` + MedicalDiagnoses *string `json:"medicalDiagnoses"` + FunctionDiagnoses *string `json:"functionDiagnoses"` + Procedures *string `json:"procedures"` + SupportingExams *string `json:"supportingExams" gorm:"size:2048"` + Instruction *string `json:"instruction" gorm:"size:2048"` + Evaluation *string `json:"evaluation" gorm:"size:2048"` + WorkCauseStatus *string `json:"workCauseStatus" gorm:"size:2048"` + Frequency *uint `json:"frequency"` + IntervalUnit_Code *common.TimeUnitCode `json:"intervalUnit_Code" gorm:"size:10"` + Duration *uint `json:"duration"` + DurationUnit_Code *common.TimeUnitCode `json:"durationUnit_Code" gorm:"size:10"` +} diff --git a/internal/domain/references/clinical/clinical.go b/internal/domain/references/clinical/clinical.go index 47872aa5..c0eb3594 100644 --- a/internal/domain/references/clinical/clinical.go +++ b/internal/domain/references/clinical/clinical.go @@ -12,6 +12,15 @@ type ( SoapiTypeCode string MedicalAction string VehicleTypeCode string + GeneralEduCode string + SpecialEduCode string + EduAssessmentCode string + AbilityCode string + WillCode string + MedObstacleCode string + LearnMethodCode string + LangClassCode string + TranslatorSrcCode string ) const ( @@ -54,9 +63,15 @@ const ( OCHeight ObjectCode = "height" // Tinggi Badan OCHeadToToe ObjectCode = "head-to-toe" // Kepala Sampai Kaki - ACEarlyDiag AssessmentCode = "early-diag" // Diagnosis Awal - ACLateDiag AssessmentCode = "late-diag" // Diagnosis Akhir - ACSecDiag AssessmentCode = "sec-diag" // Diagnosis Sekunder + ACEarlyDiag AssessmentCode = "early-diag" // Diagnosis Awal + ACLateDiag AssessmentCode = "late-diag" // Diagnosis Akhir + ACSecDiag AssessmentCode = "sec-diag" // Diagnosis Sekunder + ACEarlyMedDiag AssessmentCode = "early-med-diag" // Diagnosis Medis Awal + ACLateMedDiag AssessmentCode = "late-med-diag" // Diagnosis Medis Akhir + ACSecMedDiag AssessmentCode = "sec-med-diag" // Diagnosis Medis Sekunder + ACEarlyFuncDiag AssessmentCode = "early-func-diag" // Diagnosis Fungsi Awal + ACLateFuncDiag AssessmentCode = "late-func-diag" // Diagnosis Fungsi Akhir + ACSecFuncDiag AssessmentCode = "sec-func-diag" // Diagnosis Fungsi Sekunder PCPlan PlanCode = "plan" // Rencana @@ -113,6 +128,58 @@ const ( VTCAmbulance VehicleTypeCode = "ambulance" // Ambulans VTCTransport VehicleTypeCode = "transport" // Transport VTCHearse VehicleTypeCode = "hearse" // Jenazah + + GECRightObg GeneralEduCode = "right-obg" // Hak dan kewajiban pasien dan keluarga + GECGeneralConsent GeneralEduCode = "general-consent" // General Consent + GECService GeneralEduCode = "service" // Pelayanan yang disediakan (jam pelayanan, akses pelayanan dan proses pelayanan) + GECAltCareSrc GeneralEduCode = "alt-care-src" // Sumber alternatif asuhan di tempat lain/faskes lain + GECHomePlan GeneralEduCode = "home-plan" // Rencana tindakan di rumah + GECHomeCare GeneralEduCode = "home-care" // Kebutuhan perawatan di rumah + GECOrientation GeneralEduCode = "orientation" // Orientasi ruangan + GECFallRiskPrevention GeneralEduCode = "fall-risk-prevention" // Pencegahan risiko jatuh + GECAltCare GeneralEduCode = "alt-care" // Alternatif pelayanan + GECActDelay GeneralEduCode = "act-delay" // Penundaan Tindakan + GECOthers GeneralEduCode = "others" // Lain - lain + + SECDiseaseDiagDev SpecialEduCode = "disease-diag-dev" // Diagnosa penyakit dan perkembangannya + SECSafeMedUsage SpecialEduCode = "safe-med-usage" // Penggunaan obat yang aman, + SECSideEffect SpecialEduCode = "side-effect" // Efek samping dan reaksi obat + SECDiet SpecialEduCode = "diet" // Diet/Nutrisi + SECPainMgmt SpecialEduCode = "pain-mgmt" // Managemen nyeri + SECMedicalEqUsage SpecialEduCode = "medical-eq-usage" // Penggunaan Peralatan Medis + SECRehabTechnique SpecialEduCode = "rehab-technique" // Teknik Rehabilitasi + SECPreventionAct SpecialEduCode = "prevention-act" // Tindakan pencegahan (cuci tangan, pemasangan gelang) + + EACLearnAbility EduAssessmentCode = "learn-ability" // Kemampuan Belajar + EACLearnWill EduAssessmentCode = "learn-will" // Kemauan Belajar + EACObstacle EduAssessmentCode = "obstacle" // Hambatan + EACLearnMethod EduAssessmentCode = "learn-method" // Metode Pembelajaran + EACLang EduAssessmentCode = "lang" // Bahasa + EACLangObstacle EduAssessmentCode = "lang-obstacle" // Hambatan Bahasa + EACBelief EduAssessmentCode = "belief" // Keyakinan + + ACAble AbilityCode = "able" // Mampu + ACNotAble AbilityCode = "not-able" // Tidak Mampu + + WCReady WillCode = "ready" // Siap + WCInterested WillCode = "interested" // Tertarik + WCNotInterested WillCode = "not-interested" // Tidak Tertarik + + MOCHearing MedObstacleCode = "hearing" // Pendengaran + MOCSight MedObstacleCode = "sight" // Penglihatan + MOCPhysical MedObstacleCode = "physical" // Fisik + MOCEmotional MedObstacleCode = "emotional" // Emosional + MOCCognitif MedObstacleCode = "cognitif" // Kognitif + + LMCDemo LearnMethodCode = "demo" // Demonstrasi + LMCDiscussLeaflet LearnMethodCode = "discuss-leaflet" // Diskusi Leaflet + + LCCInd LangClassCode = "ind" // Indonesia + LCCRegion LangClassCode = "region" // Daerah + LCCForeign LangClassCode = "foreign" // Asing + + TSCTeam TranslatorSrcCode = "team" // Tim Penerjemah + TSCFamily TranslatorSrcCode = "family" // Keluarga ) type Soapi struct {