クリニックの患者アンケートデータを効率的にデジタル化するためのツールと入力データの検証とセキュリティを強化

クリニックの患者アンケートデータを効率的にデジタル化するためのツールには、以下のような要素が必要です:


1. **データ入力フォーム**:使いやすいインターフェースで、項目ごとに入力できるフォーム。

2. **データベース**:入力されたデータを保存するためのデータベース(例:SQLite)。

3. **データ集計機能**:入力されたデータを集計し、分析しやすい形式で出力。

4. **エクスポート機能**:集計結果をCSVやExcel形式でエクスポートする機能。


以下はPythonとFlaskを使用して簡単なデータ入力ツールを作成するためのサンプルコードです。このツールは、Webインターフェースを提供し、データをSQLiteデータベースに保存します。


### 準備


1. **Pythonと必要なライブラリをインストール**

    ```sh

    pip install Flask Flask-SQLAlchemy pandas openpyxl

    ```


2. **プロジェクト構成**

    ```

    patient_survey/

    ├── app.py

    ├── templates/

    │ └── index.html

    └── data/

        └── database.db

    ```


### `app.py`


```python

from flask import Flask, render_template, request, redirect, url_for

from flask_sqlalchemy import SQLAlchemy

import pandas as pd


app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data/database.db'

db = SQLAlchemy(app)


class PatientSurvey(db.Model):

    id = db.Column(db.Integer, primary_key=True)

    name = db.Column(db.String(100))

    birth_date = db.Column(db.String(10))

    disease_1 = db.Column(db.Integer)

    disease_2 = db.Column(db.Integer)

    # 他の必要な項目を追加


@app.route('/')

def index():

    return render_template('index.html')


@app.route('/submit', methods=['POST'])

def submit():

    name = request.form['name']

    birth_date = request.form['birth_date']

    disease_1 = request.form['disease_1']

    disease_2 = request.form['disease_2']

    # 他の必要な項目を取得


    survey = PatientSurvey(

        name=name,

        birth_date=birth_date,

        disease_1=disease_1,

        disease_2=disease_2

        # 他の必要な項目を設定

    )

    db.session.add(survey)

    db.session.commit()


    return redirect(url_for('index'))


@app.route('/export')

def export():

    surveys = PatientSurvey.query.all()

    survey_data = [

        {

            'name': survey.name,

            'birth_date': survey.birth_date,

            'disease_1': survey.disease_1,

            'disease_2': survey.disease_2,

            # 他の必要な項目を追加

        }

        for survey in surveys

    ]

    df = pd.DataFrame(survey_data)

    df.to_excel('data/survey_data.xlsx', index=False)

    return 'データがエクスポートされました!'


if __name__ == '__main__':

    db.create_all()

    app.run(debug=True)

```


### `templates/index.html`


```html

<!DOCTYPE html>

<html lang="ja">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>患者アンケート</title>

ここから先は

4,728字

¥ 4,500

この記事が気に入ったらサポートをしてみませんか?