Index: .gitignore
===================================================================
--- .gitignore	(revision 52d858515fdfc0968268047bfdfdf9c78081368f)
+++ .gitignore	(revision bfc8c51f958544e4bdbf9e48a3ae13a5c140a93a)
@@ -32,2 +32,4 @@
 ### VS Code ###
 .vscode/
+application.properties
+application-prod.properties
Index: src/main/java/apps/spring/reportium/service/InstitutionService.java
===================================================================
--- src/main/java/apps/spring/reportium/service/InstitutionService.java	(revision bfc8c51f958544e4bdbf9e48a3ae13a5c140a93a)
+++ src/main/java/apps/spring/reportium/service/InstitutionService.java	(revision bfc8c51f958544e4bdbf9e48a3ae13a5c140a93a)
@@ -0,0 +1,10 @@
+package apps.spring.reportium.service;
+
+import apps.spring.reportium.entity.Institution;
+import apps.spring.reportium.entity.Person;
+
+import java.util.List;
+
+public interface InstitutionService {
+    public List<Institution> getSuitableInstitutions(Person person);
+}
Index: src/main/java/apps/spring/reportium/service/impl/InstitutionServiceImplementation.java
===================================================================
--- src/main/java/apps/spring/reportium/service/impl/InstitutionServiceImplementation.java	(revision bfc8c51f958544e4bdbf9e48a3ae13a5c140a93a)
+++ src/main/java/apps/spring/reportium/service/impl/InstitutionServiceImplementation.java	(revision bfc8c51f958544e4bdbf9e48a3ae13a5c140a93a)
@@ -0,0 +1,48 @@
+package apps.spring.reportium.service.impl;
+
+import apps.spring.reportium.entity.Institution;
+import apps.spring.reportium.entity.Person;
+import apps.spring.reportium.entity.enumerations.InstitutionType;
+import apps.spring.reportium.repository.InstitutionRepository;
+import apps.spring.reportium.service.InstitutionService;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.util.List;
+
+@Service
+public class InstitutionServiceImplementation implements InstitutionService {
+    private final InstitutionRepository institutionRepository;
+
+    public InstitutionServiceImplementation(InstitutionRepository institutionRepository) {
+        this.institutionRepository = institutionRepository;
+    }
+
+    @Override
+    public List<Institution> getSuitableInstitutions(Person person) {
+        List<Institution> allInstitutions = institutionRepository.findAll();
+        int personAge = LocalDate.now().getYear() - person.getDateOfBirth().getYear();
+        if (personAge < 5) {
+            return List.of();
+        }
+        if (personAge <= 15) {
+            return allInstitutions
+                    .stream()
+                    .filter(inst ->
+                            inst.getType() == InstitutionType.PRIMARY_SCHOOL || inst.getType() == InstitutionType.ACADEMY)
+                    .toList();
+        }
+        if (personAge <= 19){
+            return allInstitutions
+                    .stream()
+                    .filter(inst ->
+                            inst.getType() == InstitutionType.HIGH_SCHOOL || inst.getType() == InstitutionType.ACADEMY)
+                    .toList();
+        }
+        return allInstitutions
+                    .stream()
+                    .filter(inst ->
+                            inst.getType() == InstitutionType.UNIVERSITY || inst.getType() == InstitutionType.ACADEMY)
+                    .toList();
+    }
+}
Index: src/main/java/apps/spring/reportium/web/ReportsController.java
===================================================================
--- src/main/java/apps/spring/reportium/web/ReportsController.java	(revision 52d858515fdfc0968268047bfdfdf9c78081368f)
+++ src/main/java/apps/spring/reportium/web/ReportsController.java	(revision bfc8c51f958544e4bdbf9e48a3ae13a5c140a93a)
@@ -8,4 +8,5 @@
 import apps.spring.reportium.repository.DoctorRepository;
 import apps.spring.reportium.repository.InstitutionRepository;
+import apps.spring.reportium.service.InstitutionService;
 import apps.spring.reportium.service.PersonService;
 import apps.spring.reportium.service.ReportService;
@@ -25,12 +26,14 @@
     private final PersonService personService;
     private final InstitutionRepository institutionRepository;
+    private final InstitutionService institutionService;
     private final CrimeTypeRepository crimeTypeRepository;
     private final DoctorRepository doctorRepository;
     private final DiagnosisRepository diagnosisRepository;
 
-    public ReportsController(ReportService reportService, PersonService personService, InstitutionRepository institutionRepository, CrimeTypeRepository crimeTypeRepository, DoctorRepository doctorRepository, DiagnosisRepository diagnosisRepository) {
+    public ReportsController(ReportService reportService, PersonService personService, InstitutionRepository institutionRepository, InstitutionService institutionService, CrimeTypeRepository crimeTypeRepository, DoctorRepository doctorRepository, DiagnosisRepository diagnosisRepository) {
         this.reportService = reportService;
         this.personService = personService;
         this.institutionRepository = institutionRepository;
+        this.institutionService = institutionService;
         this.crimeTypeRepository = crimeTypeRepository;
         this.doctorRepository = doctorRepository;
@@ -79,5 +82,5 @@
         Person person = personService.findById(personId.intValue());
         model.addAttribute("person", person);
-        model.addAttribute("institutions", institutionRepository.findAll());
+        model.addAttribute("institutions", institutionService.getSuitableInstitutions(person));
         return "new_academic_report";
     }
@@ -123,10 +126,11 @@
         return "new_medical_report";
     }
+
     @PostMapping("/add/medical")
     public String submitMedicalData(@RequestParam Long personId,
-                                     @RequestParam String summary,
-                                     @RequestParam Long doctorId,
-                                     @RequestParam (required = false) LocalDate nextControlDate,
-                                     @RequestParam (required = false) List<Long> diagnosisIds) {
+                                    @RequestParam String summary,
+                                    @RequestParam Long doctorId,
+                                    @RequestParam(required = false) LocalDate nextControlDate,
+                                    @RequestParam(required = false) List<Long> diagnosisIds) {
         reportService.saveNewMedicalReport(personId, summary, doctorId, nextControlDate, diagnosisIds);
         return "redirect:/" + personId;
