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 }