Healthcare template

Record a patient's medical history before their first visit

Import a Laravel medical history form for Filament, collect pre-visit health details, and handle submissions inside your application.

Open this template in the demo builder 13 fields, 2 required. Free demo account, no card.

Updated

This Laravel medical history form collects pre-visit health context in the Laravel application your clinic or wellness practice already runs. Import the template into FilaForms, review the field table below, and give patients a structured way to prepare before their first appointment.

The imported form gives your application a starting point for a patient history workflow. Submissions remain close to the patient, appointment, and staff processes you already operate. Your team can review a response in the submission dashboard, then use application code when it needs to notify, triage, or create an internal record.

The form should help a clinician prepare, not replace clinical judgement. Patients may omit details, misunderstand a question, or report information that needs follow-up. Make the form's purpose clear before submission, and let staff confirm important information during the appointment.

A 2024 multicenter study published in PMC found that 92.7% of 5,321 patients fully completed a computer-assisted history questionnaire before an orthopedic consultation. Completion still depends on the wording, language, device access, and time available to each patient.

FilaForms is a Laravel form builder for Filament when a team wants to manage forms inside the application it runs. The visual builder keeps changes in the panel instead of a hand-written Filament schema. The form table provides the imported structure, while the settings block controls its behaviour in that panel.

Fields in this template (13 fields, 2 required)

Field types used: Text, Date, Number, Multi Select, Textarea, Tags Input, Checkbox List, Radio, Select. Every field is editable in the builder after import.

Patient

Field Type Required Validation
Full Name full_name Text Yes required
Date of Birth date_of_birth Date Yes required
Height (cm) height Number No numeric
Weight (kg) weight Number No numeric

History

Field Type Required Validation
Existing Conditions conditions Multi Select, 9 options No none
Current Medication medication Textarea No none
Allergies allergies Tags Input No none
Previous Surgeries surgeries Textarea No none
Family History family_history Checkbox List, 6 options No none

Lifestyle

Field Type Required Validation
Smoking Status smoking Radio, 3 options No none
Alcohol Units Per Week alcohol_units Number No integer | min:0
Exercise Per Week exercise Select, 5 options No none
Anything Else We Should Know? notes Textarea No none

Use the submission in your clinic workflow

The field table below renders from the imported template. Its grouping helps patients work through sensitive information in a predictable order. Keep the questions focused on what the receiving practice can use before the visit. A longer questionnaire can create more review work without improving the appointment.

Decide who reviews each submission and when. A receptionist may only need confirmation that a form arrived. A nurse may need to flag a response for clinician review. The clinician should see the original submission when context matters, rather than only a simplified note created by a later workflow.

Keep the form separate from the record types created after review. A submitted response records what a patient provided at a point in time. A clinician's verified history may require its own model, permissions, audit trail, and update process. That distinction prevents a workflow from treating unreviewed answers as confirmed medical facts.

The template suits a general clinic or wellness practice as a baseline. For an OB-GYN intake, add a pregnancy_status field when that context supports the appointment. For a pediatric version, remove the lifestyle section entirely when it does not fit the patient's age or the practice's review process. Test the revised wording with the people who complete and review it.

Do not duplicate the field table in application documentation or page copy. Let the imported template remain the shared definition of the form. When your practice changes a question, review the downstream listener, staff instructions, and any report that depends on that answer.

FilaForms emits FormSubmitted after a patient submits the form. The listener below reads full_name, conditions, and medication from the submission data. It records the received values with the form and submission identifiers, which gives an application workflow a traceable handoff point.

Save this listener as app/Listeners/LogMedicalHistorySubmission.php. Laravel 12 discovers listeners in that directory automatically.

<?php

namespace App\Listeners;

use FilaForms\Core\Events\FormSubmitted;
use Illuminate\Support\Facades\Log;

final class LogMedicalHistorySubmission
{
    public function handle(FormSubmitted $event): void
    {
        $data = $event->submission->data;

        $fullName = $data['full_name'] ?? null;
        $conditions = $data['conditions'] ?? null;
        $medication = $data['medication'] ?? null;

        Log::info('Medical history submission received', [
            'form_id' => $event->form->getKey(),
            'submission_id' => $event->submission->getKey(),
            'full_name' => $fullName,
            'conditions' => $conditions,
            'medication' => $medication,
        ]);
    }
}

Replace the logging destination with a workflow that fits your application. A clinic might assign a task to a care coordinator, notify an internal queue, or create a draft record for review. Preserve the original submission as the source response. Link derived records back to it so staff can revisit the patient's exact answers when a question arises.

Treat health information with care from the first submission through deletion. Limit which roles can view history responses. Define how long the application retains them. Review backups, exported reports, and notification content, because a secure form screen does not protect data copied into an insecure destination.

This is not a HIPAA-compliant record store by default. You still have to configure encryption and access controls appropriate for health data yourself. Your deployment, policies, user roles, hosting choices, and integration behaviour determine whether the wider workflow meets your obligations.

Review the FilaForms features for Laravel and Filament when you need conditional questions, multi-step forms, notifications, or submission reporting around this template. Build only the follow-up workflow your practice can staff and maintain.

