Download src/document_config.py from cheesecz/ocr-ktp: direct link, hf CLI and curl.
- Browser
- Download file 3.51 kB
-
https://huggingface.co/spaces/cheesecz/ocr-ktp/resolve/main/src/document_config.py
- Command line
-
hf download hf://spaces/cheesecz/ocr-ktp/src/document_config.py
-
curl -L -o document_config.py https://huggingface.co/spaces/cheesecz/ocr-ktp/resolve/main/src/document_config.py
3.51 kB
| from typing import Dict, List, Optional | |
| from dataclasses import dataclass | |
| from enum import Enum | |
| class DocumentType(str, Enum): | |
| KTP = "KTP" | |
| KK = "KK" | |
| BPJS = "BPJS" | |
| SURAT_RUJUKAN = "SURAT_RUJUKAN" | |
| RESEP = "RESEP" | |
| BUKTI_BAYAR = "BUKTI_BAYAR" | |
| SURAT_KETERANGAN = "SURAT_KETERANGAN" | |
| class DocumentRequirement: | |
| document_type: DocumentType | |
| is_required: bool | |
| description: str | |
| validation_rules: Dict[str, str] | |
| class HealthcareProcess(str, Enum): | |
| PENDAFTARAN_BPJS = "PENDAFTARAN_BPJS" | |
| RUJUKAN_FASKES = "RUJUKAN_FASKES" | |
| PENDAFTARAN_RAWAT_INAP = "PENDAFTARAN_RAWAT_INAP" | |
| PENDAFTARAN_RAWAT_JALAN = "PENDAFTARAN_RAWAT_JALAN" | |
| # Document requirements for each healthcare process | |
| PROCESS_REQUIREMENTS = { | |
| HealthcareProcess.PENDAFTARAN_BPJS: [ | |
| DocumentRequirement( | |
| document_type=DocumentType.KTP, | |
| is_required=True, | |
| description="Kartu Tanda Penduduk asli", | |
| validation_rules={ | |
| "NIK": "required", | |
| "Nama": "required", | |
| "Alamat": "required" | |
| } | |
| ), | |
| DocumentRequirement( | |
| document_type=DocumentType.KK, | |
| is_required=True, | |
| description="Kartu Keluarga asli", | |
| validation_rules={ | |
| "Nomor KK": "required", | |
| "Nama Kepala Keluarga": "required" | |
| } | |
| ), | |
| DocumentRequirement( | |
| document_type=DocumentType.SURAT_KETERANGAN, | |
| is_required=False, | |
| description="Surat Keterangan Domisili", | |
| validation_rules={ | |
| "Nomor Surat": "required", | |
| "Tanggal": "required" | |
| } | |
| ) | |
| ], | |
| HealthcareProcess.RUJUKAN_FASKES: [ | |
| DocumentRequirement( | |
| document_type=DocumentType.KTP, | |
| is_required=True, | |
| description="Kartu Tanda Penduduk asli", | |
| validation_rules={ | |
| "NIK": "required", | |
| "Nama": "required" | |
| } | |
| ), | |
| DocumentRequirement( | |
| document_type=DocumentType.BPJS, | |
| is_required=True, | |
| description="Kartu BPJS aktif", | |
| validation_rules={ | |
| "Nomor Kartu": "required", | |
| "Nama Peserta": "required", | |
| "Status": "required" | |
| } | |
| ), | |
| DocumentRequirement( | |
| document_type=DocumentType.SURAT_RUJUKAN, | |
| is_required=True, | |
| description="Surat Rujukan dari Faskes tingkat 1", | |
| validation_rules={ | |
| "Nomor Rujukan": "required", | |
| "Tanggal": "required", | |
| "Diagnosa": "required" | |
| } | |
| ) | |
| ] | |
| } | |
| def get_process_requirements(process: HealthcareProcess) -> List[DocumentRequirement]: | |
| """Get document requirements for a specific healthcare process.""" | |
| return PROCESS_REQUIREMENTS.get(process, []) | |
| def get_required_documents(process: HealthcareProcess) -> List[DocumentType]: | |
| """Get list of required document types for a specific process.""" | |
| requirements = get_process_requirements(process) | |
| return [req.document_type for req in requirements if req.is_required] | |
| def get_optional_documents(process: HealthcareProcess) -> List[DocumentType]: | |
| """Get list of optional document types for a specific process.""" | |
| requirements = get_process_requirements(process) | |
| return [req.document_type for req in requirements if not req.is_required] |