from __future__ import annotations

from pathlib import Path

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT, WD_CELL_VERTICAL_ALIGNMENT
from docx.enum.style import WD_STYLE_TYPE
from docx.shared import Cm, Pt, RGBColor


ROOT = Path(__file__).resolve().parents[1]
PROJECT_TEMPLATE = ROOT / "file-docs" / "PROJECT.docx"
OUTPUT_DIR = ROOT / "final"
OUTPUT_FILE = OUTPUT_DIR / "BAB_2_Lampung_Timur_BPS_Project_Template.docx"


AREA_ROWS = [
    ["Metro Kibang", "Kibang", "76,78", "1,44"],
    ["Batanghari", "Banar Joyo", "148,88", "2,80"],
    ["Sekampung", "Sumber Gede", "148,34", "2,79"],
    ["Marga Tiga", "Tanjung Harapan", "250,73", "4,71"],
    ["Sekampung Udik", "Pugung Raharjo", "339,12", "6,37"],
    ["Jabung", "Negara Batin", "267,85", "5,03"],
    ["Pasir Sakti", "Mulyo Sari", "193,94", "3,64"],
    ["Waway Karya", "Sumber Rejo", "211,07", "3,96"],
    ["Marga Sekampung", "Peniangan", "177,32", "3,33"],
    ["Labuhan Maringgai", "Labuhan Maringgai", "194,99", "3,66"],
    ["Mataram Baru", "Mataram Baru", "79,56", "1,49"],
    ["Bandar Sribhawono", "Sribhawono", "185,71", "3,49"],
    ["Melinting", "Wana", "139,30", "2,62"],
    ["Gunung Pelindung", "Negeri Agung", "78,52", "1,47"],
    ["Way Jepara", "Braja Sakti", "229,27", "4,31"],
    ["Braja Selebah", "Braja Harjosari", "247,61", "4,65"],
    ["Labuhan Ratu", "Labuhan Ratu", "485,51", "9,12"],
    ["Sukadana", "Sukadana", "756,76", "14,21"],
    ["Bumi Agung", "Donomulyo", "73,17", "1,37"],
    ["Batanghari Nuban", "Sukaraja Nuban", "180,69", "3,39"],
    ["Pekalongan", "Pekalongan", "100,13", "1,88"],
    ["Raman Utara", "Kota Raman", "161,37", "3,03"],
    ["Purbolinggo", "Taman Fajar", "222,03", "4,17"],
    ["Way Bungur", "Tambah Subur", "376,38", "7,07"],
    ["Lampung Timur", "-", "5.325,03", "100,00"],
]


POPULATION_ROWS = [
    ["Metro Kibang", "24,80", "3,22", "323,01", "104"],
    ["Batanghari", "60,51", "1,52", "406,44", "103"],
    ["Sekampung", "68,21", "2,12", "459,82", "104"],
    ["Marga Tiga", "49,96", "0,54", "199,27", "105"],
    ["Sekampung Udik", "79,07", "2,91", "233,17", "104"],
    ["Jabung", "55,56", "2,07", "207,43", "103"],
    ["Pasir Sakti", "42,50", "-0,35", "219,13", "103"],
    ["Waway Karya", "43,05", "1,02", "203,96", "105"],
    ["Marga Sekampung", "29,99", "0,21", "169,11", "103"],
    ["Labuhan Maringgai", "79,05", "3,41", "405,38", "105"],
    ["Mataram Baru", "30,96", "0,60", "389,10", "102"],
    ["Bandar Sribhawono", "53,78", "3,57", "289,60", "103"],
    ["Melinting", "28,99", "-1,06", "208,10", "104"],
    ["Gunung Pelindung", "23,90", "-2,25", "304,39", "104"],
    ["Way Jepara", "59,50", "3,28", "259,51", "102"],
    ["Braja Slebah", "26,15", "0,26", "105,63", "105"],
    ["Labuhan Ratu", "51,63", "1,75", "106,34", "102"],
    ["Sukadana", "78,00", "3,86", "103,06", "103"],
    ["Bumi Agung", "20,76", "1,74", "283,65", "102"],
    ["Batanghari Nuban", "48,40", "1,80", "267,86", "104"],
    ["Pekalongan", "53,74", "2,36", "536,68", "104"],
    ["Raman Utara", "41,45", "1,18", "256,84", "104"],
    ["Purbolinggo", "45,83", "0,01", "206,40", "104"],
    ["Way Bungur", "26,84", "1,44", "71,31", "103"],
    ["Lampung Timur", "1.122,60", "1,81", "209,20", "104"],
]


