FHIR 中文版

?.? Inter-version Compatibility

?.? Inter-version Compatibility

The following rules will apply to resources, profiles and other content within the specification
once those portions of the specification reach full normative status.
These rules ensure that implementations may exercise FHIR interfaces and process the content
of FHIR resources safely while exchanging data between applications using different
versions of FHIR.

During the period of trial use of the specification (and once normative status is reached for elements that
remain at draft or trial use status), changes may occur based on issues identified during early implementation of the
specification. These changes do not need to adhere to the rules listed below.

?.?.1 Version identification

There is no explicit version marker in the resource content. FHIR adheres to the DICOM approach to versioning where
content can safely be processed by instances independent of version. When dealing with
DSTU-level content, applications may wish to use resource tags to help
manage this during the period of trial use.

The conformance layer (Conformance and Profile)
has mandatory properties declaring the FHIR specification version, and these may be used to determine
which version of FHIR an implementation is using to aid in validation.

?.?.2 Change frequency

New versions of the FHIR specification will be produced regularly in accordance with the
FHIR publication timeline. New versions of the specification will include
additional draft and trial use content as well as promotion of previous trial use content to normative.
Once content reaches normative, changes are expected to be infrequent. This is for two reasons:

  1. The core specification focuses on those capabilities expected to be supported by most systems. For
    new capabilities to be introduced, it would need to be reflective of an overall change in the world-wide
    healthcare implementation environment.
  2. If the implementation community has already consolidated around a standard approach to solving a
    FHIR implementation issue (e.g. using a particular extension), FHIR will not introduce confusion into
    the implementation community by defining a conflicting mechanism for solving that problem in the core
    specification.

?.?.3 Forward compatible behavior

In a typical scenario, mixed versions may need to exist, so applications SHOULD ignore elements
that they do not recognize unless they are modifierExtensions.
However, in a healthcare context, many application vendors are unwilling to
consider this approach because of concerns about clinical risk or
technical limitations in their software (e.g. schema based processing).
Applications are not required to ignore unknown elements, but SHALL
declare whether they will do so in their conformance statements.

Unrecognized search criteria SHALL always be ignored. (Search criteria supported in a query
are echoed as part of the search response so there is no risk in ignoring unexpected search
criteria.)

Attempts to perform HTTP operations on unexpected URLs SHOULD be responded to with an appropriate
error code.

?.?.4 Permitted changes for normative content



























































CategoryAllowed changes
Elements
Once normative, subsequent versions of
this specification may introduce new elements and/or content (e.g. XML attributes, etc.)
at any point in the bundle, resource and/or data type structures. However, the names, path
and meaning of previously existing data elements will not be changed.
This includes no change to resource names and no changes to names assigned to slices and
other elements within profiles.
Cardinality
Minimum element cardinalities will not be changed. Upper cardinality may change from 1 to only in circumstances
where all elements except for the first repetition can be safely ignored. (This may mean that an order is
assigned to the repeating items or that there is no preference as to which element is retained.) Systems should
follow the rules above for unexpected elements.
Descriptions
Descriptive information about a resource - short labels, definitions, usage notes, aliases, examples, rationale,
mappings, etc. may be
updated or revised to provide additional clarity or guidance, but not in such a manner as to invalidate a
reasonable interpretation of the previously documented use of an element. (This does not preclude fixing
obvious errors.)
Value Sets

The definition of any value set that is marked as "immutable" will never change. The expansions for
immutable value sets may still change if no "stable date" is declared and the value set does not
restrict code system and/or value set references to specific versions if the referenced code system(s)
or value set(s) change.

For non-immutable value sets: Value sets with an enumerated list of codes and having a ‘fixed’ binding may have additional codes introduced but will never have codes removed.
Value sets making use of filters may have filters loosened or tightened to accommodate changes to
underlying code systems. StableDates and referenced code system and value set versions may be adjusted
to point to newer versions.
Definitions and display values for codes may change, but only in a manner that would not change the reasonable interpretation of data captured using the previous definitions or names.
Abstract codes may be made concrete. Concrete codes will not be made abstract.

For both immutable and non-immutable value sets, additional designations may be declared.

Terminology Bindings
Fixed bindings will remain fixed and will continue to point to the same value set. If the reference is
version-specific, it will not change.
Example bindings and Incomplete bindings may change to point to distinct value sets. Example bindings
may be replaced with Incomplete bindings.
Data Types
Data types will not be removed or changed. New data types may be introduced. Types declared on existing elements will not be removed or changed.
Additional data types may be added to elements which are already expressed as a choice of data types only if those elements are optional (minimum cardinality = 0).
Value Constraints
Data types will not be added, removed or changed. Invariants, regular expressions, fixed values and patterns will not be added, removed or changed.
Flags
The Is Modifier and Is Summary flags will not be changed. The Must Support flag may be changed to true, but will not be removed.
Slicing
Slicing rules and aggregation characteristics will not be changed.
Search Criteria Search criteria may be added but not removed or renamed. Existing criteria will not have their type or path changed or
have their description altered in any way that would invalidate the reasonable behavior of existing systems (with the exception of
correcting obvious errors).
Operations
New operations may be defined but operations may not be removed or renamed. Existing parameters will not be removed or renamed, nor may their type
or lower cardinality be changed. Upper cardinality may be changed from 1 to . (Systems should ignore unexpected repetitions.)
Additional optional parameters may be introduced.
Restful interface
Existing endpoints will not be renamed or removed, nor have their expected behavior changed in a manner that would cause reasonable systems designed
against prior versions to be non-interoperable. Additional endpoints may be introduced.
Profiles and extension definitions
Profile structure, extension definitions and search criteria definitions will not be removed or have their
URIs changed. New profile structures, extension definitions and search criteria definitions may be
introduced. Profiles may have their statuses changed to "retired". Profiles referenced by data elements
for structures or data types may be replaced
with a reference to a distinct profile that is "compatible" with the previously referenced profile according
to these forward and backward compatibility rules.

Additional discussion on inter-versioning issues can be found here:
http://wiki.hl7.org/index.php?title=FHIR_interversion_compatibility.