Open Lucas0T opened 3 weeks ago
@Lucas0T example Library with encoded crtdl
{
"resourceType": "Library",
"id": "606aceec-264b-494d-8291-15121314188e",
"meta": {
"versionId": "1",
"lastUpdated": "2024-07-15T07:14:50.192+02:00",
"profile": [
"http://medizininformatik-initiative.de/fhir/StructureDefinition/feasibility-library"
],
"tag": [
{
"system": "http://dsf.dev/fhir/CodeSystem/read-access-tag",
"code": "ALL"
}
]
},
"url": "urn:uuid:a67b655b-ab65-46d2-aef1-c070ee28573e",
"version": "1.0.0",
"name": "Retrieve",
"status": "active",
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/library-type",
"code": "logic-library"
}
]
},
"content": [
{
"contentType": "application/crtdl+json",
"data": "ewogICAgInZlcnNpb24iOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy90by1iZS1kb25lL3NjaGVtYSMiLAogICAgImRpc3BsYXkiOiAiIiwKICAgICJjb2hvcnREZWZpbml0aW9uIjogewogICAgICAidmVyc2lvbiI6ICJodHRwOi8vdG9fYmVfZGVjaWRlZC5jb20vZHJhZnQtMS9zY2hlbWEjIiwKICAgICAgImRpc3BsYXkiOiAiIiwKICAgICAgImluY2x1c2lvbkNyaXRlcmlhIjogWwogICAgICAgIFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJ0ZXJtQ29kZXMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJjb2RlIjogIjQyNDE0NDAwMiIsCiAgICAgICAgICAgICAgICAgICJzeXN0ZW0iOiAiaHR0cDovL3Nub21lZC5pbmZvL3NjdCIsCiAgICAgICAgICAgICAgICAgICJkaXNwbGF5IjogIkdlZ2Vud8OkcnRpZ2VzIGNocm9ub2xvZ2lzY2hlcyBBbHRlciIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJjb250ZXh0IjogewogICAgICAgICAgICAgICAgImNvZGUiOiAiUGF0aWVudCIsCiAgICAgICAgICAgICAgICAic3lzdGVtIjogImZkcGcubWlpLmNkcyIsCiAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICAgICAgICAgICAgICAiZGlzcGxheSI6ICJQYXRpZW50IgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInZhbHVlRmlsdGVyIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAicXVhbnRpdHktY29tcGFyYXRvciIsCiAgICAgICAgICAgICAgICAidW5pdCI6IHsKICAgICAgICAgICAgICAgICAgImNvZGUiOiAiYSIsCiAgICAgICAgICAgICAgICAgICJkaXNwbGF5IjogImEiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgInZhbHVlIjogMTgsCiAgICAgICAgICAgICAgICAiY29tcGFyYXRvciI6ICJndCIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidGVybUNvZGVzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAiY29kZSI6ICIyNjM0OTUwMDAiLAogICAgICAgICAgICAgICAgICAic3lzdGVtIjogImh0dHA6Ly9zbm9tZWQuaW5mby9zY3QiLAogICAgICAgICAgICAgICAgICAiZGlzcGxheSI6ICJHZXNjaGxlY2h0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgImNvbnRleHQiOiB7CiAgICAgICAgICAgICAgICAiY29kZSI6ICJQYXRpZW50IiwKICAgICAgICAgICAgICAgICJzeXN0ZW0iOiAiZmRwZy5taWkuY2RzIiwKICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAgICAgICAgICAgICAgICJkaXNwbGF5IjogIlBhdGllbnQiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAidmFsdWVGaWx0ZXIiOiB7CiAgICAgICAgICAgICAgICAic2VsZWN0ZWRDb25jZXB0cyI6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJjb2RlIjogImZlbWFsZSIsCiAgICAgICAgICAgICAgICAgICAgImRpc3BsYXkiOiAiRmVtYWxlIiwKICAgICAgICAgICAgICAgICAgICAic3lzdGVtIjogImh0dHA6Ly9obDcub3JnL2ZoaXIvYWRtaW5pc3RyYXRpdmUtZ2VuZGVyIgogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInR5cGUiOiAiY29uY2VwdCIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIF0sCiAgICAgICAgICBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidGVybUNvZGVzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAiY29kZSI6ICI4LTkxOCIsCiAgICAgICAgICAgICAgICAgICJzeXN0ZW0iOiAiaHR0cDovL2ZoaXIuZGUvQ29kZVN5c3RlbS9iZmFybS9vcHMiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICAgImRpc3BsYXkiOiAiSW50ZXJkaXN6aXBsaW7DpHJlIG11bHRpbW9kYWxlIFNjaG1lcnp0aGVyYXBpZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJjb250ZXh0IjogewogICAgICAgICAgICAgICAgImNvZGUiOiAiUHJvY2VkdXJlIiwKICAgICAgICAgICAgICAgICJzeXN0ZW0iOiAiZmRwZy5taWkuY2RzIiwKICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAgICAgICAgICAgICAgICJkaXNwbGF5IjogIlByb3plZHVyIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgXQoKICAgICAgXSwKICAgICAgICAiZGF0YUV4dHJhY3Rpb24iOiB7CiAgICAgICAgICAiYXR0cmlidXRlR3JvdXBzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgImdyb3VwUmVmZXJlbmNlIjogImh0dHBzOi8vd3d3Lm1lZGl6aW5pbmZvcm1hdGlrLWluaXRpYXRpdmUuZGUvZmhpci9jb3JlL21vZHVsLWxhYm9yL1N0cnVjdHVyZURlZmluaXRpb24vT2JzZXJ2YXRpb25MYWIiLAogICAgICAgICAgICAgICJhdHRyaWJ1dGVzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAiYXR0cmlidXRlUmVmIjogIk9ic2VydmF0aW9uLmNvZGUiLAogICAgICAgICAgICAgICAgICAibXVzdEhhdmUiOiBmYWxzZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZVJlZiI6ICJPYnNlcnZhdGlvbi52YWx1ZSIsCiAgICAgICAgICAgICAgICAgICJtdXN0SGF2ZSI6IHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJmaWx0ZXIiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIjogInRva2VuIiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY29kZSIsCiAgICAgICAgICAgICAgICAgICJjb2RlcyI6IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAiY29kZSI6ICI3MTgtNyIsCiAgICAgICAgICAgICAgICAgICAgICAic3lzdGVtIjogImh0dHA6Ly9sb2luYy5vcmciLAogICAgICAgICAgICAgICAgICAgICAgImRpc3BsYXkiOiAiSGVtb2dsb2JpbiBbTWFzcy92b2x1bWVdIGluIEJsb29kIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgImNvZGUiOiAiMzM1MDktMSIsCiAgICAgICAgICAgICAgICAgICAgICAic3lzdGVtIjogImh0dHA6Ly9sb2luYy5vcmciLAogICAgICAgICAgICAgICAgICAgICAgImRpc3BsYXkiOiAiSGVtb2dsb2JpbiBbTWFzcy92b2x1bWVdIGluIEJvZHkgZmx1aWQiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAidHlwZSI6ICJkYXRlIiwKICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGF0ZSIsCiAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDIxLTA5LTA5IiwKICAgICAgICAgICAgICAgICAgImVuZCI6ICIyMDIxLTEwLTA5IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgXQogICAgICAgIH0KICAgIH0KfQo="
}
]
}
Torch should be extended for a webservice endpoint, which given a CRTDL as input extracts the cohort and then the data. The endpoint should be implemented asynchronosly and as close to the following specification as possible. http://hl7.org/fhir/R5/async-bulk.html
as a FHIR endpoint it should receive the CRTDL in form of a Measure and Library as a direct payload (so that a Measure and Library endpoint is unnecessary)
Example Measure and Library to transport a SQ in the mii-process-feasibility, see here: https://github.com/medizininformatik-initiative/mii-process-feasibility
Note that the crtdl has to be base64 encoded to be added to the library
@alexanderkiel the content type would also be "application/json" or should it be something like "application/crtdl+json" analogous to flare?