export const activeStatusCodes: Record<string, string> = {
  active: 'Aktif',
  inactive: 'Tidak Aktif',
}

export const dataStatusCodes: Record<string, string> = {
  new: 'Baru',
  review: 'Review',
  process: 'Proses',
  done: 'Selesai',
  canceled: 'Dibatalkan',
  rejected: 'Ditolak',
  skiped: 'Dilewati',
}

export const userStatusCodes: Record<string, string> = {
  new: 'Baru',
  active: 'Aktif',
  inactive: 'Tidak Aktif',
  blocked: 'Diblokir',
  suspended: 'Dibekukan',
}

export const itemGroupCodes: Record<string, string> = {
  infra: 'Infrastruktur',
  medicine: 'Obat',
  device: 'Peralatan',
  material: 'Perlengkapan',
}

export const unitTypeCodes: Record<string, string> = {
  reg: 'Registrasi',
  exa: 'Pemeriksaan',
  pay: 'Pembayaran',
  pha: 'Farmasai',
  lab: 'Laboratorium',
  rad: 'Radiologi',
}

export const queueStatusCodes: Record<string, string> = {
  wait: 'Tunggu',
  proc: 'Proses',
  done: 'Selesai',
  cancel: 'Batal',
  skip: 'Dilewati',
}

export const encounterClassCodes: Record<string, string> = {
  outpatient: 'Rawat Jalan',
  ambulatory: 'Rawat Jalan',
  emergency: 'Gawat Darurat',
  inpatient: 'Rawat Inap',
  draft: 'Draft',
  done: 'Selesai',
  cancel: 'Batal',
  skip: 'Dilewati',
}

export const timeUnitCodes: Record<string, string> = {
  sec: 'Detik',
  min: 'Menit',
  hour: 'Jam',
  day: 'Hari',
  week: 'Minggu',
  month: 'Bulan',
  year: 'Tahun',
}

export const dischargeMethodCodes: Record<string, string> = {
  home: 'Home',
  'home-request': 'Home Request',
}

export const genderCodes: Record<string, string> = {
  male: 'Laki',
  female: 'Perempuan',
  'not-stated': 'Tidak Disebutkan',
  unknown: 'Tidak Diketahui',
}

export const religionCodes: Record<string, string> = {
  islam: 'Islam',
  protestan: 'Protestan',
  katolik: 'Katolik',
  hindu: 'Hindu',
  buda: 'Buda',
  konghucu: 'Konghucu',
  other: 'Kepercayaan Lain',
}

export const educationCodes: Record<string, string> = {
  TS: 'TS',
  TK: 'TK',
  SD: 'SD',
  SMP: 'SMP',
  SMA: 'SMA',
  D1: 'D1',
  D2: 'D2',
  D3: 'D3',
  S1: 'S1',
  S2: 'S2',
  S3: 'S3',
}

