Executive Summary
The International Patient Summary (IPS) is a standardized FHIR-based document enabling seamless cross-border healthcare across the EU. When an Irish citizen needs emergency care in Spain, IPS ensures Spanish doctors can access critical medical information—allergies, medications, conditions—within seconds.
This guide covers the EU eHealth Digital Service Infrastructure (eHDSI), MyHealth@EU platform, IPS FHIR profile, and production implementation patterns for Irish healthcare systems participating in EU cross-border exchange.
What You’ll Learn:
- EU eHealth Digital Service Infrastructure (eHDSI) architecture
- MyHealth@EU portal and cross-border workflow
- IPS FHIR Bundle structure and required sections
- Generating IPS-compliant documents (.NET)
- Consuming foreign IPS data
- Ireland’s participation in eHDSI
- Privacy and GDPR considerations
Tech Stack: FHIR R4 | IPS Profile | .NET 10 | Azure | EU eHealth Network
The EU Cross-Border Healthcare Challenge
The Problem
Scenario: Irish citizen has heart attack while on holiday in Barcelona.
Without IPS:
- Spanish doctor has no medical history
- Unknown allergies (potentially fatal)
- Unknown current medications (drug interactions)
- Unknown pre-existing conditions (diabetes, kidney disease)
- Patient may be unconscious or language barrier
- Delayed or incorrect treatment
With IPS:
- Instant access to patient summary
- Critical allergies visible
- Current medication list
- Active problems/conditions
- Previous procedures
- Blood type, implanted devices
- All within GDPR-compliant system
EU Cross-Border Statistics
- 270 million cross-border trips annually in EU
- 5 million EU citizens living in different member state
- 1.4 million healthcare treatments sought cross-border/year
- €10 billion annual cross-border healthcare costs
IPS can save lives and reduce costs.
EU eHealth Digital Service Infrastructure (eHDSI)
%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#E8F4F8','secondaryColor':'#F3E5F5','tertiaryColor':'#E8F5E9','primaryTextColor':'#2C3E50','fontSize':'14px'}}}%%
graph TB
subgraph "Ireland"
A[Irish Patient]
B[HSE National Contact Point]
C[Irish Patient Summary]
end
subgraph "EU eHDSI Network"
D[Secure EU Gateway]
E[Member State Authentication]
F[GDPR Audit Trail]
end
subgraph "Spain"
G[Spanish Hospital]
H[Spain National Contact Point]
I[Display Spanish UI]
end
A -->|Travels to Spain| G
G -->|Request IPS| H
H -->|Query via eHDSI| D
D -->|Authenticate| E
E -->|Forward Request| B
B -->|Retrieve| C
C -->|Return IPS Bundle| B
B -->|Via Gateway| D
D -->|Log Access| F
D --> H
H --> I
I -->|Show Patient Data| G
style A fill:#E3F2FD,stroke:#90CAF9,stroke-width:2px
style B fill:#B2DFDB,stroke:#4DB6AC,stroke-width:3px
style D fill:#FCE4EC,stroke:#F8BBD0,stroke-width:3px
style G fill:#F3E5F5,stroke:#CE93D8,stroke-width:2px
style H fill:#E8F5E9,stroke:#A5D6A7,stroke-width:3px
style F fill:#FFF3E0,stroke:#FFCC80,stroke-width:2px
eHDSI Components
1. National Contact Points (NCPs)
- Each EU country operates an NCP
- Ireland: HSE eHealth NCP
- Gateway for cross-border data exchange
- Handles authentication and authorization
2. Central Services
- EU Member State authentication
- Audit logging (GDPR Article 30)
- Service monitoring
- Security incident response
3. MyHealth@EU Portal
- Patient-facing web portal
- Citizens can view their own IPS
- Consent management
- Cross-border access history
4. Legal Framework
- Directive 2011/24/EU (Cross-Border Healthcare Rights)
- GDPR compliance built-in
- Member state bilateral agreements
IPS FHIR Bundle Structure
Required Sections
The IPS FHIR profile defines mandatory sections:
| Section | LOINC Code | Required | Content |
|---|---|---|---|
| Allergies and Intolerances | 48765-2 | ✅ Yes | Drug/food allergies |
| Medication Summary | 10160-0 | ✅ Yes | Current medications |
| Problem List | 11450-4 | ✅ Yes | Active conditions |
| Immunizations | 11369-6 | ⚠️ If known | Vaccination history |
| History of Procedures | 47519-4 | ⚠️ If known | Past surgeries |
| Medical Devices | 46264-8 | ⚠️ If known | Implants, prosthetics |
| Diagnostic Results | 30954-2 | ⚠️ If known | Recent lab results |
| Vital Signs | 8716-3 | ⚠️ If known | BP, weight, BMI |
| Pregnancy Status | 82810-3 | ⚠️ If applicable | For women of childbearing age |
| Social History | 29762-2 | ⚠️ If known | Smoking, alcohol |
| Plan of Care | 18776-5 | ⚠️ If known | Treatment plan |
Minimal vs Complete IPS
Minimal IPS (Emergency use):
- Patient demographics
- Allergies (even if "no known allergies")
- Current medications
- Active problems
Complete IPS (Planned care):
- All above
- Full medical history
- Lab results
- Imaging reports
- Care plans
Generating IPS in .NET
using Hl7.Fhir.Model;
using Hl7.Fhir.Serialization;
public class IpsGenerator
{
public Bundle GenerateIrishIPS(string ihi, PatientSummaryData data)
{
var bundle = new Bundle
{
Type = Bundle.BundleType.Document,
Meta = new Meta
{
Profile = new[]
{
"http://hl7.org/fhir/uv/ips/StructureDefinition/Bundle-uv-ips"
}
}
};
// 1. Composition (Table of Contents)
var composition = new Composition
{
Status = CompositionStatus.Final,
Type = new CodeableConcept
{
Coding = new List<Coding>
{
new Coding("http://loinc.org", "60591-5", "Patient Summary Document")
}
},
Subject = new ResourceReference($"Patient/{ihi}"),
Date = DateTimeOffset.Now.ToString("yyyy-MM-ddTHH:mm:sszzz"),
Author = new List<ResourceReference>
{
new ResourceReference("Organization/HSE")
},
Title = "International Patient Summary - Ireland",
Section = new List<Composition.SectionComponent>()
};
// 2. Patient Resource
var patient = new Patient
{
Id = ihi,
Meta = new Meta
{
Profile = new[] { "http://hl7.org/fhir/uv/ips/StructureDefinition/Patient-uv-ips" }
},
Identifier = new List<Identifier>
{
new Identifier
{
System = "http://www.hse.ie/ihi",
Value = ihi
}
},
Name = new List<HumanName>
{
new HumanName
{
Family = data.FamilyName,
Given = new[] { data.GivenName }
}
},
Gender = data.Gender == "M" ? AdministrativeGender.Male : AdministrativeGender.Female,
BirthDate = data.BirthDate.ToString("yyyy-MM-dd")
};
// 3. Allergies Section (MANDATORY)
var allergiesSection = new Composition.SectionComponent
{
Title = "Allergies and Intolerances",
Code = new CodeableConcept("http://loinc.org", "48765-2"),
Entry = new List<ResourceReference>()
};
foreach (var allergy in data.Allergies)
{
var allergyResource = new AllergyIntolerance
{
ClinicalStatus = new CodeableConcept(
"http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical",
"active"
),
Code = new CodeableConcept
{
Coding = new List<Coding>
{
new Coding("http://snomed.info/sct", allergy.SnomedCode, allergy.Name)
}
},
Patient = new ResourceReference($"Patient/{ihi}"),
Reaction = new List<AllergyIntolerance.ReactionComponent>
{
new AllergyIntolerance.ReactionComponent
{
Manifestation = new List<CodeableConcept>
{
new CodeableConcept("http://snomed.info/sct", allergy.ReactionCode)
}
}
}
};
bundle.Entry.Add(new Bundle.EntryComponent { Resource = allergyResource });
allergiesSection.Entry.Add(new ResourceReference { Reference = $"AllergyIntolerance/{allergyResource.Id}" });
}
composition.Section.Add(allergiesSection);
// 4. Medications Section (MANDATORY)
var medicationsSection = new Composition.SectionComponent
{
Title = "Medication Summary",
Code = new CodeableConcept("http://loinc.org", "10160-0"),
Entry = new List<ResourceReference>()
};
foreach (var med in data.Medications)
{
var medicationStatement = new MedicationStatement
{
Status = MedicationStatement.MedicationStatementStatusCodes.Active,
Medication = new CodeableConcept
{
Coding = new List<Coding>
{
new Coding("http://www.whocc.no/atc", med.AtcCode, med.Name)
}
},
Subject = new ResourceReference($"Patient/{ihi}"),
Dosage = new List<Dosage>
{
new Dosage
{
Text = med.DosageText
}
}
};
bundle.Entry.Add(new Bundle.EntryComponent { Resource = medicationStatement });
medicationsSection.Entry.Add(new ResourceReference { Reference = $"MedicationStatement/{medicationStatement.Id}" });
}
composition.Section.Add(medicationsSection);
// 5. Problem List (MANDATORY)
var problemsSection = new Composition.SectionComponent
{
Title = "Problem List",
Code = new CodeableConcept("http://loinc.org", "11450-4"),
Entry = new List<ResourceReference>()
};
foreach (var problem in data.ActiveProblems)
{
var condition = new Condition
{
ClinicalStatus = new CodeableConcept(
"http://terminology.hl7.org/CodeSystem/condition-clinical",
"active"
),
Code = new CodeableConcept
{
Coding = new List<Coding>
{
new Coding("http://snomed.info/sct", problem.SnomedCode, problem.Name)
}
},
Subject = new ResourceReference($"Patient/{ihi}")
};
bundle.Entry.Add(new Bundle.EntryComponent { Resource = condition });
problemsSection.Entry.Add(new ResourceReference { Reference = $"Condition/{condition.Id}" });
}
composition.Section.Add(problemsSection);
// Add Composition as first entry
bundle.Entry.Insert(0, new Bundle.EntryComponent { Resource = composition });
bundle.Entry.Insert(1, new Bundle.EntryComponent { Resource = patient });
return bundle;
}
}
Ireland’s Participation in eHDSI
Current Status (2025)
Ireland Pilot Phase:
- HSE eHealth Ireland operates National Contact Point
- Participating in Patient Summary exchange
- Limited deployment (10 pilot hospitals)
- Expanding to all acute hospitals by 2026
Technical Stack:
- FHIR R4-based IPS
- Azure-hosted NCP infrastructure
- Integration with IHI system
- GP practice connectivity via Healthlink
Patient Consent Model
Irish Approach (Opt-In):
- Patient must explicitly consent via MyHealth@EU
- Consent recorded in IHI system
- Granular controls (which sections to share)
- Audit log of all cross-border access
GDPR Compliance:
- Article 9(2)(h) – Healthcare provision
- Article 15 – Right of access (patients can see who accessed)
- Article 17 – Right to erasure (revoke consent anytime)
- Article 30 – Processing records (comprehensive audit)
EU Member State Participation
Active eHDSI Countries (2025)
| Country | Status | IPS Format | Notes |
|---|---|---|---|
| Czech Republic | ✅ Full | FHIR R4 | First adopter |
| Estonia | ✅ Full | FHIR R4 | e-Health leader |
| Finland | ✅ Full | FHIR R4 | Kanta system |
| Croatia | ✅ Full | CDA (migrating FHIR) | |
| Luxembourg | ✅ Full | FHIR R4 | |
| Malta | ✅ Full | FHIR R4 | |
| Portugal | ✅ Full | FHIR R4 | |
| Ireland | ⚠️ Pilot | FHIR R4 | Expanding 2025-26 |
| Spain | ⚠️ Pilot | FHIR R4 | 5 regions live |
| France | ⚠️ Pilot | CDA + FHIR | Gradual rollout |
| Germany | 🔜 2026 | FHIR R4 planned | Technical prep |
| Netherlands | 🔜 2026 | FHIR R4 planned | Infrastructure build |
Total: 22 EU countries participating or planning
Standards and References
IPS FHIR Specification
EU eHealth Infrastructure
Irish Healthcare
Legal Framework
Technical Standards
Related Articles in This Series
Conclusion
The International Patient Summary represents the future of cross-border healthcare in Europe. Ireland’s participation in eHDSI, combined with the IHI system foundation, positions Irish healthcare systems to enable safe, efficient care for citizens traveling across the EU.
For solution architects: implementing IPS-compliant FHIR generation now prepares your systems for inevitable EU-wide adoption and opens opportunities for modern patient-centric applications.
Discover more from C4: Container, Code, Cloud & Context
Subscribe to get the latest posts sent to your email.