Use this template in your own application

With FilaForms installed, one call creates the form with every field, rule, and setting listed above. Then edit it in the builder.

use FilaForms\Core\Support\FormTemplates;

$form = FormTemplates::createFormFromTemplate('medical-history');
Template schema (JSON)
{
    "name": "Medical History Form",
    "description": "Capture conditions, medication and family history",
    "icon": "heroicon-o-heart",
    "category": "Healthcare",
    "popularity": "Very High",
    "sections": [
        {
            "name": "Patient",
            "fields": [
                {
                    "label": "Full Name",
                    "type": "text",
                    "code": "full_name",
                    "required": true,
                    "width": "50"
                },
                {
                    "label": "Date of Birth",
                    "type": "date",
                    "code": "date_of_birth",
                    "required": true,
                    "width": "50"
                },
                {
                    "label": "Height (cm)",
                    "type": "number",
                    "code": "height",
                    "required": false,
                    "validation": [
                        {
                            "name": "numeric",
                            "parameters": []
                        }
                    ],
                    "width": "50"
                },
                {
                    "label": "Weight (kg)",
                    "type": "number",
                    "code": "weight",
                    "required": false,
                    "validation": [
                        {
                            "name": "numeric",
                            "parameters": []
                        }
                    ],
                    "width": "50"
                }
            ]
        },
        {
            "name": "History",
            "fields": [
                {
                    "label": "Existing Conditions",
                    "type": "multi-select",
                    "code": "conditions",
                    "required": false,
                    "options": [
                        {
                            "value": "Asthma"
                        },
                        {
                            "value": "Diabetes"
                        },
                        {
                            "value": "Heart disease"
                        },
                        {
                            "value": "High blood pressure"
                        },
                        {
                            "value": "Epilepsy"
                        },
                        {
                            "value": "Thyroid disorder"
                        },
                        {
                            "value": "Cancer"
                        },
                        {
                            "value": "Mental health condition"
                        },
                        {
                            "value": "None"
                        }
                    ],
                    "width": "100"
                },
                {
                    "label": "Current Medication",
                    "type": "textarea",
                    "code": "medication",
                    "required": false,
                    "placeholder": "Include dose and frequency",
                    "width": "100"
                },
                {
                    "label": "Allergies",
                    "type": "tags-input",
                    "code": "allergies",
                    "required": false,
                    "width": "100"
                },
                {
                    "label": "Previous Surgeries",
                    "type": "textarea",
                    "code": "surgeries",
                    "required": false,
                    "width": "100"
                },
                {
                    "label": "Family History",
                    "type": "checkbox-list",
                    "code": "family_history",
                    "required": false,
                    "options": [
                        {
                            "value": "Heart disease"
                        },
                        {
                            "value": "Diabetes"
                        },
                        {
                            "value": "Cancer"
                        },
                        {
                            "value": "Stroke"
                        },
                        {
                            "value": "Mental health condition"
                        },
                        {
                            "value": "None known"
                        }
                    ],
                    "width": "100"
                }
            ]
        },
        {
            "name": "Lifestyle",
            "fields": [
                {
                    "label": "Smoking Status",
                    "type": "radio",
                    "code": "smoking",
                    "required": false,
                    "options": [
                        {
                            "value": "Never smoked"
                        },
                        {
                            "value": "Former smoker"
                        },
                        {
                            "value": "Current smoker"
                        }
                    ],
                    "width": "50"
                },
                {
                    "label": "Alcohol Units Per Week",
                    "type": "number",
                    "code": "alcohol_units",
                    "required": false,
                    "validation": [
                        {
                            "name": "integer",
                            "parameters": []
                        },
                        {
                            "name": "min",
                            "parameters": [
                                "0"
                            ]
                        }
                    ],
                    "width": "50"
                },
                {
                    "label": "Exercise Per Week",
                    "type": "select",
                    "code": "exercise",
                    "required": false,
                    "options": [
                        {
                            "value": "None"
                        },
                        {
                            "value": "Under 1 hour"
                        },
                        {
                            "value": "1-3 hours"
                        },
                        {
                            "value": "3-5 hours"
                        },
                        {
                            "value": "5+ hours"
                        }
                    ],
                    "width": "50"
                },
                {
                    "label": "Anything Else We Should Know?",
                    "type": "textarea",
                    "code": "notes",
                    "required": false,
                    "width": "50"
                }
            ]
        }
    ]
}

Frequently asked questions

What does this Laravel medical history form do?
It collects pre-visit health context in the Laravel application your clinic or wellness practice already runs.
Can I adapt this form for a specialty practice?
Yes. Add pregnancy_status for an OB-GYN intake, or remove the lifestyle section for a pediatric version.
How do I handle a submitted medical history in Laravel?
Listen for FilaForms\\Core\\Events\\FormSubmitted and read full_name, conditions, and medication from the submission data.
Is this a HIPAA-compliant medical record store?
No. It is not a HIPAA-compliant record store by default, so you must configure encryption and access controls appropriate for health data.

More templates