Se ha producido un error al procesar la plantilla.
Java method "com.sun.proxy.$Proxy474.getHospitalMedicos(long)" threw an exception when invoked on com.sun.proxy.$Proxy474 object "com.liferay.ph.service.impl.MedicoLocalServiceImpl@37f42601"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign medicosHospital = medicoServi...  [in template "20115#20151#PLANTILLA_ESPECIALIDAD" at line 46, column 5]
----
1<#-- ID del contenido actual --> 
2<#assign journalArticleId = .vars['reserved-article-id'].data> 
3 
4<#--Se preparan las clases de utilidad --> 
5<#assign journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]> 
6<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]>  
7<#assign hospitalService = serviceLocator.findService("com.liferay.ph.service.HospitalLocalService")> 
8<#assign especialiadadService = serviceLocator.findService("com.liferay.ph.service.EspecialidadLocalService")> 
9<#assign medicoService = serviceLocator.findService("com.liferay.ph.service.MedicoLocalService")> 
10<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
11<#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/> 
12<#assign localizationUtil = serviceLocator.findService("com.liferay.portal.kernel.util.LocalizationUtil")/> 
13 
14 
15<#--Se obtienen las categorias del contenido, una de ellas es la del hospital al que pertenece el contenido especialidad --> 
16<#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/>  
17<#assign categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) >  
18 
19<#--Se recorrren las categorias buscando el objeto hospital de BBDD --> 
20<#assign hospital = ""> 
21<#list categoryList as categoryList> 
22        <#assign idCategoria = categoryList.getCategoryId() /> 
23         
24		<#--Se busca el hospital --> 
25		<#assign hospital = hospitalService.findHospitalByIdCategory(idCategoria)!"">  
26		<#--si existe se deja de buscar --> 
27		<#if hospital?has_content> 
28            <#break> 
29        </#if> 
30</#list> 
31 
32<#--Se obtiene la Especialidad a partir de la URL SEO --> 
33<#assign urlCompleta = themeDisplay.getLayout().getFriendlyURL()> 
34 
35<#assign especialidadSEO = "/" + urlCompleta?keep_after_last("/")> 
36<#assign especialidadEnt = especialiadadService.findEspecialidadByIdUrlPagEspecialidad(especialidadSEO)!""> 
37 
38<#--Se obtiene la lista de medicos que ejercen la especialidad actual y estan en el hospital actual --> 
39<#assign medicosEspecialidad = "" > 
40<#assign medicosHospital = "" > 
41<#assign medicosShow = [] > 
42<#if especialidadEnt?has_content> 
43    <#assign medicosEspecialidad = medicoService.getEspecialidadMedicos(especialidadEnt.idEspecialidad)!""> 
44</#if> 
45<#if hospital?has_content> 
46    <#assign medicosHospital = medicoService.getHospitalMedicos(hospital.idHospital)!""> 
47</#if> 
48 
49<#if medicosEspecialidad?has_content && medicosHospital?has_content> 
50    <#list medicosEspecialidad as medicoE> 
51        <#list medicosHospital as medicoH> 
52            <#if medicoE.idMedico == medicoH.idMedico> 
53                <#assign medicosShow = medicosShow + [medicoH]> 
54                <#break> 
55            </#if> 
56        </#list> 
57    </#list> 
58</#if> 
59 
60<div class="container"> 
61	<!--Title--> 
62	<h1 class="c-title u-mt2 u-mt4@lg u-mb2"> 
63		${especialidad.getData()} 
64	</h1> 
65	<!--/.Title--> 
66	<!--Grid--> 
67	<div class="o-row"> 
68		<div class="o-col-12@xs o-col-9@lg u-d-block"> 
69			<section class="u-pb3 text-rich"> 
70				${informacionEspecialidad.getData()!''} 
71			</section> 
72			<#if medicosShow?has_content> 
73				<section class="u-pb3 u-pb4@lg"> 
74					<h2 class="c-title c-title--tertiary u-mb2"> 
75						${languageUtil.get(locale, "ficha-especialidad-equipo-medico")} 
76					</h2> 
77					<!--Grid slider--> 
78					<ul class="lightSlider-item" data-slide="3"> 
79                        <#assign medUrl = ""> 
80						<#list medicosShow as medico> 
81							<#--Se obtiene el contenido web del medico y el layout de la pagina detalle --> 
82							<#assign pagMedico = layoutLocalService.getLayout(medico.idPagMedico?number)> 
83							<#assign contMedico = journalArticleService.getLatestArticle(medico.idContenidoMedico)/>	 
84							<#assign docXml = saxReaderUtil.read(contMedico.getContent()) />									 
85							<#assign nombre = docXml.valueOf("//dynamic-element[@name='nombre']/dynamic-content/text()") /> 
86							<#assign especialidadTexto = docXml.valueOf("//dynamic-element[@name='Especialidad']/dynamic-content/text()") /> 
87							<#assign hospitalesTrabaja = hospitalService.getMedicoHospitals(medico.idMedico)!"">  
88							<#assign imagen_listado = docXml.valueOf("//dynamic-element[@name='imagen']/dynamic-content/text()") /> 
89                            <#if imagen_listado?? && imagen_listado!=''> 
90                                <#assign jsonImagen = jsonFactoryUtil.createJSONObject(imagen_listado)> 
91                                <#assign imagenMedico = "/documents/"+ jsonImagen.groupId +"/" +jsonImagen.fileEntryId +"/"+ jsonImagen.name +"/"+jsonImagen.uuid > 
92                            <#else> 
93                                <#assign imagenMedico = "" > 
94                            </#if> 
95                            <#if locale != "es_ES"> 
96					            <#assign medUrl = "/"+locale.getLanguage() /> 
97					        </#if> 
98					        <#assign medUrl = medUrl + pagMedico.getFriendlyURL(locale) /> 
99							<li> 
100								<article> 
101									 
102									<a href="${medUrl}" class="o-doctor c-doctor"> 
103										<div class="o-doctor c-doctor"> 
104											<figure class="o-doctor__image"> 
105												<#if imagenMedico?? && imagenMedico != ""> 
106													<img src="${imagenMedico}" alt="${nombre}" /> 
107												</#if> 
108													 
109												<#if nombre != ""> 
110    												<figcaption class="o-doctor__caption c-doctor__caption"> 
111    													<span class="o-doctor__name c-doctor__name"> 
112    														${nombre} 
113    													</span> 
114    												</figcaption>    
115												</#if> 
116											</figure> 
117											<div class="o-doctor__inner c-doctor__inner"> 
118												<h3 class="c-doctor__doctor"> 
119													${nombre} 
120												</h3> 
121												<div class="o-doctor__info text-rich c-doctor__info"> 
122													<p>${especialidadTexto}</p> 
123													<#if hospitalesTrabaja?has_content> 
124														<ul> 
125															<#list hospitalesTrabaja as h>																		 
126																<li>${localizationUtil.getLocalization(h.nombre, locale)}</li>																		 
127															</#list> 
128														</ul> 
129													</#if> 
130												</div> 
131											</div> 
132										</div> 
133									</a> 
134								 
135								</article> 
136							</li> 
137							<#assign medUrl = ""> 
138						</#list> 
139					</ul> 
140					<!--/.Grid slider--> 
141				</section> 
142			</#if> 
143			 
144			<#if tecnicas.nombreTecnica.getSiblings()?has_content && (tecnicas.nombreTecnica.getSiblings()[0]).getData()?? && (tecnicas.nombreTecnica.getSiblings()[0]).getData() != ""> 
145				<section class="u-pb5 u-pb4@lg"> 
146					<h2 class="c-title c-title--tertiary u-mb2"> 
147						${tecnicas.getData()} 
148					</h2> 
149					<!--Accordion--> 
150					<ul class="c-accordion"> 
151						<#list tecnicas.nombreTecnica.getSiblings() as cur_tecnicas_nombreTecnica> 
152							<#if cur_tecnicas_nombreTecnica.getData()?has_content && cur_tecnicas_nombreTecnica.descripcionTecnica.getData()?has_content> 
153								<li class="c-accordion__item"> 
154									<a  class="o-accordion__link c-accordion__link js-open-accordion" aria-controls="content${cur_tecnicas_nombreTecnica?index}" aria-expanded="false"> 
155										${cur_tecnicas_nombreTecnica.getData()} 
156										<span class="c-accordion__arrow-space"></span> 
157										<span class="o-accordion__arrow c-accordion__arrow"></span> 
158									</a> 
159									<div class="c-accordion__content js-content-accordion text-rich" id="content${cur_tecnicas_nombreTecnica?index}" aria-hidden="true" role="region"> 
160										${cur_tecnicas_nombreTecnica.descripcionTecnica.getData()} 
161									</div> 
162								</li> 
163							</#if> 
164						</#list> 
165					</ul> 
166					<!--/.Accordion--> 
167				</section> 
168			</#if> 
169			 
170 
171			<#if nombreCita?has_content> 
172			<#if nombreCita.idCita?has_content && nombreCita.idCita.getData()?has_content> 
173			<#assign enlaceCita = "https://app.tuotempo.com/mop/index.php?dbName=" + nombreCita.getData() + "&activityid=" + nombreCita.idCita.getData() > 
174			 
175			<button class="o-appointment-single c-appointment-single align-items-center u-mb3 border-0" onclick="displayIframe('${enlaceCita}')"> 
176                        <i class="ibbc-icon-calendar c-appointment__icon mr-3"></i> 
177                        <div class="o-appointment-single__inner"> 
178                            <span class="c-appointment-single__text"> 
179                                Pedir Cita Online 
180                            </span> 
181                         
182                        </div> 
183            </button> 
184			<section class="container iframe-pide-cita-online" style='display: none;'> 
185                <h2 class="c-title c-title--tertiary u-mb2"> 
186                   ${languageUtil.get(locale, "pide-cita-online")} 
187                </h2> 
188                <div id='tuotempo'></div> 
189            </section>  
190 
191            <!--Appointment single--> 
192             
193	        </#if> 
194				 
195		    </#if> 
196		</div> 
197		 
198		<div class="o-col-12@xs o-col-3@lg u-d-block"> 
199			<aside> 
200				<#if unidadesEspeciales.getData()?has_content &&  
201					 unidadesEspeciales.imagenUnidadEspecial.getData()?? &&  
202					 unidadesEspeciales.imagenUnidadEspecial.getData() != "" &&  
203					 unidadesEspeciales.nombreUnidadEspecial.getData()?has_content &&  
204					 unidadesEspeciales.enlaceUnidadEspecial.getFriendlyUrl()?has_content> 
205					 
206					<#if unidadesEspeciales.getSiblings()?has_content> 
207	                    <#list unidadesEspeciales.getSiblings() as cur_unidadesEspeciales> 
208	                	    <section class="u-pb5 u-pb4@lg"> 
209	                	    <h2 class="c-title c-title--tertiary u-mb2">								 
210							${cur_unidadesEspeciales.getData()} 
211						</h2> 
212						<!-- Repetible--> 
213						<!--Card Specialty--> 
214						<a href="${cur_unidadesEspeciales.enlaceUnidadEspecial.getFriendlyUrl()}" class="o-card-specialty c-card-specialty"> 
215							<!--Image--> 
216							<div class="o-card-specialty__image c-card-specialty__image">									 
217								<img data-fileentryid="${cur_unidadesEspeciales.imagenUnidadEspecial.getAttribute("fileEntryId")}" alt="${cur_unidadesEspeciales.imagenUnidadEspecial.getAttribute("alt")}" src="${cur_unidadesEspeciales.imagenUnidadEspecial.getData()}" /> 
218							</div> 
219							<!--/.Image--> 
220							<!--Content--> 
221							<div class="o-card-specialty__content c-card-specialty__content"> 
222								<!--Inner--> 
223								<div class="o-card-specialty__inner"> 
224									<div class="o-card-specialty__inner-title"> 
225										<h3 class="c-card-specialty__title"> 
226											${cur_unidadesEspeciales.nombreUnidadEspecial.getData()}											 
227										</h3> 
228									</div> 
229									<div class="o-card-specialty__inner-icon c-card-specialty__inner-icon"> 
230										<i class="ibbc-icon-arrow-right-large c-card-specialty__icon"></i> 
231									</div> 
232								</div> 
233								<!--/.Inner--> 
234							</div> 
235							<!--/.Content--> 
236						</a> 
237						<!--/.Card Specialty--> 
238					</section> 
239	                    </#list> 
240                    </#if> 
241						 
242				</#if> 
243				 
244				 
245				 
246			 
247				<#if tituloSaberMas.textoEnlace.getSiblings()?has_content && tituloSaberMas.getData()?has_content && (tituloSaberMas.textoEnlace.getSiblings()[0]).getData()?? && (tituloSaberMas.textoEnlace.getSiblings()[0]).getData() != ""> 
248					<section class="u-pb4"> 
249						<h2 class="c-title c-title--tertiary u-mb2"> 
250							${tituloSaberMas.getData()} 
251						</h2> 
252						<!--List links--> 
253						<ul class="c-list-links"> 
254							<#list tituloSaberMas.textoEnlace.getSiblings() as cur_tituloSaberMas_textoEnlace> 
255								<#if cur_tituloSaberMas_textoEnlace.getData() ?has_content && cur_tituloSaberMas_textoEnlace.urlSaberMas.getData()?has_content> 
256									<li class="c-list-links__item">										 
257										<a href="${cur_tituloSaberMas_textoEnlace.urlSaberMas.getData()}" class="o-list-links__link c-list-links__link"> 
258											${cur_tituloSaberMas_textoEnlace.getData()} 
259										</a> 
260									</li> 
261								</#if> 
262							</#list> 
263						</ul> 
264						<!--/.List links--> 
265					</section> 
266				</#if> 
267			</aside> 
268		</div> 
269	</div> 
270	<!--/.Grid--> 
271</div> 
272<script> 
273 
274     
275   function displayIframe(url){ 
276        
277      $('.iframe-pide-cita-online').show(); 
278 
279       //Creamos iframe 
280       var iframeTuotempo = document.createElement("iframe"); 
281       iframeTuotempo.id = "mop_iframe"; 
282       iframeTuotempo.name = "mop_iframe"; 
283       iframeTuotempo.frameBorder = 0; 
284       iframeTuotempo.scrolling = "no"; 
285       iframeTuotempo.style.marginLeft = "0px"; 
286       iframeTuotempo.style.width = "100%"; 
287       iframeTuotempo.style.height = "inherit"; 
288       iframeTuotempo.style.border = "0px"; 
289       iframeTuotempo.allowTransparency = true; 
290       iframeTuotempo.src = url;  
291 
292       // Creamos etiqueta script con la variable mop_source 
293       var scriptMop = document.createElement("script"); 
294       scriptMop.setAttribute("type", "text/javascript"); 
295       // Creamos el contenido y lo agregamos el contenido al js 
296       var contentMop = document.createTextNode('var mop_source = "'+url+'&dontLetMopIframeBecomeParentOnMobile=1"'); 
297       scriptMop.appendChild(contentMop); 
298 
299       //Creamos script para el loader de tuotempo 
300       var scriptTuoTempo = document.createElement("script"); 
301       scriptTuoTempo.setAttribute("type", "text/javascript"); 
302       scriptTuoTempo.setAttribute("src", "https://app.tuotempo.com/js/mop_loader.js.php"); 
303 
304       $('#tuotempo').html(iframeTuotempo); 
305       $('#tuotempo').append(scriptMop); 
306       $('#tuotempo').append(scriptTuoTempo); 
307
308 
309</script> 

Especialidades relacionadas