Asiakas- ja potilastietojen käsittely ja lokitiedot
Henkilötietojen käsittelyä säätelee EU:n yleinen tietosuoja-asetus. Sosiaali- ja terveydenhuollossa henkilötietojen käsittelyä ohjaa lisäksi kansallinen yleis- ja erityislainsäädäntö. Sinulla on oikeus tarkastaa lokitiedot asiakas- ja potilastietojesi käsittelystä ja luovutuksista sekä pyytää selvitystä, jos epäilet tietojesi väärinkäyttöä.
Sosiaali- ja terveydenhuollossa asiakastietojen käsittelyn perusteena on asiakas- tai hoitosuhde, muu työtehtävä tai muu lakiin perustuva oikeus. Ammattihenkilöt ja muut asiakastietoja työssään käsittelevät henkilöt saavat käsitellä vain lakisääteisen tehtävän edellyttämiä välttämättömiä asiakastietoja.
Asiakas- ja potilasrekisterin lokitietopyyntö
Tallennamme lokitietoja kaikesta asiakas- ja potilastietojen käsittelystä. Sinulla on oikeus saada tieto, kuka on käsitellyt asiakas- tai potilastietojasi, kenelle sinua koskevia tietoja on luovutettu ja millä perusteella (asiakastietolaki 703/2023 11 §).
Pyynnössä tarvittavat tiedot ovat
- nimesi ja henkilötunnuksesi
- yhteystietosi
- ajanjakso, jolta pyydät lokitietoja
- palvelut ja yksiköt, joissa olet asioinut.
Jos pyydät kahta vuotta vanhempia lokitietoja, sinun on perusteltava pyyntösi erityisellä syyllä. Erityinen syy voi olla esimerkiksi epäilys asiakas- tai potilastietojesi luvattomasta käsittelystä tavalla, joka edellyttää asian selvittämistä.
Selvityspyyntö asiakas- ja potilastietojen käsittelystä
Jos epäilet, että asiakas- tai potilastietojesi on käsitelty tai luovutettu ilman riittäviä perusteita, voit pyytää asiasta selvitystä.
Väärinkäyttöepäilyn selvittämistä varten tarvittavat tiedot ovat
- henkilö- ja yhteystietosi
- epäillyn väärinkäytön ajankohta
- miten epäily syntyi
- epäilty käyttäjä tai tekijä
- millaisista tiedoista on kyse.
The following has evaluated to null or missing:
==> DLAppLocalServiceHelper [in template "43104#43145#2794207" at line 191, column 44]
----
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: file = DLAppLocalServiceHelper.getFil... [in template "43104#43145#2794207" at line 191, column 37]
----
1<#-- TRANSLATIONS -->
2<#assign i18n = {
3 "fi": {
4 "kb":"kt",
5 "mb": "mt",
6 "attachments": "Liitteet",
7 "show_more": "Näytä lisää sisältöjä",
8 "open_all": "Avaa kaikki sisällöt"
9 },
10 "en": {
11 "kb":"kb",
12 "mb":"mb",
13 "attachments": "Attachments",
14 "show_more" : "Show more content",
15 "open_all": "Open all accordions"
16 }
17} />
18
19<#function Translate word>
20 <#return i18n[locale.language][word] />
21</#function>
22
23
24<#-- MACROs -->
25<#function si num>
26 <#assign order = num?round?c?length />
27 <#assign thousands = ((order - 1) / 3)?floor />
28 <#if (thousands < 0)><#assign thousands = 0 /></#if>
29 <#assign siMap = [ {"factor": 1, "unit": ""}, {"factor": 1000, "unit": "${Translate('kb')}"}, {"factor": 1000000, "unit": "${Translate('mb')}"}, {"factor": 1000000000, "unit":"G"}, {"factor": 1000000000000, "unit": "T"} ]/>
30 <#assign siStr = (num / (siMap[thousands].factor))?string("0.#") + siMap[thousands].unit />
31 <#return siStr />
32</#function>
33
34<#-- VARIABLES -->
35<#assign
36 pirhaLiftStyle = "blue"
37 pirhaLinkIconColor = "orange"
38 pirhaHeadlineSize = "2"
39 pirhaSectionHeadlineSize = pirhaHeadlineSize?number + 1
40 pirhaLiftTitleIcon = "none"
41 pirhaLinkStyle = "dark"
42 pirhaLinkShowIcon = ""
43 pirhaLinkIconType="arrow-right"
44 pirhaLiftTitleIcon = ""
45 pirhaIconColor = "var(--pirha-icon-color-red)"
46 pirhaLinkUrl = ""
47 pirhaLinkType = "url"
48 pirhaUseImage = false
49 pirhaImagePosition = "left"
50 pirhaButtonCss = "pirha-button-link"
51 pirhaAttachmentTitle = ""
52 pirhaAttachmentDescription = ""
53 attachments = []
54/>
55
56<#-- SET LIFT BACKGROUND STYLE -->
57<#if liftStyle?? && liftStyle.getData()?has_content>
58 <#assign pirhaLiftStyle = liftStyle.getData() />
59</#if>
60
61<#-- SET LINK BUTTON STYLE -->
62<#if pirhaLiftStyle != "transparent">
63 <#assign pirhaButtonCss += " button-inverted" />
64</#if>
65
66<#-- SET TITLE SIZE -->
67<#if liftTitleSize?? && liftTitleSize.data?has_content>
68 <#if liftTitleSize.data?starts_with("h")>
69 <#assign
70 pirhaHeadlineSize = liftTitleSize.data?substring(1)
71 pirhaSectionHeadlineSize = pirhaHeadlineSize?number + 1
72 />
73 <#else>
74 <#assign
75 pirhaHeadlineSize = liftTitleSize.data
76 pirhaSectionHeadlineSize = pirhaHeadlineSize?number + 1
77 />
78 </#if>
79</#if>
80
81
82<#if liftTitleIcon?? && liftTitleIcon.data?has_content && (liftTitleIcon.getData() != "none" ||liftTitleIcon.getData() != "")>
83 <#assign pirhaLiftTitleIcon = liftTitleIcon.getData()?lower_case />
84</#if>
85
86<#if linkStyle?? && linkStyle.data?has_content>
87 <#assign pirhaLinkStyle = linkStyle.getData() />
88
89</#if>
90
91<#if liftImage?? && liftImage.getData()?has_content>
92 <#assign pirhaUseImage = true />
93</#if>
94
95<#if liftImagePosition?? && liftImagePosition.data?has_content>
96 <#assign pirhaImagePosition = liftImagePosition.data />
97</#if>
98
99
100
101<#-- LOGIC -->
102<div class="pirha-lift pirha-lift--${pirhaLiftStyle} <#if pirhaUseImage>pirha-lift--with-image pirha-lift__image--${pirhaImagePosition}</#if>">
103 <#-- IMAGE -->
104 <#if pirhaUseImage>
105 <figure>
106 <img src="${liftImage.getData()}" alt="${liftImage.getAttribute('alt')}" />
107 </figure>
108 </#if>
109 <#if sections?? && sections.getSiblings()?has_content>
110
111 <div class="pirha-lift__body">
112 <#-- HEADLINE -->
113 <#if liftTitle?? && liftTitle.data?has_content>
114 <h${pirhaHeadlineSize} class="pirha-lift__heading">
115 <#-- SHOW ICON -->
116 <#if pirhaLiftTitleIcon != 'none' && pirhaLiftTitleIcon != ''>
117 <span role="presentation" class="pirha-icon pirha-icon--${pirhaLiftTitleIcon}"></span>
118 </#if>
119 <#-- HEADLINE CONTENT -->
120 ${liftTitle.data}
121 </h${pirhaHeadlineSize}>
122 </#if>
123 <#list sections.getSiblings() as section>
124 <div class="pirha-lift__article">
125 <#-- SET SECTION HEADLINE SIZE -->
126 <#assign pirhaSectionHeadlineSize = pirhaHeadlineSize?number + 1 />
127 <#if section.liftSectionTitleSize?? && section.liftSectionTitleSize.getData()?has_content>
128 <#assign pirhaSectionHeadlineSize = section.liftSectionTitleSize.getData() />
129 </#if>
130 <#-- CONTENT -->
131 <#if section.liftSectionTitle?? && section.liftSectionTitle.data?has_content>
132 <#-- <h${pirhaSectionHeadlineSize} class="pirha-lift__heading--article"> -->
133 <h${pirhaSectionHeadlineSize} class="pirha-lift__heading">
134 <#if section.liftSectionTitleIcon?? && section.liftSectionTitleIcon.getData()?has_content>
135 <span role="presentation" class="pirha-icon pirha-icon--${section.liftSectionTitleIcon.getData()}"></span>
136 </#if>
137 ${section.liftSectionTitle.data}
138 </h${pirhaSectionHeadlineSize}>
139 </#if>
140 <#if section.liftContent?? && section.liftContent.data?has_content>
141 <div class="pirha-lift__content">
142 ${section.liftContent.data}
143 </div>
144 </#if>
145 <#-- LINKS -->
146 <#if section.links?? && section.links.getSiblings()?has_content>
147 <#assign linkWrapperCSS = "" />
148
149 <#list section.links.getSiblings() as link>
150 <#if link.linkText.data?has_content>
151 <#assign linkWrapperCSS = "pirha-lift__links" />
152 <#break>
153 </#if>
154 </#list>
155 <div class="${linkWrapperCSS}">
156 <#list section.links.getSiblings() as link>
157
158 <#-- Internal link -->
159 <#if link.linkUrl?? && link.linkUrl.getFriendlyUrl()?has_content>
160 <#assign
161 pirhaLinkUrl = link.linkUrl.getFriendlyUrl()
162 pirhaLinkIconType = "arrow-right"
163 />
164 </#if>
165
166 <#-- External link -->
167 <#if link.linkUrlExternal?? && link.linkUrlExternal.getData()?has_content>
168 <#assign
169 pirhaLinkUrl = link.linkUrlExternal.getData()
170 pirhaLinkIconType = "link-external"
171 />
172 </#if>
173
174 <#-- Attchment -->
175
176 <#if link.linkFile?? && link.linkFile.getData()?has_content>
177 <#assign
178 pirhaLinkUrl = link.linkFile.getData()
179 pirhaLinkIconType = "attachment"
180 />
181 <#-- Attachment description -->
182 <#if link.linkFileDescription?? && link.linkFileDescription.getData()?has_content>
183 <#assign pirhaAttachmentDescription = link.linkFileDescription.getData() />
184 </#if>
185 <#-- Get attachment details -->
186 <#assign
187 link_url_parts = link.linkFile.getData()?split("/")
188 file_uuid = link_url_parts[5]?keep_before("?")
189 file_group_id = link_url_parts[2]?number
190 file = DLAppLocalServiceHelper.getFileEntryByUuidAndGroupId(file_uuid?string,file_group_id?long)
191 />
192
193
194 <#-- SET TITLE -->
195 <#if link.linkText.getData()?has_content>
196 <#assign pirhaAttachmentTitle = link.linkText.getData() />
197 <#else>
198 <#assign pirhaAttachmentTitle = file.getTitle()?keep_before_last(".") />
199 </#if>
200
201 <#-- ADD FILE TO ATTACHEMNTS ARRAY -->
202 <#assign attachments = attachments + [ {
203 "fileName": pirhaAttachmentTitle,
204 "fileURL": pirhaLinkUrl,
205 "fileExt": file.getExtension(),
206 "fileSize": file.getSize(),
207 "fileDescription": pirhaAttachmentDescription
208 }] />
209
210 </#if>
211
212 <#-- SHOW ICON -->
213 <#if pirhaLinkUrl?has_content && link.linkText.getData()?has_content>
214 <#if pirhaLinkIconType != "attachment">
215 <a class="${pirhaButtonCss}" href="${pirhaLinkUrl}">
216 <#if link.linkIconColor?? && link.linkIconColor.data?has_content>
217 <#assign pirhaLinkIconColor = "var(--pirha-icon-color-${link.linkIconColor.data})" />
218 </#if>
219 <span aria-hidden="true" class="pirha-icon pirha-icon--${pirhaLinkIconType}"></span>
220 <span>${link.linkText.data}</span>
221 </a>
222 <#else>
223 <div class="pirha-lift__attachment">
224 <span aria-hidden="true" class="pirha-icon pirha-icon--${pirhaLinkIconType}"></span>
225 <div>
226 <a href="${pirhaLinkUrl}" class="">
227 ${pirhaAttachmentTitle} (<span>${file.getExtension()}, ${si(file.getSize())}</span>)
228 </a>
229 <#if pirhaAttachmentDescription?has_content>
230 <p class="pirha-link__description">
231 ${pirhaAttachmentDescription}
232 </p>
233 </#if>
234 </div>
235 </div>
236 </#if>
237 </#if>
238 </#list>
239 </div>
240 </#if>
241 </div>
242 </#list>
243 </div>
244 </#if>
245</div>
Oikeus lokitietoihin
Lokitietojen tarkastusoikeus on pääsääntöisesti henkilökohtainen. Oikeus lokitietoihin liittyy olennaisesti siihen, että henkilö voi arvioida, onko hänen tietojaan käsitelty laillisesti, ja ryhtyä mahdollisiin jatkotoimenpiteisiin.
Huoltaja voi tehdä lokitieto- ja selvityspyynnön alaikäisen puolesta ja laillinen edustaja vajaavaltaisen puolesta. Laillisen edustajan on osoitettava oikeutensa tiedonsaantiin.
Kun nuori on arvioitu terveydenhuollossa päätöskykyiseksi, voidaan potilasrekisterin lokitiedot luovuttaa huoltajalle tai muulle lailliselle edustajalle vain, jos nuori on sallinut tietojen luovutuksen kaikista palvelutapahtumista kokonaisuudessaan. Yleensä yli 12-vuotiaan nuoren on tehtävä potilasrekisterin lokitietopyyntö itse.
Asiakasrekisterin lokitiedot voidaan luovuttaa huoltajalle tai muulle lailliselle edustajalle, mikäli nuori ei ole painavasta syystä kieltänyt tietojensa luovutusta.
Lokitiedot on oikeus saada asiakas- ja potilastietojen käsittelyyn liittyvien oikeuksien selvittämistä ja toteuttamista varten. Sinulla ei ole oikeutta käyttää tai luovuttaa saamiasi lokitietoja edelleen muuhun tarkoitukseen.
Sinulla ei ole oikeutta saada lokitietoja, jos tiedossa on, että niiden antamisesta saattaisi aiheutua vakavaa vaaraa terveydellesi tai hoidollesi tai jonkun muun oikeuksille.
Jos lokitietopyyntöösi ei suostuta, saat Pirkanmaan hyvinvointialueelta kirjallisen kieltäytymistodistuksen. Kieltäytymistodistus sisältää kieltäytymisen syyn ja ohjeet, kuinka voit tehdä valituksen valvontaviranomaiselle.
Sinua saattaisi kiinnostaa
Päivitetty 30.10.2025