Skip to content

Commit e933369

Browse files
authored
R4b and R5 polishing (#33)
* fix(typescript): backbone property type in pascal case * fix(typescript): valueset names should clash with resource names * fix(typescript): include BaseSearchParameters file for r5
1 parent ea940b5 commit e933369

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

src/aidbox_sdk/converter.clj

+3-1
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,9 @@
364364
(->pascal-case (url->resource-name base)))
365365
:elements (->> (resolve-elements search-params-schemas (:id schema))
366366
(map (fn [el] {:type "string" :name el})))}))
367-
(remove #(empty? (:elements %)))))
367+
(remove #(and
368+
(not= (:name %) "Base")
369+
(empty? (:elements %))))))
368370

369371
;;
370372
;; Constraints

src/aidbox_sdk/generator/typescript.clj

+11-8
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
[aidbox_sdk.generator CodeGenerator]))
1212

1313
(def reserved-names #{"RequestPriority"})
14+
(def valuset-exception #{"SubscriptionStatus"})
1415
(def reserved-name-suffix "_")
1516

1617
(defn package->directory
@@ -27,10 +28,6 @@
2728
(io/file (package->directory (:package ir-schema))
2829
(str (->pascal-case (:resource-name ir-schema)) ".ts")))
2930

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-
3431
(defn search-param-filepath [ir-schema]
3532
(io/file "search" (str (:name ir-schema) "SearchParameters.ts")))
3633

@@ -76,6 +73,12 @@
7673
(str name' "_")
7774
name')))
7875

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+
7982
(defn generate-polymorphic-property [{:keys [name required choices]}]
8083
(let [type (->> choices
8184
(map :type)
@@ -85,7 +88,7 @@
8588
(str name (when-not required "?") ": " type ";")))
8689

8790
(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))) #"[_-]" ""))
8992

9093
(defn generate-property [{:keys [name array required type choices profile fhir-version] :as element}]
9194
(let [optional (if required "" "?")]
@@ -103,7 +106,7 @@
103106
(->backbone-type element)
104107

105108
(:valueset element)
106-
(class-name (:valueset element))
109+
(valueset-name (:valueset element))
107110

108111
:else
109112
(->lang-type (:type element)))
@@ -176,7 +179,7 @@
176179
(seq (:valueset-deps ir-schema)))
177180
(format "import { %s } from \"./valuesets\""
178181
(->> (:valueset-deps ir-schema)
179-
(map class-name)
182+
(map valueset-name)
180183
(str/join ", "))))]
181184
(str (->> (:deps ir-schema)
182185
(map class-name)
@@ -256,7 +259,7 @@
256259
:content
257260
(->> schemas
258261
(mapv (fn [vs]
259-
(let [type-name (class-name (:name vs))
262+
(let [type-name (valueset-name (:name vs))
260263
values (->> (:values vs)
261264
(map #(format "\"%s\"" %))
262265
(str/join " | "))]

0 commit comments

Comments
 (0)