78 lines
2.0 KiB
Go
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
|
|
}
|