export const occupationCodes: Record<string, string> = {
  unknown: 'Tidak diketahui',
  tidak_bekerja: 'Belum/Tidak Bekerja',
  mengurus_rumah_tangga: 'Mengurus Rumah Tangga',
  pelajar: 'Pelajar/Mahasiswa',
  pensiunan: 'Pensiunan',
  pns: 'Pegawai Negeri Sipil',
  tni: 'Tentara Nasional Indonesia',
  polri: 'Kepolisian RI',
  perdagangan: 'Perdagangan',
  petani: 'Petani/Pekebun',
  peternak: 'Peternak',
  nelayan: 'Nelayan/Perikanan',
  industri: 'Industri',
  konstruksi: 'Konstruksi',
  transportasi: 'Transportasi',
  karyawan_swasta: 'Karyawan Swasta',
  karyawan_bumn: 'Karyawan BUMN',
  karyawan_bumd: 'Karyawan BUMD',
  karyawan_honorer: 'Karyawan Honorer',
  buruh_harian: 'Buruh Harian Lepas',
  buruh_tani: 'Buruh Tani/Perkebunan',
  buruh_nelayan: 'Buruh Nelayan/Perikanan',
  buruh_peternakan: 'Buruh Peternakan',
  pembantu_rumah_tangga: 'Pembantu Rumah Tangga',
  tukang_cukur: 'Tukang Cukur',
  tukang_listrik: 'Tukang Listrik',
  tukang_batu: 'Tukang Batu',
  tukang_kayu: 'Tukang Kayu',
  tukang_sol_sepatu: 'Tukang Sol Sepatu',
  tukang_jahit: 'Tukang Jahit',
  tukang_gigi: 'Tukang Gigi',
  penata_rias: 'Penata Rias',
  penata_busana: 'Penata Busana',
  penata_rambut: 'Penata Rambut',
  mekanik: 'Mekanik',
  seniman: 'Seniman',
  tabib: 'Tabib',
  paraji: 'Paraji',
  perancang_busana: 'Perancang Busana',
  penterjemah: 'Penterjemah',
  imam_mesjid: 'Imam Mesjid',
  pendeta: 'Pendeta',
  pastor: 'Pastor',
  wartawan: 'Wartawan',
  ustadz: 'Ustadz/Mubaligh',
  juru_masak: 'Juru Masak',
  promotor: 'Promotor Acara',
  dpr_ri: 'Anggota DPR-RI',
  dpd: 'Anggota DPD',
  bpk: 'Anggota BPK',
  presiden: 'Presiden',
  wakil_presiden: 'Wakil Presiden',
  mk: 'Anggota Mahkamah Konstitusi',
  kabinet: 'Anggota Kabinet/Kementrian',
  dubes: 'Duta Besar',
  gubernur: 'Gubernur',
  wakil_gubernur: 'Wakil Gubernur',
  bupati: 'Bupati',
  wakil_bupati: 'Wakil Bupati',
  walikota: 'Walikota',
  wakil_walikota: 'Wakil Walikota',
  dprd_provinsi: 'Anggota DPRD Provinsi',
  dprd_kabkota: 'Anggota DPRD Kabupaten/Kota',
  dosen: 'Dosen',
  guru: 'Guru',
  pilot: 'Pilot',
  pengacara: 'Pengacara',
  arsitek: 'Arsitek',
  akuntan: 'Akuntan',
  konsultan: 'Konsultan',
  dokter: 'Dokter',
  bidan: 'Bidan',
  apoteker: 'Apoteker',
  psikolog: 'Psikiater/Psikolog',
  penyiar_tv: 'Penyiar Televisi',
  penyiar_radio: 'Penyiar Radio',
  pelaut: 'Pelaut',
  sopir: 'Sopir',
  pialang: 'Pialang',
  paranormal: 'Paranormal',
  pedagang: 'Pedagang',
  perangkat_desa: 'Perangkat Desa',
  kepala_desa: 'Kepala Desa',
  biarawati: 'Biarawati',
  wiraswasta: 'Wiraswasta',
  lainnya: 'Lainnya',
}

export const personContactTypes: Record<string, string> = {
  phone: 'Telepon',
  'm-phone': 'HP / Ponsel',
  email: 'Email',
  fax: 'Fax',
}

// Mapping dari UI values ke contact type constants
export const contactTypeMapping: Record<string, string> = {
  phoneNumber: 'm-phone',
  officePhoneNumber: 'phone',
  homePhoneNumber: 'phone',
  email: 'email',
  fax: 'fax',
}

export const dayCodes: Record<string, string> = {
  '0': 'Minggu',
  '1': '',
  '2': '',
  '3': '',
  '4': '',
  '5': '',
  '6': 'Sabtu',
}

export const paymentMethodCodes: Record<string, string> = {
  cash: 'Cash',
  debit: 'Debit',
  credit: 'Kredit',
  insurance: 'Asuransi',
  membership: 'Membership',
}

export const transportationCodes: Record<string, string> = {
  ambulance: 'Ambulans',
  car: 'Mobil',
  'motor-cycle': 'Motor',
  other: 'Lainnya',
}

export const personConditionCodes: Record<string, string> = {
  res: 'Resutiasi',
  emg: 'Darurat',
  urg: 'Mendesak',
  lurg: 'Kurang Mendesak',
  nurg: 'Mendesak',
  doa: 'Meninggal Saat Tiba',
}

