Swedish Healthcare Service - Health Condition Description
0.1.0 - CI Build
Sweden
Swedish Healthcare Service - Health Condition Description - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
This page documents the information security and legal compliance requirements for the Health Condition Description service domain.
The Swedish Patient Data Law governs access to patient information:
Key Principles:
Reference: Patientdatalagen (2008:355)
Socialstyrelsen's regulations on journal keeping and personal data processing:
Key Requirements:
Reference: SOSFS 2016:40 - Journalföring och behandling av personuppgifter i hälso- och sjukvården
EU General Data Protection Regulation applies:
Authentication:
Authorization:
Logging:
Data Handling:
Access Control:
Data Quality:
System Security:
Transport Security:
Routing:
Requirements:
Configuration Example (Java):
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(keyManagers, trustManagers, secureRandom);
SSLParameters sslParams = new SSLParameters();
sslParams.setProtocols(new String[]{"TLSv1.2", "TLSv1.3"});
sslParams.setCipherSuites(new String[]{
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
});
All SOAP requests must include WS-Security headers for authentication:
<soap:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:BinarySecurityToken
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
wsu:Id="X509Token">
MIIDXTCCAkWgAwIBAgIJALx... (Base64-encoded certificate)
</wsse:BinarySecurityToken>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="#MsgId-123">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>abc123... (Base64 digest)</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>xyz789... (Base64 signature)</ds:SignatureValue>
<ds:KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI="#X509Token"/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
<wsu:Timestamp wsu:Id="TS-1">
<wsu:Created>2024-11-27T14:30:00Z</wsu:Created>
<wsu:Expires>2024-11-27T14:35:00Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
<!-- Additional WS-Addressing headers -->
<wsa:To>https://services.inera.se/...</wsa:To>
<wsa:Action>urn:riv:clinicalprocess:healthcond:description:...</wsa:Action>
<wsa:MessageID wsu:Id="MsgId-123">urn:uuid:12345678-...</wsa:MessageID>
</soap:Header>
SITHS (Säker IT i Hälso- och Sjukvården) - Secure IT in Healthcare:
Certificate Types:
Certificate Content:
Example Certificate Subject:
CN=Vårdgivare AB Tjänstekonsument
OU=IT Department
O=Vårdgivare AB
C=SE
serialNumber=SE2321000016-1234 (HSA-ID)
Java KeyStore Configuration:
KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(new FileInputStream("siths-cert.jks"), "password".toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(keyStore, "keypassword".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
KeyStore trustStore = KeyStore.getInstance("JKS");
trustStore.load(new FileInputStream("siths-trust.jks"), "trustpassword".toCharArray());
tmf.init(trustStore);
For authentication propagation, SAML 2.0 assertions may be included:
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_a1b2c3d4e5f6"
IssueInstant="2024-11-27T14:30:00Z"
Version="2.0">
<saml:Issuer>https://idp.example.se</saml:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<!-- Digital signature of assertion -->
</ds:Signature>
<saml:Subject>
<saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">
SE2321000016-A123 (HSA-ID of professional)
</saml:NameID>
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData
NotOnOrAfter="2024-11-27T15:30:00Z"
Recipient="https://services.inera.se/..."/>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Conditions
NotBefore="2024-11-27T14:30:00Z"
NotOnOrAfter="2024-11-27T15:30:00Z">
<saml:AudienceRestriction>
<saml:Audience>https://services.inera.se</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
<saml:AuthnStatement AuthnInstant="2024-11-27T14:25:00Z">
<saml:AuthnContext>
<saml:AuthnContextClassRef>
urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI
</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
<saml:AttributeStatement>
<saml:Attribute Name="urn:sambi:names:attribute:hsaIdentity">
<saml:AttributeValue>SE2321000016-A123</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:sambi:names:attribute:displayName">
<saml:AttributeValue>Dr. Anna Andersson</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:sambi:names:attribute:assignmentHsaId">
<saml:AttributeValue>SE2321000016-5678</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:sambi:names:attribute:purposeOfUse">
<saml:AttributeValue>urn:sambi:names:attribute:purposeOfUse:CARE</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
Key SAML Attributes:
For healthcare professionals accessing across organizational boundaries:
Requirements:
Implementation:
1. User authenticates with strong credentials
2. User selects care unit
3. System fetches patient information
4. For each record:
a. Check blockComparisonTime against blocks
b. If blocked: do not display
c. If not blocked: check approvedForPatient
d. Display if approved
5. Log access (who, what, when, where, why)
Outer Block (Yttre spärr):
Inner Block (Inre spärr):
Emergency Override:
For patients accessing their own information:
Requirements:
Implementation:
1. Patient authenticates with BankID
2. System fetches patient information
3. Filter: approvedForPatient = true
4. Display approved information
5. Log access
Healthcare providers may withhold information from patients temporarily:
Purpose:
Duration:
Implementation:
Assessment of whether information is appropriate for patient:
Criteria:
Decision:
TLS Configuration:
Minimum Version: TLS 1.2
Cipher Suites: Strong ciphers only
Certificate Validation: Required
Certificate Revocation: OCSP/CRL
WS-Security:
SAML Token: User identity and attributes
X.509 Certificate: System identity
Signature: Message integrity
Timestamp: Replay prevention
| User Type | Method | Standard |
|---|---|---|
| Healthcare Professional | SITHS card | Swedish eID |
| Healthcare Professional | Soft certificate | Alternative |
| Patient | BankID | Swedish eID |
| Patient | Other strong eID | EU notified |
| System | X.509 certificate | PKI |
Attribute-Based Access Control (ABAC):
Attributes considered:
Decision:
PERMIT if:
- Valid authentication AND
- Care relationship OR emergency override AND
- Not blocked OR emergency override AND
- Organizational policy permits AND
- Information approved for access type
DENY otherwise
Per SOSFS 2016:40 and PDL:
Access Log Entry:
{
"timestamp": "20241127143052",
"user": {
"id": "HSA-ID or personal number",
"name": "User name",
"role": "Profession/role",
"organization": "Care giver/unit"
},
"patient": {
"id": "Patient personal number"
},
"access": {
"type": "Read/Search",
"resource": "Care documentation/Diagnosis/etc",
"purpose": "Direct care/Coordination/etc",
"care_unit": "Selected care unit",
"emergency": false
},
"system": {
"ip_address": "Source IP",
"user_agent": "System identifier"
},
"result": "Success/Denied"
}
Regular Review:
Event-Triggered Review:
Handling Violations:
| Level | Description | Example | Controls |
|---|---|---|---|
| Highly Sensitive | Severe impact if disclosed | HIV status, psychiatric care | Strongest controls |
| Sensitive | Significant impact | General medical info | Standard controls |
| Internal | Limited impact | Aggregated statistics | Basic controls |
| Public | No impact | General health information | Minimal controls |
Data in Transit:
Data at Rest:
Principle:
Implementation:
Detection:
Response:
Definition:
Notification:
Documentation:
Vulnerability Scanning:
Penetration Testing:
Security Audits:
Tracked Metrics:
Internal Audits:
External Audits:
Required Documentation:
Topics:
Frequency:
Topics: