Files
Khafid Prayoga d78ad28607 adjust detail preview
feat(patient): add disability field and centralize disability codes

Move disability options to constants file and implement in both select component and patient preview

feat(patient-preview): add document section with skeleton loading

Add a new "Dokumen" section to the patient preview component that displays skeleton placeholders for KTP and KK documents. This improves the UI by showing loading states for document previews.
2025-12-11 15:57:38 +07:00

526 lines
14 KiB
TypeScript

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',
cancel: '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 bigTimeUnitCodes: Record<string, string> = {
day: 'Hari',
week: 'Minggu',
month: 'Bulan',
year: 'Tahun',
}
export const dischargeMethodCodes: Record<string, string> = {
home: 'Pulang',
'home-request': 'Pulang Atas Permintaan Sendiri',
'consul-back': 'Konsultasi Balik / Lanjutan',
'consul-poly': 'Konsultasi Poliklinik Lain',
'consul-executive': 'Konsultasi Antar Dokter Eksekutif',
'consul-ch-day': 'Konsultasi Hari Lain',
emergency: 'Rujuk IGD',
'emergency-covid': 'Rujuk IGD Covid',
inpatient: 'Rujuk Rawat Inap',
external: 'Rujuk Faskes Lain',
death: 'Meninggal',
'death-on-arrival': 'Meninggal Saat Tiba',
}
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',
'vclaim-sep': 'vclaim-sep',
'vclaim-sipp': 'vclaim-sipp',
} 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
export const encounterDocTypeCode: Record<string, string> = {
'person-resident-number': 'person-resident-number',
'person-driving-license': 'person-driving-license',
'person-passport': 'person-passport',
'person-family-card': 'person-family-card',
'mcu-item-result': 'mcu-item-result',
'vclaim-sep': 'vclaim-sep',
'vclaim-sipp': 'vclaim-sipp',
} as const
export type encounterDocTypeCodeKey = keyof typeof encounterDocTypeCode
export const encounterDocOpt: { label: string; value: encounterDocTypeCodeKey }[] = [
{ label: 'KTP', value: 'person-resident-number' },
{ label: 'SIM', value: 'person-driving-license' },
{ label: 'Passport', value: 'person-passport' },
{ label: 'Kartu Keluarga', value: 'person-family-card' },
{ label: 'Hasil MCU', value: 'mcu-item-result' },
{ label: 'Klaim SEP', value: 'vclaim-sep' },
{ label: 'Klaim SIPP', value: 'vclaim-sipp' },
]
export const docTypeCode = {
'encounter-patient': 'encounter-patient',
'encounter-support': 'encounter-support',
'encounter-other': 'encounter-other',
'vclaim-sep': 'vclaim-sep',
'vclaim-sipp': 'vclaim-sipp',
} as const
export const docTypeLabel = {
'encounter-patient': 'Data Pasien',
'encounter-support': 'Data Penunjang',
'encounter-other': 'Lain - Lain',
'vclaim-sep': 'SEP',
'vclaim-sipp': 'SIPP',
} as const
export type docTypeCodeKey = keyof typeof docTypeCode
export const supportingDocOpt = [
{ label: 'Data Pasien', value: 'encounter-patient' },
{ label: 'Data Penunjang', value: 'encounter-support' },
{ label: 'Lain - Lain', value: 'encounter-other' },
]
export type SurgeryType = 'kecil' | 'sedang' | 'besar' | 'khusus'
export const SurgeryTypeOptList: { label: string; value: SurgeryType }[] = [
{ label: 'Kecil', value: 'kecil' },
{ label: 'Sedang', value: 'sedang' },
{ label: 'Besar', value: 'besar' },
{ label: 'Khusus', value: 'khusus' },
]
export type BillingCodeType = 'general' | 'regional' | 'local'
export const BillingCodeTypeOptList: { label: string; value: BillingCodeType }[] = [
{ label: 'General', value: 'general' },
{ label: 'Regional', value: 'regional' },
{ label: 'Local', value: 'local' },
]
export type SurgerySystemType = 'cito' | 'urgent' | 'efektif' | 'khusus'
export const SurgerySystemTypeOptList: { label: string; value: SurgerySystemType }[] = [
{ label: 'Cito', value: 'cito' },
{ label: 'Urgent', value: 'urgent' },
{ label: 'Efektif', value: 'efektif' },
{ label: 'Khusus', value: 'khusus' },
]
export type DissectionType = 'bersih' | 'bersih terkontaminasi' | 'terkontaminasi kotor' | 'kotor'
export const DissectionTypeOptList: { label: string; value: DissectionType }[] = [
{ label: 'Bersih', value: 'bersih' },
{ label: 'Bersih terkontaminasi', value: 'bersih terkontaminasi' },
{ label: 'Terkontaminasi kotor', value: 'terkontaminasi kotor' },
{ label: 'Kotor', value: 'kotor' },
]
export type SurgeryOrderType = 'satu' | 'ulangan'
export const SurgeryOrderTypeOptList: { label: string; value: SurgeryOrderType }[] = [
{ label: 'Satu', value: 'satu' },
{ label: 'Ulangan', value: 'ulangan' },
]
export type BirthDescriptionType = 'lahir hidup' | 'lahir mati'
export const BirthDescriptionTypeOptList: { label: string; value: BirthDescriptionType }[] = [
{ label: 'Lahir Hidup', value: 'lahir hidup' },
{ label: 'Lahir Mati', value: 'lahir mati' },
]
export type BirthPlaceDescriptionType =
| 'rssa'
| 'bidan luar'
| 'dokter luar'
| 'dukun bayi'
| 'puskesmas'
| 'paramedis luar'
export const BirthPlaceDescriptionTypeOptList: { label: string; value: BirthPlaceDescriptionType }[] = [
{ label: 'RSSA', value: 'rssa' },
{ label: 'Bidan luar', value: 'bidan luar' },
{ label: 'Dokter luar', value: 'dokter luar' },
{ label: 'Dukun bayi', value: 'dukun bayi' },
{ label: 'Puskesmas', value: 'puskesmas' },
{ label: 'Paramedis luar', value: 'paramedis luar' },
]
export type SpecimenType = 'pa' | 'mikrobiologi' | 'laborat' | 'tidak perlu'
export const SpecimenTypeOptList: { label: string; value: SpecimenType }[] = [
{ label: 'PA', value: 'pa' },
{ label: 'Mikrobiologi', value: 'mikrobiologi' },
{ label: 'Laborat', value: 'laborat' },
{ label: 'Tidak perlu', value: 'tidak perlu' },
]
export type PrbProgramType =
| 'ashma'
| 'diabetes mellitus'
| 'hipertensi'
| 'penyakit jantung'
| 'ppok'
| 'schizopherenia'
| 'stroke'
| 'systemic lupus erythematosus'
export const PrbProgramTypeOptList: { label: string; value: PrbProgramType }[] = [
{ label: 'ASHMA', value: 'ashma' },
{ label: 'Diabetes Mellitus', value: 'diabetes mellitus' },
{ label: 'Hipertensi', value: 'hipertensi' },
{ label: 'Penyakit Jantung', value: 'penyakit jantung' },
{ label: 'PPOK (Penyakit Paru Obstruktif Kronik)', value: 'ppok' },
{ label: 'Schizopherenia', value: 'schizopherenia' },
{ label: 'Stroke', value: 'stroke' },
{ label: 'Systemic Lupus Erythematosus', value: 'systemic lupus erythematosus' },
]
export const disabilityCodes: Record<string, string> = {
daksa: 'Tuna Daksa',
netra: 'Tuna Netra',
rungu: 'Tuna Rungu',
wicara: 'Tuna Wicara',
rungu_wicara: 'Tuna Rungu-Wicara',
grahita: 'Tuna Grahita',
laras: 'Tuna Laras',
other: 'Lainnya',
}