|
11 | 11 | [aidbox_sdk.generator CodeGenerator]))
|
12 | 12 |
|
13 | 13 | (def reserved-names #{"RequestPriority"})
|
| 14 | +(def valuset-exception #{"SubscriptionStatus"}) |
14 | 15 | (def reserved-name-suffix "_")
|
15 | 16 |
|
16 | 17 | (defn package->directory
|
|
27 | 28 | (io/file (package->directory (:package ir-schema))
|
28 | 29 | (str (->pascal-case (:resource-name ir-schema)) ".ts")))
|
29 | 30 |
|
30 |
| -(defn constraint-file-path [ir-schema name] |
31 |
| - (io/file (package->directory (:package ir-schema)) |
32 |
| - (str (->pascal-case (:resource-name ir-schema)) ".ts"))) |
33 |
| - |
34 | 31 | (defn search-param-filepath [ir-schema]
|
35 | 32 | (io/file "search" (str (:name ir-schema) "SearchParameters.ts")))
|
36 | 33 |
|
|
76 | 73 | (str name' "_")
|
77 | 74 | name')))
|
78 | 75 |
|
| 76 | +(defn valueset-name [type-name] |
| 77 | + (let [name' (class-name type-name)] |
| 78 | + (if (contains? valuset-exception name') |
| 79 | + (str name' "VS") |
| 80 | + name'))) |
| 81 | + |
79 | 82 | (defn generate-polymorphic-property [{:keys [name required choices]}]
|
80 | 83 | (let [type (->> choices
|
81 | 84 | (map :type)
|
|
85 | 88 | (str name (when-not required "?") ": " type ";")))
|
86 | 89 |
|
87 | 90 | (defn ->backbone-type [element]
|
88 |
| - (str/replace (str (:base element) (uppercase-first-letter (:name element))) #"[_-]" "")) |
| 91 | + (str/replace (str (:base element) (->pascal-case (:name element))) #"[_-]" "")) |
89 | 92 |
|
90 | 93 | (defn generate-property [{:keys [name array required type choices profile fhir-version] :as element}]
|
91 | 94 | (let [optional (if required "" "?")]
|
|
103 | 106 | (->backbone-type element)
|
104 | 107 |
|
105 | 108 | (:valueset element)
|
106 |
| - (class-name (:valueset element)) |
| 109 | + (valueset-name (:valueset element)) |
107 | 110 |
|
108 | 111 | :else
|
109 | 112 | (->lang-type (:type element)))
|
|
176 | 179 | (seq (:valueset-deps ir-schema)))
|
177 | 180 | (format "import { %s } from \"./valuesets\""
|
178 | 181 | (->> (:valueset-deps ir-schema)
|
179 |
| - (map class-name) |
| 182 | + (map valueset-name) |
180 | 183 | (str/join ", "))))]
|
181 | 184 | (str (->> (:deps ir-schema)
|
182 | 185 | (map class-name)
|
|
256 | 259 | :content
|
257 | 260 | (->> schemas
|
258 | 261 | (mapv (fn [vs]
|
259 |
| - (let [type-name (class-name (:name vs)) |
| 262 | + (let [type-name (valueset-name (:name vs)) |
260 | 263 | values (->> (:values vs)
|
261 | 264 | (map #(format "\"%s\"" %))
|
262 | 265 | (str/join " | "))]
|
|
0 commit comments