{"id":50147928,"url":"https://github.com/wardweistra/fhir-ig-comparison","last_synced_at":"2026-05-24T06:04:59.402Z","repository":{"id":359570173,"uuid":"1246661884","full_name":"wardweistra/fhir-ig-comparison","owner":"wardweistra","description":"Firely .NET SDK based web app for comparing FHIR Implementation Guides","archived":false,"fork":false,"pushed_at":"2026-05-22T12:51:00.000Z","size":74,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-22T18:10:16.921Z","etag":null,"topics":["blazor","fhir","fhir-implementation-guide","file-system-access-api"],"latest_commit_sha":null,"homepage":"https://ig-compare.web.app/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wardweistra.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-22T12:23:23.000Z","updated_at":"2026-05-22T12:51:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wardweistra/fhir-ig-comparison","commit_stats":null,"previous_names":["wardweistra/fhir-ig-comparison"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/wardweistra/fhir-ig-comparison","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wardweistra%2Ffhir-ig-comparison","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wardweistra%2Ffhir-ig-comparison/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wardweistra%2Ffhir-ig-comparison/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wardweistra%2Ffhir-ig-comparison/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wardweistra","download_url":"https://codeload.github.com/wardweistra/fhir-ig-comparison/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wardweistra%2Ffhir-ig-comparison/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33423286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"online","status_checked_at":"2026-05-24T02:00:06.296Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blazor","fhir","fhir-implementation-guide","file-system-access-api"],"created_at":"2026-05-24T06:04:52.316Z","updated_at":"2026-05-24T06:04:59.393Z","avatar_url":"https://github.com/wardweistra.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FHIR IG Comparison\n\nCompare multiple FHIR Implementation Guide (IG) packages locally in the browser. Built with **Blazor WebAssembly**, **Firely .NET SDK**, and hosted on **Firebase Hosting**. Package files are read via the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API) and are not uploaded to a server.\n\n## Prerequisites\n\n- [.NET 10 SDK](https://dotnet.microsoft.com/download) (or adjust target framework in `.csproj`)\n- [Node.js](https://nodejs.org/) (for Firebase CLI via `npx`)\n- **Chrome or Edge** (File System Access API; Safari/Firefox are not supported)\n\n## Comparison folder layout\n\nSelect a **root folder** whose **immediate subfolders** are IGs. Each IG subfolder must be set up with [Firely Terminal](https://fire.ly/products/firely-terminal/):\n\n\n```bash\ncd \"US Core\"\nfhir install hl7.fhir.us.core\nfhir cache use-local\nfhir restore\n```\n\n```text\ntest-case-1/\n  US Core/\n    package.json              # lists primary dependency (e.g. hl7.fhir.us.core)\n    fhirpkg.lock.json         # resolved versions\n    .fhir-package-cache/\n      hl7.fhir.us.core#9.0.0-ballot/package/*.json\n  NL Core/\n    ...\n  UK Core/\n    ...\n```\n\nEach IG subfolder must have `package.json`, `fhirpkg.lock.json`, and `.fhir-package-cache/` with the **primary** package from `package.json` dependencies. Only that primary package is loaded for comparison (~400 JSON files per IG, not the full cache).\n\nSee [`test-cases/test-case-1/`](test-cases/test-case-1/) for an example.\n\n## Local development\n\n```bash\ndotnet restore\ndotnet run --project FhirIgComparison.Web\n```\n\nOpen the URL shown in the console.\n\n## Build and deploy to Firebase\n\nThis app is a static Blazor WebAssembly site deployed to [Firebase Hosting](https://firebase.google.com/docs/hosting). The project is configured in `.firebaserc` (`ig-compare`) and `firebase.json` (serves `FhirIgComparison.Web/bin/Release/net10.0/publish/wwwroot`).\n\n### First-time setup\n\n1. Create or open the Firebase project in the [Firebase Console](https://console.firebase.google.com/) (project ID: `ig-compare`).\n2. Log in to the Firebase CLI:\n\n   ```bash\n   npx -y firebase-tools@latest login\n   ```\n\n   If your credentials expire later, run `npx -y firebase-tools@latest login --reauth`. On a headless machine, add `--no-localhost`.\n\n3. Confirm the active project (should print `ig-compare`):\n\n   ```bash\n   npx -y firebase-tools@latest use\n   ```\n\n   To deploy to a different Firebase project, run `npx -y firebase-tools@latest use --add YOUR_PROJECT_ID` and update `.firebaserc`.\n\n### Deploy\n\nFrom the repository root:\n\n```bash\ndotnet publish FhirIgComparison.Web -c Release\nnpx -y firebase-tools@latest deploy --only hosting\n```\n\nLive URLs after a successful deploy:\n\n- https://ig-compare.web.app\n- https://ig-compare.firebaseapp.com\n\n### Preview before production\n\nTo publish to a temporary preview channel instead of production:\n\n```bash\ndotnet publish FhirIgComparison.Web -c Release\nnpx -y firebase-tools@latest hosting:channel:deploy preview\n```\n\n## How it works\n\n1. **Pick folder** — JavaScript reads each IG subfolder: `fhirpkg.lock.json` + primary package under `.fhir-package-cache/{id}#{version}/package/`.\n2. **Match resources** — Resources are indexed by canonical URL and grouped across IGs (full / partial / unique). National IGs (US / NL / UK) usually have different canonical URLs, so most groups will be **Unique** until richer matching is added.\n3. **Compare StructureDefinitions** — For matched profiles in 2+ IGs, snapshot elements are aligned by `ElementId` with per-field mismatch highlighting (short, cardinality, etc.).\n\n## Browser compatibility\n\n| Feature | Chrome / Edge | Firefox | Safari |\n|---------|---------------|---------|--------|\n| File System Access API | Yes | No | No |\n| Blazor WASM + Firely | Yes | Yes* | Yes* |\n\n\\*Folder picking requires Chromium; other browsers can run the app but cannot select local folders.\n\n## Project structure\n\n- `FhirIgComparison.Core` — Package loading, resource matching, StructureDefinition comparison\n- `FhirIgComparison.Web` — Blazor WASM UI and `wwwroot/js/folderAccess.js`\n- `firebase.json` — Hosting config pointing at publish output\n\n## Related work\n\nElement-level comparison logic is adapted from the [compare-fhir-ig](https://github.com/) sample (manual JSON paste); this app adds multi-IG folder loading and canonical URL matching.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwardweistra%2Ffhir-ig-comparison","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwardweistra%2Ffhir-ig-comparison","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwardweistra%2Ffhir-ig-comparison/lists"}