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.
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.