AGE_ROWS = [
    ["0-4", "35,63", "33,22", "68,85"],
    ["5-9", "45,55", "42,50", "88,04"],
    ["10-14", "50,40", "47,52", "97,92"],
    ["15-19", "41,23", "39,77", "81,00"],
    ["20-24", "44,23", "42,68", "86,92"],
    ["25-29", "43,92", "40,58", "84,50"],
    ["30-34", "40,58", "39,87", "80,45"],
    ["35-39", "40,49", "41,79", "82,28"],
    ["40-44", "43,16", "45,24", "88,40"],
    ["45-49", "44,38", "44,89", "89,27"],
    ["50-54", "38,06", "36,08", "74,14"],
    ["55-59", "30,74", "29,37", "60,10"],
    ["60-64", "23,92", "24,23", "48,15"],
    ["65-69", "18,27", "17,31", "35,58"],
    ["70-74", "14,20", "12,03", "26,23"],
    ["75+", "16,23", "14,55", "30,78"],
    ["Lampung Timur", "570,97", "551,63", "1.122,60"],
]


LABOR_ROWS = [
    ["Angkatan Kerja", "387.766", "220.560", "608.326"],
    ["Bekerja", "376.403", "213.564", "589.967"],
    ["Pengangguran Terbuka", "11.363", "6.996", "18.359"],
    ["Bukan Angkatan Kerja", "59.347", "215.171", "274.518"],
    ["Sekolah", "26.204", "33.928", "60.132"],
    ["Mengurus Rumah Tangga", "10.115", "171.643", "181.758"],
    ["Lainnya", "23.028", "9.600", "32.628"],
    ["Jumlah Penduduk 15+", "447.113", "435.731", "882.844"],
    ["TPAK (%)", "86,73", "50,62", "68,91"],
    ["TPT (%)", "2,93", "3,17", "3,02"],
]


INDUSTRY_WORK_ROWS = [
    ["Pertanian", "209.286", "81.221", "290.507"],
    ["Manufaktur", "61.520", "17.010", "78.530"],
    ["Jasa", "105.597", "115.333", "220.930"],
    ["Jumlah", "376.403", "213.564", "589.967"],
]


HEALTH_FACILITY_ROWS = [
    ["Rumah sakit umum", "3", "3"],
    ["Rumah sakit khusus", "-", "-"],
    ["Puskesmas rawat inap", "15", "15"],
    ["Puskesmas non rawat inap", "19", "21"],
    ["Jumlah puskesmas teregistrasi", "34", "36"],
    ["Puskesmas pembantu", "24", "24"],
]


DOCTOR_ROWS = [
    ["Rumah Sakit", "47", "58", "1"],
    ["Rumah Sakit Bersalin", "0", "0", "0"],
    ["Puskesmas", "0", "97", "15"],
    ["Jumlah", "47", "155", "16"],
]


HDI_ROWS = [
    ["Angka Harapan Hidup (tahun)", "73,52", "73,56", "73,75", "73,95", "74,19"],
    ["Harapan Lama Sekolah (tahun)", "12,85", "12,86", "12,96", "12,97", "12,98"],
    ["Rata-rata Lama Sekolah (tahun)", "7,60", "7,77", "8,04", "8,14", "8,20"],
    ["Pengeluaran per Kapita Disesuaikan (ribu rupiah/orang/tahun)", "9.983", "10.026", "10.403", "10.812", "11.262"],
    ["Indeks Pembangunan Manusia", "70,62", "70,91", "71,82", "72,44", "73,05"],
]


POVERTY_ROWS = [
    ["2020", "153,57", "14,62"],
    ["2021", "159,79", "15,08"],
    ["2022", "149,12", "13,98"],
    ["2023", "148,26", "13,80"],
    ["2024", "142,69", "13,19"],
    ["2025", "-", "12,15"],
]


GRDP_EXP_ROWS = [
    ["Pengeluaran Konsumsi Rumah Tangga", "26.458,66", "27.566,59", "30.265,67", "32.953,49", "36.111,67"],
    ["Pengeluaran Konsumsi LNPRT", "682,31", "723,64", "770,22", "867,15", "990,00"],
    ["Pengeluaran Konsumsi Pemerintah", "2.435,48", "2.461,11", "2.391,55", "2.527,88", "2.748,06"],
    ["Pembentukan Modal Tetap Bruto", "13.062,13", "14.012,21", "14.798,61", "15.983,08", "16.804,81"],
    ["Perubahan Inventori", "-145,08", "-118,62", "-113,18", "-289,32", "-222,44"],
    ["Net Ekspor Barang dan Jasa", "-1.820,44", "-827,31", "1.596,98", "828,10", "419,22"],
    ["PDRB", "40.673,06", "43.817,61", "49.709,86", "52.870,39", "56.851,33"],
]


GRDP_SECTOR_ROWS = [
    ["Pertanian, Kehutanan, dan Perikanan", "15.121,99", "18.051,66", "31,75"],
    ["Pertambangan dan Penggalian", "8.385,44", "12.700,75", "22,34"],
    ["Industri Pengolahan", "3.435,17", "5.008,21", "8,81"],
    ["Konstruksi", "2.328,28", "3.477,29", "6,12"],
    ["Perdagangan Besar dan Eceran; Reparasi Mobil dan Sepeda Motor", "3.603,72", "6.842,56", "12,04"],
    ["Transportasi dan Pergudangan", "794,53", "1.687,88", "2,97"],
    ["Penyediaan Akomodasi dan Makan Minum", "491,81", "764,39", "1,34"],
    ["Informasi dan Komunikasi", "1.623,97", "2.077,15", "3,65"],
]


MACRO_2025_ROWS = [
    ["Laju Pertumbuhan Ekonomi dengan migas (%)", "4,62", "4,65"],
    ["Laju Pertumbuhan Ekonomi tanpa migas (%)", "4,96", "7,25"],
    ["PDRB per Kapita dengan migas (juta rupiah)", "49,27", "52,31"],
    ["PDRB per Kapita tanpa migas (juta rupiah)", "39,24", "43,31"],
    ["Gini Ratio", "0,278", "0,261"],
    ["Tingkat Pengangguran Terbuka (%)", "3,02", "3,18"],
    ["Nilai Tukar Petani", "124,98", "129,34"],
    ["Persentase Penduduk Miskin (%)", "13,19", "12,15"],
    ["Skor Pola Pangan Harapan", "89,8", "90,12"],
    ["Peningkatan Investasi Daerah (%)", "-16,27", "23,26"],
]


def clear_document_body(document: Document):
    body = document._body._element
    for child in list(body):
        if child.tag.endswith("}sectPr"):
            continue
        body.remove(child)


def configure_document(document: Document):
    section = document.sections[0]
    section.page_width = Cm(21)
    section.page_height = Cm(29.7)
    section.top_margin = Cm(2.2)
    section.bottom_margin = Cm(2.2)
    section.left_margin = Cm(2.0)
    section.right_margin = Cm(2.0)

    normal = document.styles["Normal"]
    normal.font.name = "Arial"
    normal.font.size = Pt(10.5)
    normal.paragraph_format.line_spacing = 1.15
    normal.paragraph_format.space_after = Pt(3)


def style_runs(paragraph, size: float = 10.5, bold: bool | None = None, italic: bool | None = None):
    for run in paragraph.runs:
        run.font.name = "Arial"
        run.font.size = Pt(size)
        run.font.color.rgb = RGBColor(31, 41, 51)
        if bold is not None:
            run.bold = bold
        if italic is not None:
            run.italic = italic


def add_heading(document: Document, text: str, level: int):
    style = "Heading 1" if level == 1 else "Heading 2" if level == 2 else "Heading 3"
    p = document.add_paragraph(text, style=style)
    if level == 1:
        p.alignment = WD_ALIGN_PARAGRAPH.CENTER
        style_runs(p, 14, True)
    elif level == 2:
        style_runs(p, 12, True)
    else:
        style_runs(p, 11, True)
    p.paragraph_format.space_before = Pt(8)
    p.paragraph_format.space_after = Pt(4)
    return p


def add_para(document: Document, text: str, bold: bool = False):
    p = document.add_paragraph(text, style="Normal")
    p.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY
    style_runs(p, 10.5, bold)
    return p


def add_caption(document: Document, text: str):
    p = document.add_paragraph(text, style="Normal")
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    style_runs(p, 10, True)
    p.paragraph_format.space_before = Pt(6)
    p.paragraph_format.space_after = Pt(2)
    return p


def add_source(document: Document, text: str):
    p = document.add_paragraph(text, style="Normal")
    p.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY
    p.paragraph_format.space_after = Pt(6)
    style_runs(p, 9, False, True)
    return p


