産業医面談記録システム開発プロンプト

以前作成した産業医面談報告書システムを一から作るとしたらこんなプロンプトになるそうです。コピペしてAntiGravityに投げてみるといいかもしれません。


あなたは熟練した Google Apps Script (GAS) および Webアプリケーション開発者 です。 Google スプレッドシートをデータベースとして使用し、GAS の HtmlService で提供される「産業医面談記録システム」を一から構築してください。

UIには Bootstrap 5 を使用し、モダンで見やすいシングルページアプリケーション (SPA) にしてください。 以下の要件定義に従い、必要な Code.gs(サーバーサイド)と index.html(クライアントサイド)のコードを完全な形で出力してください。


1. システムアーキテクチャ

  • プラットフォーム: Google Apps Script (スタンドアロンWebアプリ)。
  • データベース: 以下のシートを持つ単一の Google スプレッドシート。
    • Config: 設定値(医師名など)を Key-Value 形式で保存。
    • Companies: 企業マスタ(ID, 企業名)。
    • Employees: 社員マスタ(ID, 氏名, 性別, 年齢, 企業ID, 部署)。
    • Interview_Logs: すべての面談記録を蓄積するログシート。
  • PDF生成機能: 保存時にフォーム内容に基づいたPDFレポートを生成し、Google Driveへは保存せず、Base64文字列としてクライアントに返し、ブラウザで直接ダウンロードさせること。

2. フロントエンド要件 (index.html)

  • フレームワーク: Bootstrap 5 (CDN利用)。
  • 画面レイアウト:
    • ヘッダー: タイトル「産業医面談記録」と「データ再読込」ボタン。
    • ステータスバー: 読み込み中、完了、エラーなどのメッセージを表示。
    • メインフォーム:
      • 基本情報: 面談日、企業名(セレクトボックス + 新規入力欄)、社員名(データリストによる補完検索)、年齢、性別。
        • ※企業名で「【新規登録】」を選んだ場合のみ、新規企業名入力欄を表示する。
      • 履歴エリア: 選択された社員の過去の面談記録をアコーディオン形式で表示。「この内容をコピー」ボタンで、過去の内容を現在のフォームに反映できること。
      • 面談種別切り替え: 「通常面談」と「復職面談」のラジオボタン。これによって表示する入力項目を動的に切り替えること。
      • メモ欄: 「自分用メモ(秘)」と「レポート記載用(公)」の2つのテキストエリア。
    • 動的セクション(面談種別により表示切替):
      • 通常面談用フィールド:
        • 疲労蓄積度(ラジオ: 低/中/高/非常に高い)。
        • 心身の状況(ラジオ: 所見なし/所見あり → ありの場合のみ詳細入力欄表示)。
        • 本人への指導(チェックボックス: 措置不要/要保健指導/要経過観察/要再面接/医療機関紹介)。
        • 就業区分(ラジオ: 通常労働/就業制限/要休業)。
        • 労働時間の短縮(ラジオ: 指示なし/残業制限/禁止/時間短縮 等 + 具体的内容欄)。
        • 就業場所等の措置(ラジオ: 場所変更/作業転換/深夜業減少 等 + 具体的内容欄)。
      • 復職面談用フィールド:
        • 判定(ラジオ: 復職可能/復職不可/休職継続)。
        • 理由、評価問題点(本人要因/環境要因)、プラン、次回面談予定日。
    • 保存ボタンgoogle.script.run を呼び出してデータを送信。
  • モーダル:
    1. 保存完了モーダル: 「保存しました」と表示し、PDFダウンロードが開始されることを伝える。
    2. 履歴コピー確認モーダル: 上書き確認を行う。

3. バックエンド要件 (Code.gs)

  • doGetindex.html を表示する。Configシートに医師名(DOCTOR_NAME)がない場合はエラーまたは初期設定を促す表示をする。
  • initialSetup: スプレッドシートの独自メニューから実行。医師名を入力させ Config シートに保存する管理者用関数。
  • getMasterData: 企業リストと社員リストをJSONで返す。
  • getHistory(employeeId): 特定社員の過去ログを取得して返す。
  • saveRecord(formObject):
    • 新規企業対応: フォームで新規企業が入力されていた場合、Companies シートにIDを生成して追加。
    • 新規社員対応: IDがない社員名が入力された場合、新しいIDを生成して Employees シートに追加。
    • PDF生成: フォームデータを受け取り、PDF Blob を生成(Utilities.base64Encode でBase64化して返す)。
    • ログ保存: すべてのフィールドを Interview_Logs シートの末尾に行として追加。
    • 戻り値{ status: "SUCCESS", pdfBase64: "...", fileName: "..." } 形式のJSON。

4. 重要なロジック・制約

  • 履歴コピー機能: 「コピー」ボタン押下時、過去のデータ(ラジオボタンの選択状態、チェックボックス、テキスト)を現在のフォームに正しくセットし、面談種別に応じた表示切り替えも行うこと。JavaScriptで実装すること。
  • エラーハンドリング: サーバー側は try-catch、クライアント側は withFailureHandler を使用して堅牢に作ること。

以上の要件を満たす Code.gs と index.html のコードを作成してください。


コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です