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 { namaDepan := strings.ToUpper(dk.NamaDepan.String) namaBelakang := strings.ToUpper(dk.NamaBelakang.String) gelarDepan := strings.Join(dk.GelarDepan, " ") gelarBelakang := strings.Join(dk.GelarBelakang, ", ") joinedName := gelarDepan + " " + namaDepan + " " + namaBelakang + " " + gelarBelakang 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 }