exner 1.0.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.
- data/.autotest +23 -0
- data/.gemtest +0 -0
- data/History.txt +4 -0
- data/Manifest.txt +42 -0
- data/README.txt +49 -0
- data/Rakefile +19 -0
- data/bin/rorschach +4 -0
- data/bin/zulliger +4 -0
- data/data/.~lock.sumario_Zulliger.rtf# +1 -0
- data/data/Rorschach_Zest.txt +50 -0
- data/data/Zulliger_Zest.txt +50 -0
- data/data/sumario.rtf +240 -0
- data/data/sumario2.rtf +271 -0
- data/data/sumario_Rorschach.rtf +233 -0
- data/data/sumario_Zulliger.rtf +203 -0
- data/data/test_manchas.txt +16 -0
- data/data/zulli_test.txt +11 -0
- data/lib/exner/respuesta.rb +110 -0
- data/lib/exner/rorschach.rb +11 -0
- data/lib/exner/rorschach_plugins/cdi.rb +22 -0
- data/lib/exner/rorschach_plugins/depi.rb +38 -0
- data/lib/exner/rorschach_plugins/hvi.rb +25 -0
- data/lib/exner/rorschach_plugins/interpretacion.rb +438 -0
- data/lib/exner/rorschach_plugins/obs.rb +36 -0
- data/lib/exner/rorschach_plugins/scon.rb +44 -0
- data/lib/exner/rorschach_plugins/sczi.rb +25 -0
- data/lib/exner/rtf/rorschach.rb +69 -0
- data/lib/exner/rtf/zulliger.rb +59 -0
- data/lib/exner/rtf.rb +46 -0
- data/lib/exner/test_manchas.rb +445 -0
- data/lib/exner/zulliger.rb +26 -0
- data/lib/exner/zulliger_plugins/interpretacion.rb +328 -0
- data/lib/exner.rb +44 -0
- data/test/extras.rb +11 -0
- data/test/helpers_tests.rb +41 -0
- data/test/test_depi.rb +29 -0
- data/test/test_exner.rb +100 -0
- data/test/test_hvi.rb +33 -0
- data/test/test_obs.rb +29 -0
- data/test/test_rorschach.rb +1 -0
- data/test/test_scon.rb +34 -0
- data/test/test_sczi.rb +29 -0
- data/test/text_cdi.rb +28 -0
- data.tar.gz.sig +0 -0
- metadata +193 -0
- 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
|