Skip to content
This repository was archived by the owner on Oct 6, 2025. It is now read-only.

Commit d306f0a

Browse files
authored
Merge pull request #34 from num-codex/revise-documentation
Revise Documentation
2 parents ae2a9fd + d295c78 commit d306f0a

6 files changed

Lines changed: 52 additions & 13 deletions

codex-process-feasibility/README.md

Lines changed: 50 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,41 +12,79 @@ As you can see in the figure above, the feasibility query process starts with a
1212

1313
### Distribute Query
1414

15-
Messages, queries and results are represented by FHIR resources. The following three figures show the entire FHIR resource flow. In difference to the figure above, only one DIZ is represented, but both, the ZARS and the DIZ are divided into its individual components. On the ZARS side the components are the FHIR communication server and the BPE, were the DIZ contains an additional Blaze FHIR server.
15+
Messages, queries and results are represented by FHIR resources. The following three figures show the entire FHIR resource flow. In contrast to the figure above, only one DIZ is represented, but both, the ZARS and the DIZ are divided into its individual components. On the ZARS side the components are the FHIR communication server and the BPE, were the DIZ contains an additional Blaze FHIR server.
1616

1717
![fig-1](./docs/codex-feasibility-process-02.png)
1818

1919
1. Like in the high-level overview, the process starts with the `request` message. Beside the FHIR [Task][1] resource for the message, two other FHIR resources will be sent to the ZARS FHIR server. The first one is the [Measure][2] resource specifying the population criteria that are defined in the second resource, the [Library][3]. All three resources are put into a transaction [Bundle][4] in order to create all together in one transaction.
2020

21-
1. After the ZARS FHIR server receives the resources, it notifies the ZARS BPE via websocket subscription by transmitting the Task resource. The incoming Task resource starts the `request` process that implements the query distribution to all appropriate DIZ'es.
22-
23-
### Execute Query
21+
2. After the ZARS FHIR server receives the resources, it notifies the ZARS BPE via websocket subscription by transmitting the Task resource. The incoming Task resource starts the `request` process that implements the query distribution to all appropriate DIZ'es.
2422

2523
3. To each DIZ, an `execute` message is sent via a Task resource.
2624

27-
3. After arriving at the DIZ FHIR communication server, the `execute` Task resource is transferred to the DIZ BPE via websocket subscription, starting the `execute` process.
25+
4. After arriving at the DIZ FHIR communication server, the `execute` Task resource is transferred to the DIZ BPE via websocket subscription, starting the `execute` process.
26+
27+
### Execute Query (CQL)
28+
29+
This describes the execute process in case `CQL` is specified as an evaluation strategy.
2830

2931
![fig-1](./docs/codex-feasibility-process-03.png)
3032

3133
5. In each DIZ, the `execute` process starts by fetching the Measure and Library resource created at the ZARS FHIR communication server. The resources have to be fetched by the BPE because only Task resources are sent actively between organizations and message payload is only fetched in case a process really needs it. FHIR search is used in order to fetch both resources in one HTTP request by searching for the Measure resource and including the referenced Library resource.
3234

33-
5. In the next step, the `execute` process stores the Measure and Library resources to the Blaze FHIR server in order to be able to execute the [$evaluate-measure][5] operation.
35+
6. In the next step, the `execute` process stores the Measure and Library resources to the Blaze FHIR server in order to be able to execute the [$evaluate-measure][5] operation.
3436

35-
5. The resulting [MeasureReport][6] resource is transferred back to the DIZ BPE.
37+
7. The resulting [MeasureReport][6] resource is transferred back to the DIZ BPE.
3638

37-
5. After receiving the MeasureReport, the DIZ BPE stores it on the DIZ FHIR communication server in order to make it available for the ZARS.
38-
39-
### Retrieve Results
39+
8. After receiving the MeasureReport, the DIZ BPE obfuscates the population count within it unless disabled. Subsequently, it stores the MeasureReport on the DIZ FHIR communication server in order to make it available for the ZARS.
4040

