[Solved] Comparing two FHIR profiles

Hey people, I am new at FHIR and at this community.

So my task is to compare two FHIR profiles from two different IGs, and find out the differences.

I tried using JSON comparison tools but thats no help because they compare line by line and profile JSON files are too big to go through all of it without making human errors.

I also tried this:[Using the FHIR Validator - FHIR - Confluence](FHIR validator compare on confluence)
problem with this is, whenever I give it -left and -right files to compare in my local drive, it says it cannot locate the files although validator and files are in same directory(json files are in subdirectory in the same folder). Below is the command I am running:

java -jar validator_cli.jar -compare -dest ig_comparison -version 4.0 -ig full_ig_xeh  -left profiles_s4h/patient-s4h.fhir.json -right profiles_xeh/Condition-eu-xeh.fhir.json

and below is the output of this command:

FHIR Validation tool Version 5.6.59 (Git# df2e9643896c). Built 2022-09-07T13:30:21.887Z (161 mins old)
  Java:   15.0.1 from /Users/username/Library/Java/JavaVirtualMachines/openjdk-15.0.1/Contents/Home on x86_64 (64bit). 4096MB available
Valid destination directory provided: "ig_comparison")
  Paths:  Current = /Users/username/AcademicProjects/master_thesis/fhir, Package Cache = /Users/username/.fhir/packages
  Params: -compare -dest ig_comparison -version 4.0 -ig full_ig_xeh -left profiles_s4h/patient-s4h.fhir.json -right profiles_xeh/Condition-eu-xeh.fhir.json
  Load FHIR v4.0 from hl7.fhir.r4.core#4.0.1 - 4572 resources (00:05.694)
  Load hl7.terminology#3.1.0 - 4117 resources (00:01.716)
  Load R5 Extensions - 123 resources (00:10.929)
  Terminology server http://tx.fhir.org - Version 2.0.14 (00:01.789)
  Load full_ig_xeh - 0 resources (00:00.002)
  Get set...  go (00:00.004)
  Load hl7.fhir.pubpack#0.1.1 - 0 resources (00:01.039)
Unable to locate left resource profiles_s4h/patient-s4h.fhir.json
Unable to locate right resource profiles_xeh/Condition-eu-xeh.fhir.json

if I run java -jar validator_cli.jar profiles_xeh/Condition-eu-xeh.fhir.json then it can access the file, so that means java and validator_cli.jar both have access to this file.

If anyone could help me with this please, I’ll be super duper thankful. Any suggestions are welcome including changing tools or strategy or anything.

Best regards

left and right are canonical URLs, not file names

Hey Graham,

thanks for the input. I did try with canonical URLs as well. Below is the command that I tried:

java -jar validator_cli.jar -compare -dest ig_comparison -version 4.0 -ig https://simplifier.net/guide/smart4health\?version\=current -ig https://build.fhir.org/ig/hl7-eu/x-ehealth -left http://fhir.smart4health.eu/StructureDefinition/s4h-patient -right https://build.fhir.org/ig/hl7-eu/x-ehealth/StructureDefinition-Patient-eu-xeh

Maybe I am not loading IGs properly?

I got it working. Below is the command that worked but only in Windows Powershell:

java -jar validator_cli.jar -compare -dest ig_comparison -version 4.0 -ig smart4health.eu.core#0.5.2 -ig https://build.fhir.org/ig/hl7-eu/x-ehealth -left http://fhir.smart4health.eu/StructureDefinition/s4h-patient -right http://hl7.eu/fhir/ig/xeh/StructureDefinition/Patient-eu-xeh

The problem was I was not using the IG ID (which can be pulled from https://registry.fhir.org/). Now it’s all running fine and generating the output as desired.

Terminals that tested and don’t work: bash, zsh


1 Like