Polaris FHIR Implementation Guide - Local Development build (v1.10.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Change Log
Polaris FHIR Specification Changelog
[1.10.0] – 2026-05-26
- Added: PolarisCoreSchedule profile — bookable calendar resource with flexible
actor slicing (PractitionerRole 0..1 + Location 0..1 + HealthcareService 0..1, at-least-one invariant). Supports provider, room/equipment, and service-line schedules.
-
Added: PolarisCoreSlot profile — individual bookable time window with status (free |
busy |
busy-tentative |
busy-unavailable). Slot.schedule 1..1 MS references PolarisCoreSchedule. Identifier strategy is deterministic (<provider_no>-<yyyyMMdd>-<index>) for materialised-resource idempotency. |
- Enhanced: PolarisCoreAppointment profile — added
Appointment.slot 0..* MS constrained to Reference(PolarisCoreSlot). Backward-compatible addition (cardinality 0..* supports walk-in and historical appointments without a Slot reference).
- Note:
Appointment.slot targetProfile is tightened from base FHIR Reference(Slot) to Reference(PolarisCoreSlot). Consumers running HAPI strict-mode validation against the 1.9.9 snapshot may need to upgrade to the 1.10.0 snapshot — additive change, but strict validators surface unknown-targetProfile constraints.
- Added: scheduling feature documentation under
docs/guide/features/scheduling/ — overview, booking flow design, Oscar↔FHIR mapping docs, converter migration spec (for the existing partial OscarPro ScheduleConverter/SlotConverter code), FHIR-19 spike notes, and a CapabilityStatement deferral rationale.
- Source: FHIR-18 (Polaris IG New Profiles epic). Closes the availability-discovery gap that previously forced booking UIs to bypass the FHIR layer or infer availability from
Appointment absence.
[1.9.9] – 2026-04-27
- Breaking (vs 1.9.8):
oscar-billing-pay-program-extension removed. Oscar pay_program now lives on FHIR-native Invoice.type.coding sliced by system — see PolarisCoreInvoice profile. The OscarPayProgramCS code system and OscarPayProgramVS value set are retained and rebound to the coding slice.
- Added: PolarisCoreInvoice profile
Invoice.type 0..1 MS with type.coding[payProgram] slice bound to OscarPayProgramVS (extensible).
- Added:
oscar-service-location-extension on Invoice — Reference(PolarisCoreLocation) resolving Oscar's billing_on_cheader1.location (SLI code) to a typed Location resource instead of a raw string.
- Added:
identifier[sliCode] slice on PolarisCoreLocation carrying the Ontario Service Location Indicator with a fixed on-sli-code naming system.
- Added: Aliases
$OntarioSLICode, $OscarPayProgramCS, $OscarServiceLocation.
- Removed:
$OscarPayProgram alias (referenced a deleted extension).
[1.9.8] – 2026-04-24
- Added: PolarisCoreInvoice profile for Canadian provider-side billing records — Phase 1 Ontario (OHIP) + Oscar Pro
- Added:
oscar-billing-status-extension on Invoice — carries the raw 10-code Oscar billing_on_cheader1.status enum (H/O/P/N/W/B/S/X/D/I) alongside FHIR-canonical Invoice.status
- Added:
oscar-billing-shadow-bill-extension on Invoice — boolean flag for FHO/FHN capitated submissions
- Added:
oscar-billing-pay-program-extension on Invoice — carries Oscar pay_program code (HCP/RMB/PAT/OCF/ODS/CPP/STD/IFH/WCB)
- Added:
identifier[ohipBillingNumber] slice on PolarisCorePractitioner mapping to provider.ohip_no
- Added:
identifier[rmaNumber] slice on PolarisCorePractitioner for RMA group billing (provider.rma_no)
- Added: Code-system aliases for OHIP Schedule of Benefits, OHIP diagnostic codes, Ontario HCN, ICD-9-CM, ICD-10-CM, ICD-10-CA
- Changed: PolarisCoreCondition
category tightened to 1..* MS with binding guidance distinguishing problem-list-item (dxresearch, CPP) from encounter-diagnosis (invoice-line, appointment)
- Added: Oscar Pro Billing feature documentation under
docs/guide/features/oscar-billing/ — overview, oscar-to-fhir mapping, fhir-to-oscar write-back mapping, and write-back design
[1.9.7] – 2026-04-15
- Enhanced: DocumentReference profile attachments now accept inline base64 data, a blob storage URL, or both
- Changed:
content.attachment.data relaxed from required (1..1) to optional (0..1) - supports fetch-on-demand workflows for large documents
- Added:
content.attachment.url (0..1 MS) for references to Polaris-managed blob storage
- Added: invariant
attachment-has-data-or-url ensuring every attachment carries content via data, url, or both
[1.9.6] – 2026-03-03
- Fixed: EMR Device profile identifier system patterns corrected to use
*-device-identifier and *-device-raw-code conventions, aligning slice documentation with the emrdevice-has-polaris-id invariant FHIRPath expression
[1.9.5] – 2026-02-02
- Enhanced: Consent profile with relaxed identifier cardinality for improved interoperability
- Changed: identifier[rawCode] slice from required (1..) to optional (0..) - accommodates systems that don't track proprietary consent identifiers
- Aligns with the AllergyIntolerance cardinality relaxation introduced in v1.9.4
[1.9.4] – 2025-11-26
- Enhanced: AllergyIntolerance profile with relaxed cardinality requirements for improved interoperability
- Changed: identifier.rawCode slice from required (1..) to optional (0..) - accommodates systems that don't use proprietary allergen codes
- Changed: code.coding[rawCode] slice from required (1..) to optional (0..) - supports standard-only allergen coding workflows
- Changed: code.coding[rawCode].display from required (1..1) to optional (0..1) - aligns with FHIR standard for Coding.display
- Build: Added history.html generation for version tracking in ci-build releases
- Build: Fixed version status handling - all versions correctly marked as ci-build in package-list.json
- Build: Improved GitHub Pages deployment workflow for pre-built site deployment
- Documentation: Added comprehensive codebase review documentation
[1.9.3] – 2025-10-08
- Enhanced: Appointment profile participant cardinality restricted to single patient and practitioner (Patient 0..1, PractitionerRole 0..1, previously 0..*)
- Ensures 1:1 relationship between appointments and encounters for simplified clinical workflow modeling
- Multi-patient and multi-provider appointments no longer supported, aligning with Juno EMR capabilities and reducing implementation complexity
- Build: Added versioned FHIR documentation snapshot preservation to track specification evolution across releases
- Build: Clean script enhanced to preserve version subdirectories (e.g., docs/fhir/1.9.2/) while removing transient artifacts
- Documentation: Added comprehensive release process automation guide in prompts/polaris-fhir-release-prompt.md
[1.9.2] – 2025-10-03
- Enhanced: DocumentReference profile status field now supports document lifecycle management with three allowed values: current, superseded, and entered-in-error
- Previously restricted to current only, now enables proper version tracking when documents are updated or corrected
- Enhanced: MedicationRequest profile doseQuantity.code relaxed from required to optional
- Addresses real-world scenarios where dose units are captured in text but structured UCUM codes are unavailable
- Documentation: Standardized all profile intro page titles from "Polaris X Core Profile" to "Polaris Core X Profile" for consistency
[1.9.1] – 2025-10-01
- Enhanced: PolarisCoreAppState profile now supports multiple values (1..*) instead of single value (1..1)
- AppState can now function as a tuple of [subject, value, value, …] for multi-key storage scenarios
- Addresses real-world requirement for storing application state indexed by multiple keys
[1.9.0] – 2025-09-30
- Major naming convention update aligning with international FHIR standards (US Core, Canadian profiles)
- Breaking: All profile names renamed from
PolarisXCore/polaris-x-core to PolarisCoreX/polaris-core-x pattern (e.g., PolarisPatientCore → PolarisCorePatient, polaris-patient-core → polaris-core-patient)
- Breaking: All canonical URLs updated to reflect new naming (e.g.,
https://fhir.apps.health/StructureDefinition/polaris-patient-core → https://fhir.apps.health/StructureDefinition/polaris-core-patient)
- Breaking: All profile IDs, file names, and references updated across 26 core profiles and 3 experimental profiles
- Enhanced: Location pattern documentation now mandates at least one Location resource per EMR instance, even for single-site clinics
- Requirement: Every EMR must create at least one Location to support PolarisCoreAppointment's required Location participant (1..1 cardinality)
- Enhanced: Organization identifier examples updated with correct system URIs based on implementer feedback (Bianca)
- Impact: Implementers validating against Polaris profiles must update all profile references to use new naming convention. This change improves readability and aligns with established FHIR community standards
- Source: Location requirements driven by CII project app team implementation needs; naming convention update for standards alignment
[1.8.1] – 2025-09-18
- Point release addressing MERT specification alignment and OSCAR implementation refinements
- Enhanced: MedicationRequest profile now supports doseRange for patient-administered dose flexibility (e.g., "take 2-5 tablets")
- Enhanced: AllergyIntolerance profile with type and asserter fields, expanded standard coding to include DIN codes for drug allergies, added reaction.description
- Enhanced: Condition profile expanded to support ICD-9 in addition to ICD-10/SNOMED, abatement[x] marked Must Support, asserter field added
- Implementation: Changes driven by real-world OSCAR EMR integration experience and MERT clinical data requirements
[1.8.0] – 2025-09-17
- Breaking changes to MedicationRequest profile and identifier display requirements for better FHIR alignment
- Enhanced: MedicationRequest profile with form field support for medication formulations
- Enhanced: Added boundsDuration to dosageInstruction.timing.repeat for duration-based medication instructions
- Changed: Raw code display field no longer mandatory on top-level identifiers across all profiles - only required within references
- Removed: Redundant PolarisMedicationRequest-codeable-example.json example
- Updated: CII documentation and bidirectional mapping specifications reflecting current profile structures
- Fixed: Identifier display requirements now properly align with FHIR R4 standard which doesn't support display on identifiers
[1.7.0] – 2025-09-10
- Mandatory raw code tracking across all 21 core profiles for improved EMR data fidelity
- Enhanced: All profiles now require rawCode slices (1..*) in both identifiers and code.coding to preserve original EMR codes
- Enhanced: Added mandatory display field (1..1) to all rawCode identifiers ensuring human-readable context is preserved
- Modified profiles: AllergyIntolerance, AppConsent, Appointment, ClinicalImpression, Condition, DiagnosticReport, DocumentReference, EMRDevice, Encounter, Immunization, Location, MedicationDispense, MedicationRequest, Observation, Organization, Patient, Practitioner, PractitionerRole, Procedure, RosterPanel, ServiceRequest
- Impact: Systems must now always include raw codes with display values when mapping to Polaris profiles, ensuring clinical context is maintained even when standard terminology mappings are unavailable
[1.6.4] – 2025-09-09
- Fixed critical omission from 1.6.3 release for Oscar EMR integration
- Enhanced: MedicationRequest profile now includes boundsDuration in dosageInstruction.timing.repeat
- Added: Support for duration-based medication instructions required by Rebecca Skitch for Oscar prescriptions
[1.6.3] – 2025-09-09
- Added meta.source tracking to all 23 core profiles for EMR pipeline provenance
- Enhanced: All profiles now include meta.source (0..1 MS) to identify EMR instance and pipeline version
- Documentation: Revised Encounter profile intro to clarify primary care synthetic encounter generation
- Documentation: Added deprecation notice for Contained Medication profile - use medicationCodeableConcept instead
- Fixed: MedicationRequest profile formatting and alignment issues
[1.6.2] – 2025-09-03
- Bug fixes and profile cleanup based on implementation feedback from development teams
- Fixed: MedicationRequest profile duplicate dispenseRequest sections consolidated
- Fixed: Organization profile name now optional (0..1) to handle edge cases in Oscar EMR
- Fixed: Appointment documentation corrected to reference PractitionerRole instead of Practitioner
- Improved: UCUM units binding for medication dose quantities now properly enforced
[1.6.1] – 2025-08-28
- Refined profile constraints based on MERT discovery meeting feedback to improve EMR alignment
- Enhanced: Immunization profile with expirationDate, doseQuantity, and note elements marked as Must Support
- Enhanced: Procedure profile with relaxed performed[x] cardinality (0..1), required bodySite.text, and note element
- Enhanced: DocumentReference profile with required display for rawCode, mandatory period.start for context timing
- Clarified: Standard terminology codes (LOINC, SNOMED, CVX) marked as optional but helpful across profiles
- Fixed: Must Support flags adjusted to focus on essential elements while maintaining backwards compatibility
[1.6.0] – 2025-08-22
- New: MedicationRequest profile redesigned with CodeableConcept approach replacing contained Medication pattern
- New: PolarisMedicationStrength extension for capturing medication strength separately from medication code
- Enhanced: MedicationRequest now supports dual approaches - medicationCodeableConcept (recommended) or medicationReference (deprecated)
- Added: Direct DIN coding support in medicationCodeableConcept with raw code slicing
- Documentation: Added Slack community link prominently to README and homepage for improved community engagement
- Documentation: Comprehensive explanation of MedicationRequest evolution aligning with PrescribeIT patterns
[1.5.1] – 2025-08-20
- Fixed Immunization profile performer element cardinality and structure to align with FHIR R4 requirements
- Enhanced identifier slicing across all 27 core profiles with consistent gold standard implementation pattern
- Added raw code slicing to all CodeableConcept fields for supporting text-based EMR storage requirements
- Improved profile documentation with comprehensive field descriptions and Canadian healthcare context
- Corrected reference constraints across multiple profiles removing redundant actor.display requirements
- Added Provincial Health Number (PHN) support to Patient profile with jurisdictional validation
- Fixed Practitioner name validation invariant to require family or given name
- Updated examples with proper performer.actor references for Immunization resources
[1.5.0] – 2025-08-11
- Relaxed cardinality constraints on Patient and Organization profiles for real-world compatibility
- Patient: Made gender and birthDate optional (0..1) to accommodate incomplete demographics; added name validation invariant requiring family or given name
- Organization: Made active field optional (0..1), defaults to active when absent - supports primary care EMR ownership model
- MedicationRequest: Strengthened medication coding with mandatory ingredient.itemCodeableConcept for DIN requirements
- DocumentReference: Added required status, description, and authenticator fields; fixed inheritance chain
- Updated all Task examples to use identifier-based references instead of literal references for consistency
- Added comprehensive field-level documentation across all profiles with Canadian healthcare context
- Build system refactored with modular utilities and improved cross-platform support
[1.4.0] – 2025-08-05
- BREAKING CHANGE: All Polaris profiles renamed to include 'Core' suffix in preparation for future 'Extended' profile set
- Renamed: All 27 profiles from 'Polaris[Resource]' to 'Polaris[Resource]Core' with updated canonical URLs, filenames, and aliases
- Fixed: Practitioner references throughout codebase to properly use PractitionerRole for EMR users instead of Practitioner for persons
- Updated: Patient profile generalPractitioner now correctly references PractitionerRole
- Corrected: Task owner/requester, Composition author, and MedicationDispense performer to reference PractitionerRole
- Infrastructure: Pinned hl7.fhir.uv.extensions dependency to stable version 5.2.0 to resolve IG Publisher compatibility issues
[1.3.0] – 2025-08-01
- New: Dedicated FHIR Shorthand (FSH) pages for all profiles in the Implementation Guide, providing detailed technical documentation alongside the generated FHIR artifacts
- Enhanced: Patient profile and all other profiles now include comprehensive FSH source documentation
- Refactored: Build pipeline consolidation with cross-platform script support for Windows and Unix environments
- Updated: Java requirement to version 17 for compatibility with latest FHIR IG Publisher
- Documentation: Migrated placeholder content from Confluence to Markdown for better version control
- Infrastructure: Simplified CI/CD workflow and removed obsolete build scripts
[1.2.1] – 2025-07-24
- Updated documentation navigation structure for improved user experience
- Enhanced README.md with clearer project description and setup instructions
- Minor site accessibility improvements
[1.2.0] – 2025-07-24
- Significant consent profile improvements with proper FHIR R4 compliance and third-party app Device references
- Enhanced third-party app consent modeling with simplified KISS approach for core requirements
- Fixed critical consent profile issues: added required policyRule field, corrected JSON syntax errors, implemented proper FHIR R4 patterns
- Renamed 'emr task' to 'clinical task' throughout codebase for better terminology alignment
- Added comprehensive release automation tooling for systematic version management
- Corrected download links and cleaned up experimental content organization
- Fixed documentation link warnings and updated navigation structure
- Updated URI patterns across FHIR examples and documentation to new canonical format
- Corrected CII patient identifier mapping to use system fields instead of type fields
- Streamlined GitHub Actions workflow and removed redundant test jobs for better CI/CD performance
[1.1.1] – 2025-07-18
- Added experimental PolarisCoreAppConsent profile for patient app signup and consent management
- Specifically designed to model consent for patients signing up with third-party applications
- Includes support for AI scribe assistance consent, information access permissions, and granular data sharing controls
- Added PolarisCoreAppDevice profile for applications that integrate with patient data
- Comprehensive warning suppression implementation for clean validation builds
- Enhanced development workflow with proper FHIR IG Publisher warning management
[1.1.0] – 2025-06-18
- 1.1.0 release.
- MAJOR CHANGE: updated canonical system URL rules to place the 'instance identifier' after the Artifact type rather than before it.
- Updated LOINC codes for PolarisObservations in CII documentation.
[1.0.0] – 2025-06-18
- 1.0.0 release.
- new: PolarisCoreClinicalImpression - for exporting clinical assessments ('A' from SOAP notes) from EMRs that can parse SOAP notes.
- added 'category' field: PolarisCoreServiceRequest - to differentiate lab requests, DI requests, and referrals
- added 'category' field: PolarisCoreObservation - to differentiate lab results from vitals observations
- updated Alberta CII feature mapping documentation to include new clinical impression StructureDefinition and category fields on Observation and ServiceRequest.
[0.1.0]
- Initial pre-release of IG - FHIR modeling supporting Alberta CPAR and CII features complete.