def add_table(document: Document, headers: list[str], rows: list[list[str]], widths: list[float] | None = None):
    table = document.add_table(rows=1, cols=len(headers))
    table.alignment = WD_TABLE_ALIGNMENT.CENTER
    try:
        table.style = "Table Grid"
    except KeyError:
        table.style = document.styles.default(WD_STYLE_TYPE.TABLE)
    hdr = table.rows[0].cells
    for i, header in enumerate(headers):
        hdr[i].text = header
        hdr[i].vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
        for p in hdr[i].paragraphs:
            p.alignment = WD_ALIGN_PARAGRAPH.CENTER
            style_runs(p, 8.5, True)

    for row in rows:
        cells = table.add_row().cells
        for i, value in enumerate(row):
            cells[i].text = str(value)
            cells[i].vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
            for p in cells[i].paragraphs:
                p.alignment = WD_ALIGN_PARAGRAPH.LEFT if i == 0 else WD_ALIGN_PARAGRAPH.CENTER
                style_runs(p, 8)

    if widths:
        for row in table.rows:
            for idx, width in enumerate(widths):
                row.cells[idx].width = Cm(width)
    return table


def build_docx():
    document = Document(PROJECT_TEMPLATE)
    clear_document_body(document)
    configure_document(document)

    add_heading(document, "BAB 2\nGAMBARAN UMUM DAN ANALISIS SITUASI EKSTERNAL\nKABUPATEN LAMPUNG TIMUR", 1)

    add_heading(document, "2.1 Regulasi", 2)
    add_para(document, "Bagian regulasi dalam studi kelayakan pengembangan layanan rumah sakit mengacu pada ketentuan perumahsakitan, pelayanan kesehatan, tata ruang, perizinan berusaha, serta kebijakan daerah yang berkaitan dengan penyediaan sarana pelayanan kesehatan. Dalam konteks Kabupaten Lampung Timur, analisis eksternal juga perlu mempertimbangkan data statistik resmi mengenai kondisi wilayah, penduduk, sosial ekonomi, dan sarana kesehatan sebagai dasar kebutuhan layanan.")
    add_para(document, "Sumber data statistik utama pada bab ini adalah publikasi Kabupaten Lampung Timur Dalam Angka 2025 yang diterbitkan oleh BPS Kabupaten Lampung Timur, dilengkapi rekap indikator makro ekonomi tahun 2020-2025 yang tersedia pada basis data proyek.")

    add_heading(document, "2.2 Gambaran Umum Kabupaten Lampung Timur", 2)
    add_heading(document, "2.2.1 Geografis, Administratif dan Kondisi Fisik", 3)
    add_para(document, "Kabupaten Lampung Timur memiliki luas wilayah 5.325,03 km2 dan terdiri dari 24 kecamatan. Kecamatan Sukadana merupakan pusat pemerintahan sekaligus kecamatan dengan luas wilayah terbesar, yaitu 756,76 km2 atau 14,21 persen dari luas Kabupaten Lampung Timur. Besarnya wilayah Sukadana penting diperhatikan karena RSUD KH Ahmad Hanafiah berada di Sukadana sehingga berperan strategis dalam pelayanan kesehatan kabupaten.")
    add_caption(document, "Tabel 2.1 Luas Daerah dan Persentase Wilayah Menurut Kecamatan di Kabupaten Lampung Timur, 2024")
    add_table(document, ["Kecamatan", "Ibukota Kecamatan", "Luas (km2)", "Persentase (%)"], AREA_ROWS, [4.2, 4.2, 2.7, 2.7])
    add_source(document, "Sumber: Kabupaten Lampung Timur Dalam Angka 2025, Tabel 1.1.1; BPS Kabupaten Lampung Timur/Badan Pertanahan Nasional Kabupaten Lampung Timur.")

    add_para(document, "Secara administratif Kabupaten Lampung Timur memiliki 264 desa/kelurahan. Dari jumlah tersebut, 10 desa berada pada wilayah tepi laut dan 254 desa lainnya berada pada wilayah bukan tepi laut. Kondisi ini menunjukkan adanya kombinasi karakter wilayah pesisir dan non-pesisir yang berpengaruh terhadap pola aksesibilitas, mobilitas penduduk, serta kebutuhan layanan kesehatan rujukan.")

    add_heading(document, "2.2.2 Demografi", 3)
    add_para(document, "Jumlah penduduk Kabupaten Lampung Timur pada tahun 2024 tercatat sebanyak 1.122,60 ribu jiwa dengan laju pertumbuhan penduduk 2020-2024 sebesar 1,81 persen per tahun. Kepadatan penduduk kabupaten mencapai 209,20 jiwa per km2 dan rasio jenis kelamin sebesar 104. Kecamatan dengan jumlah penduduk terbesar adalah Sekampung Udik sebanyak 79,07 ribu jiwa, Labuhan Maringgai sebanyak 79,05 ribu jiwa, dan Sukadana sebanyak 78,00 ribu jiwa.")
    add_caption(document, "Tabel 2.2 Jumlah Penduduk, Laju Pertumbuhan, Kepadatan, dan Rasio Jenis Kelamin Menurut Kecamatan di Kabupaten Lampung Timur, 2024")
    add_table(document, ["Kecamatan", "Penduduk (ribu)", "Laju 2020-2024 (%)", "Kepadatan/km2", "Rasio JK"], POPULATION_ROWS, [4.0, 2.4, 2.8, 2.7, 2.0])
    add_source(document, "Sumber: Kabupaten Lampung Timur Dalam Angka 2025, Tabel 3.1.1; Dinas Kependudukan dan Pencatatan Sipil Kabupaten Lampung Timur.")

    add_para(document, "Komposisi penduduk menurut kelompok umur menunjukkan bahwa penduduk usia produktif mendominasi struktur penduduk. Kelompok usia 15-64 tahun berjumlah besar dan menjadi basis permintaan layanan kesehatan umum, kesehatan ibu dan anak, penyakit tidak menular, serta layanan kegawatdaruratan. Jumlah penduduk laki-laki tercatat 570,97 ribu jiwa dan perempuan 551,63 ribu jiwa.")
    add_caption(document, "Tabel 2.3 Jumlah Penduduk Menurut Kelompok Umur dan Jenis Kelamin di Kabupaten Lampung Timur, 2024")
    add_table(document, ["Kelompok Umur", "Laki-laki (ribu)", "Perempuan (ribu)", "Jumlah (ribu)"], AGE_ROWS, [3.2, 3.2, 3.2, 3.2])
    add_source(document, "Sumber: Kabupaten Lampung Timur Dalam Angka 2025, Tabel 3.1.2; Dinas Kependudukan dan Pencatatan Sipil Kabupaten Lampung Timur.")

    add_heading(document, "2.2.3 Angkatan Kerja", 3)
    add_para(document, "Pada tahun 2024, penduduk usia 15 tahun ke atas di Kabupaten Lampung Timur berjumlah 882.844 orang. Dari jumlah tersebut, 608.326 orang masuk angkatan kerja, terdiri atas 589.967 orang bekerja dan 18.359 orang pengangguran terbuka. Tingkat Partisipasi Angkatan Kerja (TPAK) mencapai 68,91 persen, sedangkan Tingkat Pengangguran Terbuka (TPT) sebesar 3,02 persen.")
    add_caption(document, "Tabel 2.4 Penduduk Berumur 15 Tahun ke Atas Menurut Kegiatan Utama dan Jenis Kelamin di Kabupaten Lampung Timur, 2024")
    add_table(document, ["Kegiatan Utama", "Laki-laki", "Perempuan", "Jumlah"], LABOR_ROWS, [5.0, 3.0, 3.0, 3.0])
    add_source(document, "Sumber: Kabupaten Lampung Timur Dalam Angka 2025, Tabel 3.2.1; BPS, Survei Angkatan Kerja Nasional Agustus.")

    add_heading(document, "2.2.4 Mata Pencaharian", 3)
    add_para(document, "Struktur mata pencaharian penduduk bekerja masih sangat dipengaruhi oleh sektor pertanian. Dari 589.967 penduduk bekerja, sebanyak 290.507 orang bekerja pada lapangan usaha pertanian, 78.530 orang pada manufaktur, dan 220.930 orang pada jasa. Besarnya pekerja sektor pertanian menggambarkan karakter ekonomi berbasis sumber daya alam dan agraris.")
    add_caption(document, "Tabel 2.5 Penduduk Bekerja Menurut Lapangan Pekerjaan Utama dan Jenis Kelamin di Kabupaten Lampung Timur, 2024")
    add_table(document, ["Lapangan Pekerjaan Utama", "Laki-laki", "Perempuan", "Jumlah"], INDUSTRY_WORK_ROWS, [5.0, 3.0, 3.0, 3.0])
    add_source(document, "Sumber: Kabupaten Lampung Timur Dalam Angka 2025, Tabel 3.2.4; BPS, Survei Angkatan Kerja Nasional Agustus.")

    add_heading(document, "2.2.5 Sosial, Ekonomi dan Budaya", 3)
    add_para(document, "Dari sisi pendidikan dasar, pada tahun ajaran 2024/2025 terdapat 580 SD di bawah Kementerian Pendidikan, Kebudayaan, Riset, dan Teknologi dengan 6.042 guru dan 85.200 murid. Selain itu, data madrasah menunjukkan terdapat 125 MI pada tahun ajaran 2023/2024 dengan 1.453 guru dan 21.546 murid. Ketersediaan fasilitas pendidikan ini menjadi salah satu indikator kapasitas sosial wilayah dan kualitas sumber daya manusia.")
    add_para(document, "Dari sisi kemiskinan, jumlah penduduk miskin Kabupaten Lampung Timur menurun dari 153,57 ribu jiwa pada 2020 menjadi 142,69 ribu jiwa pada 2024. Persentase penduduk miskin juga turun dari 14,62 persen pada 2020 menjadi 13,19 persen pada 2024, dan berdasarkan rekap indikator makro tercatat 12,15 persen pada 2025.")
    add_caption(document, "Tabel 2.6 Jumlah dan Persentase Penduduk Miskin Kabupaten Lampung Timur, 2020-2025")
    add_table(document, ["Tahun", "Jumlah Penduduk Miskin (ribu jiwa)", "Persentase Penduduk Miskin (%)"], POVERTY_ROWS, [2.8, 5.0, 5.0])
    add_source(document, "Sumber: Kabupaten Lampung Timur Dalam Angka 2025, Tabel 13.3; BPS, Survei Sosial Ekonomi Nasional. Data persentase 2025 dari file rekap tahunan indikator makro 2020-2025.")

    add_heading(document, "2.2.6 Ekonomi dan Industri", 3)
    add_para(document, "Nilai PDRB Kabupaten Lampung Timur atas dasar harga berlaku meningkat dari 40,67 triliun rupiah pada 2020 menjadi 56,85 triliun rupiah pada 2024. Struktur ekonomi masih didominasi lapangan usaha pertanian, kehutanan, dan perikanan dengan kontribusi 31,75 persen pada 2024, diikuti pertambangan dan penggalian 22,34 persen serta perdagangan besar dan eceran; reparasi mobil dan sepeda motor 12,04 persen.")
    add_caption(document, "Tabel 2.7 PDRB Atas Dasar Harga Berlaku Menurut Jenis Pengeluaran di Kabupaten Lampung Timur (miliar rupiah), 2020-2024")
    add_table(document, ["Jenis Pengeluaran", "2020", "2021", "2022", "2023x", "2024xx"], GRDP_EXP_ROWS, [5.2, 2.0, 2.0, 2.0, 2.0, 2.0])
    add_source(document, "Sumber: Kabupaten Lampung Timur Dalam Angka 2025, Tabel 12.5; BPS, berbagai sensus, survei, dan sumber lain. x=data sementara; xx=data sangat sementara.")

    add_caption(document, "Tabel 2.8 PDRB Sektoral Terpilih dan Distribusi Tahun 2024 di Kabupaten Lampung Timur")
    add_table(document, ["Lapangan Usaha", "2020 (miliar Rp)", "2024xx (miliar Rp)", "Distribusi 2024xx (%)"], GRDP_SECTOR_ROWS, [6.0, 2.7, 2.7, 2.7])
    add_source(document, "Sumber: Kabupaten Lampung Timur Dalam Angka 2025, Tabel 12.1 dan Tabel 12.3; BPS, berbagai sensus, survei, dan sumber lain.")

    add_caption(document, "Tabel 2.9 Rekap Indikator Makro Ekonomi Kabupaten Lampung Timur, 2024-2025")
    add_table(document, ["Indikator", "2024", "2025"], MACRO_2025_ROWS, [8.0, 3.0, 3.0])
    add_source(document, "Sumber: File database/rekap tahunan indikator makro. 2020-2025.xlsx.")

    add_heading(document, "2.2.7 Indeks Pembangunan Manusia (IPM)", 3)
    add_para(document, "Indeks Pembangunan Manusia Kabupaten Lampung Timur menunjukkan tren meningkat dari 70,62 pada 2020 menjadi 73,05 pada 2024. Peningkatan IPM didukung oleh perbaikan angka harapan hidup, harapan lama sekolah, rata-rata lama sekolah, serta pengeluaran per kapita disesuaikan. Angka harapan hidup tahun 2024 mencapai 74,19 tahun.")
    add_caption(document, "Tabel 2.10 Komponen IPM Kabupaten Lampung Timur, 2020-2024")
    add_table(document, ["Komponen IPM", "2020", "2021", "2022", "2023", "2024"], HDI_ROWS, [5.8, 2.0, 2.0, 2.0, 2.0, 2.0])
    add_source(document, "Sumber: Kabupaten Lampung Timur Dalam Angka 2025, Tabel 4.3.5; BPS/BPS-Statistics Indonesia.")

    add_heading(document, "2.3 Gambaran Umum Kesehatan Kabupaten Lampung Timur", 2)
    add_heading(document, "2.3.1 Sarana Kesehatan", 3)
    add_para(document, "Ketersediaan sarana kesehatan di Kabupaten Lampung Timur menunjukkan adanya jaringan pelayanan dasar yang tersebar di kecamatan, serta sarana rujukan berupa rumah sakit umum. Pada tahun 2024 terdapat 3 rumah sakit umum dan 36 puskesmas teregistrasi, terdiri dari 15 puskesmas rawat inap dan 21 puskesmas non rawat inap. Dalam data desa/kelurahan yang memiliki sarana kesehatan, jumlah desa/kelurahan yang memiliki rumah sakit pada 2024 tercatat 5, sedangkan rumah sakit bersalin 1.")
    add_caption(document, "Tabel 2.11 Ringkasan Sarana Kesehatan Kabupaten Lampung Timur, 2023-2024")
    add_table(document, ["Sarana Kesehatan", "2023", "2024"], HEALTH_FACILITY_ROWS, [6.0, 3.0, 3.0])
    add_source(document, "Sumber: Kabupaten Lampung Timur Dalam Angka 2025, Tabel 4.2.1 dan Tabel 4.2.3; Dinas Kesehatan Kabupaten Lampung Timur.")

    add_heading(document, "2.3.2 Tenaga Kesehatan", 3)
    add_para(document, "Ketersediaan dokter pada fasilitas pelayanan kesehatan menunjukkan bahwa pelayanan spesialistik masih terkonsentrasi pada rumah sakit. Pada 2024 terdapat 47 dokter spesialis di rumah sakit, sedangkan dokter umum berjumlah 155 orang yang terdiri dari 58 dokter umum di rumah sakit dan 97 dokter umum di puskesmas. Dokter gigi berjumlah 16 orang, dengan 15 orang berada di puskesmas dan 1 orang di rumah sakit.")
    add_caption(document, "Tabel 2.12 Jumlah Dokter Spesialis, Dokter Umum, dan Dokter Gigi Menurut Sarana Pelayanan Kesehatan di Kabupaten Lampung Timur, 2024")
    add_table(document, ["Unit Kerja", "Dokter Spesialis", "Dokter Umum", "Dokter Gigi"], DOCTOR_ROWS, [4.8, 3.0, 3.0, 3.0])
    add_source(document, "Sumber: Kabupaten Lampung Timur Dalam Angka 2025, Tabel 4.2.4; Dinas Kesehatan Kabupaten Lampung Timur.")

    add_heading(document, "2.4 Pemetaan Sarana Kesehatan", 2)
    add_para(document, "Pemetaan sarana kesehatan menunjukkan bahwa rumah sakit umum tahun 2024 berada pada Kecamatan Bandar Sribhawono, Way Jepara, dan Sukadana. Kecamatan Sukadana sebagai lokasi RSUD KH Ahmad Hanafiah memiliki posisi pusat pemerintahan kabupaten dan menjadi simpul pelayanan rujukan penting bagi wilayah sekitarnya. Di sisi pelayanan dasar, puskesmas tersebar di seluruh kecamatan dengan total 36 unit pada 2024.")
    add_para(document, "Secara eksternal, keberadaan 3 rumah sakit umum dan 36 puskesmas menunjukkan bahwa pengembangan kapasitas layanan RSUD KH Ahmad Hanafiah perlu diarahkan untuk memperkuat fungsi rujukan kabupaten, khususnya layanan spesialistik, kegawatdaruratan, dan pelayanan penunjang yang tidak dapat dipenuhi optimal oleh fasilitas pelayanan tingkat pertama.")

    add_heading(document, "2.5 Analisis Situasi Eksternal", 2)
    add_heading(document, "2.5.1 Analisis Keadaan Umum", 3)
    add_para(document, "Kabupaten Lampung Timur memiliki wilayah luas dan jumlah penduduk lebih dari 1,12 juta jiwa. Sebaran penduduk tidak merata, dengan kepadatan tertinggi di Pekalongan sebesar 536,68 jiwa per km2 dan kepadatan terendah di Way Bungur sebesar 71,31 jiwa per km2. Kondisi ini menuntut desain layanan kesehatan yang memperhatikan jarak, waktu tempuh, dan fungsi rujukan dari kecamatan ke pusat pelayanan di Sukadana.")
    add_para(document, "Sukadana memiliki luas 756,76 km2, jumlah penduduk 78,00 ribu jiwa, dan laju pertumbuhan penduduk 3,86 persen per tahun pada periode 2020-2024. Posisi tersebut memperkuat urgensi peningkatan kapasitas RSUD KH Ahmad Hanafiah karena berada pada kecamatan pusat pemerintahan sekaligus kecamatan dengan penduduk besar dan pertumbuhan relatif tinggi.")

    add_heading(document, "2.5.2 Analisis Kesehatan", 3)
    add_para(document, "Dari aspek pelayanan kesehatan, jumlah 36 puskesmas dan 3 rumah sakit umum menjadi dasar jejaring rujukan. Namun, sebaran dan kapasitas layanan lanjutan perlu dilihat bersama dengan jumlah dokter spesialis yang berjumlah 47 orang dan terkonsentrasi di rumah sakit. Kondisi ini menunjukkan pentingnya penguatan layanan spesialistik dan penunjang di RSUD KH Ahmad Hanafiah sebagai rumah sakit rujukan pemerintah daerah.")

    add_heading(document, "2.5.3 Analisis Sosial Ekonomi", 3)
    add_para(document, "PDRB Lampung Timur tahun 2024 mencapai 56,85 triliun rupiah atas dasar harga berlaku. Ekonomi daerah masih ditopang sektor pertanian, kehutanan, dan perikanan dengan kontribusi 31,75 persen. Pada sisi kesejahteraan, kemiskinan menunjukkan tren penurunan, tetapi jumlah penduduk miskin tahun 2024 masih 142,69 ribu jiwa. Kondisi ini perlu menjadi pertimbangan dalam strategi tarif, akses layanan JKN, dan penguatan pelayanan publik yang terjangkau.")
    add_para(document, "IPM yang meningkat menjadi 73,05 pada 2024 menunjukkan perbaikan kualitas pembangunan manusia. Walaupun demikian, rata-rata lama sekolah 8,20 tahun dan persentase penduduk miskin yang masih dua digit menunjukkan perlunya pendekatan pelayanan kesehatan yang inklusif, mudah diakses, dan berorientasi kebutuhan masyarakat kabupaten.")

    add_heading(document, "2.5.4 Implikasi bagi Pengembangan RSUD KH Ahmad Hanafiah", 3)
    add_para(document, "Berdasarkan data BPS, kebutuhan pengembangan RSUD KH Ahmad Hanafiah dapat diarahkan pada penguatan fungsi rujukan kabupaten dengan memperhatikan empat faktor eksternal utama: pertama, wilayah Kabupaten Lampung Timur yang luas dan terdiri dari 24 kecamatan; kedua, jumlah penduduk besar dengan struktur usia produktif dan lansia yang membutuhkan layanan berkelanjutan; ketiga, jejaring puskesmas yang luas sehingga membutuhkan rumah sakit rujukan yang kuat; dan keempat, kemampuan ekonomi masyarakat yang masih dipengaruhi tingkat kemiskinan sehingga akses pelayanan publik tetap harus dijaga.")
    add_para(document, "Dengan posisi di Kecamatan Sukadana, RSUD KH Ahmad Hanafiah berpotensi menjadi simpul penguatan layanan kesehatan rujukan daerah. Pengembangan layanan perlu memprioritaskan peningkatan kapasitas rawat jalan spesialistik, rawat inap, kegawatdaruratan, pelayanan ibu dan anak, penyakit tidak menular, serta sistem rujukan terintegrasi dari puskesmas dan fasilitas kesehatan lainnya di Kabupaten Lampung Timur.")

    OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
    document.save(OUTPUT_FILE)
    print(OUTPUT_FILE)


if __name__ == "__main__":
    build_docx()