diff --git a/Gemfile.lock b/Gemfile.lock
index 402d23f..17eddea 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -405,6 +405,7 @@ PLATFORMS
arm-linux-musl
arm64-darwin-22
arm64-darwin-23
+ arm64-darwin-24
arm64-darwin-25
x86_64-linux
x86_64-linux-gnu
diff --git a/app/controllers/appointment_requirements_controller.rb b/app/controllers/appointment_requirements_controller.rb
new file mode 100644
index 0000000..0eea825
--- /dev/null
+++ b/app/controllers/appointment_requirements_controller.rb
@@ -0,0 +1,70 @@
+class AppointmentRequirementsController < ApplicationController
+ before_action :set_appointment_requirement, only: %i[ show edit update destroy ]
+
+ # GET /appointment_requirements or /appointment_requirements.json
+ def index
+ @appointment_requirements = AppointmentRequirement.all
+ end
+
+ # GET /appointment_requirements/1 or /appointment_requirements/1.json
+ def show
+ end
+
+ # GET /appointment_requirements/new
+ def new
+ @appointment_requirement = AppointmentRequirement.new
+ end
+
+ # GET /appointment_requirements/1/edit
+ def edit
+ end
+
+ # POST /appointment_requirements or /appointment_requirements.json
+ def create
+ @appointment_requirement = AppointmentRequirement.new(appointment_requirement_params)
+
+ respond_to do |format|
+ if @appointment_requirement.save
+ format.html { redirect_to @appointment_requirement, notice: "Appointment requirement was successfully created." }
+ format.json { render :show, status: :created, location: @appointment_requirement }
+ else
+ format.html { render :new, status: :unprocessable_content }
+ format.json { render json: @appointment_requirement.errors, status: :unprocessable_content }
+ end
+ end
+ end
+
+ # PATCH/PUT /appointment_requirements/1 or /appointment_requirements/1.json
+ def update
+ respond_to do |format|
+ if @appointment_requirement.update(appointment_requirement_params)
+ format.html { redirect_to @appointment_requirement, notice: "Appointment requirement was successfully updated.", status: :see_other }
+ format.json { render :show, status: :ok, location: @appointment_requirement }
+ else
+ format.html { render :edit, status: :unprocessable_content }
+ format.json { render json: @appointment_requirement.errors, status: :unprocessable_content }
+ end
+ end
+ end
+
+ # DELETE /appointment_requirements/1 or /appointment_requirements/1.json
+ def destroy
+ @appointment_requirement.destroy!
+
+ respond_to do |format|
+ format.html { redirect_to appointment_requirements_path, notice: "Appointment requirement was successfully destroyed.", status: :see_other }
+ format.json { head :no_content }
+ end
+ end
+
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_appointment_requirement
+ @appointment_requirement = AppointmentRequirement.find(params.expect(:id))
+ end
+
+ # Only allow a list of trusted parameters through.
+ def appointment_requirement_params
+ params.expect(appointment_requirement: [ :name ])
+ end
+end
diff --git a/app/helpers/appointment_requirements_helper.rb b/app/helpers/appointment_requirements_helper.rb
new file mode 100644
index 0000000..72fa697
--- /dev/null
+++ b/app/helpers/appointment_requirements_helper.rb
@@ -0,0 +1,2 @@
+module AppointmentRequirementsHelper
+end
diff --git a/app/models/appointment_requirement.rb b/app/models/appointment_requirement.rb
new file mode 100644
index 0000000..4dc5205
--- /dev/null
+++ b/app/models/appointment_requirement.rb
@@ -0,0 +1,2 @@
+class AppointmentRequirement < ApplicationRecord
+end
diff --git a/app/views/appointment_requirements/_appointment_requirement.html.erb b/app/views/appointment_requirements/_appointment_requirement.html.erb
new file mode 100644
index 0000000..d660090
--- /dev/null
+++ b/app/views/appointment_requirements/_appointment_requirement.html.erb
@@ -0,0 +1,7 @@
+
+
+ Name:
+ <%= appointment_requirement.name %>
+
+
+
diff --git a/app/views/appointment_requirements/_appointment_requirement.json.jbuilder b/app/views/appointment_requirements/_appointment_requirement.json.jbuilder
new file mode 100644
index 0000000..7ff7dcc
--- /dev/null
+++ b/app/views/appointment_requirements/_appointment_requirement.json.jbuilder
@@ -0,0 +1,2 @@
+json.extract! appointment_requirement, :id, :name, :created_at, :updated_at
+json.url appointment_requirement_url(appointment_requirement, format: :json)
diff --git a/app/views/appointment_requirements/_form.html.erb b/app/views/appointment_requirements/_form.html.erb
new file mode 100644
index 0000000..3c5652f
--- /dev/null
+++ b/app/views/appointment_requirements/_form.html.erb
@@ -0,0 +1,22 @@
+<%= form_with(model: appointment_requirement) do |form| %>
+ <% if appointment_requirement.errors.any? %>
+
+
<%= pluralize(appointment_requirement.errors.count, "error") %> prohibited this appointment_requirement from being saved:
+
+
+ <% appointment_requirement.errors.each do |error| %>
+ - <%= error.full_message %>
+ <% end %>
+
+
+ <% end %>
+
+
+ <%= form.label :name, style: "display: block" %>
+ <%= form.text_field :name %>
+
+
+
+ <%= form.submit %>
+
+<% end %>
diff --git a/app/views/appointment_requirements/edit.html.erb b/app/views/appointment_requirements/edit.html.erb
new file mode 100644
index 0000000..8895c40
--- /dev/null
+++ b/app/views/appointment_requirements/edit.html.erb
@@ -0,0 +1,12 @@
+<% content_for :title, "Editing appointment requirement" %>
+
+Editing appointment requirement
+
+<%= render "form", appointment_requirement: @appointment_requirement %>
+
+
+
+
+ <%= link_to "Show this appointment requirement", @appointment_requirement %> |
+ <%= link_to "Back to appointment requirements", appointment_requirements_path %>
+
diff --git a/app/views/appointment_requirements/index.html.erb b/app/views/appointment_requirements/index.html.erb
new file mode 100644
index 0000000..828ab0e
--- /dev/null
+++ b/app/views/appointment_requirements/index.html.erb
@@ -0,0 +1,17 @@
+<%= notice %>
+
+<% content_for :title, "Appointment requirements" %>
+
+Appointment requirements
+
+
+
+ <% @appointment_requirements.each do |appointment_requirement| %>
+ <%= render appointment_requirement %>
+
+ <%= link_to "Show this appointment requirement", appointment_requirement %>
+
+ <% end %>
+
+
+<%= link_to "New appointment requirement", new_appointment_requirement_path %>
diff --git a/app/views/appointment_requirements/index.json.jbuilder b/app/views/appointment_requirements/index.json.jbuilder
new file mode 100644
index 0000000..8a6130c
--- /dev/null
+++ b/app/views/appointment_requirements/index.json.jbuilder
@@ -0,0 +1 @@
+json.array! @appointment_requirements, partial: "appointment_requirements/appointment_requirement", as: :appointment_requirement
diff --git a/app/views/appointment_requirements/new.html.erb b/app/views/appointment_requirements/new.html.erb
new file mode 100644
index 0000000..86c098a
--- /dev/null
+++ b/app/views/appointment_requirements/new.html.erb
@@ -0,0 +1,11 @@
+<% content_for :title, "New appointment requirement" %>
+
+New appointment requirement
+
+<%= render "form", appointment_requirement: @appointment_requirement %>
+
+
+
+
+ <%= link_to "Back to appointment requirements", appointment_requirements_path %>
+
diff --git a/app/views/appointment_requirements/show.html.erb b/app/views/appointment_requirements/show.html.erb
new file mode 100644
index 0000000..e779dcb
--- /dev/null
+++ b/app/views/appointment_requirements/show.html.erb
@@ -0,0 +1,10 @@
+<%= notice %>
+
+<%= render @appointment_requirement %>
+
+
+ <%= link_to "Edit this appointment requirement", edit_appointment_requirement_path(@appointment_requirement) %> |
+ <%= link_to "Back to appointment requirements", appointment_requirements_path %>
+
+ <%= button_to "Destroy this appointment requirement", @appointment_requirement, method: :delete %>
+
diff --git a/app/views/appointment_requirements/show.json.jbuilder b/app/views/appointment_requirements/show.json.jbuilder
new file mode 100644
index 0000000..01bbd33
--- /dev/null
+++ b/app/views/appointment_requirements/show.json.jbuilder
@@ -0,0 +1 @@
+json.partial! "appointment_requirements/appointment_requirement", appointment_requirement: @appointment_requirement
diff --git a/config/routes.rb b/config/routes.rb
index bce874b..0fdb940 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,4 +1,5 @@
Rails.application.routes.draw do
+ resources :appointment_requirements
devise_for :users
resources :medications
resources :medication_types
diff --git a/db/migrate/20260829183810_create_appointment_requirements.rb b/db/migrate/20260829183810_create_appointment_requirements.rb
new file mode 100644
index 0000000..29b5986
--- /dev/null
+++ b/db/migrate/20260829183810_create_appointment_requirements.rb
@@ -0,0 +1,9 @@
+class CreateAppointmentRequirements < ActiveRecord::Migration[8.1]
+ def change
+ create_table :appointment_requirements do |t|
+ t.string :name
+
+ t.timestamps
+ end
+ end
+end
diff --git a/test/controllers/appointment_requirements_controller_test.rb b/test/controllers/appointment_requirements_controller_test.rb
new file mode 100644
index 0000000..e1201d8
--- /dev/null
+++ b/test/controllers/appointment_requirements_controller_test.rb
@@ -0,0 +1,48 @@
+require "test_helper"
+
+class AppointmentRequirementsControllerTest < ActionDispatch::IntegrationTest
+ setup do
+ @appointment_requirement = appointment_requirements(:one)
+ end
+
+ test "should get index" do
+ get appointment_requirements_url
+ assert_response :success
+ end
+
+ test "should get new" do
+ get new_appointment_requirement_url
+ assert_response :success
+ end
+
+ test "should create appointment_requirement" do
+ assert_difference("AppointmentRequirement.count") do
+ post appointment_requirements_url, params: { appointment_requirement: { name: @appointment_requirement.name } }
+ end
+
+ assert_redirected_to appointment_requirement_url(AppointmentRequirement.last)
+ end
+
+ test "should show appointment_requirement" do
+ get appointment_requirement_url(@appointment_requirement)
+ assert_response :success
+ end
+
+ test "should get edit" do
+ get edit_appointment_requirement_url(@appointment_requirement)
+ assert_response :success
+ end
+
+ test "should update appointment_requirement" do
+ patch appointment_requirement_url(@appointment_requirement), params: { appointment_requirement: { name: @appointment_requirement.name } }
+ assert_redirected_to appointment_requirement_url(@appointment_requirement)
+ end
+
+ test "should destroy appointment_requirement" do
+ assert_difference("AppointmentRequirement.count", -1) do
+ delete appointment_requirement_url(@appointment_requirement)
+ end
+
+ assert_redirected_to appointment_requirements_url
+ end
+end
diff --git a/test/fixtures/appointment_requirements.yml b/test/fixtures/appointment_requirements.yml
new file mode 100644
index 0000000..7d41224
--- /dev/null
+++ b/test/fixtures/appointment_requirements.yml
@@ -0,0 +1,7 @@
+# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+one:
+ name: MyString
+
+two:
+ name: MyString
diff --git a/test/models/appointment_requirement_test.rb b/test/models/appointment_requirement_test.rb
new file mode 100644
index 0000000..2a3d201
--- /dev/null
+++ b/test/models/appointment_requirement_test.rb
@@ -0,0 +1,7 @@
+require "test_helper"
+
+class AppointmentRequirementTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end