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.
526 lines
14 KiB
TypeScript
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',
|
|
}
|