exner 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. data/.autotest +23 -0
  2. data/.gemtest +0 -0
  3. data/History.txt +4 -0
  4. data/Manifest.txt +42 -0
  5. data/README.txt +49 -0
  6. data/Rakefile +19 -0
  7. data/bin/rorschach +4 -0
  8. data/bin/zulliger +4 -0
  9. data/data/.~lock.sumario_Zulliger.rtf# +1 -0
  10. data/data/Rorschach_Zest.txt +50 -0
  11. data/data/Zulliger_Zest.txt +50 -0
  12. data/data/sumario.rtf +240 -0
  13. data/data/sumario2.rtf +271 -0
  14. data/data/sumario_Rorschach.rtf +233 -0
  15. data/data/sumario_Zulliger.rtf +203 -0
  16. data/data/test_manchas.txt +16 -0
  17. data/data/zulli_test.txt +11 -0
  18. data/lib/exner/respuesta.rb +110 -0
  19. data/lib/exner/rorschach.rb +11 -0
  20. data/lib/exner/rorschach_plugins/cdi.rb +22 -0
  21. data/lib/exner/rorschach_plugins/depi.rb +38 -0
  22. data/lib/exner/rorschach_plugins/hvi.rb +25 -0
  23. data/lib/exner/rorschach_plugins/interpretacion.rb +438 -0
  24. data/lib/exner/rorschach_plugins/obs.rb +36 -0
  25. data/lib/exner/rorschach_plugins/scon.rb +44 -0
  26. data/lib/exner/rorschach_plugins/sczi.rb +25 -0
  27. data/lib/exner/rtf/rorschach.rb +69 -0
  28. data/lib/exner/rtf/zulliger.rb +59 -0
  29. data/lib/exner/rtf.rb +46 -0
  30. data/lib/exner/test_manchas.rb +445 -0
  31. data/lib/exner/zulliger.rb +26 -0
  32. data/lib/exner/zulliger_plugins/interpretacion.rb +328 -0
  33. data/lib/exner.rb +44 -0
  34. data/test/extras.rb +11 -0
  35. data/test/helpers_tests.rb +41 -0
  36. data/test/test_depi.rb +29 -0
  37. data/test/test_exner.rb +100 -0
  38. data/test/test_hvi.rb +33 -0
  39. data/test/test_obs.rb +29 -0
  40. data/test/test_rorschach.rb +1 -0
  41. data/test/test_scon.rb +34 -0
  42. data/test/test_sczi.rb +29 -0
  43. data/test/text_cdi.rb +28 -0
  44. data.tar.gz.sig +0 -0
  45. metadata +193 -0
  46. metadata.gz.sig +0 -0
