-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
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.