File size: 3,183 Bytes
6371026
 
 
 
 
 
44a59a6
898db63
d82e758
44a59a6
6371026
 
 
 
 
 
898db63
f3533df
6371026
 
fbc420b
d82e758
 
 
 
6371026
 
 
 
 
 
d82e758
898db63
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from dataclasses import dataclass, field
import re

@dataclass
class ServiceDopsConfig:
    dops_default_values:dict = field(default_factory=lambda:{'Место оказания услуги':'в клинике',
                  'Учёная степень':'',
                  'Возрастная категория':'детский и взрослый',
                  'Вид приёма':'первичный',
                  'Расстояние в км от М(КАД)':''})
    service_location_options:dict = field(default_factory=lambda:{'на дому':re.compile(r'\b(дом|на\s*дому)\b', re.IGNORECASE),
                         'дистанционно':re.compile(r'\b(дистанционн|телемед)\S*\b', re.IGNORECASE)})
    academic_degree_options:dict = field(default_factory=lambda:{'кандидат медицинских наук(кмн)':re.compile(r'\bк(\.|андидата|андидат)?\s*м(\.|едицинских)?\s*н(\.|аук)?\b', re.IGNORECASE),
                   'доктор медицинских наук(дмн)':re.compile(r'\b(д(\.|октор)?\s*м(\.|едицинских)?\s*н(\.|аук)?)\b', re.IGNORECASE),
                   'врач высшей категории':re.compile(r'\bвысш\w*\.*\s*кат\w*\.?\s*\)?\b', re.IGNORECASE),
                   'врач первой категории':re.compile(r'\bперв\S*\s*(категори\S*|I\s*категори\S*)\b', re.IGNORECASE)})
    age_options:dict = field(default_factory=lambda:{'детский':re.compile(r'\b(детск|педиат|детей|ребен|неонатолог)\S*\b', re.IGNORECASE),
                                                     'взрослый':re.compile(r'\b(геронтол|андрол|уроло|гинеколог)\S*\b', re.IGNORECASE)})

    reception_type_options:dict = field(default_factory=lambda:{'повторный':re.compile(r'\b(повтор|по\s*результат)\S*\b', re.IGNORECASE)})
    distance_km_options:dict = field(default_factory=lambda:{'5 км':re.compile(r'\b(5)\s*км\b', re.IGNORECASE),
                                                '15 км':re.compile(r'\b(15)\s*км\b', re.IGNORECASE),
                                                '30 км':re.compile(r'\b(30)\s*км\b', re.IGNORECASE),
                                                '50 км':re.compile(r'\b(50)\s*км\b', re.IGNORECASE),
                                                'в пределах М(КАД)':re.compile(r'в пределах М\(КАД\)(?!\s*\d+\s*км)')})
    option_patterns_dict: dict = None

    def __post_init__(self):
        self.option_patterns_dict = {'Место оказания услуги': dict(self.service_location_options),
                                     'Учёная степень': dict(self.academic_degree_options),
                                     'Возрастная категория': dict(self.age_options),
                                     'Вид приёма': dict(self.reception_type_options),
                                     'Расстояние в км от М(КАД)':dict(self.distance_km_options)}