Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add maturity level annotation and/or javadoc to the fhir-model resource classes #2145

Closed
lmsurpre opened this issue Mar 25, 2021 · 2 comments
Assignees
Labels
enhancement New feature or request

Comments

@lmsurpre
Copy link
Member

lmsurpre commented Mar 25, 2021

Is your feature request related to a problem? Please describe.
HL7 FHIR defines a maturity model so that they can ship content at different levels of maturity in a single cohesive specification.

From https://confluence.hl7.org/display/FHIR/FHIR+Maturity+Model :

Draft

FMM0 = the artifact has been published on the current build. This level is synonymous with Draft.

STU

FMM1 = FMM0 + the artifact produces no warnings during the build process and the responsible WG has indicated that they consider the artifact substantially complete and ready for implementation. For resources, profiles and implementation guides, the FHIR Management Group has approved the underlying resource/profile/IG proposal.
FMM2 = FMM1 + the artifact has been tested and successfully supports interoperability among at least three independently developed systems leveraging most of the scope (e.g. at least 80% of the core data elements) using semi-realistic data and scenarios based on at least one of the declared scopes of the artifact (e.g. at a connectathon). These interoperability results must have been reported to and accepted by the FMG
FMM3 = FMM2 + the artifact has been verified by the work group as meeting the Conformance Resource Quality Guidelines; has been subject to a round of formal balloting; has at least 10 distinct implementer comments recorded in the tracker drawn from at least 3 organizations resulting in at least one substantive change
FMM4 = FMM3 + the artifact has been tested across its scope (see below), published in a formal publication (e.g. STU), and implemented in multiple prototype projects. As well, the responsible work group agrees the artifact is sufficiently stable to require implementer consultation for subsequent non-backward compatible changes.
FMM5 = FMM4 + the artifact has been published in two formal publication release cycles at FMM1+ (i.e. STU level) and has been implemented in at least 5 independent production systems in more than one country

Normative

FMM6 = FMM5 + the responsible work group and the FMG agree the material is ready to lock down and the artifact has passed HL7 normative ballot

Currently, the IBM FHIR Server supports all resource types, irregardless of maturity level.
However, users of the model should be mindful of the maturity level because depending on a normative resource is a lot different than depending on a draft one (in terms of stability and future-proofing your application).

Describe the solution you'd like
To make it easier for users to consider this information, we should put it right at their fingertips, in the javadoc for the resource class.

Additionally, I would like to define a new annotation to make it possible to programatically determine the maturity level of a given resource type at runtime. The main driver behind this is that I'd like to be able to easily create "classes" of resources based on their maturity level for #819

Describe alternatives you've considered

Acceptance Criteria

Additional context
Hopefully this could help us evolve our story on backwards-compatibility as we move to FHIR R4B and, eventually R5.

@prb112 prb112 added the enhancement New feature or request label Mar 25, 2021
@lmsurpre
Copy link
Member Author

The maturity level of each resource is captured in its StructureDefinition via the following resource-level extension:

        {
            "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm",
            "valueInteger": 2
        },

lmsurpre added a commit that referenced this issue Mar 25, 2021
Signed-off-by: Lee Surprenant <lmsurpre@us.ibm.com>
@lmsurpre lmsurpre self-assigned this Mar 25, 2021
@lmsurpre lmsurpre added this to the Sprint 2021-04 milestone Mar 25, 2021
lmsurpre added a commit that referenced this issue Mar 25, 2021
Signed-off-by: Lee Surprenant <lmsurpre@us.ibm.com>
JohnTimm added a commit that referenced this issue Mar 25, 2021
issue #2145 - add MaturityLevel javadoc and annotation to model classes
lmsurpre added a commit that referenced this issue Mar 25, 2021
I had used the wiki page at
https://confluence.hl7.org/display/FHIR/FHIR+Maturity+Model to determine
what was draft/trial/normative, but in the StructureDefinition resources
there was a different field for this.

Net: my prior commit used "Trial Use" for FFM5, but the normative
resources actually have a level of 5 as well...we just needed to pull
the status from the other extension.

1. generate a code subtype class for StandardsStatus
2. change MaturityLeve(value) to Maturity(level, status)
3. regenerate the model

Signed-off-by: Lee Surprenant <lmsurpre@us.ibm.com>
lmsurpre added a commit that referenced this issue Mar 25, 2021
I had used the wiki page at
https://confluence.hl7.org/display/FHIR/FHIR+Maturity+Model to determine
what was draft/trial/normative, but in the StructureDefinition resources
there was a different field for this.

Net: my prior commit used "Trial Use" for FFM5, but the normative
resources actually have a level of 5 as well...we just needed to pull
the status from the other extension.

1. generate a code subtype class for StandardsStatus
2. change MaturityLeve(value) to Maturity(level, status)
3. regenerate the model

Signed-off-by: Lee Surprenant <lmsurpre@us.ibm.com>
lmsurpre added a commit that referenced this issue Mar 26, 2021
issue #2145 - set the StandardsStatus appropriately
@prb112
Copy link
Contributor

prb112 commented Mar 26, 2021

They are there, and I can see them in the code.
Let's close it.

@prb112 prb112 closed this as completed Mar 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants