Files
api-antrian-operasi/internal/domain/reference/pasien/model.go
2026-02-05 11:45:44 +07:00

78 lines
2.0 KiB
Go

package pasien
import (
"strconv"
"time"
)
type PasienModel struct {
Id int `db:"id"`
Alamat string `db:"alamat"`
AlamatKtp string `db:"alamat_ktp"`
JenisKelamin string `db:"jeniskelamin"`
Nama string `db:"nama"`
Nik string `db:"noktp"`
NoMr string `db:"nomr"`
TglLahir time.Time `db:"tgllahir"`
}
type PasienResponse struct {
Id string `json:"id"`
NoMr string `json:"nomr"`
Nik string `json:"nik"`
Nama string `json:"nama"`
TglLahir string `json:"tgllahir"`
JenisKelamin string `json:"jeniskelamin"`
Umur int `json:"umur"`
DataUmur dataUmurResponse `json:"dataumur"`
Alamat string `json:"alamat"`
AlamatKtp string `json:"alamatktp"`
Select string `json:"select"`
}
type dataUmurResponse struct {
Label string `json:"label"`
Tahun int `json:"tahun"`
Bulan int `json:"bulan"`
Hari int `json:"hari"`
}
func (m PasienModel) ToResponse() PasienResponse {
idstring := strconv.Itoa(m.Id)
nowdate := time.Now()
age := CalculateAge(m.TglLahir, nowdate)
ageLabel := strconv.Itoa(age.Years) + "Th " + strconv.Itoa(age.Months) + "Bln " + strconv.Itoa(age.Days) + "Hr"
return PasienResponse{
Id: idstring,
NoMr: m.NoMr,
Nik: m.Nik,
Nama: m.Nama,
TglLahir: m.TglLahir.Format("2006-01-02"),
JenisKelamin: m.JenisKelamin,
Umur: age.Years,
DataUmur: dataUmurResponse{
Label: ageLabel,
Tahun: age.Years,
Bulan: age.Months,
Hari: age.Days,
},
Alamat: m.Alamat,
AlamatKtp: m.AlamatKtp,
Select: m.NoMr + " | " + m.Nama,
}
}
type ListPasienModel []PasienModel
func (rows ListPasienModel) ToResponseList() []PasienResponse {
result := make([]PasienResponse, 0, len(rows))
for _, item := range rows {
result = append(result, item.ToResponse())
}
return result
}