Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarte la publicidad relacionada con tus preferencias mediante el análisis de tus hábitos de navegación. Si continúas navegando, consideramos que aceptas su uso. Puedes cambiar la configuración y obtener más información consultando nuestra Política de Cookies.

Cabecera Mutual Informa

MUTUAL MÉDICA

Mutual Informa

 

Boletin 87

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> xPathSelector.selectSingleNode(rootElement)  [in template "20116#20152#244491" at line 180, column 28]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign imagen = xPathSelector.select...  [in template "20116#20152#244491" at line 180, column 9]
----
1<style> 
2#articulos { 
3    padding-left: 15%; 
4    padding-right: 15%; 
5    padding-bottom: 15%; 
6
7.h2 .header-title { display: none; } 
8.h2 .header-back-to { display: none; } 
9#categoryName { 
10    font-family: 'TradeGothic-B',sans-serif; 
11    font-size: 38px; 
12    font-weight: 300; 
13    color: #006699; 
14    padding-left: 15px; 
15    padding-right: 15px; 
16
17.categoria { 
18    background-color: #EFFAFF; 
19    margin-bottom: 2% !important; 
20    margin-top: 3%; 
21    padding: 1% 5%; 
22    margin: 1px 0; 
23
24.titulo { 
25    font-size: 19px; 
26    color: var(--blue-medium); 
27    font-family: sans-serif; 
28
29.detalle { 
30    font-size: 15px; 
31    font: 400 15px/1.8 "OpenSans",sans-serif; 
32    padding-top: 20px; 
33    white-space: initial; 
34
35.enlace { 
36    text-decoration: underline; 
37    color: #29bef8; 
38
39hr { border-top: 1px solid !important;} 
40.separador { 
41    padding-left: 3%; 
42    padding-right: 3%; 
43    padding-bottom: 25px; 
44
45.imagen { 
46    float: left; 
47    padding-top: 20px; 
48    padding-bottom: 20px; 
49
50.enlance-utilmo { 
51    display: block; 
52    padding-bottom: 30px; 
53
54.espacio { 
55    padding-top: 20px; 
56    margin-top: 70px; 
57    padding-bottom: 30px; 
58
59.articulo { 
60    padding-left: 5%; 
61    padding-right: 5%; 
62
63.text-center {text-align: center;} 
64.text-right{text-align: right;} 
65.texto-izquierda {font-size: 25px; color: #0477b9;} 
66.table.no-border tr td, .table.no-border tr th { 
67    border-width: 0; 
68
69.cabecera { 
70    padding-left: 5.0%; 
71    padding-right: 4.5%; 
72    font-size: 25px; 
73    color: #0477b9; 
74
75</style> 
76 
77<#macro printCategory categoryTitle> 
78    <div class="categoria"> 
79        <div id="categoryName">${categoryTitle}</div> 
80    </div> 
81</#macro> 
82 
83<#macro printArticle article first readmore> 
84    <div class="articulo"> 
85        <div class="row"> 
86            <#if first == "false"> 
87                <div class="separador col-xs-10"> 
88                    <hr> 
89                </div> 
90            </#if> 
91            <div class="col-xs-10"> 
92                <#if readmore == "0"> 
93                    <div class="detalle col-xs-12"> 
94                        ${article.detalle} 
95                    </div> 
96                <#else>                
97                    <div class="titulo col-xs-12"> 
98                        ${article.title} 
99                    </div> 
100                    <div class="detalle col-xs-12"> 
101                        ${article.description} 
102                    </div>                     
103                </#if> 
104                <#if article.image?trim != '' > 
105                    <div class="col-xs-12 imagen"> 
106                        <img src='${article.image}' height='auto' width='457' /> 
107                    </div> 
108                <#else> 
109                    <div class="espacio"></div> 
110                </#if> 
111                 
112                    <div class="enlace enlance-utilmo col-xs-12"> 
113                    <#if readmore == "1"> 
114                        <a href="${article.url}"><@liferay.language key="read-more" /></a> 
115                    </#if> 
116                    </div> 
117                 
118            </div> 
119        </div> 
120    </div> 
121</#macro> 
122 
123<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
124<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") /> 
125<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
126<#assign assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
127<#assign assetCategoryPropertyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryPropertyLocalService") /> 
128<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
129<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
130<#assign layout = themeDisplay.getLayout() /> 
131<#assign display = themeDisplay.getPortletDisplay() /> 
132<#assign portletId = display.getId() /> 
133<#assign portletPreferences = themeDisplay.getStrictLayoutPortletSetup(layout, portletId) /> 
134<#assign currentArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) /> 
135<#assign document = saxReaderUtil.read(currentArticle.getContentByLocale(locale)) /> 
136<#assign rootElement = document.getRootElement() /> 
137<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='codigo']") /> 
138<#assign codigo =  xPathSelector.selectSingleNode(rootElement).getStringValue() /> 
139<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='fecha']") /> 
140<#assign fecha =  xPathSelector.selectSingleNode(rootElement).getStringValue() /> 
141         
142         
143<#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey() /> 
144<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 
145<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 
146<#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) /> 
147<#assign languageId = request['theme-display']['language-id'] /> 
148<#assign categories = assetCategoryService.getCategories() /> 
149<#assign containsTag = '' /> 
150<#assign notContainsTag = '' /> 
151<#if portletPreferences?has_content> 
152    <#assign keys = portletPreferences.getMap() /> 
153    <#assign tag0 = portletPreferences.getValue('queryValues0','') /> 
154    <#assign tag0Show = portletPreferences.getValue('queryContains0','') /> 
155    <#assign tag1 = portletPreferences.getValue('queryValues1','') /> 
156    <#assign tag1Show = portletPreferences.getValue('queryContains1','') /> 
157</#if> 
158<#--Hacemos un json array con lo que necesitamos de los articulos --> 
159<#assign articulosJsonArray = [] > 
160<#list currentArticleRelatedLinks as related_entry> 
161    <#assign relatedAssetEntryId = related_entry.getEntryId2() /> 
162    <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) /> 
163    <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() /> 
164    <#assign relatedArticle = journalArticleLocalService.getLatestArticle(relatedAssetEntryPrimKey) /> 
165    <#assign relatedArticleId = relatedArticle.getArticleId() /> 
166    <#assign relatedCategories = assetCategoryService.getCategories("com.liferay.journal.model.JournalArticle", relatedArticle.getResourcePrimKey()) /> 
167    <#assign asset = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle', relatedArticle.getResourcePrimKey()) > 
168    <#assign tags = "" > 
169    <#assign add = true > 
170    <#list asset.getTags() as tag> 
171        <#assign tags = tags + tag.name + ";" > 
172        <#if (tag.name == tag0 && tag0Show == "false") || (tag.name == tag1 && tag1Show == "false") > 
173            <#assign add = false > 
174        </#if> 
175    </#list> 
176    <#if add == true > 
177        <#assign document = saxReaderUtil.read(relatedArticle.getContentByLocale(locale.toString())) /> 
178        <#assign rootElement = document.getRootElement() /> 
179        <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Imagen']") /> 
180        <#assign imagen =  xPathSelector.selectSingleNode(rootElement).getStringValue() /> 
181         
182        <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Detalle']") /> 
183        <#assign detalle =  xPathSelector.selectSingleNode(rootElement).getStringValue() /> 
184        <#assign linea = {"id" : relatedArticleId, "resourcePrimKey" : relatedArticle.getResourcePrimKey(), "title" : relatedArticle.getTitle(languageId), "description" : relatedArticle.getDescription(languageId), "image" : imagen, "detalle" : detalle, "url" : relatedArticle.getUrlTitle(), "priority" : '${relatedAssetEntry.getPriority()}', "tags" : tags }> 
185        <#assign articulosJsonArray = articulosJsonArray + [linea]> 
186    </#if> 
187</#list> 
188<#assign articulos = [] > 
189<#list articulosJsonArray?sort_by("priority")?reverse as i> 
190    <#assign linea = {"id" : i.id, "resourcePrimKey" : i.resourcePrimKey, "title" : i.title, "description" : i.description, "image" : i.image, "detalle" : i.detalle, "url" : i.url, "priority" : i.priority, "tags" : i.tags }> 
191    <#assign articulos = articulos + [linea]> 
192</#list> 
193<#--Hacemos un json array con lo que necesitamos de las categorias--> 
194<#assign categoriesJsonArray = []> 
195<#list categories as cat> 
196    <#assign prioridad = 0> 
197    <#assign readmore = "1"> 
198    <#assign properties = assetCategoryPropertyService.getCategoryProperties(cat.getCategoryId()) /> 
199    <#list properties as prop> 
200        <#if prop.getKey() == "prioridad"> 
201            <#assign prioridad = prop.getValue()> 
202        </#if> 
203        <#if prop.getKey() == "link-leer-mas"> 
204            <#assign readmore = prop.getValue()> 
205        </#if> 
206         
207    </#list> 
208    <#assign linea = {"id" : cat.getCategoryId(), "title" : cat.getTitle(languageId), "priority" : '${prioridad}', "readmore" : '${readmore}' }> 
209    <#assign categoriesJsonArray = categoriesJsonArray + [linea]> 
210</#list> 
211<#--Ordenamos las categorias por su prioridad--> 
212<#assign categories= []> 
213<#list categoriesJsonArray?sort_by("priority")?reverse as i> 
214    <#assign linea = {"id" : i.id, "title" : i.title, "priority" : i.priority, "readmore" : i.readmore}> 
215    <#assign categories = categories + [linea]> 
216</#list> 
217<div class="container"> 
218    <div class="row"> 
219        <div class="col-md-10 col-md-offset-1"> 
220            <div class="noticias-header">  
221                <div class="text-left"><h3>${currentArticle.getDescription(locale)}</h3></div>  
222                <div class="text-center">${codigo}</div>  
223                <div class="text-right text-slim">${fecha}</div>  
224            </div> 
225        </div> 
226    </div> 
227</div> 
228<#-- 
229La cabecera de la primera categoría no se imprime. 
230Después de imprimir la cabecera, se imprimen los articulos de dicha categría. 
231Las categorías están ordenadas por prioridad, dejando normalmente la categoría genérica la primera. 
232Los artículos se imprimen por prioridad en su categoría. 
233 --> 
234<#assign firstCategoryPrinted = false /> 
235<div id="articulos"> 
236    <#list categories as currentCategory> 
237        <#assign currentCategoryPrinted = false /> 
238        <#assign firstArticlePrinted = "true" /> 
239        <#list articulos as articulo > 
240            <#assign relatedCategories = assetCategoryService.getCategories("com.liferay.journal.model.JournalArticle", articulo.resourcePrimKey) /> 
241            <#list relatedCategories as relatedCategory> 
242                <#if relatedCategory.getCategoryId() == currentCategory.id > 
243                    <#if currentCategoryPrinted == false && firstCategoryPrinted == true> 
244                        <#assign currentCategoryPrinted = true /> 
245                        <@printCategory categoryTitle=currentCategory.title /> 
246                    </#if> 
247                    <@printArticle article=articulo first=firstArticlePrinted readmore=currentCategory.readmore/>                     
248                    <#assign firstArticlePrinted = "false" /> 
249                </#if> 
250            </#list> 
251        </#list> 
252        <#assign firstCategoryPrinted = true /> 
253    </#list> 
254</div> 

Publicador de contenidos

Predominio de Cardiología entre los proyectos y artículos presentados a los Premios a la Investigación

El Jurado de los Premios a la Investigación de Mutual Médica, presidido por la Dra. M. Pilar Tornos, basa su decisión en la originalidad de los trabajos, en la profesionalidad del equipo de...

¿Por qué recomendaría Mutual Médica a sus colegiados?

Presidente del Colegio Oficial de Médicos de Ciudad Real, el Dr. José Molina Cabildo

¡Yo lo tengo clarísimo! Contrato el Seguro de Jubilación Ahorro Fiscal 105

Este año, el Seguro de Jubilación Ahorro Fiscal 105 de Mutual Médica te da un 2,30% de interés bruto anual garantizado. Elige la máxima rentabilidad para tu futuro.

La mejor foto de mi jubilación, con el Seguro de Jubilación Ahorro Fiscal 105

¿Tienes un pequeño capital y estás pensando en qué hacer con él antes de final de año? Inviértelo en tu jubilación y te podrás desgravar el 100% de las aportaciones en la Declaración de la Renta.

Buscamos dibujo para la felicitación navideña de la entidad

Llega el XIV Concurso de Dibujo Navidad'18 de Mutual Médica. Si tienes entre 3 y 12 años y eres hijo o nieto de un médico mutualista, puedes participar. Tienes tiempo hasta el 19 de noviembre.

La voz de los graduados en Medicina - Entrevistas Promoción 2018

Mutual Médica colabora con los estudiantes de último curso de Medicina y los acompaña en sus actos de graduación, uno de los mejores momentos de su vida profesional. La entidad ha entrevistado a...

20 estudiantes de Medicina podrán continuar su carrera gracias al compromiso de entidades y asociaciones profesionales

El Consejo Estatal de Estudiantes de Medicina (CEEM), la Fundación para la Protección Social de la Organización Médica Colegial (FPSOMC) y la Fundación Mutual Médica suscribieron hace poco un...

La voz de los graduados en Medicina - Promoción 2018

Mutual Médica colabora con los estudiantes de último curso de Medicina y los acompaña en sus actos de graduación, uno de los mejores momentos de su vida profesional.

Ya puedes consultar la guía para médicos residentes editada gracias a la colaboración de Mutual Médica con la OMC? Descárgatela

Ya puedes consultar la guía para médicos residentes editada gracias a la colaboración de...

¿Sabes cómo protegemos tus datos personales en Mutual Médica?

Te explicamos de manera ágil y sencilla cómo estamos aplicando la nueva Ley de Protección de Datos en beneficio del médico.

Las cifras del primer semestre del año: 6,5% de incremento en cuotas

Los resultados financieros de la mutualidad siguen la tendencia de mejora de años anteriores.

Asamblea 2018: más de 57.900 mutualistas confían en su mutualidad

El presidente de Mutual Médica, el Dr. Luis A. Morales, se mostró muy satisfecho con este ejercicio 2017, año de grandes cambios para la entidad.

Te mantenemos activo: cubre las guardias MIR que tú decidas

Sabes que existe el riesgo de perder los ingresos que obtienes a través de tus guardias como residente. No pongas en peligro tus proyectos del momento: viajes, másteres… Nuevo Seguro de Guardias...

Nuevo seguro para los médicos que obtienen parte de sus ingresos con las guardias médicas y quieren cubrirlas para cumplir con sus pagos mensuales

Un seguro que cubre al médico desde el minuto 1 cuando no pueda realizar sus guardias, asegurándole una renta diaria por la pérdida de ingresos en caso de enfermedad o accidente, para seguir...

Mutual Médica se ha adaptado a la nueva normativa de protección de datos

El 25 de mayo entró en vigor el Reglamento General de Protección de Datos, normativa que unifica criterios en la materia a nivel europeo.