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.
Virhe tapahtui prosessoidessa esitysmallia.
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.


Päivitetty 30.10.2025