FHIR Chat · submit-data operation in CI build · Da Vinci

Stream: Da Vinci

Topic: submit-data operation in CI build


view this post on Zulip Eric Haas (Jul 30 2018 at 17:23):

1) I'm hoping we can us these for both r3 and r4. Need to check if they validate for R3. However the MRP example given is not all like what we discussed for DEQM. I think that needs to be in alignment or there will be mass confusion. @Bryn Rhodes

view this post on Zulip Eric Haas (Jul 30 2018 at 17:51):

it looks like $submit-data will work in R3 but $ collect-data uses elements added in R$ so will have to have a R3 version for that one.

view this post on Zulip Bryn Rhodes (Jul 30 2018 at 20:51):

What is unexpected about the MRP example included in the build? Just that it's not using Task or is there something else?

view this post on Zulip Bryn Rhodes (Jul 30 2018 at 20:51):

And yes, the $collect-data for R3 would need to use the $evaluate-measure parameters for R3 (they were broadened in R4 to support "subject" as opposed to just "patient")

view this post on Zulip Eric Haas (Jul 30 2018 at 21:31):

it does not follow what we discussed. the only evaluated measure is either Task or Observation

view this post on Zulip Eric Haas (Jul 31 2018 at 03:22):

The Collect data operation uses the GET syntax. based on the spec : "When an operation is idempotent, and the parameters are all primitive data types with no extensions (as is the case with the example above), it may be invoked using GET as well."

view this post on Zulip Eric Haas (Jul 31 2018 at 03:26):

it is listed as not indempotent and reference isn't a simple search parameter. It should be a POST only

view this post on Zulip Eric Haas (Jul 31 2018 at 03:30):

@Bryn Rhodes

view this post on Zulip Eric Haas (Jul 31 2018 at 04:38):

I don't this is an Idempotent operation. How is it changing the state?

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 08:45):

It depends whether the implementation stores the MeasureReport resource.

view this post on Zulip Eric Haas (Jul 31 2018 at 17:26):

If I do $collect-data its like fetching a bag of resources. I pretty sure I can do that without affecting them because its like a GET right? The operation does not affect them.

view this post on Zulip Eric Haas (Jul 31 2018 at 17:27):

I don't think Reference is a primitive parameter @Lloyd McKenzie ?

view this post on Zulip Eric Haas (Jul 31 2018 at 17:28):

though it certainly behaves like one in your example but technically no.... do we need some clarification in the spec?

view this post on Zulip Lloyd McKenzie (Jul 31 2018 at 17:48):

I'm not sure what you mean by "primitive parameter", but there is a search parameter that's associated with Reference that can be passed on the URL, if that's what you mean.

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 18:31):

Yes, $collect-data is like fetching a bag of resources, but it also creates a MeasureReport, which may or not be persisted by the responding server. If it's persisted, the operation wouldn't be idempotent (because invoking it multiple times would result in slightly different MeasureReport resources). If it's not persisted, it's still not 100% idempotent (for the same reason), but at least it's not actually changing state.

view this post on Zulip Eric Haas (Jul 31 2018 at 20:20):

If it's persisted, the operation wouldn't be idempotent (because invoking it multiple times would result in slightly different MeasureReport resources

view this post on Zulip Eric Haas (Jul 31 2018 at 20:20):

how exactly does it change the MeasureReport?

view this post on Zulip Grahame Grieve (Jul 31 2018 at 20:20):

how does that make it not idempotent?

view this post on Zulip Eric Haas (Jul 31 2018 at 20:21):

@Lloyd McKenzie from the spec on the operations page "When an operation is idempotent, and the parameters are all primitive data types with no extensions (as is the case with the example above), it may be invoked using GET as well."

view this post on Zulip Eric Haas (Jul 31 2018 at 20:23):

Reference is not a primitive data types ( sorry not parameter) but it can sure act like one. It is a special case for using GET?

view this post on Zulip Eric Haas (Jul 31 2018 at 20:23):

I have always used uri instead

view this post on Zulip Eric Haas (Jul 31 2018 at 20:24):

or string with a reference search type but url is more direct

view this post on Zulip Eric Haas (Jul 31 2018 at 20:28):

@Bryn , I missed a key concept here the $collect triggers the system to create a MR resource, but how is that different from a system that creates other resources on the fly from a GET.

view this post on Zulip Lloyd McKenzie (Jul 31 2018 at 20:41):

If your operation parameter has a "search type" specified, then you can use it on a GET. For a type of Reference, you can have a search type of reference.

view this post on Zulip Eric Haas (Jul 31 2018 at 21:02):

Rule opd-2: A search type can only be specified for parameters of type string (expression : searchType.exists() implies type = 'string', xpath: not(exists(f:searchType)) or (f:type/@value = 'string'))

view this post on Zulip Eric Haas (Jul 31 2018 at 21:04):

My point is @Bryn Rhodes if we want to use GET syntax then need to change the types from Reference to uri. and decide is Idempotent ( which I think it is)

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 21:09):

I'm fine deciding it's idempotent, but based on Lloyd's last statement, I don't think we do need to change the type to uri, I've been using reference parameters with GET for a long time.

view this post on Zulip Eric Haas (Jul 31 2018 at 21:14):

Well either you are wrong or the spec is wrong.....

