go to post Theo Stolker · May 25, 2023 I watched the video as I was curious what was behind the bold title. So what is this "true interoperability"? What I heard is that if institutions agree on the use of the same FHIR profile, these institutions will achieve a higher degree of interoperability as compared to just the syntactic operability achieved normally between HL7v2 and FHIR. I do agree that is true! So institutions using the same FHIR profile(s) have reached a level of seamless / instant interoperability. I guess at that point I am wondering: How can I put it to work? I found this video: Working with FHIR Profiles in InterSystems IRIS for Health. Are there any other relevant resources?
go to post Theo Stolker · Dec 27, 2022 Thanks, Julius, that is really helpful!! I have implemented the part of the method that I needed as follows: /// Move FHIR resourceproperties in the followin order: /// - resourceType /// - id /// - meta /// - extension ClassMethod FHIROrderResourceProperties(resource As %DynamicObject) As %DynamicObject { #dim order as %DynamicArray = [ "resourceType", "id", "meta", "extension" ] #dim newObject as %DynamicObject = {} for index = 0:1:order.%Size() - 1 { set element = order.%Get(index) set done(element) = 1 if $EXTRACT(resource.%GetTypeOf(element), 1, 2) '= "un" { do newObject.%Set(element, resource.%Get(element)) } } set iterator = resource.%GetIterator() while iterator.%GetNext(.element, .value) { if '$DATA(done(element)) { do newObject.%Set(element, value) } } return newObject }
go to post Theo Stolker · Dec 22, 2022 Yes, although the Python code does deal with an actual collection object :)
go to post Theo Stolker · Dec 22, 2022 /// Python reorder FHIR properties ClassMethod PyFHIRResourceReOrder(resource As %String) As %String [ Language = python ] { import json from collections import OrderedDict result = json.loads(resource, object_pairs_hook=OrderedDict) result.move_to_end("extension", last = False) result.move_to_end("meta", last = False) result.move_to_end("id", last = False) result.move_to_end("resourceType", last = False) return json.dumps(result) } This Python code is what I ended up with. It re-orders the properties "resourceType", "id", "meta" and "extension" to be at the start
go to post Theo Stolker · Jul 8, 2022 Hi @Lorenzo, Thanks for the great tool! I tried generating a Fitbit client based on https://dev.fitbit.com/build/reference/web-api/explore/fitbit-web-api-sw..., but it failed, because parameter names have "-" characters, and these cannot be part of a Property name. Therefore I extended the name() Class method to also have the "-": ClassMethod name(name As %String) As %String [ CodeMode = expression ] { $Translate(name, "$_-","") } The proxy generation still fails, and given that I don't use that right now, I have disabled that. With these changes everything works great!