@baravak/risloo-profile-cli 4.16.1 → 4.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baravak/risloo-profile-cli",
3
- "version": "4.16.1",
3
+ "version": "4.17.0",
4
4
  "description": "**Risloo Profile CLI** is a library for creating profiles, reports and sheets for *psychological* samples.",
5
5
  "main": "bin/risloo.js",
6
6
  "publishConfig": {
@@ -0,0 +1,350 @@
1
+ {
2
+ "id": "$X1HXXXX",
3
+ "scale": { "id": "$YBOCS-9A", "title": "پرسش‌نامه یل‌براون وسواس" },
4
+ "chain": null,
5
+ "version": "1",
6
+ "edition": "",
7
+ "edition_version": null,
8
+ "client": { "id": "GH96XXXXX", "name": "مراجع", "user_id": "IR96XXX" },
9
+ "room": {
10
+ "id": "RS96XXXX",
11
+ "manager": { "id": "GH9XXXX", "name": "درمانگر", "user_id": "IR9XXXXX" },
12
+ "center": {
13
+ "id": "RS9XXXXX",
14
+ "acceptation": null,
15
+ "status": "active",
16
+ "type": "counseling_center",
17
+ "detail": { "title": "مرکز درمانی" }
18
+ },
19
+ "acceptation": null,
20
+ "status": "active",
21
+ "type": "room"
22
+ },
23
+ "case": null,
24
+ "code": null,
25
+ "created_at": 1740124361,
26
+ "started_at": 1740124391,
27
+ "scored_at": 1740125241,
28
+ "closed_at": 1740124443,
29
+ "total_amount": null,
30
+ "prepayment": false,
31
+ "purchased": true,
32
+ "amount": null,
33
+ "billing": null,
34
+ "description": "",
35
+ "psychologist_description": null,
36
+ "items": [
37
+ {
38
+ "category": "زمان صرف شده توسط افکار وسواسی",
39
+ "type": "text",
40
+ "text": "افکار وسواسی چه مقدار از وقت شما را اشغال می‌کند؟ فراوانی وقوع افکار وسواسی چقدر است؟",
41
+ "answer": {
42
+ "type": "optional",
43
+ "options": [
44
+ "هیچ.",
45
+ " روزانه کمتر از یک ساعت، یا مزاحمت‌هایی گهگاهی (نه بیش از هشت بار در روز).",
46
+ "روزانه یک تاسه ساعت، یا مزاحمت‌های مکرر (بیش از هشت بار در روز، ولی اکثر ساعتهای روز، بدون افکار هستم).",
47
+ "بیش از سه ساعت و تا حدود هشت ساعت در روز، یا مزاحمت‌های بسیار مکرر (بیش از هشت بار در روز و در اکثر ساعات روز).",
48
+ "بیش از هشت ساعت در روز یا مزاحمت‌های تقریبا مداوم، آنقدر زیاد است که (شمارش آن‌ها بسیار مشکل است و کمتر ساعتی بدون وسواس سپری می‌شود)."
49
+ ]
50
+ },
51
+ "user_answered": "1"
52
+ },
53
+ {
54
+ "category": "تداخل افکار وسواسی",
55
+ "type": "text",
56
+ "text": "افکار وسواسی تا چه حد در کارکرد شغلی یا اجتماعی شما اختلال ایجاد کرده است، (اگر در حال حاضر شاغل نیستید، میزان تداخل وسواس‌ها را در فعالیت‌های روزانه‌تان در نظر بگیرید).(در پاسخ به این پرسش، به کارهایی که در اثر وسواس رها می‌کنید یا آنکه کمتر به آن‌ها می‌پردازید، توجه کنید.)",
57
+ "answer": {
58
+ "type": "optional",
59
+ "options": [
60
+ "هیچ اختلالی.",
61
+ "اختلال خفیف و جزئی در فعالیت‌های شغلی یا اجتماعی، ولی در کل به عملکرد من لطمه‌ای نزده است.",
62
+ "اختلال متوسط و مشخص در فعالیت‌های شغلی یا اجتماعی، ولی همچنان قابل ذکر است.",
63
+ "اختلال شدید لطمه‌ای اساسی به عملکرد شغلی یا اجتماعی من زده است.",
64
+ "اختلال بسیار شدید و ناتوان کننده."
65
+ ]
66
+ },
67
+ "user_answered": "1"
68
+ },
69
+ {
70
+ "category": "ناراحتی مربوط به افکار وسواسی ",
71
+ "type": "text",
72
+ "text": "افکار وسواسی چه مقدار پریشانی برای شما ایجاد می‌کند؟",
73
+ "answer": {
74
+ "type": "optional",
75
+ "options": [
76
+ "هیچ.",
77
+ "خفیف و نامکرر، پریشانی، مختل کننده نیست.",
78
+ "پریشانی متوسط و مکرر، مختل کننده ولی همچنان قابل کنترل.",
79
+ "پریشانی شدید، بسیار مکرر، به شدت مختل کننده.",
80
+ "پریشانی بسیار شدید، تقریبا مداوم و ناتوان کننده."
81
+ ]
82
+ },
83
+ "user_answered": "1"
84
+ },
85
+ {
86
+ "category": "مقاومت در برابر افکار وسواسی",
87
+ "type": "text",
88
+ "text": "چقدر سعی می‌کنید تا در برابر افکار وسواسی مقاومت کنید؟ وقتی این افکار به ذهن شما می‌آیند، هر چند وقت یکبار سعی می‌کنید آن‌ها را نادیده بگیرید یا توجه خود را بر‌گردانید؟ (در اینجا قصد ما این نیست که بدانیم چقدر در کنترل این افکار موفق هستید، بلکه فقط اینکه چه مقدار یا هر چند وقت یکبار سعی می‌کنید آن‌ها را کنار بگذارید.)",
89
+ "answer": {
90
+ "type": "optional",
91
+ "options": [
92
+ "همیشه سعی می‌کنم در برابر آن‌ها مقاومت کنم (یا وسواسها آنقدر خفیف هستند که نیازی به مقاومت فعالانه ندارند).",
93
+ "اکثر اوقات سعی می‌کنم در برابر آن‌ها مقاومت کنم (یعنی، بیش از نیمی از اوقات سعی می‌کنم مقاومت کنم).",
94
+ " برخی از اوقات سعی می‌کنم مقاومت کنم.",
95
+ " بدون آنکه برای کنترل آن‌ها تلاشی به خرج دهم، اجازه می‌دهم تا آن‌ها ذهن مرا پر کنند، ولی این کار را با اکراه انجام می‌دهم.",
96
+ " به طور کامل و خودخواسته تسلیم همه وسواسها می‌شوم."
97
+ ]
98
+ },
99
+ "user_answered": "2"
100
+ },
101
+ {
102
+ "category": "میزان کنترل بر افکار وسواس",
103
+ "type": "text",
104
+ "text": "چقدر بر افکار وسواسی خود کنترل دارید؟ در متوقف کردن یا منحرف کردن افکار وسواسی خود، چقدر موفق هستید؟ (اگر به ندرت برای مقاومت تلاش می‌کنید، برای پاسخ به این پرسش به همان موارد نادری که سعی کرده‌اید افکار وسواسی‌تان را متوقف کنید، فکر کنید.)",
105
+ "answer": {
106
+ "type": "optional",
107
+ "options": [
108
+ "کنترل کامل.",
109
+ "کنترل زیاد، معمولا با کمی تلاش و تمرکز می‌توانم وسواسها را متوقف و منحرف کنم.",
110
+ "کنترل متوسط برخی اوقات می‌توانم وسواسها را متوقف یا منحرف کنم.",
111
+ "کنترل کم، به ندرت می‌توانم وسواسها را متوقف کنم ولی با تلاش زیاد می‌توانم صرفا توجه خود را منحرف کنم.",
112
+ "بدون کنترل، به ندرت می‌توانم حتی برای یک لحظه از وسواسها رها شوم."
113
+ ]
114
+ },
115
+ "user_answered": "3"
116
+ },
117
+ {
118
+ "category": "میزان کنترل بر افکار وسواسی",
119
+ "type": "text",
120
+ "text": "برای انجام رفتارهای اجبارگونه چقدر وقت صرف می‌کنید؟ فراوانی انجام این رفتارها چقدر است؟ (اگر آداب شما دربردارنده فعالیت‌های روزمره است، توجه کنید که به خاطر انجام این آداب، انجام فعالیت‌های روزمره چقدر طول می‌کشد.)",
121
+ "answer": {
122
+ "type": "optional",
123
+ "options": [
124
+ "هیچ",
125
+ "کمتر از یک ساعت در روز برای انجام اجبارها، یا انجام رفتارهای اجبارگونه به صورت گاهگاهی (کمتر از هشت بار در روز).",
126
+ "یک تا سه ساعت در روز، برای انجام اجبارها یا انجام رفتارهای اجبارگونه به صورت مکرر (بیش از هشت بار در روز).",
127
+ " بیش از سه ساعت در روز، صرف انجام اجبارها می‌شود یا تکرار رفتارهای اجبارگونه به صورتی بسیار زیاد (بیش از هشت ساعت در روز و در اکثر ساعات روز).",
128
+ " بیش از هشت ساعت در روز صرف انجام اجبارها می‌شود یا انجام رفتارهای اجبارگونه به صورتی کما بیش مداوم (شمارش دفعات دشوار است و به ندرت ساعتی بدون انجام آداب سپری می‌شود)."
129
+ ]
130
+ },
131
+ "user_answered": "1"
132
+ },
133
+ {
134
+ "category": "تداخل وسواس‌های عملی",
135
+ "type": "text",
136
+ "text": "رفتارهای اجبارگونه تا چه حد در عملکرد شغلی و اجتماعی شما اختلال ایجاد کرده‌اند؟ (اگر در حال حاضر شاغل نیستید، درباره فعالیت‌های روزمره خود فکر کنید.)",
137
+ "answer": {
138
+ "type": "optional",
139
+ "options": [
140
+ "بدون اختلال.",
141
+ "اختلال خفیف در فعالیت‌های شغلی یا اجتماعی، ولی بر عملکرد کلی تأثیری نگذاشته است.",
142
+ "اختلال متوسط و مشخص در عملکرد شغلی یا اجتماعی، ولی همچنان قابل کنترل است.",
143
+ "اختلال شدید با تخریب اساسی در عملکرد شغلی یا اجتماعی",
144
+ "اختلال بسیار شدید و ناتوان کننده"
145
+ ]
146
+ },
147
+ "user_answered": "2"
148
+ },
149
+ {
150
+ "category": "ناراحتی مربوط به وسواس‌های عملی",
151
+ "type": "text",
152
+ "text": "اگر از انجام اجبارهای خود منع شوید چه احساسی پیدا می‌کنید؟ چقدر مضطرب خواهید شد؟",
153
+ "answer": {
154
+ "type": "optional",
155
+ "options": [
156
+ "به هیچ وجه مضطرب نمی‌شوم.",
157
+ "اگر از انجام اجبارها منع شوم فقط تا حدودی مضطرب می‌شوم.",
158
+ "اگر از انجام اجبارها منع شوم اضطرابم بالا می‌رود ولی قابل کنترل باقی می‌ماند.",
159
+ "اگر از انجام اجبارها منع شوم اضطرابم بسیار افزایش می‌یابد و مختل کننده می‌شود.",
160
+ "هر گونه تلاش برای کاهش اجبارها، با اضطراب بسیار شدید و ناتوان کننده همراه می‌شود."
161
+ ]
162
+ },
163
+ "user_answered": "4"
164
+ },
165
+ {
166
+ "category": "مقاومت در برابر وسواس‌های عملی",
167
+ "type": "text",
168
+ "text": "چقدر سعی می‌کنید تا در برابر اجبارها مقاومت کنید؟ یا هر چند وقت یک‌بار سعی می‌کنید تا اجبارها را متوقف کنید؟ (فقط تعداد مواردی را که سعی می‌کنید در برابر اجبارها مقاومت کنید درجه‌بندی کنید، نه میزان موفقیت خود را متوقف کردن آنها.)",
169
+ "answer": {
170
+ "type": "optional",
171
+ "options": [
172
+ "همیشه سعی می‌کنم مقاومت کنم (یا علائم و نشانه ها به قدری خفیف هستند که نیازی به مقاومت فعالانه ندارند).",
173
+ "اکثر اوقات سعی می‌کنم در برابر آن‌ها مقاومت کنم (یعنی بیش از نیمی از اوقات).",
174
+ "برخی از اوقات سعی می‌کنم مقاومت کنم.",
175
+ "بدون تلاش برای کنترل آن‌ها اجازه می‌دهم که تقریبا همه اجبارها صورت بگیرند ولی این کار را تا حدی با اکراه انجام می‌دهم.",
176
+ "به طور کامل و خود خواسته اجازه می‌دهم تا اجبارها صورت بگیرند."
177
+ ]
178
+ },
179
+ "user_answered": "4"
180
+ },
181
+ {
182
+ "category": "میزان کنترل بر وسواس‌های عملی",
183
+ "type": "text",
184
+ "text": "چقدر روی رفتارهای وسواسی خود کنترل دارید؟ چقدر در متوقف کردن آداب رفتاری موفق هستید؟ (چنانچه به ندرت برای مقاومت تلاش می‌کنید، برای پاسخ به این پرسش درباره همان موارد نادری که سعی کرده‌اید اجبارها را متوقف کنید، فکر کنید).",
185
+ "answer": {
186
+ "type": "optional",
187
+ "options": [
188
+ "کنترل کامل.",
189
+ "معمولا با کمی تلاش یا اراده می‌توانم انجام آداب یا اجبارها را متوقف کنم.",
190
+ "برخی اوقات می‌توانم رفتار اجبار‌گونه را متوقف کنم اما به سختی.",
191
+ "فقط می‌توانم رفتار اجبار‌گونه را به تأخیر بیندازم ولی این رفتار در نهایت باید انجام گیرد.",
192
+ "به ندرت قادر هستم حتی برای لحظه‌ای انجام رفتار اجبارگونه را به تأخیر بیندازم."
193
+ ]
194
+ },
195
+ "user_answered": "3"
196
+ },
197
+ {
198
+ "category": "ارزیابی نیرومندی باور شما نسبت به وسواس – بی اختیاری خود ",
199
+ "type": "text",
200
+ "text": "آیا فکر می‌کنید که وسواس‌ها یا بی‌اختیاری‌های شما معقول و منطقی هستند؟ اگر از انجام آن‌ها منع شوید، آیا حالتی غیر از اضطراب برای شما رخ خواهد داد؟ آیا فکر می‌کنید که واقعا اتفاق رخ خواهد داد؟",
201
+ "answer": {
202
+ "type": "optional",
203
+ "options": [
204
+ "فکر می‌کنم وسواس‌ها و اجبارهایم نامعقول یا مفرط هستند.",
205
+ "فکر می‌کنم وسواس‌ها و اجبارهایم نامعقول یا مفرط هستند ولی متقاعد نشده‌ام که آن‌ها کاملا غیر ضروری هستند.",
206
+ "فکر می‌کنم وسواس‌ها و اجبارهایم ممکن است نامعقول یا مفرط باشند.",
207
+ "فکر نمی‌کنم که وسواس‌ها و اجبارهایم نامعقول یا مفرط باشند.",
208
+ "بدون توجه به گفته دیگران فکر می‌کنم وسواس‌ها و اجبارهایم معقول هستند."
209
+ ]
210
+ },
211
+ "user_answered": "5"
212
+ },
213
+ {
214
+ "category": "ارزیابی اجتناب ناشی از وسواس ",
215
+ "type": "text",
216
+ "text": "آیا به دلیل افکار وسواسی یا ترس از انجام کارهای بی‌اختیار، از انجام کاری، رفتن به مکانی یا بودن با کسی اجتناب کرده‌اید؟",
217
+ "answer": {
218
+ "type": "optional",
219
+ "options": [
220
+ "به دلیل وسواس-اجبار از هیچ کاری اجتناب نکرده‌ام.",
221
+ "به دلیل وسواس-اجبار از برخی امور بی‌اهمیت اجتناب کرده‌ام.",
222
+ "به دلیل وسواس-اجبار از برخی امور مهم اجتناب کرده‌ام.",
223
+ "به دلیل وسواس-اجبار از بسیاری از امور مهم اجتناب کرده‌ام.",
224
+ "به دلیل وسواس-اجبار تقریبا از هر چیزی اجتناب کرده‌ام."
225
+ ]
226
+ },
227
+ "user_answered": "4"
228
+ },
229
+ {
230
+ "category": "ارزیابی افسردگی ",
231
+ "type": "text",
232
+ "text": "خود را در زمینه غمگینی ارزیابی کنید.",
233
+ "answer": {
234
+ "type": "optional",
235
+ "options": [
236
+ "احساس غمگینی نمی‌کنم.",
237
+ "احساس غمگینی می‌کنم.",
238
+ "تمامی اوقات احساس غمگینی می‌کنم و نمی‌توانم از آن رهایی یابم.",
239
+ "آنقدر غمگین و ناراحت هستم که نمی‌توانم آن را تحمل کنم."
240
+ ]
241
+ },
242
+ "user_answered": "1"
243
+ },
244
+ {
245
+ "category": "ارزیابی افسردگی ",
246
+ "type": "text",
247
+ "text": "اگر افکار خودکشی داشته‌اید خود را ارزیابی کنید.",
248
+ "answer": {
249
+ "type": "optional",
250
+ "options": [
251
+ "هیج فکری درباره خودکشی ندارم.",
252
+ "افکاری درباره خودکشی دارم ولی آن‌ها را عملی نخواهم کرد.",
253
+ "مایلم خودکشی کنم.",
254
+ "اگر فرصت مناسبی داشتم خودم را می‌کشتم."
255
+ ]
256
+ },
257
+ "user_answered": "3"
258
+ }
259
+ ],
260
+ "prerequisites": [
261
+ {
262
+ "type": "text",
263
+ "label": "gender",
264
+ "text": "جنسیت",
265
+ "answer": { "type": "select", "options": ["زن", "مرد"] },
266
+ "alias": "gender",
267
+ "force": true,
268
+ "user_answered": "1"
269
+ },
270
+ {
271
+ "type": "text",
272
+ "label": "age",
273
+ "text": "سن",
274
+ "answer": { "type": "number" },
275
+ "alias": "age",
276
+ "force": true,
277
+ "user_answered": "55"
278
+ },
279
+ {
280
+ "type": "text",
281
+ "label": "education",
282
+ "text": "تحصیلات",
283
+ "answer": {
284
+ "type": "select",
285
+ "options": [
286
+ "ابتدایی اول",
287
+ "ابتدایی دوم",
288
+ "متوسطه اول",
289
+ "متوسطه دوم",
290
+ "دیپلم",
291
+ "کارشناسی",
292
+ "کارشناسی ارشد",
293
+ "پزشکی عمومی",
294
+ "متخصص",
295
+ "دکتری تخصصی",
296
+ "حوزوی مقدمات",
297
+ "حوزوی سطح۱",
298
+ "حوزوی سطح۲",
299
+ "حوزوی سطح۳",
300
+ "حوزوی سطح۴"
301
+ ]
302
+ },
303
+ "alias": "education",
304
+ "force": true,
305
+ "user_answered": "1"
306
+ },
307
+ {
308
+ "type": "text",
309
+ "label": "marital_status",
310
+ "text": "وضعیت تأهل",
311
+ "answer": { "type": "select", "options": ["مجرد", "متأهل"] },
312
+ "alias": "marital_status",
313
+ "force": true,
314
+ "user_answered": "1"
315
+ }
316
+ ],
317
+ "entities": [
318
+ {
319
+ "offset": 0,
320
+ "description": "مشخص کنید که در حال حاضر این مشکلات تا چه حد در زندگی شما اختلال ایجاد می‌کند.\n\nبه خاطر داشته باشید که در اینجا مجددا تعریف وسواس مد نظر است، عقاید، تصورات یا تکانه‌های ناخوشایند و پریشان کننده‌ای که به طور مکرر وارد ذهنتان می‌شوند. این افکار برخلاف میل شما به ذهنتان وارد می‌شوند. ممکن است در نظرتان نفرت‌انگیز باشند، بدانید که بی‌معنا هستند و ممکن است با احساس و شخصیت شما تناسبی نداشته باشند.لطفا درباره هفت روز گذشته و همچنین امروز فکر کنید و برای هر پرسش یکی از پاسخ‌ها را علامت بزنید.\n\n- توجه: این قسمت شامل وسواس‌هایی نمی‌شوند که با انجام اعمال اجباری متوقف می‌گردند، اگر برای پاسخ ۵۹ «هیچ» را انتخاب کردید تا شماره ۶۳ هیچ را انتخاب کنید و به سراغ شماره ۶۴ بروید."
321
+ },
322
+ {
323
+ "offset": 5,
324
+ "description": "منظور از رفتارهای وسواسی، رفتار ها یا عملکرد هایی هستند که اگرچه آن‌ها را بی معنا یا افراطی می‌دانید، با این حال احساس می‌کنید که باید آن‌ها را انجام بدهید.\n\nگاهی اوقات شما سعی می‌کنید که در انجام دادن آن‌ها علی‌رغم مشکلات و زحمات زیاد مقاومت کنید. ممکن است تا زمانی که آن رفتار را انجام نداده و یا تمام نکرده اید، همچنان اضطراب داشته باشید. لطفاً در مورد ۷ روز گذشته (و همچنین امروز) فکر کرده و برای هر پرسش، یکی از گزینه ها را انتخاب نمایید."
325
+ }
326
+ ],
327
+ "cornometer": 1,
328
+ "score": {
329
+ "aggressive_obsession": 0,
330
+ "contamination_obsession": 0,
331
+ "sexual_obsession": 0,
332
+ "hoarding_saving": 0,
333
+ "religious": 0,
334
+ "symmetry_exactness": 0,
335
+ "obsession_miscellaneous": 0,
336
+ "somatic": 0,
337
+ "cleaning_washing": 0,
338
+ "checking": 0,
339
+ "repeating": 0,
340
+ "counting": 0,
341
+ "ordering_arranging": 0,
342
+ "hoarding_collecting": 0,
343
+ "compulsive_miscellaneous": 0,
344
+ "obsession_severity": 9,
345
+ "obsession_severity_level": 1,
346
+ "report": "mild"
347
+ },
348
+ "score_current_version": "1.0.0",
349
+ "score_last_version": "1.0.0"
350
+ }
@@ -0,0 +1,121 @@
1
+ const { Profile, FS } = require("../Profile");
2
+ const interprets = {
3
+ sub_clinical: {
4
+ title: "غیر بالینی",
5
+ color: "#64748B",
6
+ secondary: "#CBD5E1"
7
+
8
+ },
9
+ mild: {
10
+ title: "خفیف",
11
+ color: "#EAB308",
12
+ secondary: "#FDE047"
13
+
14
+ },
15
+ moderate: {
16
+ title: "متوسط",
17
+ color: "#F97316",
18
+ secondary: "#FDBA74"
19
+ },
20
+ severe: {
21
+ title: "شدید",
22
+ color: "#E11D48",
23
+ secondary: "#FDA4AF"
24
+ },
25
+ extreme: {
26
+ title: "خیلی شدید",
27
+ color: "#9F1239",
28
+ secondary: "#FDA4AF"
29
+ },
30
+ }
31
+ const questionAnswers = [
32
+ '#CBD5E1', '#EAB308', '#EA580C', '#E11D48', '#BE123C'
33
+ ]
34
+ const questionTitles = [
35
+ 'وقت صرف شده',
36
+ 'اثر روی کارکرد',
37
+ 'ایجاد پریشانی',
38
+ 'تلاش برای مقاومت',
39
+ 'توان کنترل',
40
+
41
+ 'وقت صرف شده',
42
+ 'اثر روی کارکرد',
43
+ 'ایجاد پریشانی',
44
+ 'تلاش برای مقاومت',
45
+ 'توان کنترل',
46
+
47
+ '-',
48
+ '-',
49
+
50
+ 'غمگینی',
51
+ 'افکار خودکشی',
52
+
53
+ ]
54
+ class YBOCS9A extends Profile {
55
+ // Number of pages
56
+ static pages = 1;
57
+
58
+ // Labels of the sample
59
+ labels = {
60
+ L1: { eng: "obsession_severity", fr: "شدت وسواس" },
61
+ L2: { eng: "report", fr: "تفسیر" },
62
+ };
63
+
64
+ profileSpec = {
65
+ /* "sample" determines some important info about the sample and profile */
66
+ /* Default prerequisites: 1. gender, 2. age, 3. education */
67
+ /* "prerequisites" is synonym to "fields" in our program */
68
+ sample: {
69
+ name: "پرسشنامه یل‌براون وسواس" /* Name of the sample */,
70
+ multiProfile: true /* Whether the sample has multiple profiles or not */,
71
+ questions: true /* Determines whether to get questions from inital dataset or not */,
72
+ defaultFields: true /* Determines whether to have default prerequisites in the profile or not */,
73
+ fields: [] /* In case you want to get some additional fields and show in the profile */,
74
+ },
75
+ /* "profile" determines the dimensions of the drawn profile (to be used in svg tag viewbox) */
76
+ /* calculating its dimensions carefully is of great importance */
77
+ profile: {
78
+ get dimensions() {
79
+ return {
80
+ width: 863 + 2 * this.padding.x,
81
+ height: 672 + 2 * this.padding.y,
82
+ }
83
+ },
84
+ padding: {
85
+ x: 20,
86
+ y: 21,
87
+ },
88
+ },
89
+ /* "labels" part which has to be provided for each profile */
90
+ labels: Object.values(this.labels),
91
+ };
92
+
93
+ constructor(dataset, options, config = {}) {
94
+ super();
95
+ this._init(dataset, options, config);
96
+ }
97
+
98
+ _calcContext() {
99
+ const {
100
+ dataset,
101
+ } = this;
102
+ const questions = dataset.questions.map(q => ({
103
+ ...q,
104
+ user_answered: parseInt(q.user_answered) - 1,
105
+ color: questionAnswers[q.user_answered - 1]
106
+ }))
107
+ const severity = {
108
+ mark: dataset.score[0].mark ?? 0,
109
+ label: dataset.score[1].mark,
110
+ ...interprets[dataset.score[1].mark]
111
+ }
112
+ let alert = 0
113
+ if(questions[0].user_answered === 0) alert += 1
114
+ if(questions[5].user_answered === 0) alert += 2
115
+ return [
116
+ {severity, questions, alert, questionTitles, questionAnswers}
117
+ ];
118
+ }
119
+ }
120
+
121
+ module.exports = YBOCS9A;
@@ -0,0 +1,307 @@
1
+ {{#> layout}}
2
+ <defs>
3
+ <clipPath id="barx">
4
+ {{bar 28 384 (object tl=4 bl=0 tr=4 br=0) (toRad 0)}}
5
+ </clipPath>
6
+ <linearGradient id="line-bar" x1="0%" y1="0%" x2="0%" y2="100%">
7
+ <stop offset="0%" style="stop-color:{{severity.color}};stop-opacity:1" />
8
+ <stop offset="100%" style="stop-color:{{severity.secondary}};stop-opacity:1" />
9
+ </linearGradient>
10
+ <filter id="lineBase" x="0" y="0" width="226" height="7" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
11
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
12
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
13
+ <feOffset dy="-1"/>
14
+ <feGaussianBlur stdDeviation="1.5"/>
15
+ <feComposite in2="hardAlpha" operator="out"/>
16
+ <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0"/>
17
+ <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2493_93356"/>
18
+ <feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2493_93356" result="shape"/>
19
+ </filter>
20
+ </defs>
21
+ <g transform="translate({{spec.profile.padding.x}}, {{spec.profile.padding.y}})">
22
+ <g transform="translate(383, 0)">
23
+ <g>
24
+ <rect x="0" y="0" rx="8" width="340" height="172" stroke="#E2E8F0" fill="none"/>
25
+ <g transform="translate(236, 12)">
26
+ <rect x="0" y="0" rx="4" width="92" height="148" fill="#F1F5F9"/>
27
+ <text y="55" text-anchor="middle" font-size="13" font-weight="500" fill="#475569">
28
+ <tspan x="46" dy="1em">
29
+ شدت
30
+ </tspan>
31
+ <tspan x="46" dy="1.45em">
32
+ وسواس
33
+ </tspan>
34
+ </text>
35
+ </g>
36
+ <g transform="translate(12, 12)">
37
+ {{#forLoop 0 5 1}}
38
+ {{setVar "question" (lookup ../questions i)}}
39
+ <g transform="translate(0, {{math 30 '*' i}})">
40
+ <rect x="0" y="0" rx="4" width="180" height="28" fill="#F8FAFC"/>
41
+ <text x="172" y="14" text-anchor="start" dy="0.23em" font-size="13" font-weight="400" fill="#475569">{{lookup ../questionTitles i}}</text>
42
+ <rect x="4" y="3.5" rx="7" width="20" height="20" fill="{{question.color}}"/>
43
+ <text x="14" y="7.5" text-anchor="middle" dy="0.79em" font-size="13" font-weight="500" fill="#FFFFFF">{{question.user_answered}}</text>
44
+ <g transform="translate(184, 0)">
45
+ <text x="14" y="14" text-anchor="middle" dy="0.25em" font-size="11" font-weight="400" fill="#475569">
46
+ {{math i '+' 1}}
47
+ </text>
48
+ </g>
49
+ </g>
50
+ {{/forLoop}}
51
+ </g>
52
+ {{#if (boolean (boolean alert '!==' 2) '&&' (boolean alert '!==' 0))}}
53
+ <rect x="0" y="0" rx="8" width="340" height="172" fill="black" opacity="0.1"/>
54
+ <g transform="translate(348, 0)">
55
+ <rect x="0" y="0" rx="8" width="132" height="172" stroke="#991B1B" fill="#FEF2F2" stroke-dasharray="6 6"/>
56
+ <g transform="translate(56, 32)">
57
+ <path d="M11 7.50019H11.01M9.99999 10.5002H11V14.5002H12M9.36299 2.09119L1.25699 15.6252C1.08988 15.9146 1.00145 16.2427 1.0005 16.5768C0.999539 16.911 1.08609 17.2396 1.25153 17.5299C1.41698 17.8203 1.65555 18.0622 1.94353 18.2317C2.2315 18.4013 2.55884 18.4924 2.89299 18.4962H19.107C19.441 18.4923 19.7682 18.4011 20.056 18.2317C20.3438 18.0622 20.5823 17.8204 20.7477 17.5302C20.9131 17.24 20.9997 16.9116 20.9989 16.5776C20.9981 16.2435 20.9098 15.9155 20.743 15.6262L12.637 2.09019C12.4664 1.80869 12.2262 1.57593 11.9394 1.41439C11.6527 1.25284 11.3291 1.16797 11 1.16797C10.6709 1.16797 10.3473 1.25284 10.0605 1.41439C9.77378 1.57593 9.53353 1.80869 9.36299 2.09019V2.09119Z" stroke="#991B1B" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
58
+ </g>
59
+ <g transform="translate(0, 61.5)">
60
+ <text x="66" text-anchor="middle" font-size="11" font-weight="400" fill="#44403C">
61
+ <tspan y="1em">
62
+ با توجه به پاسخ فرد به
63
+ </tspan>
64
+ <tspan x="66" y="2.5em">
65
+ سؤال ۱ که صفر است،
66
+ </tspan>
67
+ <tspan x="66" y="4em">
68
+ سؤال‌های ۲ تا ۵ در نمره
69
+ </tspan>
70
+ <tspan x="66" y="5.5em">
71
+ شدت وسواس - بی‌اختیاری
72
+ </tspan>
73
+ <tspan x="66" y="7em">
74
+ اثری ندارد.
75
+ </tspan>
76
+ </text>
77
+ </g>
78
+ </g>
79
+ {{/if}}
80
+ </g>
81
+ <g transform="translate(0, 184)">
82
+ <rect x="0" y="0" rx="8" width="340" height="172" stroke="#E2E8F0" fill="none"/>
83
+ <g transform="translate(236, 12)">
84
+ <rect x="0" y="0" rx="4" width="92" height="148" fill="#F1F5F9"/>
85
+ <text y="55" text-anchor="middle" font-size="13" font-weight="500" fill="#475569">
86
+ <tspan x="46" dy="1em">
87
+ شدت
88
+ </tspan>
89
+ <tspan x="46" dy="1.45em">
90
+ بی‌اختیاری
91
+ </tspan>
92
+ </text>
93
+ </g>
94
+ <g transform="translate(12, 12)">
95
+ {{#forLoop 0 5 1}}
96
+ {{setVar "question" (lookup ../questions (math i '+' 5))}}
97
+ <g transform="translate(0, {{math 30 '*' i}})">
98
+ <rect x="0" y="0" rx="4" width="180" height="28" fill="#F8FAFC"/>
99
+ <text x="172" y="14" text-anchor="start" dy="0.23em" font-size="13" font-weight="400" fill="#475569">{{lookup ../questionTitles (math i '+' 5)}}</text>
100
+ <rect x="4" y="3.5" rx="7" width="20" height="20" fill="{{question.color}}"/>
101
+ <text x="14" y="7.5" text-anchor="middle" dy="0.79em" font-size="13" font-weight="500" fill="#FFFFFF">{{question.user_answered}}</text>
102
+ <g transform="translate(184, 0)">
103
+ <text x="14" y="14" text-anchor="middle" dy="0.25em" font-size="11" font-weight="400" fill="#475569">
104
+ {{math i '+' 6}}
105
+ </text>
106
+ </g>
107
+ </g>
108
+ {{/forLoop}}
109
+ </g>
110
+ {{#if (boolean (boolean alert '!==' 1) '&&' (boolean alert '!==' 0))}}
111
+ <rect x="0" y="0" rx="8" width="340" height="172" fill="black" opacity="0.1"/>
112
+ <g transform="translate(348, 0)">
113
+ <rect x="0" y="0" rx="8" width="132" height="172" stroke="#991B1B" fill="#FEF2F2" stroke-dasharray="6 6"/>
114
+ <g transform="translate(56, 32)">
115
+ <path d="M11 7.50019H11.01M9.99999 10.5002H11V14.5002H12M9.36299 2.09119L1.25699 15.6252C1.08988 15.9146 1.00145 16.2427 1.0005 16.5768C0.999539 16.911 1.08609 17.2396 1.25153 17.5299C1.41698 17.8203 1.65555 18.0622 1.94353 18.2317C2.2315 18.4013 2.55884 18.4924 2.89299 18.4962H19.107C19.441 18.4923 19.7682 18.4011 20.056 18.2317C20.3438 18.0622 20.5823 17.8204 20.7477 17.5302C20.9131 17.24 20.9997 16.9116 20.9989 16.5776C20.9981 16.2435 20.9098 15.9155 20.743 15.6262L12.637 2.09019C12.4664 1.80869 12.2262 1.57593 11.9394 1.41439C11.6527 1.25284 11.3291 1.16797 11 1.16797C10.6709 1.16797 10.3473 1.25284 10.0605 1.41439C9.77378 1.57593 9.53353 1.80869 9.36299 2.09019V2.09119Z" stroke="#991B1B" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
116
+ </g>
117
+ <g transform="translate(0, 61.5)">
118
+ <text x="66" text-anchor="middle" font-size="11" font-weight="400" fill="#44403C">
119
+ <tspan y="1em">
120
+ با توجه به پاسخ فرد به
121
+ </tspan>
122
+ <tspan x="66" y="2.5em">
123
+ سؤال ۶ که صفر است،
124
+ </tspan>
125
+ <tspan x="66" y="4em">
126
+ سؤال‌های ۷ تا ۱۰ در نمره
127
+ </tspan>
128
+ <tspan x="66" y="5.5em">
129
+ شدت وسواس - بی‌اختیاری
130
+ </tspan>
131
+ <tspan x="66" y="7em">
132
+ اثری ندارد.
133
+ </tspan>
134
+ </text>
135
+ </g>
136
+ </g>
137
+ {{/if}}
138
+ </g>
139
+ <g transform="translate(0, 368)">
140
+ <rect x="0" y="0" rx="8" width="340" height="52" stroke="#E2E8F0" fill="none"/>
141
+ <g transform="translate(236, 12)">
142
+ <rect x="0" y="0" rx="4" width="92" height="28" fill="#F1F5F9"/>
143
+ <text x="46" y="4.5" dy="0.9em" text-anchor="middle" font-size="13" font-weight="500" fill="#475569">
144
+ نیرومندی باور
145
+ </text>
146
+ </g>
147
+ <g transform="translate(12, 12)">
148
+ <g>
149
+ <rect x="0" y="0" rx="4" width="180" height="28" fill="#F8FAFC"/>
150
+ <text x="172" y="14" text-anchor="start" dy="0.23em" font-size="13" font-weight="400" fill="#475569">{{questionTitles.[10]}}</text>
151
+ <rect x="4" y="3.5" rx="7" width="20" height="20" fill="{{questions.[10].color}}"/>
152
+ <text x="14" y="7.5" text-anchor="middle" dy="0.79em" font-size="13" font-weight="500" fill="#FFFFFF">{{questions.[10].user_answered}}</text>
153
+ <g transform="translate(184, 0)">
154
+ <rect x="0" y="0" rx="4" width="28" height="28" fill="none" stroke="#94A3B8" stroke-width="1"/>
155
+ <text x="14" y="14" text-anchor="middle" dy="0.25em" font-size="11" font-weight="400" fill="#475569">
156
+ 11
157
+ </text>
158
+ </g>
159
+ </g>
160
+ </g>
161
+ </g>
162
+ <g transform="translate(0, 432)">
163
+ <rect x="0" y="0" rx="8" width="340" height="52" stroke="#E2E8F0" fill="none"/>
164
+ <g transform="translate(236, 12)">
165
+ <rect x="0" y="0" rx="4" width="92" height="28" fill="#F1F5F9"/>
166
+ <text x="46" y="4.5" dy="0.9em" text-anchor="middle" font-size="13" font-weight="500" fill="#475569">
167
+ اجتناب
168
+ </text>
169
+ </g>
170
+ <g transform="translate(12, 12)">
171
+ <g>
172
+ <rect x="0" y="0" rx="4" width="180" height="28" fill="#F8FAFC"/>
173
+ <text x="172" y="14" text-anchor="start" dy="0.23em" font-size="13" font-weight="400" fill="#475569">{{questionTitles.[11]}}</text>
174
+ <rect x="4" y="3.5" rx="7" width="20" height="20" fill="{{questions.[11].color}}"/>
175
+ <text x="14" y="7.5" text-anchor="middle" dy="0.79em" font-size="13" font-weight="500" fill="#FFFFFF">{{questions.[11].user_answered}}</text>
176
+ <g transform="translate(184, 0)">
177
+ <text x="14" y="14" text-anchor="middle" dy="0.25em" font-size="11" font-weight="400" fill="#475569">
178
+ 12
179
+ </text>
180
+ </g>
181
+ </g>
182
+ </g>
183
+ </g>
184
+ <g transform="translate(0, 496)">
185
+ <rect x="0" y="0" rx="8" width="340" height="92" stroke="#E2E8F0" fill="none"/>
186
+ <g transform="translate(236, 12)">
187
+ <rect x="0" y="0" rx="4" width="92" height="68" fill="#F1F5F9"/>
188
+ <text y="15" text-anchor="middle" font-size="13" font-weight="500" fill="#475569">
189
+ <tspan x="46" dy="1em">
190
+ ارزیابی
191
+ </tspan>
192
+ <tspan x="46" dy="1.45em">
193
+ افسردگی
194
+ </tspan>
195
+ </text>
196
+ </g>
197
+ <g transform="translate(12, 12)">
198
+ {{#forLoop 0 2 1}}
199
+ {{setVar "question" (lookup ../questions (math i '+' 12))}}
200
+ <g transform="translate(0, {{math 30 '*' i}})">
201
+ <rect x="0" y="0" rx="4" width="180" height="28" fill="#F8FAFC"/>
202
+ <text x="172" y="14" text-anchor="start" dy="0.23em" font-size="13" font-weight="400" fill="#475569">{{lookup ../questionTitles (math i '+' 12)}}</text>
203
+ <rect x="4" y="3.5" rx="7" width="20" height="20" fill="{{question.color}}"/>
204
+ <text x="14" y="7.5" text-anchor="middle" dy="0.79em" font-size="13" font-weight="500" fill="#FFFFFF">{{question.user_answered}}</text>
205
+ <g transform="translate(184, 0)">
206
+ {{#if (boolean i '===' 1)}}
207
+ <rect x="0" y="0" rx="4" width="28" height="28" fill="none" stroke="#94A3B8" stroke-width="1"/>
208
+ {{/if}}
209
+ <text x="14" y="14" text-anchor="middle" dy="0.25em" font-size="11" font-weight="400" fill="#475569">
210
+ {{math i '+' 13}}
211
+ </text>
212
+ </g>
213
+ </g>
214
+ {{/forLoop}}
215
+ </g>
216
+ </g>
217
+ </g>
218
+ <g transform="translate(345, 612)">
219
+ <g transform="translate(395, 0)">
220
+ <rect rx="7" width="20" height="20" fill="{{questionAnswers.[0]}}"/>
221
+ <text x="10" text-anchor="middle" dy="1.07em" font-size="13" font-weight="500" fill="#FFFFFF">0</text>
222
+ <text x="-8" text-anchor="start" dy="1.1em" font-size="12" font-weight="400" fill="#64748B">صدق نمی‌کند</text>
223
+ </g>
224
+ <g transform="translate(280, 0)">
225
+ <rect rx="7" width="20" height="20" fill="{{questionAnswers.[1]}}"/>
226
+ <text x="10" text-anchor="middle" dy="1.07em" font-size="13" font-weight="500" fill="#FFFFFF">1</text>
227
+ <text x="-8" text-anchor="start" dy="1.1em" font-size="12" font-weight="400" fill="#64748B">خیلی کم</text>
228
+ </g>
229
+ <g transform="translate(188, 0)">
230
+ <rect rx="7" width="20" height="20" fill="{{questionAnswers.[2]}}"/>
231
+ <text x="10" text-anchor="middle" dy="1.07em" font-size="13" font-weight="500" fill="#FFFFFF">2</text>
232
+ <text x="-8" text-anchor="start" dy="1.1em" font-size="12" font-weight="400" fill="#64748B">کم</text>
233
+ </g>
234
+ <g transform="translate(123, 0)">
235
+ <rect rx="7" width="20" height="20" fill="{{questionAnswers.[3]}}"/>
236
+ <text x="10" text-anchor="middle" dy="1.07em" font-size="13" font-weight="500" fill="#FFFFFF">3</text>
237
+ <text x="-8" text-anchor="start" dy="1.1em" font-size="12" font-weight="400" fill="#64748B">زیاد</text>
238
+ </g>
239
+ <g transform="translate(53, 0)">
240
+ <rect rx="7" width="20" height="20" fill="{{questionAnswers.[4]}}"/>
241
+ <text x="10" text-anchor="middle" dy="1.07em" font-size="13" font-weight="500" fill="#FFFFFF">4</text>
242
+ <text x="-8" text-anchor="start" dy="1.1em" font-size="12" font-weight="400" fill="#64748B">خیلی زیاد</text>
243
+ </g>
244
+ </g>
245
+ <g transform="translate(359, 648)">
246
+ <g transform="translate(364, 0)">
247
+ <rect rx="4" width="24" height="24" fill="none" stroke="#94A3B8" stroke-width="1"/>
248
+ <text x="12" y="12" text-anchor="middle" dy="0.25em" font-size="11" font-weight="400" fill="#475569">
249
+ 11
250
+ </text>
251
+ </g>
252
+ <g transform="translate(336, 0)">
253
+ <rect rx="4" width="24" height="24" fill="none" stroke="#94A3B8" stroke-width="1"/>
254
+ <text x="12" y="12" text-anchor="middle" dy="0.25em" font-size="11" font-weight="400" fill="#475569">
255
+ 14
256
+ </text>
257
+ </g>
258
+ <text x="328" y="3.5" text-anchor="start" dy="0.93em" font-size="12" font-weight="400" fill="#64748B">
259
+ پاسخ مراجع به این دو سوال جهت تحلیل، نیازمند توجه بیشتری است.
260
+ </text>
261
+ </g>
262
+ <g transform="translate(88, 83)">
263
+ {{!-- <rect x="0" y="0" rx="8" width="220" height="422" fill="black" opacity="0.1"/> --}}
264
+ <g transform="translate(96, 5)">
265
+ {{bar 28 384 (object tl=4 bl=0 tr=4 br=0) (toRad 0) fill="#F9FAFB"}}
266
+ </g>
267
+ <g transform="translate(0, 5)">
268
+ <line x1="42" y1="0" x2="210" y2="0" stroke="#E5E7EB" stroke-width="1" stroke-dasharray="6 6"/>
269
+ <text x="32" text-anchor="start" dy="0.25em" font-size="12" font-weight="400" fill="#9CA3AF">48</text>
270
+ <text x="140" y="68" text-anchor="end" dy="0.25em" font-size="12" font-weight="400" fill="#9F1239">خیلی شدید</text>
271
+ </g>
272
+ <g transform="translate(0, 141)">
273
+ <line x1="42" y1="0" x2="210" y2="0" stroke="#E5E7EB" stroke-width="1" stroke-dasharray="6 6"/>
274
+ <text x="32" text-anchor="start" dy="0.25em" font-size="12" font-weight="400" fill="#9CA3AF">31</text>
275
+ <text x="140" y="32" text-anchor="end" dy="0.25em" font-size="12" font-weight="400" fill="#E11D48">شدید</text>
276
+ </g>
277
+ <g transform="translate(0, 205)">
278
+ <line x1="42" y1="0" x2="210" y2="0" stroke="#E5E7EB" stroke-width="1" stroke-dasharray="6 6"/>
279
+ <text x="32" text-anchor="start" dy="0.25em" font-size="12" font-weight="400" fill="#9CA3AF">23</text>
280
+ <text x="140" y="32" text-anchor="end" dy="0.25em" font-size="12" font-weight="400" fill="#F97316">متوسط</text>
281
+ </g>
282
+ <g transform="translate(0, 269)">
283
+ <line x1="42" y1="0" x2="210" y2="0" stroke="#E5E7EB" stroke-width="1" stroke-dasharray="6 6"/>
284
+ <text x="32" text-anchor="start" dy="0.25em" font-size="12" font-weight="400" fill="#9CA3AF">15</text>
285
+ <text x="140" y="32" text-anchor="end" dy="0.25em" font-size="12" font-weight="400" fill="#EAB308">خفیف</text>
286
+ </g>
287
+ <g transform="translate(0, 333)">
288
+ <line x1="42" y1="0" x2="210" y2="0" stroke="#E5E7EB" stroke-width="1" stroke-dasharray="6 6"/>
289
+ <text x="32" text-anchor="start" dy="0.25em" font-size="12" font-weight="400" fill="#9CA3AF">7</text>
290
+ <text x="140" y="28" text-anchor="end" dy="0.25em" font-size="12" font-weight="400" fill="#64748B">غیربالینی</text>
291
+ </g>
292
+ <g transform="translate(96, {{math 389 '-' (math severity.mark '*' 8)}})">
293
+ {{bar 28 (math severity.mark '*' 8) (object tl=4 bl=0 tr=4 br=0) (toRad 0) fill="url(#line-bar)" clip-path="url(#barx)"}}
294
+ {{#if (boolean severity.mark '>=' 7)}}
295
+ <text x="14" y="8" text-anchor="middle" dy="0.73em" font-size="16" font-weight="600" fill="#FFFFFF">{{severity.mark}}</text>
296
+ {{else}}
297
+ <text x="14" y="-18" text-anchor="middle" dy="0.73em" font-size="16" font-weight="600" fill="#64748B">{{severity.mark}}</text>
298
+ {{/if}}
299
+ </g>
300
+ <g transform="translate(-3.5, 386)" opacity="0.5" filter="url(#lineBase)">
301
+ <line x1="3.5" y1="4.5" x2="222.5" y2="4.5" stroke="white" stroke-linecap="round"/>
302
+ </g>
303
+ <text x="110" y="406" text-anchor="middle" dy="0.73em" font-size="13" font-weight="500" fill="#4B5563">شدت وسواس - بی‌اختیاری</text>
304
+ </g>
305
+ </g>
306
+
307
+ {{/layout}}