Releases: openEHR/archie
0.5.5
- When flattening an archetype, also set some fields of the child (such as description) that were previously missing
Bug and security fixes
This release has a security update and two bug fixes:
- Upgrade jackson to fix security issue.
- Fix a NullPointerException when rendering a validation message for a null value.
- Allow null_flavour to be set from rules without validation errors.
0.5.3
In this release several features are added:
Some new @XmlRootElements in jaxb annotations
Very minor patch that adds @XmlRootElement for Element, ItemList and ItemTable, so they can be used with RMQueryContext.
New getUniquePath function
This release adds the utility functions getUniquePath, getUniquePathSegments and getAttributeValueFromRMObject.
These functions can be used to determine the unique path of any OpenEHR RM Pathable object, similar to the UniqueNodePathBuilder but without constructing a DOM.
Archetype diffing, RM Object validation
This release contains two major new features, one for use as an archetype modelling tool, and one for use in EHRs:
Archetype diffing
Archie already had a toolset for archetype modelling tools, including flattening and validation of archetypes, several serialisation options and a BMM implementation. The differentiator completes the set of archetype modelling tools, allowing for easy editing of specialised archetypes. This includes sibling order markers, adding the possibility to reorder nodes in specialised archetypes. This means Archie now contains all the major tools to develop a fully featured archetype editor, or any other kind of modelling tool.
RM Object validation
The new RMObjectValidator validates RM Objects against archetypes. This is a useful addition for implementing an EHR, to check user input against clinical models.
Bug fix update
Small bug fixes:
- Non functioning old pom.xml removed
- dependencies updated to newer versions
- bug in URI parsing in Odin/ADL fixed
- licence field in resource_description should not be there, was removed
- Fix NullpointerException in AuthoredArchetypeMetadataChecks
- differential attribute and generated flag now set more correctly during parsing and flattening
The differential attribute of parsed ADL files is always set to true. This is perhaps not correct, but it's impossible to detect based on the content of ADL whether the archetype is differential or flat. A discussion about changing this in the OpenEHR spec has been started. You'll have to do this yourself for now if you ever parse flat ADL archetypes.
When parsing operational templates, the flag is correctly set to false, as well as when flattening
Many bug fixes related to archetype authoring
#Note: due to sonatype/maven central having problems, it will take a while before this is available
This release contains many bug fixes and some new features. Both the bug fixes and the features are based on better support for archetype authoring tools.
This release contains some JSON serialization fixes that can cause backwards compatibility issues. If so, you can add the removed fields back with Jackson Mixins relatively easily.
Features:
- adl terminology fixer, that adds missing term codes from the comments in ADL source. Useful for manual archetype authoring or editing
- add methods to remove a CAttribute from CComplexObject
- add methods to add and update CAttributeTuple from/to CComplexObject
- add id/value/valueset generating methods
- add basic validation for tuples: number of members and number of primitive tuples must be equal, tuple attributes must exist
- implement a BMM-based Constraint Imposer
- implement path lookup that optionally also matches specialized nodes
Improvements
- easier to read ADLChecker output
- remove json properties that should not have been serialized (Review this!! at least allUsedCodes and CInteger.getConstraintValues have to go, rest is a bit optional. Implementations can add these properties in their own implementations again with Jackson Mixins and @JsonIgnore(false) or @JsonProperty
- Archetype:
- specializationDepth()
- allUsedCodes()
- ArchetypeConstraint:
- isRoot, isLeaf
- CAttribute
- isSecondOrderConstrained, getAggregateOccurrencesLowerSum, getMinimumChildCount
- CObject
- isRequired, isProhibited
- Archetype:
- CInteger
- getConstraintValues
- Cardinality
-isBag, isList, isSet - MultiplicityInterval
- isOpen, isOptional, isMandatory, isProhibited, upperIsOne
- refactored ReferenceModelAccess to be slightly more readable
- when flattening a template, also flatten the template overlays
- allow to invalidate a single archetype in the InMemoryFullArchetypeRepository
- upgrades ANTLR to 4.7.1, input now UTF8 by default on all platforms including windows
- store line numbers in the ANTLR parser errors.
Bug fixes
- fixes for json (de)serialization errors
- populate the descendants field of the BmmClass - it was empty before
- implement findAllDescendants in BmmClass
- if phase 0 archetype validation fail, stop running other validations because otherwise exceptions will be thrown by the next validations
- do not serialize empty constraints as
matches {*}
. This is deprecated and the parser does not accept it. IOnstead just do not output anything - fix parsing of escaped " and -characters in ODIN/ADL.
- fix serializing empty rules to ADL
- don't output rules in ADL for template overlays
- fix CComplexObjectProxy replacement to correctly work with specialized nodes
0.4.4
- The archetype validator Incorrectly did not flatten or continue validating when warnings were present. This has been corrected.
- ModelInfoLookup.pathHasBeenUpdated now must return a Map which contains instructions on how to update the reference model object - for each path it must contain which object must be set.
This is used in Rule Evaluation in the OpenEHR RM to set both the symbol and the value if a rule specified the symbol should match a specific symbol. This makes it easier to correctly implement rule evaluation in a user interface.