ontology.py 5.86 KB
Newer Older
1
2
from anytree import Node, RenderTree

3
4
NO_INFORMATION = 'Non renseigné'

5
INTEREST = Node(
6
    parent=None,
7
8
    name="Conflict of interest",
    name_fr="Lien d'intérêt",
9
10
11
12
13
14
15
16
17
18
19
20
    name_efpia="Transfer of value",
    description_fr="Catégorie générale de lien d'intérêt financier",
    description_efpia=
    "Direct and indirect transfers of value, whether in cash, in kind or otherwise, made, whether for promotional "
    "purposes or otherwise, in connection with the development and sale of prescription-only Medicinal Products "
    "exclusively for human use. "
    "Direct transfers of value are those made directly by a Member Company for the benefit of a Recipient. "
    "Indirect transfers of value are those made on behalf of a Member Company for the benefit of a Recipient, "
    "or transfers of value made through an intermediate and where the Member Company knows or can identify the HCP/HCO "
    "that will benefit from the Transfer of Value."
)
DONATION_AND_GRANT = Node(
21
    parent=INTEREST,
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
    name="Donations and Grants",
    name_fr="Dons et Subventions",
    name_efpia="Donations and Grants to HCOs",
    description_efpia=
    "Donations and grants (in cash or in kind or otherwise) to institutions, organisations or associations "
    "that are comprised of healthcare professionals and/or that provide healthcare or conduct research "
    "(that are not otherwise covered by the EFPIA HCP Code or the EFPIA PO Code are only allowed if: "
    "(i) they are made for the purpose of supporting healthcare or research; "
    "(ii) they are documented and kept on record by the donor/grantor; and "
    "(iii) they do not constitute an inducement to recommend, prescribe, purchase, supply, sell or "
    "administer specific medicinal products. "
    "Donations and grants to individual healthcare professionals are not permitted under this section. "
    "Company sponsorship of healthcare professionals to attend international events is covered by Article 13. "
    "Companies are encouraged to make available publicly information about donations and grants "
    "(in cash or in kind or otherwise) made by them covered in this Section 11.01."
)
DONATION = Node(
    parent=DONATION_AND_GRANT,
    name="Donations",
    name_fr="Dons",
)
CASH_DONATION = Node(
    parent=DONATION,
    name="Cash donation",
    name_fr="Dons de sommes d'argent",
)
DONATION_IN_KIND = Node(
    parent=DONATION,
    name="Donation in kind",
    name_fr="Don en nature"
)
GRANT = Node(
    parent=DONATION_AND_GRANT,
    name="Grants",
    name_fr="Subventions",
)
EVENT = Node(
59
    parent=INTEREST,
60
    name="Contribution to costs of Events",
61
    name_fr="Contribution au coût d'événements promotionnels, scientifique ou professionnel",
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
    name_efpia="Contribution to costs of Events",
    description_efpia=
    "All promotional, scientific or professional meetings, congresses, conferences, symposia, and other similar events "
    "(including, but not limited to, advisory board meetings, visits to research or manufacturing facilities, "
    "and planning, training or investigator meetings for clinical trials and non-interventional studies) "
    "(each, an “Event”) organised or sponsored by or on behalf of a company. (Article 10 of the HCP Code)."
)
SPONSORSHIP = Node(
    parent=EVENT,
    name="Sponsorship",
    name_fr="Mécénat",
    name_efpia="Sponsorship agreements with HCOs / third parties appointed by HCOs to manage an Event",
)
REGISTRATION = Node(
    parent=EVENT,
    name="Registration Fees",
    name_fr="Frais d'inscriptions",
    name_efpia="Registration Fees",
)
TRAVEL_AND_HOSPITALITY = Node(
    parent=EVENT,
    name="Travel, Accommodation, Meals and Drinks",
    name_fr="Transport et Hospitalité",
    name_efpia="Travel & Accommodation",
)
TRAVEL = Node(
    parent=TRAVEL_AND_HOSPITALITY,
    name="Travel",
    name_fr="Transport",
)
HOSPITALITY = Node(
    parent=TRAVEL_AND_HOSPITALITY,
    name="Accommodation, Meals and Drinks",
    name_fr="Hospitalité",
)
ACCOMMODATION = Node(
    parent=HOSPITALITY,
    name="Accomodation",
    name_fr="Hébergement",
)
MEAL_AND_DRINK = Node(
    parent=HOSPITALITY,
    name="Meal and Drinks",
    name_fr="Restauration",
)
SERVICE_AND_CONSULTANCY = Node(
108
    parent=INTEREST,
109
110
111
112
    name="Service and Consultancy",
    name_fr="Service et Conseil",
    name_efpia="Fee for service and consultancy",
)
113
FEE = Node(
114
    parent=SERVICE_AND_CONSULTANCY,
115
116
    name="Fees",
    name_fr="Honoraires",
117
118
119
120
121
122
123
124
125
126
    name_efpia="Fees",
)
RELATED_EXPENSE = Node(
    parent=SERVICE_AND_CONSULTANCY,
    name="Related expenses",
    name_fr="Dépenses liées",
    name_efpia="Related expenses agreed in the fee for service or consultancy contract, "
               "including travel & accommodation relevant to the contract",
)
RESEARCH_AND_DEVELOPMENT = Node(
127
    parent=INTEREST,
128
129
130
131
132
    name="Research & Development",
    name_fr="Recherche et Développement",
    name_efpia="Research & Development",
)
MEAL_AND_DRINK_UNRELATED_TO_EVENT = Node(
133
    parent=INTEREST,
134
135
136
137
    name="Meals & Drinks unrelated to an event",
    name_fr="Repas et Boissons en dehors d'un événement",
)
GIFT = Node(
138
    parent=INTEREST,
139
140
141
142
    name="Gifts",
    name_fr="Cadeaux",
)
TRAINING = Node(
143
    parent=INTEREST,
144
145
146
    name="Training",
    name_fr="Formation",
)
147
UNCLASSIFIED = Node(
148
    parent=INTEREST,
149
150
151
152
153
154
155
156
157
158
159
160
161
162
    name="Unclassified",
    name_fr="Sans classe",
)
EMPTY_AND_OTHER = Node(
    parent=UNCLASSIFIED,
    name="Empty, Other",
    name_fr="Vide, Autre",
)
UNSUCESSFULL_MAPPING = Node(
    parent=UNCLASSIFIED,
    name="Unsucessfull mapping to a category",
    name_fr="Association à une catégorie non réussie",
)

163

164
def print_tree():
165
    for pre, fill, node in RenderTree(INTEREST):
166
        efpia_mark = '* ' if hasattr(node, 'name_efpia') else ''
Pierre-Alain Jachiet's avatar
Pierre-Alain Jachiet committed
167
        # print("{}{}{} | {}".format(pre, efpia_mark, node.name, node.name_fr))
168
        print("{}{}{}".format(pre, efpia_mark, node.name_fr))
169
170
171
172


if __name__ == '__main__':
    print_tree()