4141
9. In its last step, the `execute` process sends a `result` message to the ZARS. The `result` message references the MeasureReport, so that it can be retrieved by the ZARS.
4242

43+
### Execute Query (Structured Query)
44+
45+
This describes the execute process in case `Structured Query` is specified as an evaluation strategy.
46+
4347
![fig-1](./docs/codex-feasibility-process-04.png)
4448

49+
5. In each DIZ, the `execute` process starts by fetching the Measure and Library resource created at the ZARS FHIR communication server. The resources have to be fetched by the BPE because only Task resources are sent actively between organizations and message payload is only fetched in case a process really needs it. FHIR search is used in order to fetch both resources in one HTTP request by searching for the Measure resource and including the referenced Library resource.
50+
51+
6. The DIZ BPE extracts the structured query from the Library resource and sends it to the Flare server.
52+
53+
7. The DIZ Flare server runs the evaluation by transforming the structured query into one or more requests compatible with the FHIR standard.
54+
55+
8. The DIZ Flare server collects all results from the FHIR server.
56+
57+
9. The DIZ Flare server sends back a single population count to the BPE.
58+
59+
10. Since the DIZ Flare server does not respond with a FHIR resource the BPE creates a MeasureReport resource based on the population count and the resources it downloaded in `5.`. Additionally, it obfuscates the population count unless disabled. The DIZ BPE stores this MeasureReport on the DIZ FHIR communication server in order to make it available for the ZARS.
60+
61+
11. In its last step, the `execute` process sends a `result` message to the ZARS. The `result` message references the MeasureReport, so that it can be retrieved by the ZARS.
62+
63+
### Retrieve Results
64+
65+
![fig-1](docs/codex-feasibility-process-05.png)
66+
4567
10. After arrival, the ZARS FHIR communication server will send the `result` Task resource to the ZARS BPE via websocket subscription. The incoming `result` message will use its correlation ID to match the original `request` process to continue.
4668

47-
10. As part of this process, the MeasureReport resource is fetched from the DIZ.
69+
11. As part of this process, the MeasureReport resource is fetched from the DIZ.
70+
71+
12. The fetched MeasureReport resource is stored immediately on the ZARS FHIR communication server together with the updated Task resource. The Task resource references the MeasureReport resource in its output parameter, in order to make it available to the initial requester.
72+
73+
## Supported Query Types
74+
75+
This process supports the following query types within the transferred Library resource:
76+
77+
|Type | Description | Mime Type |
78+
|-----|-------------|-----------|
79+
| CQL | Standardized query format. See https://cql.hl7.org/ for more information. | `text/cql` |
80+
| Structured Query | Internal query representation within the CODEX project based on the JSON format. | `application/sq+json` |
81+
| FHIR Search Query | Standardized FHIR search query. See https://www.hl7.org/fhir/search.html for more information. | `application/x-fhir-query` |
82+
83+
**Note**: _Although a FHIR search query can be transferred to the process no result will be calculated!_
84+
85+
## Result Obfuscation
4886

49-
10. The fetched MeasureReport resource is stored immediately on the ZARS FHIR communication server together with the updated Task resource. The Task resource references the MeasureReport resource in its output parameter, in order to make it available to the initial requester.
87+
The process ensures obfuscation of a DIZ's real evaluation numbers by rounding them to the nearest ten. Real numbers are solely present in an intermediary step for obfuscation purposes. None of these non obfuscated numbers get persisted unless obfuscation gets explicitly disabled.
5088

5189
## Request Process as BPMN Model
5290

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<mxfile host="Electron" modified="2021-02-12T13:17:47.208Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.1.8 Chrome/87.0.4280.88 Electron/11.1.1 Safari/537.36" etag="uSMD91-4E3astEm8BJ12" version="14.1.8" type="device"><diagram id="VETf5LYlRZAwOjoE17p3" name="Page-1">7Vnbbts4EP0aA7sPCUjq/ph7s2iBICl2277REm1pK4taiorl/fqlRFJX11Ydu1aAzUMgHt5GwzlnhvLMuFkVDwyn4ScakHiGQFDMjNsZQo5tiP8lsJHABTQsiSxZFEgMNsBL9C9RIFBoHgUk6wzklMY8SrugT5OE+LyDYcboujtsQePurilekgHw4uN4iP4VBTxUKLS9puMDiZah2tpFjuxYYT1YvUkW4oCuW5BxNzNuGKVcPq2KGxKXztN+kfPuf9BbG8ZIwsdMIE/PofnZvy8e4NXjnwz+EaAvFwiYyjq+0a9MAuEB1aSMh3RJExzfNeg1o3kSkHJdIFrNmI+UpgKEAvybcL5Rx4lzTgUU8lWsekkR8S/l9EtomKr9tey7BMBR7dtCrV81NrqRcLaRUx1Lt7+2O5t5VUtPzDhm/KqMCAEkNCEau4/iuJ4R9EYIpN0vLHkiLFoRTpjChsegTiajOfPJDt9DS/leWLEkfNdIT5GmPJrWJuqgHwgVFrGNGMBIjHn02g1erDiwrMc1YSIeVKT8RNTUlr/iOFd7fbt6fpkhOxbvcT1n4mlZPt1/eHweBNg6jDh5SXHlnbXQjW5w4CyVTF5ERRlkP3bxK2GcFDsdonqRqVi40fLiKmDdsFpDYZvP4GQ+9M7LPFfyRzEPCOahscxDptuh3qXnmXvoV7X63JkgJ20wlpMumhQnEbDOrOSwreRgZyx1Dt6PcZZFfu/s4YFn304QptMNU8eGh4TpLwmn40u8mvpEI2F2o4SWd+kZlukargM823G6uoisnuBJy9UiTYyKc8Gb1rC0HJDt2rYnwFpZm5iXSzYMqN/5DSKr/b83UV0/3U0yT6Gz5ykbnVVXOjnK2qkqNfVhl/bWHtL/ZBpq9KpRI/hGmTBGy4Q5qaxTW94i2O3jt+kWgpY9uUJQXyX3uXAiEjXw4PklyoUDx/zS0gd1Kunxlc/hWtOqclzHaMtdeYU+qBh/g3zpUni/fFlHl6/t5YYBe0EKnXF1zdEqD+2TFqs1pRe0MrWJVvufnOqOi6yKtysxAIK0aDq1DNTCUOuCiGOxkIKFtfPB0FpDPuPs+6z8ULSl7xPBWc7IM0kFGVrLSXP1ij2eZSFOy8eA+vmqipzrPZo0l7z7ONeAfOHyBmF3/7wj1VReX7DAOMGyTyZY3jA44JYyK46jNCP7XTqQ+YVQihsaU1YtZCwWC+TLCxaj30mrJ7DntmUfx89GPzFAb+hntMXP6HR+Nv6vXU9du3qjv2Lq+JhK7eoNv2IeR6KVkg4l9nzaWpUoRyC5CXokN0aKqXk6klsnOkaZLG28Kr2czLN0a0r9jZEsj/nv7/lU4aEp8oSnag9TJBg4852lSDS5FInA8AIPt1yn3pefTacfz6fzs2g2P+LK60PzU7hx9x8=</diagram></mxfile>
1+
<mxfile host="app.diagrams.net" modified="2021-06-17T15:38:20.989Z" agent="5.0 (X11)" etag="dBQG36rFsLpg2oIm-qgS" version="14.8.0" type="device"><diagram id="VETf5LYlRZAwOjoE17p3" name="Page-1">3VvbcqM4EP0aV+0+JMXd8OhcJ1OZKm8ytZudNxlkmx2MWCESO18/wkhcJNkmMTb25CWoJYQ43X3U3cID83qxvMcgmX9DAYwGhhYsB+bNwDB03bXpv1yyKiSO4RWCGQ4DNqgSPIfvkAk1Js3CAKaNgQShiIRJU+ijOIY+acgAxuitOWyKouZTEzCDkuDZB5Es/ScMyJy/l+NVHV9gOJuzR7vGsOhYAD6YvUk6BwF6q4nM24F5jREixdVieQ2jHDyOS3Hf3YbecmEYxqTNDXD8NLe++3fLe3308DfWvwbGy4XHVvsKooy9MVstWXEIYEARYU2EyRzNUAyi20p6hVEWBzB/jkZb1ZhHhBIq1KnwP0jIiqkXZARR0ZwsItabEoDJKFcXFcQohlx2F0YRmxbGgTCCSmr9Mh4MohRl2IfbQGC6pA+cQbJloM6tMoek9gwG+D1EC0jwig7AMAIkfG0aEWC2OCvHVeqiF0xjH9GeJ2nvx+jpeWA4EX2NqwmmV7P86u7Lw5Ok17d5SOBzAtbYvFH3beoEpEnhUNNwmet2M8CvEBO43IoH6zUsBiBjA8Nl7bfKt7hoXvcq7UAI6prdEsKr8e0pImj1j6ArIXjz8ON0bdB2Ts4GvT44Fy5D8lK7/jef6tJmrZslp928sSo5mL7wS71R3GXYvF3dt27xGz9I8H4E0jT0Gxyv78XxJXW3IHm7a5Jf30rfDaxqAxIUxiStzTzOBTU7NZp2aor7+47xtqYJplmsoDLU8lX2sF0OayOAKFx/itbLq6za+T9DvOMiXdvliA7QtWRZdXK6KAmkJGBq73QiJqarnUhDS675BkGaYTqYrk7R/RhOMMhVU85VrJVPJzgjjdyS/DJAfrZYW97VDt6aFM75OCkDnMILtUvdEf66ITVLE0jNa0dqzsFITe8lkOSkxpnrQ6SmN0ntDDjNbstppnlkTmsYTwdEY2gqojnPTKXaRSsbK0zOddwdRrdujSEOKaAQD/ZNfT5iQm7XJtSWYN7HPtSn8H71NX2/mY8ICAObrrwXfqlUp2mC8oaa+RnllZR16dF8rk5bumdsJy7aUJuCoKOD20ZR1OkrDS4XuisFOZEcTsxA+s/hDBlAW3avKAqTFO6OfiTMppT7rlGE8HoiczqdGr6/Jk6MfsJaT+BMHLurkGi4O88zFCgbHaCsZKxeA6JmlmccKM3rkn14IbXOPuqd4LCRjDrb8uyt2dZHx++dnSmRcU4nBB9+LgY/TYuz+7A4V6j82Za51eJcfev4A9UDDPlAQV0NjECen/e/GYuwnsBm7Pa6UVxqutVwXceztvpuq5RIEaqWPn9Bg2ndbDq+7g6PnAnxg8kW0e5QyTr7EsJuj9cEmyuWyu7qPucuITl8ce+Z4MwnGaYWbGh/ZbBRnJMKfb9BwW4oFOwspx3t2AejHdNQKPvkCyybqmpVQEETdSGoGGrGXol6gx23xzV78BEv2e3kI34KfCKH0uXCO2eN7yD9Sa/BInfeeJImA1Xt/w8M0ywif/ZBFutwtQN2EMv5JfPvYAfrUOxAVfI7scM+bum2DRO03gqm21feuV+Wp22iKz7BhOr4nB1RKtUd0RGVqafZS26wITt3vM/H6G1S9raheOeRt66JobdpN+coiKKL0HtzTatFQTsC711l0ZJTKFSy0U88t78sWgngsBc/KY9yNI0f3fCjHOdT9a/hrvpXd2dAmytd7T+aOXZNzPHEGtf2Kqwj1dCOUIWVz1bEbZd/9cw3Vr1FxjxGSZZDi2I6wzW1XHL6GfNeFCNmzLZ5vIxZzdFywqwouB/90Gw/kIVDM8uWQT7qoZkuJ5MKaj8vkL0WJefjgmxJICtq0OcNMqf6/kCW9wHFd7/nBbJIF+U3qL2B7Egg82Ow80XZMZsom4qPO4+LsnzIp/oc67xQFr8XsQ6HMm1Wv/sqwszq13Pm7S8=</diagram></mxfile>
10.1 KB
Loading
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="app.diagrams.net" modified="2021-06-17T16:52:10.094Z" agent="5.0 (X11)" etag="ByDd-rbf7cRjLxFAfcQ0" version="14.8.0" type="device"><diagram id="VETf5LYlRZAwOjoE17p3" name="Page-1">7Vnbbts4EP0aA7sPCUjq/ph7s2iBICl2277REm1pK4taiorl/fqlRFJX11Ydu1aADfIgzgzJ0XDOmaE8M25WxQPDafiJBiSeIRAUM+N2hhA0EZqV/yDYSMmFAaVgyaJAGTWCl+hfooRASfMoIFnHkFMa8yjtCn2aJMTnHRlmjK67Zgsad3dN8ZIMBC8+jofSv6KAh0oKba9RfCDRMlRbu8iRihXWxupNshAHdN0SGXcz44ZRyuXTqrghcRk8HRc57/4H2toxRhI+ZgJ5eg7Nz/598QCvHv9k8I8AfblAwFTe8Y1+ZRKICKghZTykS5rg+K6RXjOaJwEp1wVi1Nh8pDQVQiiEfxPON+o4cc6pEIV8FSstKSL+pZx+CQ1Tjb+WuksAHDW+LdT61WCjBwlnGznVsfT4a1vZzKtGemLGMeNXZUYIQUITomX3URzXM4KehZC09cKTJ8KiFeGEKdnwGNTJZDRnPtkRe2ip2AsvloTvsvQsaVkeTWsTddAPhAqP2EYYMBJjHr12kxcrDCxruyZNxIPKlJ/ImtrzVxznaq9vV88vM2TH4j2u50w8Lcun+w+Pz4MEW4cRJy8prqKzFrzRTQ6cpRLJi6gok+zHIX4ljJNiZ0CUFpkKhRtNL64SrBtUa1HYxjM4WQy98yLPlfhRyAMCeWgs8pDpdqB36XnmHvhVoz52JohJG4zFpIsmhUkErDMzOWwzOdiZS52D92OcZZHfO3t44Nm3C4TpdNPUseEhafpL0un4FK+mPtFIuN0woeVdeoZluobrAM92nC4vIqtHeNJztUiTo+Jc8KZllpYG2a5tewSsmbXJeblkg4D6nd9Asjr+ewvV9dPdJOsUOnudstFZeaVTo6ydrFJDH3Zhb+0B/U+WoYavGjaCb6QJYzRNmJOqOrXnLYDdPn6bbiNo2ZNrBPVVcl8IJ0JRgwien6JcOAjML219UKeTHt/5HM41rS7HdYw23ZVX6IOa8TfQl26F99OXdXT62t5uGLCXpNAZ19ccrfPQMWmhWkN6QStXm2y1/8mpVlxkVb5dCQMI0qJRahqoiaHmBZHHYiElFt7OB6Y1h3zG2fdZ+aFoi+4TwVnOyDNJBRhay0l39Yo9nGUhTsvHgPr5qsqc6z2cNJe4+zjXAvnC5Q3C7v55R+qpvD5hgXGEZZ+MsLxhcsAtbVYcR2lG9od0QPMLwRQ3NKasWshYLBbIlxcsRr+Tliaw57ZlHyfORr8wQG8YZ7Qlzuh0cTb+711P3bt6o79i6vyYSu/qDb9iHoeiFZMOKfZ83Fq1KEcAuQl6IDdGkql5OpBbJzpGWSxtvCqjnMyzdGtJ/Y2RLI/57+/5VOGhJfKEp2oPSyQYBPOdlUg0uRKJwPACD7dcp95XnE2nn8+ni7MYNj/iyutD81O4cfcf</diagram></mxfile>
18.4 KB
Loading
128 KB
Loading

0 commit comments

Comments
 (0)