Skip to content

Requiring XQuery as a generic query language is not required by use cases #5

@edjez

Description

@edjez

Summary

Currently the IHE CSD profile notes using XQuery as a generic language in which to send in queries. Because XQuery has such a large surface area, CSD then goes on to say:

REQUIRE a set of XQueries to be supported for conformance testing purposes.

If all CSD use cases can be met with a set of parametrized queries, it could just specify those and end up leaner and more focused.

Issues

Having an open query language as a request format has the following issues:

  • If CSD compliant actors only need to conform to a limited number of specific queries (ie. doing query X with parameters Y1,Y2 will yield result Z):
    • It is simpler to specify those than to open up all the degrees of freedom of an open query language; and then think of side effects and further profiling of XQuery
    • Clients typically will not really use XQuery, they will typically have tokenized strings with the 'required' queries and will just insert argument values
    • Conversely servers will either be forced to either implement i. a storage engine which has some native XQuery mapping or add on modules to support it, or ii. accept only the "compliance" xquery strings and extract arguments with via tokenized template.
  • CSD purposefully deals with data that spans the concerns of multiple services in a SOA environment. By putting forward a common query language across these entities it extends into a specification for an open-ended aggregator beyond the stated scope of the spec, instead of covering the specific needs for "Service Discovery".

Recommendation

  • CSD can specify queries required for conformance with explicit parametrized requests.
  • Remove the mentions to XQuery support
  • If IHE feels a free form query language is required look at creating a future profile outside of CSD that tackles that use case ("Care Entities Query"). At that time, evaluate combining XQuery with conventions such as oData for exposing data with minimal discovery needs.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions