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

Investigate approach to offering most appropriate CapabilityStatement for given use cases #1449

Closed
lmsurpre opened this issue Aug 25, 2020 · 2 comments
Assignees
Labels
cms-interop This issue is associated with the CMS interoperability rule
Milestone

Comments

@lmsurpre
Copy link
Member

relates to #1315

@prb112 prb112 added the cms-interop This issue is associated with the CMS interoperability rule label Aug 25, 2020
@JohnTimm JohnTimm added this to the Sprint 18 milestone Sep 14, 2020
@lmsurpre lmsurpre self-assigned this Sep 15, 2020
@lmsurpre lmsurpre modified the milestones: Sprint 18, Sprint 19 Oct 6, 2020
@lmsurpre
Copy link
Member Author

lmsurpre commented Oct 13, 2020

A few approaches for this one.
A. drive it from the CapabilityStatement resources in the registry
B. drive it from fhir-server-config.json
C. a hybrid approach where the combination of all the CapabilityStatements in the registry is the full functionality of the server and then the fhir-server-config config filters that down
D. move to a static approach where the operator creates a CapabilityStatement to their liking and configures the server to share that directly (not even using the registry)

pro con
registry more consistent with our approach for validation and for advertising IG support (#1315),
more consistent with the FHIR Specification (avoids inventing our own CapabilityStatement-like JSON structure)
less support for tenant-specific config,
harder to implement (requires "merge" logic that combines the various CapabilityStatements)
config more consistent with our approach of generating the CapabilityStatement from our config,
simpler to develop,
simpler to understand for operators,
tenant-specific config already works
hybrid like the registry approach, except it provides a way to resolve conflicts in the configured CapabilityStatements complicated
static simple a complete reversal of our current approach to generating the config,
totally divorced from the fhir-server behavior unless we make a whole set of sweeping changes to drive behavior from CapabilityStatement instead of fhir-server-config.json

We might want to combine this with #1272 if we decide to drive this from the config (option B).

For example, we could potentially combine the two through a structure like this:

"resources": {
  "includeOmittedResourceTypes": false,
  "ExplanationOfBenefit": {
    "interactions": ["read", "vread", "history", "search"],
    "searchParameters": [
        "http://hl7.org/fhir/us/carin-bb/SearchParameter/explanationofbenefit-patient",
        "http://hl7.org/fhir/us/carin-bb/SearchParameter/explanationofbenefit-type",
        "http://hl7.org/fhir/us/carin-bb/SearchParameter/explanationofbenefit-identifier",
        "http://hl7.org/fhir/us/carin-bb/SearchParameter/explanationofbenefit-service-date"
    ]
  },
  "Organization": {
    "interactions": ["read", "vread", "history", "search"],
    "searchParameters": [
    ]
  },
  "Resource": {
    "searchParameters": [
        "http://hl7.org/fhir/SearchParameter/Resource-id",
        "http://hl7.org/fhir/SearchParameter/Resource-lastUpdated"
    ]
  }
}

lmsurpre added a commit that referenced this issue Oct 19, 2020
Now operators can configure the server to advertise only a subset of
resource types and/or interactions via the new resources config section
of fhir-server-config.json.

Signed-off-by: Lee Surprenant <[email protected]>
lmsurpre added a commit that referenced this issue Oct 19, 2020
Now operators can configure the server to advertise only a subset of
resource types and/or interactions via the new resources config section
of fhir-server-config.json.

Signed-off-by: Lee Surprenant <[email protected]>
lmsurpre added a commit that referenced this issue Oct 19, 2020
Now operators can configure the server to advertise only a subset of
resource types and/or interactions via the new resources config section
of fhir-server-config.json.

Signed-off-by: Lee Surprenant <[email protected]>
lmsurpre added a commit that referenced this issue Oct 20, 2020
We don't make it very easy to add component-level tests for our rest
layer.  This pull request works with what we have to test the public
JAX-RS methods for building the CapabilityStatement resource and the
smart-configuration JSON from various configs.

Signed-off-by: Lee Surprenant <[email protected]>
lmsurpre added a commit that referenced this issue Oct 20, 2020
We don't make it very easy to add component-level tests for our rest
layer.  This pull request works with what we have to test the public
JAX-RS methods for building the CapabilityStatement resource and the
smart-configuration JSON from various configs.

Signed-off-by: Lee Surprenant <[email protected]>
lmsurpre added a commit that referenced this issue Oct 20, 2020
Now operators can configure the server to advertise only a subset of
resource types and/or interactions via the new resources config section
of fhir-server-config.json.

Signed-off-by: Lee Surprenant <[email protected]>
lmsurpre added a commit that referenced this issue Oct 20, 2020
We don't make it very easy to add component-level tests for our rest
layer.  This pull request works with what we have to test the public
JAX-RS methods for building the CapabilityStatement resource and the
smart-configuration JSON from various configs.

Signed-off-by: Lee Surprenant <[email protected]>
lmsurpre added a commit that referenced this issue Oct 20, 2020
Now operators can configure the server to advertise only a subset of
resource types and/or interactions via the new resources config section
of fhir-server-config.json.

Signed-off-by: Lee Surprenant <[email protected]>
@lmsurpre
Copy link
Member Author

Generating the capability statement from the config seems to be working. I opened #1615 for using this new config to drive server behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cms-interop This issue is associated with the CMS interoperability rule
Projects
None yet
Development

No branches or pull requests

3 participants