
Nova estrutura de governança de dados e inteligência
A Unimed CNU deu um passo importante na sua governança de dados para consolidar a informação como um ativo estratégico , proteger o patrimônio do Sistema Unimed e conferir ainda mais consistência e assertividade às tomadas de decisão.
Alinhada às melhores práticas de gestão, a Cooperativa está implantando a Superintendência Executiva de Desenvolvimento e Informação, dedicada exclusivamente à integração de dados. Com atuação transversal, essa nova estrutura centraliza e padroniza dados assistenciais, técnicos e financeiros, garantindo que as informações de diferentes áreas conversem entre si e formem uma única fonte corporativa confiável.
A consolidação da inteligência analítica traz impactos diretos para a sustentabilidade do negócio. Uma das frentes de atuação será o monitoramento contínuo do Planejamento Estratégico, garantindo a execução das entregas e transformando eventuais desvios em alertas preventivos, antes que se tornem riscos econômicos ou operacionais.
O médico e professor da Faculdade Unimed, Sérgio Bersan, que já atuava na CNU como consultor, lidera a nova estrutura. O executivo reúne sólida trajetória em gestão estratégica de negócios, transformação digital, inteligência artificial para eficiência operacional, auditoria analítica e modelos de remuneração.
The following has evaluated to null or missing:
==> journalArticle.getDisplayDate [in template "53466405417913#7352900#7367229" at line 71, column 34]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to 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 articleDate = journalArticle... [in template "53466405417913#7352900#7367229" at line 71, column 11]
----
1<style>
2 #socias-posts-relacionados-wrapper {
3 box-shadow: 0px 2px 4px 0px rgba(39, 40, 51, 0.12);
4 border-radius: 16px;
5 padding: 25px;
6 border: solid 1px rgba(107, 108, 126, 0.2);
7 background-color: rgba(255, 255, 255, 1);
8 display: flex;
9 flex-direction: column;
10 gap: 32px;
11 }
12
13 #socias-posts-relacionados-wrapper .socias-card-post-relacionados {
14 display: flex;
15 flex-direction: column;
16 gap: 16px;
17 }
18
19 #socias-posts-relacionados-wrapper .principal-title {
20 font-family: 'Unimed Sans';
21 color: #141419;
22 font-size: 1.25rem;
23 line-height: 1.75rem;
24 font-weight: 700;
25 margin: 0px;
26 }
27
28 #socias-posts-relacionados-wrapper .socias-post-relacionado-link {
29 font-size: 1rem;
30 line-height: 1.375rem;
31 font-weight: 700;
32 color: #141419;
33 font-family: 'Unimed Sans';
34 }
35
36 #socias-posts-relacionados-wrapper .socias-post-relacionado-link:hover {
37 text-decoration: underline;
38 }
39
40 #socias-posts-relacionados-wrapper .socias-date {
41 font-size: 1rem;
42 line-height: 1.375rem;
43 font-weight: 400;
44 color: #6B6C7E;
45 }
46
47 @media (max-width: 800px) {
48 #socias-posts-relacionados-wrapper {
49 margin: 32px 16px;
50 }
51 }
52</style>
53<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
54<#assign GroupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") />
55<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
56
57<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
58<#assign HtmlUtil = staticUtil["com.liferay.portal.kernel.util.HtmlUtil"] />
59
60<div id="socias-posts-relacionados-wrapper">
61 <h3 class="principal-title">Posts relacionados</h3>
62
63 <div>
64 <#if entries?has_content>
65 <div class="socias-card-post-relacionados">
66 <#list entries as entry>
67 <#assign assetEntry = AssetEntryLocalService.getEntry(entry.getClassName(), entry.getClassPK()) />
68 <#assign assetRenderer = assetEntry.getAssetRenderer() />
69 <#assign journalArticle = assetRenderer.getAssetObject() />
70 <#assign assetCategories = assetEntry.getCategories() />
71 <#assign articleDate = journalArticle.getDisplayDate()?string("dd'/'MM'/'yyyy") />
72
73 <#-- Reading time (words per minute = 200) -->
74 <#assign rawContent = journalArticle.getContent()?if_exists!"" />
75 <#assign textContent = HtmlUtil.stripHtml(rawContent) />
76 <#assign textContent = HtmlUtil.unescape(textContent) />
77 <#assign textContent = textContent?replace("\\$\\{[^}]+\\}", "", "r") />
78 <#assign textContent = textContent?replace("\\]\\]>", "", "r") />
79 <#assign textContent = textContent?replace(" ", " ", "r") />
80 <#assign textContent = textContent?replace("\n", " ", "r") />
81 <#assign textContent = textContent?replace("\r", " ", "r") />
82 <#assign textContent = textContent?replace("\t", " ", "r") />
83 <#assign textContent = textContent?replace("\\s+", " ", "r")?trim />
84 <#assign words = (textContent?length > 0)?then(textContent?split(" ")?size, 0) />
85 <#assign wpm = 200 />
86 <#assign minutes = (words / wpm)?ceiling />
87 <#if minutes < 1><#assign minutes = 1 /></#if>
88 <#assign assetCategories = assetEntry.getCategories() />
89 <#assign articleDate = journalArticle.getCreateDate()?string("dd'/'MM'/'yyyy") />
90
91 <#-- Monta link já com o categoryId -->
92 <#if assetCategories?has_content>
93 <#assign firstCategory = assetCategories[0] />
94 <#assign articleURL = entry.getViewURL() + "&category=" + firstCategory.getCategoryId() />
95 <#else>
96 <#assign articleURL = entry.getViewURL() />
97 </#if>
98
99 <a href="${articleURL}" class="text-decoration-none">
100 <div class="d-flex mb-1">
101 <div class="mr-2">
102 <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
103 <path d="M8.75016 1.16663H3.50016C3.19074 1.16663 2.894 1.28954 2.6752 1.50833C2.45641 1.72713 2.3335 2.02387 2.3335 2.33329V11.6666C2.3335 11.976 2.45641 12.2728 2.6752 12.4916C2.894 12.7104 3.19074 12.8333 3.50016 12.8333H10.5002C10.8096 12.8333 11.1063 12.7104 11.3251 12.4916C11.5439 12.2728 11.6668 11.976 11.6668 11.6666V4.08329L8.75016 1.16663Z" stroke="#00995C" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
104 <path d="M8.1665 1.16663V3.49996C8.1665 3.80938 8.28942 4.10612 8.50821 4.32492C8.72701 4.54371 9.02375 4.66663 9.33317 4.66663H11.6665" stroke="#00995C" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
105 <path d="M5.83317 5.25H4.6665" stroke="#00995C" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
106 <path d="M9.33317 7.58337H4.6665" stroke="#00995C" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
107 <path d="M9.33317 9.91663H4.6665" stroke="#00995C" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
108 </svg>
109 </div>
110
111 <div>
112 <p class="socias-post-relacionado-link mb-2">
113 ${entry.getHighlightedTitle()}
114 </p>
115
116 <span class="socias-date" >${minutes} min</span>
117
118 <#if entry.isCreationDateVisible()>
119 <span class="socias-date">
120 • ${articleDate}
121 </span>
122 </#if>
123 </div>
124 </div>
125 </a>
126 </#list>
127 </div>
128 </#if>
129 </div>
130</div>
