|
6 | 6 | safe-conj
|
7 | 7 | uppercase-first-letter
|
8 | 8 | vector-to-map]]
|
| 9 | + [aidbox-sdk.fhir :as fhir] |
9 | 10 | [aidbox-sdk.schema :as schema]
|
10 | 11 | [clojure.java.io :as io]
|
11 | 12 | [clojure.set :as set]
|
|
558 | 559 | (apply-patterns (:url constraint) (filter #(contains? (last %) :pattern) (:elements constraint)))))
|
559 | 560 |
|
560 | 561 | (defn apply-constraints [constraint-schemas base-schemas]
|
561 |
| - (loop [result {} |
562 |
| - i 0] |
563 |
| - (if (or (= (count constraint-schemas) (count result)) |
564 |
| - (> i (count constraint-schemas))) |
| 562 | + (loop [result {}] |
| 563 | + (if (= (count constraint-schemas) (count result)) |
565 | 564 | result
|
566 |
| - (recur (reduce (fn [acc constraint-schema] |
567 |
| - (cond |
568 |
| - (contains? result (:url constraint-schema)) |
569 |
| - acc |
570 |
| - |
571 |
| - (contains? result (:base constraint-schema)) |
572 |
| - (assoc acc |
573 |
| - (:url constraint-schema) |
574 |
| - (assoc (apply-single-constraint constraint-schema |
575 |
| - (get result (:base constraint-schema))) |
576 |
| - :package (:package constraint-schema))) |
577 |
| - |
578 |
| - (contains? base-schemas (:base constraint-schema)) |
579 |
| - (assoc acc |
580 |
| - (:url constraint-schema) |
581 |
| - (assoc (apply-single-constraint constraint-schema |
582 |
| - (get base-schemas (:base constraint-schema))) |
583 |
| - :package (:package constraint-schema))) |
584 |
| - |
585 |
| - :else acc)) |
586 |
| - |
587 |
| - result |
588 |
| - constraint-schemas) |
589 |
| - (inc i))))) |
| 565 | + (recur |
| 566 | + (reduce (fn [acc constraint-schema] |
| 567 | + (cond |
| 568 | + (contains? result (:url constraint-schema)) |
| 569 | + acc |
| 570 | + |
| 571 | + (contains? result (:base constraint-schema)) |
| 572 | + (assoc acc |
| 573 | + (:url constraint-schema) |
| 574 | + (assoc (apply-single-constraint constraint-schema |
| 575 | + (get result (:base constraint-schema))) |
| 576 | + :package (:package constraint-schema))) |
| 577 | + |
| 578 | + (contains? base-schemas (:base constraint-schema)) |
| 579 | + (assoc acc |
| 580 | + (:url constraint-schema) |
| 581 | + (assoc (apply-single-constraint constraint-schema |
| 582 | + (get base-schemas (:base constraint-schema))) |
| 583 | + :package (:package constraint-schema))) |
| 584 | + |
| 585 | + :else acc)) |
| 586 | + |
| 587 | + result |
| 588 | + constraint-schemas))))) |
590 | 589 |
|
591 | 590 | ;;
|
592 | 591 | ;; Search Parameters
|
|
688 | 687 | (conj schema {:backbone-elements
|
689 | 688 | (flat-backbones (:backbone-elements schema) [])})))))
|
690 | 689 |
|
691 |
| -(defn generate-constraints [schemas] |
692 |
| - (let [base-schemas (->> schemas |
693 |
| - (prepared-schemas) |
694 |
| - (map (fn [schema] |
695 |
| - (conj schema {:backbone-elements |
696 |
| - (flat-backbones (:backbone-elements schema) [])}))) |
697 |
| - (vector-to-map)) |
698 |
| - constraints (filter #(and |
699 |
| - (constraint? %) |
700 |
| - (not (from-extension? %))) |
701 |
| - schemas)] |
702 |
| - (->> (apply-constraints |
703 |
| - constraints |
704 |
| - base-schemas) |
705 |
| - (mapv (fn [[name' schema]] |
706 |
| - {:name name' |
707 |
| - :schema schema |
708 |
| - :file-content (generate-constraint-namespace |
709 |
| - (assoc schema |
710 |
| - :url name'))}))))) |
711 | 690 |
|
712 | 691 | (defn build-all! [& {:keys [auth input output]}]
|
713 | 692 | (let [output (io/file output)
|
|
721 | 700 | (constraint? %)
|
722 | 701 | (not (from-extension? %)))))]
|
723 | 702 |
|
724 |
| - |
725 | 703 | (prepare-target-directory! output)
|
726 | 704 |
|
727 | 705 | ;; create base namespace (all FHIR datatypes) file
|
|
779 | 757 | (println "Generating constraints classes")
|
780 | 758 | (doseq [{:keys [name schema file-content]}
|
781 | 759 | (->> (apply-constraints
|
782 |
| - constraints |
| 760 | + (remove fhir/structure-definition? constraints) |
783 | 761 | (->> all-schemas
|
784 | 762 | (prepared-schemas)
|
785 | 763 | (map (fn [schema]
|
|
0 commit comments