@smile-cdr/fhirts 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@ name: FHIR.ts Publish
6
6
  on:
7
7
  push:
8
8
  branches:
9
- - master
9
+ - main
10
10
  paths-ignore:
11
11
  - '**.md'
12
12
  - '**.yml'
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.2.0
4
+
5
+ * Update `ResourceUtils` with strong typing to catch incorrect input data types for all FHIR versions.
6
+ * Update some cardinalities for base data types and structures
7
+
8
+ ## 2.1.2
9
+
10
+ * Add `QueryBuilder` for ease of generating queries.
11
+
3
12
  ## 2.1.1
4
13
 
5
14
  * Fix issue with `BundleUtils.getResourceFromBundle` not being able get the values inside nested array under array of objects.
@@ -1,6 +1,6 @@
1
1
  export declare class FHIRElement {
2
- id: string;
3
- extension: Extension[];
2
+ id?: string;
3
+ extension?: Extension[];
4
4
  }
5
5
  export declare class BackboneElement extends FHIRElement {
6
6
  modifierExtension: any;
@@ -38,12 +38,12 @@ export declare class CodeableConcept extends FHIRElement {
38
38
  text: string;
39
39
  }
40
40
  export declare class Identifier extends FHIRElement {
41
- use: string;
42
- type: CodeableConcept;
43
- system: string;
44
- value: string;
45
- period: Period;
46
- assigner: Reference;
41
+ use?: string;
42
+ type?: CodeableConcept;
43
+ system?: string;
44
+ value?: string;
45
+ period?: Period;
46
+ assigner?: Reference;
47
47
  }
48
48
  export declare class Reference extends FHIRElement {
49
49
  reference: string;
@@ -61,24 +61,24 @@ export declare class HumanName extends FHIRElement {
61
61
  }
62
62
  export declare class Extension {
63
63
  url: string;
64
- valueString: string;
65
- valueCode: string;
66
- valueAddress: Address;
64
+ valueString?: string;
65
+ valueCode?: string;
66
+ valueAddress?: Address;
67
67
  valueBoolean?: boolean;
68
- valueHumanName: HumanName;
69
- valueReference: Reference;
70
- valueDate: Date;
71
- valueIdentifier: string;
68
+ valueHumanName?: HumanName;
69
+ valueReference?: Reference;
70
+ valueDate?: Date;
71
+ valueIdentifier?: string;
72
72
  valueDecimal?: number;
73
- valueInteger: number;
74
- valuePeriod: Period;
73
+ valueInteger?: number;
74
+ valuePeriod?: Period;
75
75
  }
76
76
  export declare class Coding extends FHIRElement {
77
- system: string;
78
- version: string;
79
- code: string;
80
- display: string;
81
- userSelected: boolean;
77
+ system?: string;
78
+ version?: string;
79
+ code?: string;
80
+ display?: string;
81
+ userSelected?: boolean;
82
82
  }
83
83
  export declare class Period extends FHIRElement {
84
84
  start: string;
package/dist/FHIR-R3.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export declare class FHIRElement {
2
- id: string;
3
- extension: Extension[];
2
+ id?: string;
3
+ extension?: Extension[];
4
4
  }
5
5
  export declare class BackboneElement extends FHIRElement {
6
6
  modifierExtension: any;
@@ -32,12 +32,11 @@ export declare class Code extends FHIRElement {
32
32
  toString(): string;
33
33
  }
34
34
  export declare class Coding extends FHIRElement {
35
- system: string;
36
- version: string;
37
- code: string;
38
- display: string;
39
- userSelected: boolean;
40
- value: string;
35
+ system?: string;
36
+ version?: string;
37
+ code?: string;
38
+ display?: string;
39
+ userSelected?: boolean;
41
40
  }
42
41
  export declare class DoseCoding extends FHIRElement {
43
42
  system: string;
@@ -55,16 +54,16 @@ export declare class HumanName extends FHIRElement {
55
54
  }
56
55
  export declare class Extension {
57
56
  url: string;
58
- valueString: string;
59
- valueCode: string;
60
- valueAddress: Address;
57
+ valueString?: string;
58
+ valueCode?: string;
59
+ valueAddress?: Address;
61
60
  valueBoolean?: boolean;
62
- valueHumanName: HumanName;
63
- valueReference: Reference;
64
- valueDate: Date;
65
- valueIdentifier: string;
61
+ valueHumanName?: HumanName;
62
+ valueReference?: Reference;
63
+ valueDate?: Date;
64
+ valueIdentifier?: string;
66
65
  valueDecimal?: number;
67
- valueInteger: number;
66
+ valueInteger?: number;
68
67
  }
69
68
  export declare class Address extends FHIRElement {
70
69
  use: Code;
@@ -188,12 +187,12 @@ export declare class Reference extends FHIRElement {
188
187
  display: string;
189
188
  }
190
189
  export declare class Identifier extends FHIRElement {
191
- use: string;
192
- type: CodeableConcept;
193
- system: string;
194
- value: string;
195
- period: Period;
196
- assigner: Reference;
190
+ use?: string;
191
+ type?: CodeableConcept;
192
+ system?: string;
193
+ value?: string;
194
+ period?: Period;
195
+ assigner?: Reference;
197
196
  }
198
197
  export declare class Payload extends BackboneElement {
199
198
  contentString: string;
@@ -55,7 +55,7 @@ export declare class Extension {
55
55
  /**
56
56
  * Source of the definition for the extension code - a logical name or a URL.
57
57
  */
58
- url?: Uri;
58
+ url: Uri;
59
59
  /**
60
60
  * Value of extension - must be one of a constrained set of the data types (see [Extensibility](extensibility.html) for a list).
61
61
  */
package/dist/index.d.ts CHANGED
@@ -4,4 +4,5 @@ import * as fhirR3 from './FHIR-R3';
4
4
  import * as dstu2 from './FHIR-DSTU2';
5
5
  import { ResourceUtils } from './library/ResourceUtils/ResourceUtils';
6
6
  import { BundleUtils } from './library/BundleUtils/BundleUtils';
7
- export { fhirR4, fhirR3, IfhirR4, dstu2, ResourceUtils, BundleUtils };
7
+ import { QueryBuilder } from './library/QueryBuilder/QueryBuilder';
8
+ export { fhirR4, fhirR3, IfhirR4, dstu2, ResourceUtils, BundleUtils, QueryBuilder };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BundleUtils = exports.ResourceUtils = exports.dstu2 = exports.IfhirR4 = exports.fhirR3 = exports.fhirR4 = void 0;
3
+ exports.QueryBuilder = exports.BundleUtils = exports.ResourceUtils = exports.dstu2 = exports.IfhirR4 = exports.fhirR3 = exports.fhirR4 = void 0;
4
4
  const fhirR4 = require("./FHIR-R4/classes/models-r4");
5
5
  exports.fhirR4 = fhirR4;
6
6
  const IfhirR4 = require("./FHIR-R4/interfaces/IModel");
@@ -13,3 +13,5 @@ const ResourceUtils_1 = require("./library/ResourceUtils/ResourceUtils");
13
13
  Object.defineProperty(exports, "ResourceUtils", { enumerable: true, get: function () { return ResourceUtils_1.ResourceUtils; } });
14
14
  const BundleUtils_1 = require("./library/BundleUtils/BundleUtils");
15
15
  Object.defineProperty(exports, "BundleUtils", { enumerable: true, get: function () { return BundleUtils_1.BundleUtils; } });
16
+ const QueryBuilder_1 = require("./library/QueryBuilder/QueryBuilder");
17
+ Object.defineProperty(exports, "QueryBuilder", { enumerable: true, get: function () { return QueryBuilder_1.QueryBuilder; } });
@@ -0,0 +1,59 @@
1
+ import { SORT_ORDER } from "../constants";
2
+ export declare class QueryBuilder {
3
+ readonly REV_INCLUDE_KEYWORD = "_revinclude";
4
+ readonly INCLUDE_KEYWORD = "_include";
5
+ readonly SORT_KEYWORD = "_sort";
6
+ readonly WILDCARD_ASTERIK = "*";
7
+ readonly EQUALS = "=";
8
+ readonly COLON = ":";
9
+ readonly QUERY_DELIMETER = "&";
10
+ readonly COMMA = ",";
11
+ private baseResource;
12
+ private singularQueries;
13
+ private sortQueries;
14
+ /**
15
+ * @returns base resource for the query
16
+ */
17
+ getBaseResource(): String;
18
+ /**
19
+ * @param resourceType Base ResourceType for the query
20
+ * sets base resource type for the query
21
+ * i.e. which resource the query will performed for
22
+ */
23
+ setBaseResource(resourceType: String): this;
24
+ /**
25
+ * @param searchParameter SearchParameter reference to targeted resource
26
+ */
27
+ include(searchParameter: String): this;
28
+ /**
29
+ * @param resourceType Source ResourceType
30
+ * @param searchParameter SearchParameter reference from target resource to baseResource
31
+ */
32
+ revinclude(resourceType: String, searchParameter: String): this;
33
+ /**
34
+ * _include all references in query
35
+ */
36
+ includeAll(): this;
37
+ /**
38
+ * _revinclude all references in query
39
+ */
40
+ revincludeAll(): this;
41
+ /**
42
+ * @param searchParameter search parameter for the element to sort on
43
+ * @param sortOrder ASCENDING or DESCENDING
44
+ */
45
+ sort(searchParameter: String, sortOrder: SORT_ORDER): this;
46
+ /**
47
+ * Resets queries to it empty state
48
+ */
49
+ resetQuery(): this;
50
+ /**
51
+ * @returns complete generated query with encoded parameter values
52
+ */
53
+ getCompleteUrl(): String;
54
+ /**
55
+ * @returns complete generated query with decoded parameter values
56
+ */
57
+ getCompleteUrlDecoded(): String;
58
+ private createSortQuery;
59
+ }
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryBuilder = void 0;
4
+ const constants_1 = require("../constants");
5
+ class QueryBuilder {
6
+ constructor() {
7
+ this.REV_INCLUDE_KEYWORD = "_revinclude";
8
+ this.INCLUDE_KEYWORD = "_include";
9
+ this.SORT_KEYWORD = "_sort";
10
+ this.WILDCARD_ASTERIK = "*";
11
+ this.EQUALS = "=";
12
+ this.COLON = ":";
13
+ this.QUERY_DELIMETER = "&";
14
+ this.COMMA = ",";
15
+ this.baseResource = "";
16
+ this.singularQueries = [];
17
+ this.sortQueries = [];
18
+ }
19
+ /**
20
+ * @returns base resource for the query
21
+ */
22
+ getBaseResource() {
23
+ return this.baseResource;
24
+ }
25
+ /**
26
+ * @param resourceType Base ResourceType for the query
27
+ * sets base resource type for the query
28
+ * i.e. which resource the query will performed for
29
+ */
30
+ setBaseResource(resourceType) {
31
+ this.baseResource = resourceType;
32
+ return this;
33
+ }
34
+ /**
35
+ * @param searchParameter SearchParameter reference to targeted resource
36
+ */
37
+ include(searchParameter) {
38
+ this.singularQueries.push(this.INCLUDE_KEYWORD + this.EQUALS + encodeURIComponent(this.baseResource + this.COLON + searchParameter));
39
+ return this;
40
+ }
41
+ /**
42
+ * @param resourceType Source ResourceType
43
+ * @param searchParameter SearchParameter reference from target resource to baseResource
44
+ */
45
+ revinclude(resourceType, searchParameter) {
46
+ this.singularQueries.push(this.REV_INCLUDE_KEYWORD + this.EQUALS + encodeURIComponent(resourceType + this.COLON + searchParameter));
47
+ return this;
48
+ }
49
+ /**
50
+ * _include all references in query
51
+ */
52
+ includeAll() {
53
+ this.singularQueries.push(this.INCLUDE_KEYWORD + this.EQUALS + this.WILDCARD_ASTERIK);
54
+ return this;
55
+ }
56
+ /**
57
+ * _revinclude all references in query
58
+ */
59
+ revincludeAll() {
60
+ this.singularQueries.push(this.REV_INCLUDE_KEYWORD + this.EQUALS + this.WILDCARD_ASTERIK);
61
+ return this;
62
+ }
63
+ /**
64
+ * @param searchParameter search parameter for the element to sort on
65
+ * @param sortOrder ASCENDING or DESCENDING
66
+ */
67
+ sort(searchParameter, sortOrder) {
68
+ if (sortOrder === constants_1.SORT_ORDER.ASCENDING) {
69
+ this.sortQueries.push(searchParameter);
70
+ }
71
+ else {
72
+ this.sortQueries.push("-" + searchParameter);
73
+ }
74
+ return this;
75
+ }
76
+ /**
77
+ * Resets queries to it empty state
78
+ */
79
+ resetQuery() {
80
+ this.sortQueries = [];
81
+ this.singularQueries = [];
82
+ this.baseResource = "";
83
+ return this;
84
+ }
85
+ /**
86
+ * @returns complete generated query with encoded parameter values
87
+ */
88
+ getCompleteUrl() {
89
+ let completeUrl = this.baseResource + "?";
90
+ const singularQueriesLength = this.singularQueries.length;
91
+ if (singularQueriesLength > 0) {
92
+ completeUrl += this.singularQueries.join(this.QUERY_DELIMETER);
93
+ }
94
+ completeUrl += this.createSortQuery(singularQueriesLength);
95
+ return completeUrl;
96
+ }
97
+ /**
98
+ * @returns complete generated query with decoded parameter values
99
+ */
100
+ getCompleteUrlDecoded() {
101
+ return decodeURIComponent(this.getCompleteUrl().toString());
102
+ }
103
+ createSortQuery(singularQueriesLength) {
104
+ let sortQuery = "";
105
+ const sortDelimeter = singularQueriesLength > 0 ? this.QUERY_DELIMETER : "";
106
+ if (this.sortQueries.length > 0) {
107
+ sortQuery += sortDelimeter + this.SORT_KEYWORD + this.EQUALS + encodeURIComponent(this.sortQueries.join(this.COMMA));
108
+ }
109
+ return sortQuery;
110
+ }
111
+ }
112
+ exports.QueryBuilder = QueryBuilder;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const constants_1 = require("../constants");
4
+ const QueryBuilder_1 = require("./QueryBuilder");
5
+ describe("QueryBuilder", () => {
6
+ let queryBuilder;
7
+ beforeEach(() => {
8
+ queryBuilder = new QueryBuilder_1.QueryBuilder();
9
+ });
10
+ it('setBaseResource() should set base resource and getBaseResource() should return correct base resource', () => {
11
+ // setup
12
+ const expected = "Patient";
13
+ // execute
14
+ queryBuilder.setBaseResource(expected);
15
+ // validate
16
+ expect(queryBuilder.getBaseResource()).toEqual(expected);
17
+ });
18
+ it('include() should make query for _include', () => {
19
+ // setup
20
+ const expected = "Patient?_include=Patient%3Aorganization";
21
+ // execute
22
+ queryBuilder.setBaseResource("Patient").include("organization");
23
+ // validate
24
+ expect(queryBuilder.getCompleteUrl()).toEqual(expected);
25
+ });
26
+ it('include() should make query for multiple _include', () => {
27
+ // setup
28
+ const expected = "Patient?_include=Patient%3Aorganization&_include=Patient%3Alink";
29
+ // execute
30
+ queryBuilder.setBaseResource("Patient")
31
+ .include("organization")
32
+ .include("link");
33
+ // validate
34
+ expect(queryBuilder.getCompleteUrl()).toEqual(expected);
35
+ });
36
+ it('revinclude() should make query for _revinclude', () => {
37
+ // setup
38
+ const expected = "MedicationRequest?_revinclude=CarePlan%3Aactivity-reference";
39
+ // execute
40
+ queryBuilder.setBaseResource("MedicationRequest")
41
+ .revinclude("CarePlan", "activity-reference");
42
+ // validate
43
+ expect(queryBuilder.getCompleteUrl()).toEqual(expected);
44
+ });
45
+ it('revinclude() should make query for multiple _revinclude', () => {
46
+ // setup
47
+ const expected = "MedicationRequest?_revinclude=CarePlan%3Aactivity-reference&_revinclude=Observation%3Abased-on";
48
+ // execute
49
+ queryBuilder.setBaseResource("MedicationRequest")
50
+ .revinclude("CarePlan", "activity-reference")
51
+ .revinclude("Observation", "based-on");
52
+ // validate
53
+ expect(queryBuilder.getCompleteUrl()).toEqual(expected);
54
+ });
55
+ it('include() and revinclude() should make query for _include & _revinclude', () => {
56
+ // setup
57
+ const expected = "MedicationRequest?_revinclude=CarePlan%3Aactivity-reference&_include=MedicationRequest%3Aencounter";
58
+ // execute
59
+ queryBuilder.setBaseResource("MedicationRequest")
60
+ .revinclude("CarePlan", "activity-reference")
61
+ .include("encounter");
62
+ // validate
63
+ expect(queryBuilder.getCompleteUrl()).toEqual(expected);
64
+ });
65
+ it('includeAll() should make query for _include all', () => {
66
+ // setup
67
+ const expected = "MedicationRequest?_include=*";
68
+ // execute
69
+ queryBuilder.setBaseResource("MedicationRequest").includeAll();
70
+ // validate
71
+ expect(queryBuilder.getCompleteUrl()).toEqual(expected);
72
+ });
73
+ it('revincludeAll() should make query for _revinclude all', () => {
74
+ // setup
75
+ const expected = "MedicationRequest?_revinclude=*";
76
+ // execute
77
+ queryBuilder.setBaseResource("MedicationRequest").revincludeAll();
78
+ // validate
79
+ expect(queryBuilder.getCompleteUrl()).toEqual(expected);
80
+ });
81
+ it('includeAll() & revincludeAll() should make query for _include all & _revinclude all', () => {
82
+ // setup
83
+ const expected = "MedicationRequest?_revinclude=*&_include=*";
84
+ // execute
85
+ queryBuilder.setBaseResource("MedicationRequest")
86
+ .revincludeAll()
87
+ .includeAll();
88
+ // validate
89
+ expect(queryBuilder.getCompleteUrl()).toEqual(expected);
90
+ });
91
+ it('sort() should make query for _sort', () => {
92
+ // setup
93
+ const expected = "Observation?_sort=status%2C-date";
94
+ // execute
95
+ queryBuilder.setBaseResource("Observation")
96
+ .sort("status", constants_1.SORT_ORDER.ASCENDING)
97
+ .sort("date", constants_1.SORT_ORDER.DESCENDING);
98
+ // validate
99
+ expect(queryBuilder.getCompleteUrl()).toEqual(expected);
100
+ });
101
+ it('sort(), include() and revincludeAll() should make query for _sort, _include & _revinclude', () => {
102
+ // setup
103
+ const expected = "Observation?_revinclude=*&_include=Observation%3Abased-on&_sort=status";
104
+ // execute
105
+ queryBuilder.setBaseResource("Observation")
106
+ .revincludeAll()
107
+ .include("based-on")
108
+ .sort("status", constants_1.SORT_ORDER.ASCENDING);
109
+ // validate
110
+ expect(queryBuilder.getCompleteUrl()).toEqual(expected);
111
+ });
112
+ it('resetQuery() should reset query', () => {
113
+ // setup
114
+ const expected = "";
115
+ queryBuilder.setBaseResource("Observation")
116
+ .revincludeAll()
117
+ .include("based-on")
118
+ .sort("status", constants_1.SORT_ORDER.ASCENDING);
119
+ // execute
120
+ queryBuilder.resetQuery();
121
+ // validate
122
+ expect(queryBuilder.getBaseResource()).toEqual(expected);
123
+ });
124
+ it('getCompleteUrlDecoded() should get uri decoded query', () => {
125
+ // setup
126
+ const expected = "Observation?_revinclude=*&_include=Observation:based-on&_sort=status";
127
+ // execute
128
+ queryBuilder.setBaseResource("Observation")
129
+ .revincludeAll()
130
+ .include("based-on")
131
+ .sort("status", constants_1.SORT_ORDER.ASCENDING);
132
+ // validate
133
+ expect(queryBuilder.getCompleteUrlDecoded()).toEqual(expected);
134
+ });
135
+ });
@@ -1,3 +1,4 @@
1
+ import { Coding, CodingKeys, Extension, Identifier, IdentifierKeys } from "../dataTypes";
1
2
  export declare class ResourceUtils {
2
3
  /**
3
4
  *
@@ -15,14 +16,14 @@ export declare class ResourceUtils {
15
16
  * @returns array of matches
16
17
  * @limitations currently does not work with identifier.type, identifier.period & identifier.assigner
17
18
  */
18
- getIdentifiersByProperty(identifierList: any[], propertyToCompare: string, propertyValue: string): any[];
19
+ getIdentifiersByProperty(identifierList: Identifier[], propertyToCompare: IdentifierKeys, propertyValue: Identifier[IdentifierKeys]): Identifier[];
19
20
  /**
20
21
  *
21
22
  * @param extensionList list of extensions
22
23
  * @param extensionUrl Extension.url to compare
23
24
  * @returns array of matches
24
25
  */
25
- getExtensionsByUrl(extensionList: any[], extensionUrl: string): any[];
26
+ getExtensionsByUrl(extensionList: Extension[], extensionUrl: string): Extension[];
26
27
  /**
27
28
  *
28
29
  * @param codingList list of codings
@@ -30,7 +31,7 @@ export declare class ResourceUtils {
30
31
  * @param propertyValue value we want to compare against string or boolean
31
32
  * @returns array of matches
32
33
  */
33
- getCodingsByProperty(codingList: any[], propertyToCompare: string, propertyValue: string | boolean): any[];
34
+ getCodingsByProperty(codingList: Coding[], propertyToCompare: CodingKeys, propertyValue: Coding[CodingKeys]): Coding[];
34
35
  /**
35
36
  *
36
37
  * @param resource resource for which path needs to be validated
@@ -42,9 +42,9 @@ describe("ResourceUtils", () => {
42
42
  ];
43
43
  it("should return empty array if null is passed as identifier list", () => {
44
44
  // setup
45
- const value = "abc";
45
+ const value = "shouldBeIgnored";
46
46
  // execute
47
- const actual = resourceUtils.getIdentifiersByProperty(null, "abc", value);
47
+ const actual = resourceUtils.getIdentifiersByProperty(null, "id", value);
48
48
  // validate
49
49
  expect(actual.length).toEqual(0);
50
50
  });
@@ -52,7 +52,8 @@ describe("ResourceUtils", () => {
52
52
  // setup
53
53
  const value = "abc";
54
54
  // execute
55
- const actual = resourceUtils.getIdentifiersByProperty(identifierList, "abc", value);
55
+ const actual = resourceUtils.getIdentifiersByProperty(identifierList, "extension", // no extensions in test data
56
+ value);
56
57
  // validate
57
58
  expect(actual.length).toEqual(0);
58
59
  });
@@ -94,11 +95,12 @@ describe("ResourceUtils", () => {
94
95
  // setup
95
96
  const extensionListInvalid = [
96
97
  {
98
+ // @ts-ignore
97
99
  use: "temp",
98
100
  system: "http://hl7.org/fhir/sid/us-ssn",
99
101
  value: "abc",
100
102
  },
101
- ];
103
+ ]; // disabling compiler warning for the test
102
104
  const url = "http://ns.electronichealth.net.au/id/hi/ihi/1.0";
103
105
  // execute
104
106
  const actual = resourceUtils.getExtensionsByUrl(extensionListInvalid, url);
@@ -140,9 +142,9 @@ describe("ResourceUtils", () => {
140
142
  ];
141
143
  it("should return empty array if null is passed as coding list", () => {
142
144
  // setup
143
- const value = "abc";
145
+ const value = "shouldBeIgnored";
144
146
  // execute
145
- const actual = resourceUtils.getCodingsByProperty(null, "abc", value);
147
+ const actual = resourceUtils.getCodingsByProperty(null, "extension", value);
146
148
  // validate
147
149
  expect(actual.length).toEqual(0);
148
150
  });
@@ -150,7 +152,8 @@ describe("ResourceUtils", () => {
150
152
  // setup
151
153
  const value = "abc";
152
154
  // execute
153
- const actual = resourceUtils.getCodingsByProperty(codingList, "abc", value);
155
+ const actual = resourceUtils.getCodingsByProperty(codingList, "id", // expect no ID in codingList
156
+ value);
154
157
  // validate
155
158
  expect(actual.length).toEqual(0);
156
159
  });
@@ -0,0 +1,4 @@
1
+ export declare enum SORT_ORDER {
2
+ ASCENDING = 0,
3
+ DESCENDING = 1
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SORT_ORDER = void 0;
4
+ var SORT_ORDER;
5
+ (function (SORT_ORDER) {
6
+ SORT_ORDER[SORT_ORDER["ASCENDING"] = 0] = "ASCENDING";
7
+ SORT_ORDER[SORT_ORDER["DESCENDING"] = 1] = "DESCENDING";
8
+ })(SORT_ORDER = exports.SORT_ORDER || (exports.SORT_ORDER = {}));
@@ -0,0 +1,10 @@
1
+ import * as DSTU2 from "../FHIR-DSTU2";
2
+ import * as R3 from "../FHIR-R3";
3
+ import { Coding as r4Coding } from "../FHIR-R4/classes/coding";
4
+ import { Extension as r4Extension } from "../FHIR-R4/classes/extension";
5
+ import { Identifier as r4Identifier } from "../FHIR-R4/classes/identifier";
6
+ export type Identifier = r4Identifier & R3.Identifier & DSTU2.Identifier;
7
+ export type IdentifierKeys = keyof Identifier;
8
+ export type Extension = r4Extension & R3.Extension & DSTU2.Extension;
9
+ export type Coding = r4Coding & R3.Coding & DSTU2.Coding;
10
+ export type CodingKeys = keyof Coding;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smile-cdr/fhirts",
3
- "version": "2.1.1",
3
+ "version": "2.2.0",
4
4
  "description": "Fhir ts/js library for frontend apps",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/index.js",
@@ -14,13 +14,11 @@
14
14
  },
15
15
  "devDependencies": {
16
16
  "@types/jasmine": "^4.3.1",
17
+ "@types/node": "^20.12.12",
18
+ "better-npm-audit": "^3.7.3",
17
19
  "jasmine": "^4.5.0",
20
+ "nyc": "^15.1.0",
18
21
  "ts-node": "^10.9.1",
19
22
  "typescript": "^4.0.2"
20
- },
21
- "dependencies": {
22
- "@types/node": "^18.11.15",
23
- "better-npm-audit": "^3.7.3",
24
- "nyc": "^15.1.0"
25
23
  }
26
24
  }