Files
api-antrian-operasi/internal/domain/antrian_operasi/response.go
2026-02-20 13:29:33 +07:00

100 lines
3.3 KiB
Go

package antrianoperasi
import (
"strings"
)
type DetailPasienOperasiResultQuery struct {
ResultMain DetailPasienOperasi
ResultDiagnosa []DiagnosaOperasiModel
ResultTindakan []TindakanOperasiModel
ResultTeleponOperasi []TeleponPasienModel
ResultDokterOperasi []DokterOperasiModel
}
type DetailPasienOperasiResponse struct {
FormData FormDataRequest `json:"formData"`
DiagnosisItem []DiagnosisItemRequest `json:"diagnosisItems" binding:"required,min=1,dive"`
TindakanItems []TindakanItemRequest `json:"tindakanItems" binding:"required,min=1,dive"`
RencanaOperasiData RencanaOperasiRequest `json:"rencanaOperasiData"`
DokterPelaksanaItems []DokterPelaksanaItemRequest `json:"dokterPelaksanaItems"`
StatusPasienData StatusPasienRequest `json:"statusPasienData"`
}
func handleStringPointer(str *string) string {
var result string
if str != nil {
result = *str
}
return result
}
func (model DetailPasienOperasiResultQuery) MapToResponse() DetailPasienOperasiResponse {
var result DetailPasienOperasiResponse
// map main data
var tglLahir string
if model.ResultMain.TglLahir != nil {
tglLahir = model.ResultMain.TglLahir.Format("2006-01-02")
}
result.FormData = FormDataRequest{
NoRekamMedis: handleStringPointer(model.ResultMain.NoRekamMedis),
NoKtp: handleStringPointer(model.ResultMain.NoKtp),
NamaPasien: handleStringPointer(model.ResultMain.NamaPasien),
JenisKelamin: handleStringPointer(model.ResultMain.JenisKelamin),
TglLahir: &tglLahir,
Umur: model.ResultMain.Umur,
Alamat: model.ResultMain.Alamat,
}
for _, tlp := range model.ResultTeleponOperasi {
result.FormData.NoTelepon = append(result.FormData.NoTelepon, tlp.NomorTelepon.String)
}
for _, d := range model.ResultDiagnosa {
result.DiagnosisItem = append(result.DiagnosisItem, DiagnosisItemRequest{
KodeDiagnosa: d.KodeDiagnosa.String,
Diagnosa: d.Diagnosa.String,
JenisDiagnosa: d.JenisDiagnosa.String,
})
}
for _, t := range model.ResultTindakan {
result.TindakanItems = append(result.TindakanItems, TindakanItemRequest{
KodeTindakan: t.KodeTindakan,
Tindakan: t.Tindakan,
TindakanTambahan: t.TindakanTambahan,
})
}
result.RencanaOperasiData = RencanaOperasiRequest{
Spesialis: model.ResultMain.IdSpesialis,
SpesialisName: model.ResultMain.Spesialis,
SubSpesialis: model.ResultMain.IdSubSpesialis,
SubSpesialisName: model.ResultMain.SubSpesialis,
TanggalDaftar: &model.ResultMain.TglDaftar,
KategoriOperasi: model.ResultMain.IdKategori,
KategoriName: model.ResultMain.Kategori,
RencanaOperasi: model.ResultMain.RencanaOperasi,
Keterangan: model.ResultMain.Keterangan,
}
for _, dk := range model.ResultDokterOperasi {
joinedName := strings.ToUpper(dk.NamaDepan.String) + " " + strings.ToUpper(dk.NamaBelakang.String)
result.DokterPelaksanaItems = append(result.DokterPelaksanaItems, DokterPelaksanaItemRequest{
Id: dk.ID,
Nip: &dk.Nip.String,
Nama: &joinedName,
SatuanKerja: &dk.SatuanKerja,
})
}
result.StatusPasienData = StatusPasienRequest{
TglSelesai: model.ResultMain.TglSelesai,
StatusOperasi: model.ResultMain.StatusOperasi,
KeteranganStatus: model.ResultMain.KeteranganStatusPasien,
}
return result
}