view this post on Zulip Eric Haas (Jul 31 2018 at 21:14):

opd-2 to be specific

view this post on Zulip Eric Haas (Jul 31 2018 at 21:16):

... and a lot of servers are forgiving.

view this post on Zulip Eric Haas (Jul 31 2018 at 21:17):

but my German in me says we should stick to the spec and use either a uri or string and type reference search parameter.

view this post on Zulip Eric Haas (Jul 31 2018 at 21:19):

and since OD is going normative, I'd like an opinion from @Lloyd McKenzie and @Grahame Grieve about this as well.

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 21:19):

Why are we specifying the searchType?

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 21:20):

I've never done that, and I don't understand why we need that. Isn't that the constraint that's being violated?

view this post on Zulip Eric Haas (Jul 31 2018 at 21:20):

if you choose string type you can specify the search parameter type. the other option is type uri.

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 21:20):

Right, but we don't need to do that.

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 21:21):

For reference, it's just understood to be a reference.

view this post on Zulip Eric Haas (Jul 31 2018 at 21:21):

What is written in the spec is...

view this post on Zulip Eric Haas (Jul 31 2018 at 21:22):

What http methods can be used for the operation depends on the .affectsState value and whether the input parameters are primitive or complex:

Servers SHALL support POST method for all operations.

Servers SHALL support GET method if all the parameters for the operation are primitive or there are no parameters and the operation has affectsState = false.

view this post on Zulip Eric Haas (Jul 31 2018 at 21:22):

type Reference is a complex data type so technically can't use GET.

view this post on Zulip Eric Haas (Jul 31 2018 at 21:24):

I don't see a variance saying you can and to your point, I don't see a place that say you can't support using GET with type Reference, but then we will need to make that part of the Conformance Rules for the IG I guess.

view this post on Zulip Eric Haas (Jul 31 2018 at 21:25):

I think my way is easier.BTW :-)

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 21:27):

Uncle

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 21:28):

So if we say it's a string, we can sets the search type?

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 21:28):

I don't see where to do that in the build though.

view this post on Zulip Lloyd McKenzie (Jul 31 2018 at 21:39):

Something is definitely wrong with opd-2. The list of possible searchTypes is much too long to make sense if its only allowed for strings. I suspect the intention was that we would only specify searchType for string because that's the only place it wasn't obvious. @Grahame Grieve, can you confirm?

view this post on Zulip Eric Haas (Jul 31 2018 at 21:47):

I don't see it in the spreadsheets either. I

view this post on Zulip Eric Haas (Jul 31 2018 at 21:48):

used type uri instead, but interested to what GG says.

view this post on Zulip Eric Haas (Jul 31 2018 at 21:49):

also can create from XML but I don't think the build supports that.

view this post on Zulip Eric Haas (Jul 31 2018 at 23:38):

data-requirements is Idempotent too.

view this post on Zulip Grahame Grieve (Jul 31 2018 at 23:40):

I don't see what's wrong with opd-2?

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 23:41):

The question I have is can you use GET to invoke an operation if it has reference parameters?

view this post on Zulip Grahame Grieve (Jul 31 2018 at 23:41):

you can't

view this post on Zulip Grahame Grieve (Jul 31 2018 at 23:42):

oh hang on. do you mean type = reference or searchType = reference?

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 23:42):

The documentation at this point says no, but I thought that at one point it didn't say that, and I know at least HAPI server supports it, we've been doing that.

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 23:42):

Type = reference

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 23:42):

So I can say $evaluate-measure?measure=Measure/mrp

view this post on Zulip Grahame Grieve (Jul 31 2018 at 23:42):

type = reference can't be done with get

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 23:42):

And do that with a GET

view this post on Zulip Grahame Grieve (Jul 31 2018 at 23:42):

then that's not type = reference, that's type = string + searchType = reference

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 23:44):

Ah

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 23:44):

So how do I specify that in the operation definition in the spreadsheet?

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 23:45):

Because right now, all I have is that the parameters are of type Reference(...)

view this post on Zulip Grahame Grieve (Jul 31 2018 at 23:47):

column "Search Type"

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 23:48):

Okay, my spreadsheet's old enough that it doesn't have that column.

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 23:48):

I'll add it.

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 23:48):

And make those changes.

view this post on Zulip Bryn Rhodes (Jul 31 2018 at 23:48):

But I'll do it tomorrow, is that okay @Eric Haas?

view this post on Zulip Eric Haas (Jul 31 2018 at 23:59):

Yep thanks for clearing that up. Im out for the next week, will check in periodically but not much.

view this post on Zulip Lloyd McKenzie (Jul 31 2018 at 23:59):

So if you're going to have a reference as a parameter, you have to send it as "string" if you use Parameters?

view this post on Zulip Bryn Rhodes (Aug 01 2018 at 04:35):

You have to send it as string if you want to not use Parameters (invoke with GET).

view this post on Zulip Lloyd McKenzie (Aug 01 2018 at 06:01):

I thought using GET was optional?

view this post on Zulip Bryn Rhodes (Aug 01 2018 at 23:46):

It is, but we want to make sure systems can use the GET. If we use reference parameters, they will only be able to POST.

view this post on Zulip Bryn Rhodes (Aug 01 2018 at 23:46):

So I applied these changes to the R4 operations.


Last updated: Apr 12 2022 at 19:14 UTC