Skip to content

Commit 62be380

Browse files
committed
test: update tests and fixtures
1 parent c8500e1 commit 62be380

File tree

4 files changed

+84
-50
lines changed

4 files changed

+84
-50
lines changed

src/aidbox_sdk/generator/dotnet.clj

+19-13
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
"new ")
9797
(when (and (:required element)
9898
(not (:meta element))) "required ")
99-
(:value element)
99+
(or (:value element) (:type element))
100100
(:generic element)
101101
(when (:array element) "[]")
102102
(when (and (not (:required element))
@@ -133,12 +133,10 @@
133133
(assoc % :value "T")
134134
%)))
135135

136-
properties (try (->> elements
137-
(map generate-property)
138-
(map u/add-indent)
139-
(str/join "\n"))
140-
(catch Exception _
141-
(prn schema)))
136+
properties (->> elements
137+
(map generate-property)
138+
(map u/add-indent)
139+
(str/join "\n"))
142140

143141
base-class (cond (= base-class "Resource") "Base.Resource"
144142
(= base-class "DomainResource") "DomainResource, IResource"
@@ -213,13 +211,13 @@
213211

214212
(defn apply-choices [choices schema]
215213
(->> choices
216-
(map (fn [[key, item]]
214+
(map (fn [[key item]]
217215
(set/difference
218216
(set (:choices (first (filter #(= (:name %) (name key)) schema))))
219217
(set (:choices item)))))
220218
(reduce set/union #{})
221-
((fn [choises-to-exclude]
222-
(filter #(not (contains? choises-to-exclude (:name %))) schema)))))
219+
((fn [choices-to-exclude]
220+
(filter #(not (contains? choices-to-exclude (:name %))) schema)))))
223221

224222
(defn pattern-codeable-concept [name schema]
225223
(->> (str "}")
@@ -233,7 +231,7 @@
233231
(str (when (contains? code :display) (str "\tpublic new string Display { get; } = \"" (:display code) "\";\n")))
234232
(str "\n\nclass Coding" (str/join (str/split (:code code) #"-")) " : Coding\n{\n"))) coding))) "\n")))
235233

236-
(defn create-single-pattern [constraint-name, [key, schema], elements]
234+
(defn create-single-pattern [constraint-name [key schema] elements]
237235
(case (url->resource-name (some #(when (= (name key) (:name %)) (:value %)) elements))
238236
"CodeableConcept" (pattern-codeable-concept (str (uppercase-first-letter (url->resource-name constraint-name)) (uppercase-first-letter (subs (str key) 1))) schema) ""))
239237

@@ -242,14 +240,22 @@
242240
(if-let [pattern (some #(when (= (name (first %)) (:name item)) (last %)) patterns)]
243241
(case (:value item)
244242
"str" (assoc item :value (:pattern pattern) :literal true)
245-
"CodeableConcept" (conj item (hash-map :value (str (str/join (map uppercase-first-letter (str/split (url->resource-name constraint-name) #"-"))) (str/join (map uppercase-first-letter (str/split (:name item) #"-")))) :codeable-concept-pattern true))
243+
"CodeableConcept" (conj item (hash-map :value (str
244+
(str/join
245+
(map uppercase-first-letter
246+
(str/split (url->resource-name constraint-name) #"-")))
247+
(str/join (map uppercase-first-letter
248+
(str/split (:name item) #"-"))))
249+
:codeable-concept-pattern true))
246250
"Quantity" item item) item)) (:elements schema))
247251
(hash-map :elements)
248252
(conj schema (hash-map :patterns (concat (get schema :patterns []) (map (fn [item] (create-single-pattern constraint-name item (:elements schema))) patterns))))))
249253

250254
(defn add-meta [constraint-name elements]
251255
(->> (filter #(not (= (:name %) "meta")) elements)
252-
(concat [{:name "meta" :required true :value (str "Meta") :meta (str " = new() { Profile = [\"" constraint-name "\"] };")}])))
256+
(concat [{:name "meta"
257+
:required true :value "Meta"
258+
:meta (str " = Meta(profile=[\"" constraint-name "\"]);")}])))
253259

254260
(defn apply-single-constraint [constraint parent-schema]
255261
(->> (:elements parent-schema)

test/aidbox_sdk/fixtures/schemas.clj

+35
Original file line numberDiff line numberDiff line change
@@ -2382,3 +2382,38 @@
23822382
:base ["Patient"],
23832383
:version "1.0.0",
23842384
:fqn "hl7.fhir.uv.extensions.r4#1.0.0/patient-extensions-Patient-age"}])
2385+
2386+
(def patient-search-params-ir-schemas
2387+
[{:name "Patient"
2388+
:base "DomainResource"
2389+
:elements
2390+
[{:type "string" :name "_id"}
2391+
{:type "string" :name "active"}
2392+
{:type "string" :name "address"}
2393+
{:type "string" :name "address-city"}
2394+
{:type "string" :name "address-country"}
2395+
{:type "string" :name "address-postalcode"}
2396+
{:type "string" :name "address-state"}
2397+
{:type "string" :name "address-use"}
2398+
{:type "string" :name "age"}
2399+
{:type "string" :name "birthOrderBoolean"}
2400+
{:type "string" :name "birthdate"}
2401+
{:type "string" :name "death-date"}
2402+
{:type "string" :name "deceased"}
2403+
{:type "string" :name "email"}
2404+
{:type "string" :name "ethnicity"}
2405+
{:type "string" :name "family"}
2406+
{:type "string" :name "gender"}
2407+
{:type "string" :name "general-practitioner"}
2408+
{:type "string" :name "given"}
2409+
{:type "string" :name "identifier"}
2410+
{:type "string" :name "language"}
2411+
{:type "string" :name "link"}
2412+
{:type "string" :name "mothersMaidenName"}
2413+
{:type "string" :name "name"}
2414+
{:type "string" :name "organization"}
2415+
{:type "string" :name "part-agree"}
2416+
{:type "string" :name "phone"}
2417+
{:type "string" :name "phonetic"}
2418+
{:type "string" :name "race"}
2419+
{:type "string" :name "telecom"}]}])

test/aidbox_sdk/generator/dotnet_test.clj

+5-6
Original file line numberDiff line numberDiff line change
@@ -56,27 +56,26 @@
5656

5757
(testing ""))
5858

59-
(deftest generate-datatypes
59+
(deftest test-generate-datatypes
6060
(is
6161
(= (sut/generate-datatypes generator [fixtures/coding-ir-schema])
6262
[{:path (io/file "Base.cs"),
6363
:content
6464
"namespace Aidbox.FHIR.Base;\n\npublic class Coding : Element\n{\n public string? Code { get; set; }\n public string? System { get; set; }\n public string? Display { get; set; }\n public string? Version { get; set; }\n public bool? UserSelected { get; set; }\n}"}])))
6565

66-
(deftest generate-resources
66+
(deftest test-generate-resources
6767
(is
6868
(= (sut/generate-resource-module generator fixtures/patient-ir-schema)
6969
{:path (io/file "hl7-fhir-r4-core/Patient.cs"),
7070
:content
7171
"using Aidbox.FHIR.Base;\nusing Aidbox.FHIR.Utils;\n\nnamespace Aidbox.FHIR.R4.Core;\n\npublic class Patient : DomainResource, IResource\n{\n public bool? MultipleBirthBoolean { get; set; }\n public Base.Address[]? Address { get; set; }\n public string? DeceasedDateTime { get; set; }\n public Base.ResourceReference? ManagingOrganization { get; set; }\n public bool? DeceasedBoolean { get; set; }\n public Base.HumanName[]? Name { get; set; }\n public string? BirthDate { get; set; }\n public int? MultipleBirthInteger { get; set; }\n public object? MultipleBirth \n {\n get\n {\n if (MultipleBirthBoolean is not null)\n {\n return MultipleBirthBoolean;\n }\n \n if (MultipleBirthInteger is not null)\n {\n return MultipleBirthInteger;\n }\n \n return null;\n }\n \n set\n {\n if (value?.GetType() == typeof(bool))\n {\n MultipleBirthBoolean = (bool)value;\n return;\n }\n \n if (value?.GetType() == typeof(int))\n {\n MultipleBirthInteger = (int)value;\n return;\n }\n \n throw new ArgumentException(\"Invalid type provided\");\n }\n }\n public object? Deceased \n {\n get\n {\n if (DeceasedDateTime is not null)\n {\n return DeceasedDateTime;\n }\n \n if (DeceasedBoolean is not null)\n {\n return DeceasedBoolean;\n }\n \n return null;\n }\n \n set\n {\n if (value?.GetType() == typeof(string))\n {\n DeceasedDateTime = (string)value;\n return;\n }\n \n if (value?.GetType() == typeof(bool))\n {\n DeceasedBoolean = (bool)value;\n return;\n }\n \n throw new ArgumentException(\"Invalid type provided\");\n }\n }\n public Base.Attachment[]? Photo { get; set; }\n public Patient_Link[]? Link { get; set; }\n public bool? Active { get; set; }\n public Patient_Communication[]? Communication { get; set; }\n public Base.Identifier[]? Identifier { get; set; }\n public Base.ContactPoint[]? Telecom { get; set; }\n public Base.ResourceReference[]? GeneralPractitioner { get; set; }\n public string? Gender { get; set; }\n public Base.CodeableConcept? MaritalStatus { get; set; }\n public Patient_Contact[]? Contact { get; set; }\n\n public class Patient_Link : BackboneElement\n {\n public required string Type { get; set; }\n public required Base.ResourceReference Other { get; set; }\n }\n\n public class Patient_Communication : BackboneElement\n {\n public required Base.CodeableConcept Language { get; set; }\n public bool? Preferred { get; set; }\n }\n\n public class Patient_Contact : BackboneElement\n {\n public Base.HumanName? Name { get; set; }\n public string? Gender { get; set; }\n public Base.Period? Period { get; set; }\n public Base.Address? Address { get; set; }\n public Base.ContactPoint[]? Telecom { get; set; }\n public Base.ResourceReference? Organization { get; set; }\n public Base.CodeableConcept[]? Relationship { get; set; }\n }\n}"})))
7272

73-
(deftest generate-search-params
73+
(deftest test-generate-search-params
7474
(is
75-
(= (sut/generate-search-params generator fixtures/patient-search-params-schemas
76-
[fixtures/patient-fhir-schema])
75+
(= (sut/generate-search-params generator fixtures/patient-search-params-ir-schemas)
7776
[{:path (io/file "search/PatientSearchParameters.cs"),
7877
:content
79-
"namespace Aidbox.FHIR.Search;\n\npublic class PatientSearchParameters : DomainResourceSearchParameters\n{\n public string? Id { get; set; }\n public string? Active { get; set; }\n public string? Address { get; set; }\n public string? AddressCity { get; set; }\n public string? AddressCountry { get; set; }\n public string? AddressPostalcode { get; set; }\n public string? AddressState { get; set; }\n public string? AddressUse { get; set; }\n public string? Birthdate { get; set; }\n public string? DeathDate { get; set; }\n public string? Deceased { get; set; }\n public string? Email { get; set; }\n public string? Ethnicity { get; set; }\n public string? Family { get; set; }\n public string? Gender { get; set; }\n public string? GeneralPractitioner { get; set; }\n public string? Given { get; set; }\n public string? Identifier { get; set; }\n public string? Language { get; set; }\n public string? Link { get; set; }\n public string? Name { get; set; }\n public string? Organization { get; set; }\n public string? PartAgree { get; set; }\n public string? Phone { get; set; }\n public string? Phonetic { get; set; }\n public string? Race { get; set; }\n public string? Telecom { get; set; }\n}"}])))
78+
"namespace Aidbox.FHIR.Search;\n\npublic class PatientSearchParameters : DomainResourceSearchParameters\n{\n public string? Id { get; set; }\n public string? Active { get; set; }\n public string? Address { get; set; }\n public string? AddressCity { get; set; }\n public string? AddressCountry { get; set; }\n public string? AddressPostalcode { get; set; }\n public string? AddressState { get; set; }\n public string? AddressUse { get; set; }\n public string? Age { get; set; }\n public string? BirthOrderBoolean { get; set; }\n public string? Birthdate { get; set; }\n public string? DeathDate { get; set; }\n public string? Deceased { get; set; }\n public string? Email { get; set; }\n public string? Ethnicity { get; set; }\n public string? Family { get; set; }\n public string? Gender { get; set; }\n public string? GeneralPractitioner { get; set; }\n public string? Given { get; set; }\n public string? Identifier { get; set; }\n public string? Language { get; set; }\n public string? Link { get; set; }\n public string? MothersMaidenName { get; set; }\n public string? Name { get; set; }\n public string? Organization { get; set; }\n public string? PartAgree { get; set; }\n public string? Phone { get; set; }\n public string? Phonetic { get; set; }\n public string? Race { get; set; }\n public string? Telecom { get; set; }\n}"}])))
8079

8180
;; TODO
8281
#_(deftest generate-constraints

0 commit comments

Comments
 (0)