@@ -0,0 +1,438 @@
1
+ # encoding: UTF-8
2
+ require 'iconv'
3
+ module Exner
4
+ class Rorschach
5
+ # calcula, para un determinado valor en los baremos
6
+ # el porcentaje que le corresponde al valor específico
7
+ # hace el ajuste en función al número de respuestas
8
+ def norma(valor)
9
+ r_est=22.67
10
+ return (valor*self.R) / r_est
11
+ end
12
+ def respuestatriple(valor,bajo,alto,resp_bajo,resp_alto,resp_normal)
13
+ if valor<bajo
14
+ return resp_bajo
15
+ elsif valor>alto
16
+ return resp_alto
17
+ else
18
+ return resp_normal
19
+ end
20
+ end
21
+ def interpretacion
22
+ salida=Array.new
23
+ # Lambda
24
+ salida.push('{\b Controles}')
25
+ if self.R < 14
26
+ salida.push('{\b ATENCION: POCAS RESPUESTAS. TEST INVALIDO}')
27
+ end
28
+
29
+ if self.L> 0.84
30
+ salida.push("L aumentado. Sobresimplificación perceptiva. Registro sólo de lo cognitivo. Se evita lo emocional. INHIBICION DE POTENCIAL: Restricción emocional, sobrecontrol")
31
+ if self.L>1
32
+ if self.R >=17 or self.EA>=4
33
+ salida.push("Estilo evitativo. Trata estímulos de forma simple, evitando aspectos intrincado y ambigüedades")
34
+ else
35
+ salida.push("DEFENSIVIDAD SITUACIONAL. Puede ser que EA no sea válido")
36
+ end
37
+ end
38
+ elsif self.L<0.32
39
+ salida.push("L < disminuido. No es capaz de simplificar las percepciones. Sobrestimulación emocional, pudiéndose agotar. Revisar Hiperincorporación. INHIBICION DE POTENCIAL: sobrestimulación, especialmente emocional")
40
+ else
41
+ salida.push("L normal. Manejo normal de la cantidad de información")
42
+ end
43
+ # Tipo vivencial
44
+ if self.EA>=4
45
+ salida.push("Estilo vivencial bien definido")
46
+ else
47
+ salida.push("No se puede definir bien el estilo vivencial")
48
+ end
49
+
50
+ dif=(sumdet("M")-sumcolpond).abs
51
+ if sumdet("M")>sumcolpond and dif>=2
52
+ salida.push("Intratensivo. Para solucionar sus problemas recurren a su mundo interno.")
53
+ elsif sumdet("M")<sumcolpond and dif>=2
54
+ salida.push("Extratensivo. Para solucionar sus problemas recurren al mundo externo")
55
+ else
56
+ salida.push("Ambigual. NO tiene un estilo defeinido. Dudan mucho entre el pensar y el actuar y se desgantan")
57
+ end
58
+ # Estilo organizativo
59
+ if (self.Zd>3)
60
+ salida.push("Estilo hiperincorporador. Minucioso al recoger información del medio, teniendo dificultades para distinguir lo importante de lo accesorio")
61
+ elsif (self.Zd<-3)
62
+ salida.push("Estilo hipoincorporador. Decide rápidamente en función de lo más llamativo. Tiende a ser rápido, pero en su precipitación puede equivocarse")
63
+ else
64
+ salida.push("Estilo organizativo normal. Registra la información de forma eficaz y organiza activamente la información de su entorno")
65
+ end
66
+ # D
67
+ if (self.D>0)
68
+ salida.push("D positivo. Buena tolerancia al estrés, utilizando bien sus recursos y respondiendo a demandas del ambiente")
69
+ elsif (self.D==0)
70
+ salida.push("D=0. Buena tolerancia al estrés, pero se puede descompensar")
71
+ else
72
+ if(self.AdjD>self.D)
73
+ salida.push("D<0 y AdjD menor. Sobrecarga situacional. Algo lo tiene sobrepasado")
74
+ else
75
+ salida.push("D<0 y AdjD igual. Tensión y sufrimiento crónico. Disposición crónica a la desorganización")
76
+ end
77
+ end
78
+ # estimulacion sufrida (es)
79
+
80
+ if eb_izq>eb_der
81
+ salida.push("FM+m aumentado. Ideas sin que el sujeto se lo proponga. Sobrecarga interna.")
82
+ if sumdet("FM")>sumdet("m")
83
+ salida.push("FM>m. Malestar crónico por necesidades insatisfechas")
84
+ elsif sumdet("m")>sumdet("FM")
85
+ salida.push("m>FM. Malestar agudo, por estresante actual")
86
+ end
87
+ elsif eb_der>eb_izq
88
+ salida.push("C'+T+V+Y aumentados. Aumento del sufrimiento y del dolor psíquico causado por situaciones internas")
89
+ else
90
+ salida.push("Necesidades y sufrimientos en igual grado")
91
+ end
92
+
93
+ if sumdet("FM")>norma(4.89)
94
+ salida.push("FM aumentada. Necesidades insatisfechas de forma crónica. Es un sujeto que quiere gratificarse ahora, puede estar a merced de sus impulsos, lo cual lo puede llevar a conductas desadaptativas")
95
+ elsif sumdet("FM")< norma(2.51)
96
+ salida.push("FM disminuido. Represión de necesidades básicas")
97
+ end
98
+
99
+ if sumdet("m")>norma(1.97)
100
+ salida.push("m aumentado. Malestar por necesidades externas agudo aumentado")
101
+ end
102
+
103
+ if sumdet("Y")>norma(1.57)
104
+ salida.push("Claroscuro difuso aumentado. Angustia, sensación de indefensión, parálisis, desamparto")
105
+ end
106
+ if self.EA>self.es+2
107
+ salida.push("EA>es+2. Sujeto tiene recursos para satisfacer sus necesiades")
108
+ elsif self.EA<self.es
109
+ salida.push("EA<es. Sujeto no tiene suficientes recursos para satisfacer sus necesidades. INHIBICION DE POTENCIAL")
110
+ else
111
+ salida.push("Recursos suficientes, pero a veces se puede desbordar. POSIBLE INHIBICION DE POTENCIAL")
112
+ end
113
+
114
+ salida.push('{\b Mediación}')
115
+
116
+ if fmas >= 0.88
117
+ salida.push("FQX% elevado. Exagerada precoupación por la realidad, en desmedro de la propia singularidad(rigidez)")
118
+ elsif fmas <= 0.54
119
+ salida.push("FQX% disminuido. Distorsión de la realidad. Puede ser creatividad, subjetividad o distorsión propiamente tal")
120
+ else
121
+ salida.push("FQX% normal. Buen control de la realidad, objetivo y con buena capacidad intelectual")
122
+ end
123
+
124
+ if xmas>=0.87
125
+ salida.push("X+% elevado. Cuando los afectos están involucrado, la persona se va a apegar mucho a la realidad y puede paralizarse")
126
+ elsif xmas<=0.71
127
+ salida.push("X+% disminuido. Cuando los afectos están involucrados, no pueden ser muy objetivos. Revisar FQXu y - para ver si es patológico o no")
128
+ else
129
+ salida.push("X+% normal. El sujeto es capaz de manejar sus afectos de modo bastante objetivo")
130
+ end
131
+
132
+ if wda<=0.75
133
+ salida.push("WDA+%<0.75. La percepción es inadecuada en situaciones obvias")
134
+ else
135
+ salida.push("WDA+%>0.75. La percepción es adecuada en situaciones obvias")
136
+ end
137
+
138
+ if xa<=0.7
139
+ salida.push("Xa%<0.7. Trastorno de percepción en situaciones inusuales")
140
+ else
141
+ salida.push("Xa%>0.7. La percepción es adecuada en situaciones inusuales")
142
+ end
143
+
144
+ if xmenos>0.25
145
+ salida.push("X-%>0.25. Preocupante alejamiento de lo convencional")
146
+ end
147
+ if smenos>0.30
148
+ salida.push("S-%>0.30. Fuerte interferencia emocional en situaciones de rabia")
149
+ end
150
+
151
+ if @populares<5
152
+ salida.push("P<5. Tiene dificultades para percibir las normas sociales(psicótico-sociópata). O puede ser muy brillante y arrogante y no quiere contestar las obvias.")
153
+ if @populares<2
154
+ salida.push("Hiciste límite, supongo...")
155
+ end
156
+ elsif @populares>=5 and @populares<=8
157
+ salida.push("5<P<8. Puede percibir y acatar las normas sociales")
158
+ else
159
+ salida.push("P>8. Sobresocializado. Demasiado atento a las normas sociales. sobresocializado")
160
+ end
161
+
162
+ salida.push('{\b Ideación}')
163
+
164
+ if(sumdet("F")>norma(10.66))
165
+ salida.push("F aumentadas. Muy defensivo, teme sus emociones y las evite")
166
+ elsif(sumdet("F")<norma(5.32))
167
+ salida.push("F disminuidas. Expresión descontrolada de los impulsos. Falta de demora cognitiva")
168
+ end
169
+ if pasivos>activos+1
170
+ salida.push("p>a+1. Persona que tiende a asumir un rol pasivo frente a los demás. Vigilar T, P, Ego disminuido y Fd")
171
+
172
+ salida.push("T>0.Pasivo por necesidad de afecto") if (sumdet('T')>0)
173
+ salida.push("P>4.Pasivo por Sobresocialización") if (@populares>4)
174
+ salida.push("Fd>0. Pasivo por dependencia") if (_c['Fd']>0)
175
+ if (sumdet("M")+sumdet("FM")+sumdet("m"))<4
176
+ salida.push("Hay pocos movimientos para estar seguro sobre la pasividad")
177
+ end
178
+
179
+ else
180
+ salida.push("a+1>p. Persona adopta rol activo")
181
+ end
182
+ if (pasivos-activos).abs>4
183
+ salida.push("Dif pasivos activos > 4. Rigidez cognitiva")
184
+ end
185
+
186
+ if _d['Mp']>_d['Ma']+1
187
+ salida.push("Mp>Ma+1. Crea fantasías, pero tiene dificultades para hacer deliberaciones eficaces. Ocupa su inteligencia para escapar de los problemas, no para afrontarlos")
188
+ salida.push("Pocos Movimientos humanos para estar seguro de esto") if sumdet("M")<2
189
+ end
190
+ if intelectualizacion>=5
191
+ salida.push("Intelectualización alta. Uso abusivo de la intelectualizacion")
192
+ end
193
+
194
+ if _ccee['MOR']>2
195
+ salida.push("MOR>2. Pesimismo")
196
+ end
197
+ if m_menos>1
198
+ salida.push("M->0. ALERTA. Mal signo. Sus recursos ideativos presentan alteraciones, con ideación paranoide.")
199
+ end
200
+ if self.SumBr6>=norma(6.17)
201
+ salida.push("SumBr6 aumentada .Posible trastorno del pensamiento. INHIBICION DEL POTENCIAL")
202
+ end
203
+ if self.SumPon6>2
204
+ salida.push("SumPon6>2.Posible trastorno del pensamiento. INHIBICION DEL POTENCIAL")
205
+ end
206
+ if msin>0
207
+ salida.push("M sin >0. Es una persona que puede desorientarse y perder contacto con la realidad")
208
+ end
209
+ #
210
+ # AFECTOS
211
+ #
212
+ salida.push('{\b Afectos}')
213
+
214
+ if det['FC']<(det['CF']+det['C'])*2
215
+ salida.push("FC<CF+C*2. Vigilar poco control sobre descarga emocional")
216
+ salida.push("C>CF. Posible impulsividad!") if det['C']>det['CF']
217
+ end
218
+
219
+ if det['C']>0
220
+ salida.push("C>0. Persona que disfruta mucho de situaciones vertiginosas. ")
221
+ end
222
+
223
+ if sumdet("C'")>det['FC']*0.5+det['CF']+det['C']*1.5
224
+ salida.push("SumC':SumPondC hacia derecha. Se internaliza en demasía la descarga afectiva. Posible somatización")
225
+ end
226
+
227
+ if self.Afr<0.53
228
+ salida.push("Afr disminuido. Evitación de situaciones emocionales. Trabaja mejor en ambientes sin carga emocional")
229
+ elsif self.Afr>0.85
230
+ salida.push("Afr umentado. Atracción por estimulación emocional. Trabaja mejor en ambientes cargados afectivamente.")
231
+ else
232
+ salida.push("Afr normal. Interés normal por estimulación emocional.")
233
+ end
234
+
235
+ if complj_r<0.2 and self.L<=1.51
236
+ salida.push("Compl/r dism y L normal. Tiende a simplificar las situaciones, aunque no de manera excesiva")
237
+ elsif complj_r<0.2 and self.L> 1.51
238
+ salida.push("Compl/r dism y L alto. Limitación de tipo intelectual o tendencia a simplificar demasiado la situación")
239
+ elsif complj_r>0.25 and self.EA>7
240
+ salida.push("Compl/r alta y muchos recursos. Buen signo. Tiene capacidad para considerar de manera integral los estímulos y buena capacidad para elaborarlos ")
241
+ elsif complj_r>0.25 and self.EA<2
242
+ salida.push("Compl/r alta y pocos recursos. Mal signo. Puede tener dificultad para controlar y puede desorganizarse")
243
+ else
244
+ salida.push("complejas normal. Capacidad normal para manejar de forma integral los estímulos")
245
+ end
246
+
247
+ if _l['S'].to_f/self.R>0.2
248
+ salida.push("S aumentado. Vigilar si es autonomía u oposicionismo")
249
+ end
250
+ #
251
+ # PROCESAMIENTO
252
+ #
253
+
254
+ salida.push('{\b Procesamiento}')
255
+ salida.push(respuestatriple(self.Zf,norma(9.22),norma(14.4),
256
+ "Zf dism. Sujeto con poco interés por organizar. Puede ser por limitación intelectual o depresión",
257
+ "Zf alto. Alto nivel de motivación , que dedican al proceso de información más energía que el promedio",
258
+ "Zf normal. Motivación e interés normal para organizar elementos del entorno")
259
+ )
260
+
261
+ if _l['W'].to_f/self.R>0.50
262
+ salida.push("W aumentadas. Gran interés por tareas de análisis y por organizar los componentes del mundo interno en un todo significativo")
263
+ elsif _l['W'].to_f/self.R<0.15
264
+ salida.push("W disminuidas. Poco interés en tareas de análisis y dificultad para integrar los elementos de su mundo interno en un todo significativo. Revisar síntomas depresivos")
265
+ end
266
+
267
+ if _l['D'].to_f/self.R>0.70
268
+ salida.push("D aumentadas. Mucho apego a lo práctico")
269
+ elsif _l['D'].to_f/self.R<0.30
270
+ salida.push("D disminuidas. Pierde sentido de lo práctico. Vigilar W y Dd")
271
+ if _l['W'].to_f/self.R>0.50
272
+ salida.push("W aum. Pierde sentido de lo práctico por irse en la volada")
273
+ elsif _l['W'].to_f/self.R>0.50
274
+ salida.push("Dd aum . Pierde sentido de lo práctico por el detalle")
275
+
276
+ else
277
+ salida.push("Revisa bien los datos, que no pude cachar el mote")
278
+ end
279
+ end
280
+
281
+ if _l['Dd'].to_f/self.R>40
282
+ salida.push("Dd aumentadas. Muy apegado a la exactitud. temor a cometer equivocaciones. Personas inseguras que se van por las ramas")
283
+ elsif _l['Dd'].to_f/self.R<0.05
284
+ salida.push("Dd disminuidas. No muy preocupada por la exactitud")
285
+ end
286
+
287
+ rel_aspir=_l['W'].to_f/sumdet('M')
288
+
289
+ if (rel_aspir> 2.5)
290
+ salida.push("W*2>M ("+rel_aspir.to_s+"); Aspiraciones sobre los recursos. El sujeto se puede frustrar")
291
+ elsif (rel_aspir<1.5)
292
+ salida.push("W*2<M ("+rel_aspir.to_s+"); Aspiraciones bajo los recursos. Los gasta en fantasías, vigilar pasividad")
293
+ else
294
+ salida.push("W*2=M ("+rel_aspir.to_s+"); Aspiraciones adecuadas a los recursos")
295
+ end
296
+ rel_teor=_l['W'].to_f / _l['D'].to_f
297
+ if (rel_teor> 2.5)
298
+ salida.push("Teórico ("+rel_teor.to_s+")")
299
+ elsif (rel_teor<1.5)
300
+ salida.push("Práctico ("+rel_teor.to_s+")")
301
+ else
302
+ salida.push("Equilibrio Teórico práctico ("+rel_teor.to_s+")")
303
+ end
304
+
305
+ if zsum<15
306
+ salida.push("ZSum<15. Poca interés en integrar")
307
+ elsif zsum>32
308
+ salida.push("ZSum>32. Alto interés en integrar")
309
+ else
310
+ salida.push("ZSum normal. Interés normal en integrar estímulos")
311
+ end
312
+ #
313
+ # INTERPERSONAL
314
+ #
315
+
316
+ salida.push('{\b Interpersonal}')
317
+ if _ccee['COP']==0 and _ccee['AG']==0
318
+ salida.push("COP y AG=0. Poco interés en relaciones interpersonales")
319
+ end
320
+ salida.push("Fd>0. Rasgos incrementados de dependencia") if _c['Fd']>0
321
+ if aislamiento_r>0.29
322
+ salida.push("Aisl>0.29. Sujeto menos implicados que el resto en lo social")
323
+ else
324
+ salida.push("Aisl normal. Sujeto implicado en lo social")
325
+ end
326
+
327
+ # a (H+Dh:A+Ad)
328
+ rel=(_c['H']+_c['Hd']).to_f/(_c['A']+_c['Ad'])
329
+ if rel<0.3
330
+ salida.push("H+Dh:A+Ad hacia animal. Persona se está aislando. No tiene interés en otros")
331
+ elsif rel>0.5
332
+ salida.push("H+Dh:A+Ad hacia humano. Persona con interés exagerado por relacionarse")
333
+ else
334
+ salida.push("H+Dh:A+Ad equilibrado. Persona con interés normal por relacionarse")
335
+ end
336
+ rel=(_c['H']+_c['A']).to_f/(_c['Hd']+_c['Ad'])
337
+ if rel<0.3
338
+ salida.push("H+A:Hd+Ad hacia parcial. Se relaciona con objetos parciales, disocia, escinde, se relaciona con partes del otro")
339
+ else
340
+ salida.push("H+A:Hd+Ad hacia total. Persona se relaciona con objetos totales")
341
+ end
342
+
343
+ if (_c['H']+_c['Hd']) >= (_c['(H)']+_c['(Hd)'])*3
344
+ salida.push("H+Hd>(H)+(hd)*3: Se relaciona a nivel concreto")
345
+ else
346
+ salida.push("H+Hd<(H)+(hd)*3: Se relaciona en la fantasía")
347
+ end
348
+
349
+ if porcentaje(_c['H']+_c['Hd'])>=0.2
350
+ salida.push("H+Hd>=20%. Capacidad e interés en relacionarse con otros")
351
+ else
352
+ salida.push("H+Hd<20%. Poca capacidad e interés en relacionarse con otros")
353
+ end
354
+ if (_c['Hd']+_c['(H)']+_c['(Hd)'])*3>_c['H']
355
+ salida.push("H<Hd+(H)+(Hd)*3: Problemas en interpersonal. Revisar protocolo para ver que pasa.")
356
+ salida.push("Puede que no sea válido, porque faltan humanos") if (_c['Hd']+_c['(H)']+_c['(Hd)']+_c['H'])<3
357
+ end
358
+ if _c['Hd']*3>_c['H']
359
+ salida.push("H<Hd*3: Angustia, depresión y fobia social. Aumenta si los Hd son perfiles de caras")
360
+ end
361
+
362
+ if a_porciento>0.47
363
+ salida.push("A% aumentado. Sujeto inmaduro, rutinario, predecible")
364
+ elsif a_porciento<0.31
365
+ salida.push("A% disminuido. Sujeto Flexible. Si es muy bajo, poco comprometido")
366
+ else
367
+ salida.push("A% normal. Buena adaptación social")
368
+ end
369
+
370
+ if @tipos_contenidos>=5
371
+ salida.push("Tipos de contenido mayor a 5. Flexibilidad intelectual y distintos intereses")
372
+ else
373
+ salida.push("Tipos de contenido menor a 5. Poca flexibilidad intelectual y pocos intereses")
374
+ end
375
+ salida.push('{\b Autopercepción}')
376
+ if autocentracion<0.32
377
+ salida.push("ego disminuido. Tiene dificultades para tomarse a sí mismo como centro de interes")
378
+ elsif autocentracion>0.46
379
+ salida.push("ego aumentado. Sujeto tiende a tomarse como centro de sus preocupaciones. Privilegia mucho su propio punto de vista. Le cuesta ser flexibles")
380
+ else
381
+ salida.push("ego normal. Capacidad normal para ser el eje de su propia atención")
382
+ end
383
+ if sumdet("V")>norma(0.84)
384
+ salida.push("Vista aumentado. Instrospección dolorosa. El sujeto se mira a si mismo con culpa")
385
+ end
386
+ if sumdet("FD")>norma(2.03)
387
+ salida.push("FD aumentada. Anormal distanciamiento del yo. Si está en terapia, es normal")
388
+ end
389
+ salida.push("Xy+An>2. Si no hay problemas físicos, trastornos de autoimagen") if an_xy>2
390
+ salida.push("MOR>2. Pesimismo") if _ccee['MOR']>2
391
+
392
+ if _c['H']>_c['(H)']+_c['Hd']+_c['(Hd)']
393
+ salida.push("H>(H)+Hd+(Hd). Percepción realista de sí mismo")
394
+ else
395
+ salida.push("H<(H)+Hd+(Hd). Percepción no realista de sí mismo")
396
+ end
397
+
398
+ #
399
+ # POTENCIAL INTELECTUAL
400
+ #
401
+ salida.push('{\b Potencial intelectual}')
402
+ salida.push("Revisa que los valores estén sobre, en o bajo el promedio")
403
+ salida.push(respuestatriple(self.R, 18.44, 26.9,
404
+ "R disminuida. Signo de potencial bajo",
405
+ "R aumentada. Signo de potencial superior",
406
+ "R normal. Signo de potencial normal"))
407
+ salida.push(respuestatriple(fmas, 0.54, 0.88,
408
+ "F+% disminuido. Signo de potencial bajo",
409
+ "F+% aumentado. Signo de potencial normal, pero posiblemente bajo",
410
+ "F+% normal. Signo de potencial normal o superior"))
411
+ salida.push(respuestatriple(xmas, 0.71, 0.87,
412
+ "X+% disminuido. Signo de potencial bajo",
413
+ "X+% aumentado. Signo de potencial normal, pero posiblemente bajo",
414
+ "X+% normal. Signo de potencial normal o superior"))
415
+ salida.push(respuestatriple(@frecuencias['dq']['+'], 5.15,9.47,
416
+ "DQ+ disminuido. Signo de potencial normal o bajo",
417
+ "DQ+ aumentado. Signo de potencial alto",
418
+ "DQ+ normal. Signo de potencial normal"))
419
+ salida.push(respuestatriple(@frecuencias['fqx']['+'], 0,1.82,
420
+ "FQX+ disminuido. Signo de potencial normal o bajo",
421
+ "FQX+ aumentado. Signo de potencial alto",
422
+ "FQX+ normal. Signo de potencial normal"))
423
+ salida.push(respuestatriple(@frecuencias['dq']['v'], 0.04,2.56,
424
+ "DQv disminuido. Signo de potencial normal",
425
+ "DQv aumentado. Signo de potencial bajo",
426
+ "DQv normal. Signo de potencial normal"))
427
+ salida.push(respuestatriple(@frecuencias['dq']['v/+'], 0,1.07,
428
+ "DQv disminuido. Signo de potencial normal",
429
+ "DQv aumentado. Signo de potencial bajo",
430
+ "DQv normal. Signo de potencial normal"))
431
+
432
+ #salida.collect {|a|
433
+ # Iconv.conv('ISO-8859-1','UTF-8',a)
434
+ #}
435
+ salida
436
+ end
437
+ end
438
+ end
@@ -0,0 +1,36 @@
1
+ # encoding: UTF-8
2
+ module Exner
3
+ class Rorschach
4
+ public
5
+ def obs(lista=false)
6
+ total=0
7
+ cons={
8
+ 1=>localizaciones['Dd']>3,
9
+ 2=>(self.Zf>12),
10
+ 3=>(self.Zd>3),
11
+ 4=>(@populares>7),
12
+ 5=>(_f['fqx']['+']>1),
13
+
14
+ }.each {|n,r|
15
+ total+=1 if r
16
+ }
17
+ lista ? cons : total
18
+ end
19
+ def obs_si
20
+ return (obs_si_bool) ? 'Sí':'No'
21
+ end
22
+ def obs_si_bool
23
+ return true if obs==5
24
+ return true if (obs>=3 and xmas>0.89)
25
+ return true if (_f['fqx']['+']>3 and xmas>0.89)
26
+ l=obs(true)
27
+
28
+ return true if ((bi(l[1])+bi(l[2])+bi(l[3])+bi(l[4]))>=2 and _f['fqx']['+']>3)
29
+ false
30
+ end
31
+ private
32
+ def bi(v)
33
+ v ? 1: 0
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,44 @@
1
+ # encoding: UTF-8
2
+ module Exner
3
+ class Rorschach
4
+ public
5
+ def scon(lista=false)
6
+ det=@frecuencias['determinantes']
7
+ total=0
8
+ cons={
9
+ 1=>sumdet('V')+det['FD']>2,
10
+ 2=>scon_col_sombra>0,
11
+ 3=>(aislamiento_r<0.31 or aislamiento_r>0.44),
12
+ 4=>@frecuencias['ccee']['MOR']>3,
13
+ 5=> (self.Zd > 3.5 or self.Zd < -3.5) ,
14
+ 6=>es>self.EA,
15
+ 7=>det['CF']+det['C']>det['FC'],
16
+ 8=>xmas<0.7,
17
+ 9=>localizaciones['S']>3,
18
+ 10=>(@populares<3 or @populares>8),
19
+ 11=>@frecuencias['contenidos']['H']<2,
20
+ 12 => self.R<17
21
+ }.each {|n,r|
22
+ total+=1 if r
23
+ }
24
+ lista ? cons : total
25
+
26
+ end
27
+ def scon_si
28
+ return (scon>7) ? 'Sí':'No'
29
+ end
30
+ private
31
+ def scon_col_sombra
32
+ suma=0
33
+ @respuestas.each {|n,resp|
34
+ cond1=cond2=false
35
+ resp.determinantes.each {|d|
36
+ cond1=true if d=~/Y/
37
+ cond2=true if d=='FC' or d=='CF' or d=='C'
38
+ }
39
+ suma=+1 if cond1 and cond2
40
+ }
41
+ suma
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: UTF-8
2
+ module Exner
3
+ class Rorschach
4
+ public
5
+ def sczi(lista=false)
6
+ det=@frecuencias['determinantes']
7
+ fq=@frecuencias['fqx']
8
+ total=0
9
+ cons={
10
+ 1=>((xmas<0.61 and smenos<0.41) or xmas<0.50),
11
+ 2=>xmenos>0.29,
12
+ 3=>((fq['-']>fq['u'])or(fq['-']>fq['o']+fq['+'])),
13
+ 4=>(nvl2>1 and @frecuencias['ccee']['FABCOM2']>0),
14
+ 5=>(self.SumBr6>6 or self.SumPon6>17),
15
+ 6=>(@frecuencias['mq']['-']>1 or xmenos>0.4),
16
+ }.each {|n,r|
17
+ total+=1 if r
18
+ }
19
+ lista ? cons : total
20
+ end
21
+ def sczi_si
22
+ return (sczi > 3) ? 'Sí':'No'
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,69 @@
1
+ require 'erb'
2
+ module Exner
3
+ module Rtf
4
+ module Rorschach
5
+ def _dcp(c)
6
+ _ds[c.gsub('C',"C'")]
7
+ end
8
+ def _cd(c)
9
+ c+" = "+_f['contenidos_1'][c].to_s+","+_f['contenidos_2'][c].to_s
10
+ end
11
+ def detRtf
12
+ s=""
13
+ @respuestas.each {|n,r|
14
+ s+="\n\\par "+r.determinantes.join('.')+r.fq if r.determinantes.size>1
15
+ }
16
+ s
17
+ end
18
+ def _ds
19
+ determinantes_simples
20
+ end
21
+ def superscript(a)
22
+ '{{\*\updnprop5801}\up8 '+a+'}'
23
+ end
24
+ def _res_enf
25
+ a=resumen_del_enfoque.collect {|lam|
26
+ Exner.a_romano(lam[0])+":"+lam[1].join(',')
27
+ }.join("\n\\par ")+"\n"
28
+ end
29
+ def _lq(tipo)
30
+ s=''
31
+ Exner::FQ_VALIDAS.each {|fq|
32
+ s+=fq+":"+_f[tipo][fq].to_s+"\n\\par "
33
+ }
34
+ s
35
+ end
36
+ def ldq
37
+ s=''
38
+ Exner::DQ_VALIDAS.each {|dq|
39
+ s+=dq+":"+_f['dq'][dq].to_s+"\n\\par "
40
+ }
41
+ s
42
+ end
43
+ def aParrafos(array)
44
+ array.collect {|x|
45
+ "\n\\par "+x.to_s
46
+ }
47
+ end
48
+ def self.process(text)
49
+ t=Exner::Rorschach.new
50
+ t.open_stream(text)
51
+ t.procesar
52
+ t.extend(Exner::Rtf::Rorschach)
53
+ template=File.read(Exner.dir_data+'/sumario_Rorschach.rtf')
54
+ zz=t
55
+ ERB.new(template).result(binding)
56
+ end
57
+ end
58
+ end
59
+ end
60
+ #$t= Exner::Rorschach.new
61
+ #$t.open_file(ARGV[0])
62
+ #$t.procesar
63
+ #$t.extend(ExnerRtf)
64
+ #template=''
65
+ #File.open(Exner.dir_root+'/sumario_Rorschach.rtf','r') {|afile| afile.each_line #{|l|
66
+ # template+=l
67
+ #
68
+ #}}
69
+ #puts ERB.new(template).result
@@ -0,0 +1,59 @@
1
+ require 'erb'
2
+ module Exner
3
+ module Rtf
4
+ module Zulliger
5
+ def _dcp(c)
6
+ _ds[c.gsub('C',"C'")]
7
+ end
8
+ def _cd(c)
9
+ c+" = "+_f['contenidos_1'][c].to_s+","+_f['contenidos_2'][c].to_s
10
+ end
11
+ def detRtf
12
+ s=""
13
+ @respuestas.each {|n,r|
14
+ s+="\n\\par "+r.determinantes.join('.')+r.fq if r.determinantes.size>1
15
+ }
16
+ s
17
+ end
18
+ def _ds
19
+ determinantes_simples
20
+ end
21
+ def superscript(a)
22
+ '{{\*\updnprop5801}\up8 '+a+'}'
23
+ end
24
+ def _res_enf
25
+ a=resumen_del_enfoque.collect {|lam|
26
+ Exner.a_romano(lam[0])+":"+lam[1].join(',')
27
+ }.join("\n\\par ")+"\n"
28
+ end
29
+ def _lq(tipo)
30
+ s=''
31
+ Exner::FQ_VALIDAS.each {|fq|
32
+ s+=fq+":"+_f[tipo][fq].to_s+"\n\\par "
33
+ }
34
+ s
35
+ end
36
+ def ldq
37
+ s=''
38
+ Exner::DQ_VALIDAS.each {|dq|
39
+ s+=dq+":"+_f['dq'][dq].to_s+"\n\\par "
40
+ }
41
+ s
42
+ end
43
+ def aParrafos(array)
44
+ array.collect {|x|
45
+ "\n\\par "+x.to_s
46
+ }.join("")
47
+ end
48
+ def self.process(text)
49
+ t=Exner::Zulliger.new
50
+ t.open_stream(text)
51
+ t.procesar
52
+ t.extend(Exner::Rtf::Zulliger)
53
+ template=File.read(Exner.dir_data+'/sumario_Zulliger.rtf')
54
+ zz=t
55
+ ERB.new(template).result(binding)
56
+ end
57
+ end
58
+ end
59
+ end