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: model.ResultMain.NoKtp, NamaPasien: model.ResultMain.NamaPasien, JenisKelamin: 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) } for _, d := range model.ResultDiagnosa { result.DiagnosisItem = append(result.DiagnosisItem, DiagnosisItemRequest{ KodeDiagnosa: d.KodeDiagnosa, 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) + " " + strings.ToUpper(dk.NamaBelakang) result.DokterPelaksanaItems = append(result.DokterPelaksanaItems, DokterPelaksanaItemRequest{ Id: dk.ID, Nip: &dk.Nip, Nama: &joinedName, SatuanKerja: &dk.SatuanKerja, }) } result.StatusPasienData = StatusPasienRequest{ TglSelesai: model.ResultMain.TglSelesai, StatusOperasi: model.ResultMain.StatusOperasi, KeteranganStatus: model.ResultMain.Keterangan, } return result }