Files
simrsx-be/internal/use-case/main-use-case/generate-file/tycovar.go
T

163 lines
4.5 KiB
Go

package generatefile
import (
"fmt"
"time"
erc "simrs-vx/internal/domain/references/common"
ere "simrs-vx/internal/domain/references/encounter"
er "simrs-vx/internal/domain/main-entities/resume"
pu "simrs-vx/pkg/use-case-helper"
)
type GeneralConsentPDF struct {
Relatives []string `json:"relatives"`
Responsible string `json:"responsible"`
Informant string `json:"informant"`
Witness1 string `json:"witness1"`
Witness2 string `json:"witness2"`
Date string `json:"date"`
}
type ControlLetterPDF struct {
Number string
Doctor_Name string
DstUnit_Name string
CardNumber string
Name string
BirthDate string
Diagnose string
PlanDate string
ResponsibleDoctor_Name string
PrintDate string
}
type ResumePDF struct {
MedicalRecord string
NIK string
Name string
BirthPlaceDate string
Gender string
Phone string
Class string
Unit string
Doctor_Name string
StartedAt string
FinishedAt string
DiagnosisIn string
DiagnosisOut string
Diagnosis []er.DiagnosisEntry
MainComplaint string
MedicalHistory string
PhysicalExamination string
SupportingExamination string
MedicalActions []er.ActionEntry
MedicalAction string
Consultations []er.ConsultationEntry
Allergy string
ConsciousnessLevel string
BloodPressure string
BodyTemperature float64
RespirationRate float64
HeartRate float64
PainScale int
ConditionOnDischarge string
DischargeMethod string
Medications []er.MedicationEntry
// fasyankes
// date
// klinik
Date string
}
type GenerateDto struct {
EntityType_Code ere.EntityTypeCode `json:"entityType_code" validate:"required"`
Ref_Id *string `json:"ref_id" validate:"required"`
Type_Code ere.DocTypeCode `json:"type_code" validate:"required"`
FormatType erc.DocFormatTypeCode `json:"formatType"`
TemplateName TemplateDocsName `json:"-"`
Encounter_Id *uint `json:"-"`
UseA5Lanscape bool `json:"-"`
Data *string `json:"data"`
}
type VclaimControlLetter struct {
Number string `json:"noSuratKontrol"`
PlannedControlDate string `json:"tglRencanaKontrol"`
Doctor_Name string `json:"namaDokter"`
DstUnit_Name string `json:"namaPoliTujuan"`
ResponsibleDoctor_Name string `json:"namaDokterPembuat"`
VclaimSep VclaimSep `json:"sep"`
}
type VclaimSep struct {
VclaimMember VclaimMember `json:"peserta"`
Diagnose string `json:"diagnosa"`
Number string `json:"noSep"`
}
type VclaimMember struct {
CardNumber string `json:"noKartu"`
Name string `json:"nama"`
BirthDate string `json:"tglLahir"`
Gender string `json:"kelamin"`
}
type GeneratePDFdto struct {
TemplatePath string
TemplateData any
PdfPath string
UseA5Lanscape bool
}
type ResponseDto struct {
FileUrl string `json:"fileUrl"`
}
type TemplateDocsName string
// TemplateDocsName is the name of the template file in the assets/docs folder
const (
TDNGC TemplateDocsName = "general-consent.html"
TDNCL TemplateDocsName = "control-letter.html"
TDNR TemplateDocsName = "resume.html"
)
func (v VclaimControlLetter) generateTemplateData() ControlLetterPDF {
return ControlLetterPDF{
Number: v.Number,
Doctor_Name: v.Doctor_Name,
DstUnit_Name: v.DstUnit_Name,
CardNumber: v.VclaimSep.VclaimMember.CardNumber,
Name: v.generateNameWithGender(),
BirthDate: v.generateBirthDate(),
Diagnose: v.VclaimSep.Diagnose,
PlanDate: v.PlannedControlDate,
ResponsibleDoctor_Name: v.ResponsibleDoctor_Name,
PrintDate: generatePrintDate(),
}
}
func (v VclaimControlLetter) generateNameWithGender() string {
gender := "Perempuan"
if v.VclaimSep.VclaimMember.Gender == "L" {
gender = "Laki-Laki"
}
return fmt.Sprintf("%s (%s)", v.VclaimSep.VclaimMember.Name, gender)
}
func (v VclaimControlLetter) generateBirthDate() string {
t, _ := time.Parse("2006-01-02", v.VclaimSep.VclaimMember.BirthDate)
return pu.FormatIndonesianDate(t)
}
func generatePrintDate() string {
now := time.Now()
return now.Format("2006/01/02")
}