SQL on FHIR WG Meetings
SQL on FHIR WG Meeting — October 7, 2025
Nikolai Ryzhikov
Nikolai Ryzhikov
CTO at Health Samurai
John Grimes
John Grimes
Principal Research Consultant CSIRO
Gino Canessa
Gino Canessa
Principal Software Engineer at Microsoft
Arjun Sanyal
Arjun Sanyal
Principal Antidote Solutions
Oct 7, 2025

Topics discussed:

  • Nikolai hit a wall writing the operations up properly: you can't declare a logical model as the type of an operation parameter. His workaround is type = canonical with the target profile pointing at the logical model's URL. His confusion was fair — Graham had said at DevDays that logical models are first class — but Gino Canessa corrected the reading: that meant first class in IG Publisher, for the publication tooling, not that they work in place across FHIR. They can't, and that's the entire reason the additional-resources work exists in R6.
  • Gino showed what backporting actually looks like now: a Basic resource plus one complex extension carrying the whole resource, with the profile generated for you and the tooling enforcing the rules it inherits. Nikolai was unmoved — "still looks quite ugly, I would sooner take a Library resource and put the ViewDefinition binary inside it" — and predicted implementers will just mix versions instead, which Gino half-granted, since most vendors already have some form of custom resource because when a customer is paying you say yes. Gino answered from years of shipping subscriptions: the serialisation format is about 1% of the work, because storing the thing is useless and the work is all in the engine behind it; Nikolai countered that those few hundred lines of translation still have to be written and maintained for every language implementers actually use.
  • The reason the backport isn't merely unattractive is that it isn't legal: R4 declares its resource list closed and much of it normative. Gino's real argument was regulators — a community can happily agree on an extension, but a regulator can't touch something that isn't valid FHIR. Nikolai, half-trolling, said anyone who could invent Basic-with-cross-version-extensions will find a way; his serious worry was the direction of travel, that in this machinery he sees FHIR turning back into v3 or v2 and the founding idea of being simple getting freaked out of it.
  • So: target R6 with ViewDefinition as an official additional resource, report broken tooling to Graham as they hit it, and leave R4 users the cross-version-extension pathway if anyone actually asks. John Grimes wanted R6 because it's cleanest; Arjun Sanyal noted they're outside the balloting process anyway and can choose when to enter it, so there's no reason to take on that labour without explicit demand. Gino took on registering the resource name, since FMG controls the namespace and Graham can't simply mint one.
  • John also demoed a data loader and ViewDefinition transpiler for Microsoft SQL Server — a conspicuous hole in the implementation list, and one of the most used databases in the healthcare organisations he deals with. It keeps the JSON in a column and transpiles a view into SQL Server's dialect: the same explode-and-lateral-join shape, with a path syntax simplistic enough that anything interesting spills out into where clauses. It isn't fast, since it's parsing JSON strings, though SQL Server 2025 preview finally adds a binary JSON type.