go_import_excel_pg/internal/excel.go

137 lines
5.3 KiB
Go
Raw Normal View History

2024-02-22 10:43:39 +07:00
package internal
import (
"slices"
"time"
)
type EnumObject struct {
ID int `json:"id"`
Label string `json:"label"`
}
var Agama = []EnumObject{
{ID: 1, Label: "Islam"},
{ID: 2, Label: "Kristen (Protestan)"},
{ID: 3, Label: "Katolik"},
{ID: 4, Label: "Hindu"},
{ID: 5, Label: "Buddha"},
{ID: 6, Label: "Konghucu"},
{ID: 7, Label: "Penghayat"},
{ID: 8, Label: "Lain-lain"},
}
var Pendidikan = []EnumObject{
{ID: 1, Label: "Tidak sekolah"},
{ID: 2, Label: "SD"},
{ID: 3, Label: "SLTP sederajat"},
{ID: 4, Label: "SLTA sederajat"},
{ID: 5, Label: "D1-D3 sederajat"},
{ID: 6, Label: "D4"}, // Note: There was a duplicate ID for D4 and S1
{ID: 6, Label: "S1"}, // Note: There was a duplicate ID for D4 and S1
{ID: 7, Label: "S2"},
{ID: 8, Label: "S3"},
}
var StatusKawin = []EnumObject{
{ID: 1, Label: "Belum Kawin"},
{ID: 2, Label: "Kawin"},
{ID: 3, Label: "Cerai Hidup"},
{ID: 4, Label: "Cerai Mati"},
}
var Pekerjaan = []EnumObject{
{ID: 1, Label: "Tidak bekerja"},
{ID: 2, Label: "PNS"},
{ID: 3, Label: "TNI/POLRI"},
{ID: 4, Label: "BUMN"},
{ID: 5, Label: "Pegawai Swasta/Wirausaha"},
{ID: 6, Label: "Lain-lain"},
}
// export const importDataPasienSchema = z.object({
// no_rekammedis: z.string(),
// nama_pasien: z.string(),
// no_ktp: z.string().nullish(),
// no_bpjs: z.string().nullish(),
// tgl_lahir: z.date(),
// kelamin: z.number(),
// kebangsaan: z.string().nullish(),
// agama: z.string().nullish().transform(val => Agama.find(x => x.label === val)?.id),
// suku: z.string().nullish(),
// pendidikan: z.coerce.number().nullish(),
// pekerjaan: z.string().nullish().transform(val => Pekerjaan.find(x => x.label === val)?.id),
// hp: z.coerce.string().nullish().transform(val => validatePhoneRegex(val?.replace(/\s+/g, ''))),
// email: z.string().nullish(),
// status_nikah: z.string().nullish().transform(val => StatusKawin.find(x => x.label === val)?.id),
// provinsi: z.string().nullish(),
// kabupaten: z.string().nullish(),
// kecamatan: z.string().nullish(),
// kelurahan: z.string().nullish(),
// kodepos: z.string().nullish(),
// namajalan: z.string().nullish(),
// hp_penjamin: z.coerce.string().nullish().transform(val => validatePhoneRegex(val?.replace(/\s+/g, ''))),
// namapenjamin: z.string().nullish(),
// ktp_penjamin: z.coerce.string().nullish(),
// hubungan_penjamin: z.coerce.number().nullish(),
// pendidikan_penjamin: z.string().nullish().transform(val => Pendidikan.find(x => x.label === val)?.id),
// alamat_penjamin: z.string().nullish(),
// }).transform(({
// no_rekammedis,
// nama_pasien,
// no_ktp,
// no_bpjs,
// tgl_lahir,
// kelamin,
// status_nikah,
// namajalan,
// hp,
// pendidikan_penjamin,
// ...rest
// }) => ({
// noRm: no_rekammedis,
// namaPasien: nama_pasien,
// nik: no_ktp,
// noKartuPesertaBPJS: no_bpjs,
// tanggalLahir: tgl_lahir,
// jenisKelamin: kelamin,
// statusPernikahan: status_nikah,
// pendidikanPenjamin: pendidikan_penjamin,
// noHp: hp,
// nama_jalan: namajalan,
// ...rest
// }))
type Patient struct {
NoRekamMedis string `json:"no_rekammedis"`
NamaPasien string `json:"nama_pasien"`
NoKTP *string `json:"no_ktp"` // Nullable string
NoBPJS *string `json:"no_bpjs"` // Nullable string
TglLahir time.Time `json:"tgl_lahir"`
Kelamin int `json:"kelamin"`
Kebangsaan *string `json:"kebangsaan"` // Nullable string
Agama *int `json:"agama"` // Assuming Agama is an enum, and you'll convert from string to enum ID
Suku *string `json:"suku"` // Nullable string
Pendidikan *int `json:"pendidikan"` // Nullable int
Pekerjaan *int `json:"pekerjaan"` // Assuming Pekerjaan is an enum, and you'll convert from string to enum ID
HP *string `json:"hp"` // Nullable string, assume validation happens elsewhere
Email *string `json:"email"` // Nullable string
StatusNikah *int `json:"status_nikah"` // Assuming StatusKawin is an enum, and you'll convert from string to enum ID
Provinsi *string `json:"provinsi"` // Nullable string
Kabupaten *string `json:"kabupaten"` // Nullable string
Kecamatan *string `json:"kecamatan"` // Nullable string
Kelurahan *string `json:"kelurahan"` // Nullable string
Kodepos *string `json:"kodepos"` // Nullable string
NamaJalan *string `json:"namajalan"` // Nullable string
HPPenjamin *string `json:"hp_penjamin"` // Nullable string, assume validation happens elsewhere
NamaPenjamin *string `json:"namapenjamin"` // Nullable string
KTPPenjamin *string `json:"ktp_penjamin"` // Nullable string
HubunganPenjamin *int `json:"hubungan_penjamin"` // Nullable int
PendidikanPenjamin *int `json:"pendidikan_penjamin"` // Assuming Pendidikan is an enum, and you'll convert from string to enum ID
AlamatPenjamin *string `json:"alamat_penjamin"` // Nullable string
}
func FindValueByLabel(arr []EnumObject, s string) EnumObject {
idx := slices.IndexFunc(arr, func(c EnumObject) bool { return c.Label == s })
return arr[idx]
}