export const emergencyClassCodes: Record<string, string> = {
  emg: 'Darurat',
  eon: 'Ponek',
}

export const outpatientClassCodes: Record<string, string> = {
  op: 'Rawat Inap',
  icu: 'ICU',
  hcu: 'HCU',
  vk: 'Kamar Bersalin',
}

export const checkupScopeCodes: Record<string, string> = {
  lab: 'Laboratorium',
  'mic-lab': 'Microbacterial Laboratorium',
  'pa-lab': 'Patology Anatomy Laboratorium',
  rad: 'Radiology',
}

export const employeePositionCodes: Record<string, string> = {
  doctor: 'Dokter',
  nurse: 'Perawat',
  nutritionist: 'Ahli Gisi',
  laborant: 'Laboran',
  pharmacy: 'Farmasi',
  payment: 'Pembayaran',
  'payment-verificator': 'Konfirmasi Pembayaran',
  management: 'Management',
}

export const subjectCodes: Record<string, string> = {
  'pri-compl': 'Primary Complaint',
  'sec-compl': 'Secondary Complaint',
  'cur-disea-hist': 'Current Disease History',
  'pas-disea-hist': 'Past Disease History',
  'fam-disea-hist': 'Family Disease History',
  'alg-hist': 'Allergic Hist',
  'alg-react': 'Allergic Reaction',
  'med-hist': 'Medication Hist',
}

export const objectCodes: Record<string, string> = {
  'consc-level': 'Tingkat Kesadaran',
  'consc-level-det': 'Detail Tingkat Kesadaran',
  'syst-bp': 'Tekanan Darah Systolic',
  'diast-bp': 'Tekanan Darah Diastolic',
  'hear-rt': 'Detak Jantung',
  temp: 'Suhu',
  spo2: 'SpO2',
  weight: 'Berat Badan',
  height: 'Tinggi Badan',
}

export const assessmentCodes: Record<string, string> = {
  'early-diag': 'Diagnosis Awal',
  'late-diag': 'Diagnosis Akhir',
  'sec-diag': 'Diagnosis Sekunder',
}

export const instructionCodes: Record<string, string> = {
  detail: 'Detail Instruksi',
  'med-act': 'Tindakan medis',
  medication: 'Obat',
  material: 'BMHP',
}

export const relationshipCodes: Record<string, string> = {
  mother: 'Ibu',
  father: 'Ayah',
  uncle: 'Paman',
  aunt: 'Bibi',
  sibling: 'Saudara',
  'gd-mother': 'Nenek',
  'gd-father': 'Kakek',
  child: 'Anak',
  nephew: 'Keponakan',
  'gd-child': 'Cucu',
  other: 'Lainnya',
}

export const uploadCode: Record<string, string> = {
  ktp: 'person-resident-number',
  sim: 'person-driving-license',
  kk: 'person-family-card',
  paspor: 'person-passport',
  'mcu-report': 'mcu-item-result',
} as const

export type UploadCodeKey = keyof typeof uploadCode
export type UploadCodeValue = (typeof uploadCode)[UploadCodeKey]

export const infraGroupCodes: Record<string, string> = {
  building: 'Bangunan',
  floor: 'Lantai',
  warehouse: 'Gudang / Depo',
  room: 'Ruang',
  chamber: 'Kamar',
  bed: 'Ranjang',
  counter: 'Counter',
  'public-screen': 'Public Screen',
}

export const infraGroupCodesKeys: Record<string, string> = Object.keys(infraGroupCodes).reduce(
  (acc, key) => {
    acc[key] = key
    return acc
  },
  {} as Record<string, string>,
)

export const addressLocationTypeCode: Record<string, string> = {
  identity: 'Alamat KTP',
  domicile: 'Alamat Domisili',
}

export type AddressLocationTypeCode = keyof typeof addressLocationTypeCode
export const medicalActionTypeCode: Record<string, string> = {
  chemo: 'Chemo',
  hemo: 'Hemo',
  thalasemia: 'Thalasemia',
  echocardio: 'Echocardiography',
  spirometry: 'Spirometry',
} as const

export type medicalActionTypeCodeKey = keyof typeof medicalActionTypeCode
