Skip to content

Add FHIR Pseudonymizer Integration#1337

Open
trobanga wants to merge 4 commits intomainfrom
001-fhir-pseudonymizer
Open

Add FHIR Pseudonymizer Integration#1337
trobanga wants to merge 4 commits intomainfrom
001-fhir-pseudonymizer

Conversation

@trobanga
Copy link
Contributor

@trobanga trobanga commented Dec 9, 2025

Summary

  • Integrates FHIR Pseudonymizer as an alternative deidentificator for CDA and RDA
  • TCA exposes Vfps-compatible endpoints for transport ID generation and resolution
  • Implements transport ID architecture: CDA receives tIDs, RDA resolves tIDs→sIDs
  • Clinical data never flows through TCA (only identifiers), enhancing data isolation

Components Added

Trust Center Agent (TCA):

  • CdAgentFhirPseudonymizerController - /api/v2/cd-agent/fhir/$create-pseudonym
  • RdAgentFhirPseudonymizerController - /api/v2/rd-agent/fhir/$create-pseudonym
  • TransportIdService - SecureRandom tID generation, Redis RMapCache storage
  • BackendAdapterFactory + adapters (gPAS functional, Vfps/entici stubs)

Clinical Domain Agent (CDA):

  • FhirPseudonymizerStep + FhirPseudonymizerStepFactory
  • Example project configuration

Research Domain Agent (RDA):

  • FhirPseudonymizerStep + FhirPseudonymizerStepFactory
  • Example project configuration

Test Plan

  • Run mvn clean verify - all tests pass
  • Review integration tests for TCA controllers
  • Verify example YAML configurations are valid
  • Manual E2E test with docker-compose (optional)

@codecov
Copy link

codecov bot commented Dec 9, 2025

Codecov Report

❌ Patch coverage is 94.95798% with 30 lines in your changes missing coverage. Please review.
✅ Project coverage is 98.20%. Comparing base (6a84300) to head (1f7b2ad).

Files with missing lines Patch % Lines
...iguration/EnticiDeIdentificationConfiguration.java 15.38% 11 Missing ⚠️
...nfiguration/VfpsDeIdentificationConfiguration.java 15.38% 11 Missing ⚠️
...ts/tca/deidentification/VfpsParameterResponse.java 53.84% 6 Missing ⚠️
...e/smith/fts/tca/deidentification/EnticiClient.java 95.12% 1 Missing and 1 partial ⚠️
Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff              @@
##               main    #1337      +/-   ##
============================================
- Coverage     99.27%   98.20%   -1.08%     
- Complexity      493      676     +183     
============================================
  Files           124      147      +23     
  Lines          1803     2398     +595     
  Branches         47       70      +23     
============================================
+ Hits           1790     2355     +565     
- Misses            2       31      +29     
- Partials         11       12       +1     
Files with missing lines Coverage Δ
...re/smith/fts/cda/impl/FhirPseudonymizerConfig.java 100.00% <100.00%> (ø)
...care/smith/fts/cda/impl/FhirPseudonymizerStep.java 100.00% <100.00%> (ø)
...ith/fts/cda/impl/FhirPseudonymizerStepFactory.java 100.00% <100.00%> (ø)
...re/smith/fts/rda/impl/FhirPseudonymizerConfig.java 100.00% <100.00%> (ø)
...care/smith/fts/rda/impl/FhirPseudonymizerStep.java 100.00% <100.00%> (ø)
...ith/fts/rda/impl/FhirPseudonymizerStepFactory.java 100.00% <100.00%> (ø)
...e/smith/fts/tca/adapters/EnticiBackendAdapter.java 100.00% <100.00%> (ø)
...are/smith/fts/tca/adapters/GpasBackendAdapter.java 100.00% <100.00%> (ø)
...are/smith/fts/tca/adapters/VfpsBackendAdapter.java 100.00% <100.00%> (ø)
...are/smith/fts/tca/config/BackendAdapterConfig.java 100.00% <100.00%> (ø)
... and 13 more
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@trobanga trobanga force-pushed the 001-fhir-pseudonymizer branch 6 times, most recently from f2aa02e to 9a88ea0 Compare December 10, 2025 12:25
@trobanga trobanga force-pushed the 001-fhir-pseudonymizer branch from 9a88ea0 to e4d2a7a Compare December 11, 2025 06:48
@trobanga trobanga force-pushed the 001-fhir-pseudonymizer branch from fabb907 to 1f7b2ad Compare December 11, 2025 10:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant