|
280 | 280 | (defn resolve-choices [schemas]
|
281 | 281 | (map resolve-schema-choices schemas))
|
282 | 282 |
|
283 |
| -(defn collect-dependencies [schema] |
284 |
| - (let [primitive-element? (partial fhir/primitive-element? (:fhir-version schema))] |
| 283 | +(defn collect-dependencies |
| 284 | + "Returns the set of dependencies for the provided schema." |
| 285 | + [schema] |
| 286 | + (let [primitive-element? (partial fhir/primitive-element? (:fhir-version schema)) |
| 287 | + backbones-elements (->> (:backbone-elements schema) |
| 288 | + (map :elements) |
| 289 | + flatten) |
| 290 | + all-elements (into (:elements schema) backbones-elements) |
| 291 | + types (->> all-elements |
| 292 | + (remove primitive-element?) |
| 293 | + (map :type))] |
285 | 294 | (set/union
|
286 | 295 | (cond-> #{}
|
287 | 296 | (:base-resource-name schema) (conj (:base-resource-name schema))
|
288 | 297 | (fhir/constraint? schema) (conj "Meta"))
|
289 |
| - (->> (:elements schema) |
290 |
| - (remove primitive-element?) |
291 |
| - (map :type) |
292 |
| - (remove nil?) |
293 |
| - set) |
294 |
| - (->> (:backbone-elements schema) |
295 |
| - (map :elements) |
296 |
| - flatten |
297 |
| - (remove primitive-element?) |
298 |
| - (map :type) |
299 |
| - (remove nil?) |
300 |
| - set)))) |
| 298 | + (set (remove nil? types))))) |
| 299 | + |
| 300 | +(defn collect-valueset-dependencies |
| 301 | + [schema] |
| 302 | + (let [backbones-elements (->> (:backbone-elements schema) |
| 303 | + (map :elements) |
| 304 | + flatten) |
| 305 | + all-elements (into (:elements schema) backbones-elements) |
| 306 | + valusets (map :valueset all-elements)] |
| 307 | + (set (remove nil? valusets)))) |
301 | 308 |
|
302 | 309 | (defn resolve-dependencies [schemas]
|
303 |
| - (map #(assoc % :deps (collect-dependencies %)) schemas)) |
| 310 | + (map #(-> % |
| 311 | + (assoc :deps (collect-dependencies %)) |
| 312 | + (assoc :valueset-deps (collect-valueset-dependencies %))) |
| 313 | + schemas)) |
304 | 314 |
|
305 | 315 | (defn resolve-valuesets [schema available-valuesets]
|
306 | 316 | (let [available-valuesets (get available-valuesets (:fhir-version schema))]
|
|
0 commit comments