　　　　　　　　　　　　　　　　　　開発者の方へ

・　医療従事者の立場から「使いやすさ・見やすさ」を追求して素人ながらacrobat JSと戦ってきました。
　　特殊なJSで情報も少なく大変苦労しました。

・　PDFフォームを電カルからダイレクトに呼んだ場合は、患者の基本情報や医師名を渡すことは困難です。

・　Pythonのミニプログラムを間にかまし、PythonでFDF形式のファイルを生成することで情報を渡すことができるかも知れません。

・　電子カルテ上の患者名やID、医師名など変数定義は各社さまざまでしょうから、こちらではどうすることもできません。

・　実際に使う立場から使いやすさには徹底的にこだわったつもりです。よろしければこのフォームを導入することもお考え下さい。

・　下記にChatGPTが提示した、Pythonのコードを貼ります。ご参照下さい。

from pathlib import Path
import subprocess

def pdf_hex_string(text: str) -> str:
    """
    FDF用のPDF文字列。
    日本語対応のため UTF-16BE + BOM を16進数表記にする。
    """
    data = b"\xfe\xff" + text.encode("utf-16-be")
    return "<" + data.hex().upper() + ">"

def make_fdf(pdf_name: str, fields: dict[str, str]) -> str:
    lines = []
    lines.append("%FDF-1.2")
    lines.append("1 0 obj")
    lines.append("<<")
    lines.append("/FDF <<")
    lines.append(f"/F ({pdf_name})")
    lines.append("/Fields [")

    for name, value in fields.items():
        lines.append(f"<< /T ({name}) /V {pdf_hex_string(str(value))} >>")

    lines.append("]")
    lines.append(">>")
    lines.append(">>")
    lines.append("endobj")
    lines.append("trailer")
    lines.append("<< /Root 1 0 R >>")
    lines.append("%%EOF")

    return "\n".join(lines)

fields = {
    "patient_name": "山田太郎",
    "patient_id": "12345",
    "Dr_name": "てら",
    "sex": "男",
    "year": "1950",
    "month": "1",
    "day": "2",
}

base = Path(r"C:\2026生活習慣病療養計画書")
fdf_path = base / "患者情報入り.fdf"

fdf_text = make_fdf("form.pdf", fields)
fdf_path.write_text(fdf_text, encoding="ascii")

# FDFを開く。関連付けがAcrobat/ReaderならPDFに値が入って開く。
subprocess.Popen(["cmd", "/c", "start", "", str(fdf_path)])
