diff --git a/Polyclinic/PolyclinicBusinessLogic/OfficePackage/AbstractSaveToWordCoursesByProcedures.cs b/Polyclinic/PolyclinicBusinessLogic/OfficePackage/AbstractSaveToWordCoursesByProcedures.cs
new file mode 100644
index 0000000..7fc2e1b
--- /dev/null
+++ b/Polyclinic/PolyclinicBusinessLogic/OfficePackage/AbstractSaveToWordCoursesByProcedures.cs
@@ -0,0 +1,63 @@
+using PolyclinicBusinessLogic.OfficePackage.HelperEnums;
+using PolyclinicBusinessLogic.OfficePackage.HelperModels.Word;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PolyclinicBusinessLogic.OfficePackage
+{
+ public abstract class AbstractSaveToWordCoursesByProcedures
+ {
+ public void CreateDoc(WordCoursesByProceduresInfo info)
+ {
+ CreateWord(info);
+ CreateParagraph(new WordParagraph
+ {
+ Texts = new List<(string, WordTextProperties)>
+ {
+ (info.Title, new WordTextProperties { Bold = true, Size = "24", })
+ },
+ TextProperties = new WordTextProperties
+ {
+ Size = "24",
+ JustificationType = WordJustificationType.Center
+ }
+ });
+ foreach (var course in info.Courses)
+ {
+ CreateParagraph(new WordParagraph
+ {
+ Texts = new List<(string, WordTextProperties)> {
+ (sushi.SushiName, new WordTextProperties { Bold = true, Size = "24", }),
+ (" цена: " + sushi.Price.ToString() + " рублей", new WordTextProperties { Size = "24", })
+ },
+
+ TextProperties = new WordTextProperties
+ {
+ Size = "24",
+ JustificationType = WordJustificationType.Both
+ }
+ });
+ }
+ SaveWord(info);
+ }
+ ///
+ /// Создание doc-файла
+ ///
+ ///
+ protected abstract void CreateWord(WordCoursesByProceduresInfo info);
+ ///
+ /// Создание абзаца с текстом
+ ///
+ ///
+ ///
+ protected abstract void CreateParagraph(WordParagraph paragraph);
+ ///
+ /// Сохранение файла
+ ///
+ ///
+ protected abstract void SaveWord(WordCoursesByProceduresInfo info);
+ }
+}