International Patient Summary (IPS): Cross-Border Healthcare in the EU

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):

  1. Patient must explicitly consent via MyHealth@EU
  2. Consent recorded in IHI system
  3. Granular controls (which sections to share)
  4. 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

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.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.