Skip to content

Commit ccebebd

Browse files
authored
Merge pull request #443 from medizininformatik-initiative/425-update-ui-profile-model-to-allow-support-of-multiple-value-sets
425 update UI profile model to allow support of multiple value sets
2 parents a50d2ed + 42c1b39 commit ccebebd

File tree

15 files changed

+55
-49
lines changed

15 files changed

+55
-49
lines changed

.github/scripts/setup-ontology.sh

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/bin/bash -e
22

3-
ONTOLOGY_GIT_TAG=${ONTOLOGY_GIT_TAG:-v3.8.1}
3+
ONTOLOGY_GIT_TAG=${ONTOLOGY_GIT_TAG:-v3.9.0-experimental.0}
44

5-
BASE_DIR="cypress/docker/ontology"
5+
BASE_DIR="../../cypress/docker/ontology"
66
DSE_DIR="$BASE_DIR/dse"
77
MIGRATION_DIR="$BASE_DIR/migration"
88

@@ -13,7 +13,7 @@ curl -fsSL -o "$BASE_DIR/backend.zip" \
1313
"https://github.com/medizininformatik-initiative/fhir-ontology-generator/releases/download/${ONTOLOGY_GIT_TAG}/backend.zip"
1414

1515
echo "Unzipping all files to ontology folder..."
16-
unzip -oj "$BASE_DIR/backend.zip" -d "$BASE_DIR"
16+
unzip -oj -o "$BASE_DIR/backend.zip" -d "$BASE_DIR"
1717

1818
echo "Moving profile_tree.json to ontology/dse/ folder..."
1919
mv "$BASE_DIR/profile_tree.json" "$DSE_DIR/" 2>/dev/null || true
@@ -26,7 +26,11 @@ curl -fsSL -o "$BASE_DIR/elastic.zip" \
2626
"https://github.com/medizininformatik-initiative/fhir-ontology-generator/releases/download/${ONTOLOGY_GIT_TAG}/elastic.zip"
2727

2828
echo "Cleaning up zip..."
29-
rm "$BASE_DIR/backend.zip"
29+
#rm "$BASE_DIR/backend.zip"
30+
31+
chmod 644 "$BASE_DIR"/*.zip
32+
chmod 644 "$DSE_DIR"/* || true
33+
chmod 644 "$MIGRATION_DIR"/* || true
3034

3135
echo "Final files:"
3236
ls -l "$BASE_DIR"

.github/workflows/e2e.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
cypress-run:
1212
runs-on: ubuntu-24.04
1313
env:
14-
ONTOLOGY_GIT_TAG: v3.8.1 # Or dynamically set it
14+
ONTOLOGY_GIT_TAG: v3.9.0-experimental.0 # Or dynamically set it
1515
steps:
1616
- name: Checkout repository
1717
uses: actions/checkout@v4
@@ -65,9 +65,6 @@ jobs:
6565
run: .github/scripts/create-keycloak-user.sh
6666

6767

68-
- name: Checkout
69-
uses: actions/checkout@v4
70-
7168
- name: Cypress install
7269
uses: cypress-io/github-action@v6
7370
with:

angular.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
{
7575
"type": "anyComponentStyle",
7676
"maximumWarning": "6kb",
77-
"maximumError": "10kb"
77+
"maximumError": "20kb"
7878
}
7979
]
8080
},
@@ -94,7 +94,7 @@
9494
{
9595
"type": "anyComponentStyle",
9696
"maximumWarning": "6kb",
97-
"maximumError": "10kb"
97+
"maximumError": "20kb"
9898
}
9999
]
100100
}

cypress/docker/docker-compose.yml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
services:
44
dataportal-backend:
55
container_name: dataportal-backend
6-
image: ghcr.io/medizininformatik-initiative/feasibility-backend:latest
6+
image: ghcr.io/medizininformatik-initiative/feasibility-backend:pr-600
77
ports:
88
- "8090:8090"
99
depends_on:
@@ -27,6 +27,9 @@ services:
2727
DATABASE_USER: "dataportaluser"
2828
DATABASE_PASSWORD: "dataportalpw"
2929
DATABASE_DBNAME: "dataportal"
30+
ONTOLOGY_DB_MIGRATION_FOLDER: "/opt/dataportal-backend/ontology/migration"
31+
DSE_PROFILE_TREE_FILE: "/opt/dataportal-backend/ontology/dse/profile_tree.json"
32+
TERMINOLOGY_SYSTEMS_FILE: "/opt/dataportal-backend/ontology/terminology_systems.json"
3033
# ---- auth
3134
KEYCLOAK_ENABLED: "true"
3235
KEYCLOAK_ALLOWED_ROLE: "DataportalUser"
@@ -63,6 +66,7 @@ services:
6366
restart: unless-stopped
6467
volumes:
6568
- ./secrets:/opt/dataportal-security
69+
- ./ontology:/opt/ontology:ro
6670

6771
dataportal-postgres:
6872
image: 'postgres:16-alpine'
@@ -75,7 +79,7 @@ services:
7579
POSTGRES_DB: "dataportal"
7680

7781
dataportal-elastic:
78-
image: docker.elastic.co/elasticsearch/elasticsearch:9.0.2
82+
image: docker.elastic.co/elasticsearch/elasticsearch:9.1.3
7983
container_name: dataportal-elastic
8084
ports:
8185
- '9200:9200'
@@ -95,11 +99,14 @@ services:
9599
elastic-search-init:
96100
depends_on:
97101
- dataportal-elastic
98-
image: ghcr.io/medizininformatik-initiative/dataportal-es-init:1.2
99-
container_name: integration-test_elastic-search-init
102+
image: ghcr.io/medizininformatik-initiative/dataportal-es-init:latest
103+
container_name: elastic-search-init
100104
environment:
101105
ES_HOST: dataportal-elastic
102-
LOCAL_PATH: /tmp/mounted_onto.zip
106+
ONTO_GIT_TAG: v3.9.0-experimental.0
107+
ONTO_REPO: https://github.com/medizininformatik-initiative/fhir-ontology-generator/releases/download
108+
DOWNLOAD_FILENAME: elastic.zip
109+
EXIT_ON_EXISTING_INDICES: false
103110
volumes:
104111
- type: bind
105112
source: "./ontology/elastic.zip"

cypress/e2e/CohortSearch/cohort-search.feature

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Feature: Cohort Search
1616

1717
Examples: Search Criteria
1818
| criterium | button1 | button2 |
19-
| Aktuelles chronologisches Alter | Zur Kohortenselektion hinzufügen | Kohortenselektion anzeigen |
19+
| Alter | Zur Kohortenselektion hinzufügen | Kohortenselektion anzeigen |
2020
| Diabetes | Zur Kohortenselektion hinzufügen | Kohortenselektion anzeigen |
2121

2222
Scenario Outline: Select Cohort elements
@@ -30,4 +30,4 @@ Feature: Cohort Search
3030

3131
Examples: Selection Criteria
3232
| criterium | button1 | button2 |
33-
| Aktuelles chronologisches Alter | Zur Kohortenselektion hinzufügen | Kohortenselektion anzeigen |
33+
| Alter | Zur Kohortenselektion hinzufügen | Kohortenselektion anzeigen |

src/app/model/FeasibilityQuery/Criterion/AttributeFilter/AttributeFiltersBuilder.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ export class AttributeFiltersBuilder {
118118
return new QuantityNotSet(allowedUnits, selectedUnit, precision);
119119
}
120120

121-
buildConceptFilter(id: string, allowedConceptUri: string, selectedConcepts?: Concept[]) {
122-
return new ConceptFilter(id, [allowedConceptUri], selectedConcepts);
121+
buildConceptFilter(id: string, allowedConceptUri: string[], selectedConcepts?: Concept[]) {
122+
return new ConceptFilter(id, allowedConceptUri, selectedConcepts);
123123
}
124124

125125
/**
@@ -129,7 +129,7 @@ export class AttributeFiltersBuilder {
129129
*/
130130
buildReferenceFilter(
131131
id: string,
132-
allowedReferenceUri: string,
132+
allowedReferenceUri: string[],
133133
selectedReference?: ReferenceCriterion[],
134134
selectedConcepts?: Concept[]
135135
): ReferenceFilter {

src/app/model/FeasibilityQuery/Criterion/AttributeFilter/Concept/ReferenceFilter.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import { AbstractConceptFilter } from './AbstractConceptFilter';
2+
import { Concept } from './Concept';
23
import { FilterTypes } from 'src/app/model/Utilities/FilterTypes';
34
import { ReferenceCriterion } from '../../ReferenceCriterion';
4-
import { TerminologyCode } from 'src/app/model/Terminology/TerminologyCode';
5-
import { Concept } from './Concept';
65

76
/**
87
* Class representing a ReferenceFilter.
98
*/
109
export class ReferenceFilter extends AbstractConceptFilter {
10+
private allowedReferenceUri: string[];
1111
private selectedReferences: ReferenceCriterion[] = [];
12-
private allowedReferenceUri: string;
1312
private type: FilterTypes = FilterTypes.REFERENCE;
1413

1514
/**
@@ -21,7 +20,7 @@ export class ReferenceFilter extends AbstractConceptFilter {
2120
*/
2221
constructor(
2322
id: string,
24-
allowedReferenceUri: string,
23+
allowedReferenceUri: string[],
2524
selectedReferences: ReferenceCriterion[] = [],
2625
selectedConcepts: Concept[]
2726
) {
@@ -35,7 +34,7 @@ export class ReferenceFilter extends AbstractConceptFilter {
3534
*
3635
* @returns An array of selected reference criteria.
3736
*/
38-
getSelectedReferences(): ReferenceCriterion[] {
37+
public getSelectedReferences(): ReferenceCriterion[] {
3938
return this.selectedReferences;
4039
}
4140

@@ -44,7 +43,7 @@ export class ReferenceFilter extends AbstractConceptFilter {
4443
*
4544
* @param selectedReferences - An array of selected reference criteria.
4645
*/
47-
setSelectedReferences(selectedReferences: ReferenceCriterion[]): void {
46+
public setSelectedReferences(selectedReferences: ReferenceCriterion[]): void {
4847
this.selectedReferences = selectedReferences;
4948
}
5049

@@ -53,7 +52,7 @@ export class ReferenceFilter extends AbstractConceptFilter {
5352
*
5453
* @returns The allowed reference URI.
5554
*/
56-
getAllowedReferenceUri(): string {
55+
public getAllowedReferenceUri(): string[] {
5756
return this.allowedReferenceUri;
5857
}
5958

@@ -62,7 +61,7 @@ export class ReferenceFilter extends AbstractConceptFilter {
6261
*
6362
* @param allowedReferenceUri - The allowed reference URI to set.
6463
*/
65-
setAllowedReferenceUri(allowedReferenceUri: string): void {
64+
public setAllowedReferenceUri(allowedReferenceUri: string[]): void {
6665
this.allowedReferenceUri = allowedReferenceUri;
6766
}
6867

@@ -71,7 +70,7 @@ export class ReferenceFilter extends AbstractConceptFilter {
7170
*
7271
* @returns The filter type.
7372
*/
74-
getType(): FilterTypes {
73+
public getType(): FilterTypes {
7574
return this.type;
7675
}
7776

@@ -80,7 +79,7 @@ export class ReferenceFilter extends AbstractConceptFilter {
8079
*
8180
* @param type - The new filter type.
8281
*/
83-
setType(type: FilterTypes): void {
82+
public setType(type: FilterTypes): void {
8483
this.type = type;
8584
}
8685

@@ -92,16 +91,16 @@ export class ReferenceFilter extends AbstractConceptFilter {
9291
* @param selectedConcepts - The selected concepts.
9392
* @returns The created ReferenceFilter instance.
9493
*/
95-
static create(
94+
public static create(
9695
id: string,
97-
allowedReferenceUri: string,
96+
allowedReferenceUri: string[],
9897
selectedReference: ReferenceCriterion[] = [],
9998
selectedConcepts: Concept[]
10099
): ReferenceFilter {
101100
return new ReferenceFilter(id, allowedReferenceUri, selectedReference, selectedConcepts);
102101
}
103102

104-
isSelectedReferenceSet(): boolean {
103+
public isSelectedReferenceSet(): boolean {
105104
return (
106105
this.selectedReferences !== undefined &&
107106
this.selectedReferences !== null &&

src/app/model/Interface/AttributeDefinitionData.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ export interface AttributeDefinitionData {
1111
display: DisplayData
1212
optional: boolean
1313
precision: number
14-
referencedCriteriaSet?: string
15-
referencedValueSet?: string
14+
referencedCriteriaSet?: string[]
15+
referencedValueSet?: string[]
1616
selectableConcepts: string[]
1717
type: FilterTypes
1818
}

src/app/model/Interface/ValueDefinition.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ export interface ValueDefinitionData {
99
optional: boolean
1010
allowedUnits: QuantityUnitData[]
1111
precision: number
12-
referencedCriteriaSet?: string
13-
referencedValueSet?: string
12+
referencedCriteriaSet?: string[]
13+
referencedValueSet?: string[]
1414
max: number
1515
min: number
1616
}

src/app/model/Utilities/AttributeDefinition.ts/AbstractAttributeDefinition.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export abstract class AbstractAttributeDefinition {
99
protected optional = false;
1010
protected precision = 1;
1111
protected type: FilterTypes;
12-
protected referencedValueSet?: string;
12+
protected referencedValueSet?: string[];
1313
protected display: Display;
1414

1515
constructor(
@@ -20,7 +20,7 @@ export abstract class AbstractAttributeDefinition {
2020
max?: number,
2121
min?: number,
2222
precision: number = 1,
23-
referencedValueSet?: string
23+
referencedValueSet?: string[]
2424
) {
2525
this.display = display;
2626
this.type = type;
@@ -88,11 +88,11 @@ export abstract class AbstractAttributeDefinition {
8888
this.precision = precision;
8989
}
9090

91-
getReferencedValueSet(): string {
91+
getReferencedValueSet(): string[] {
9292
return this.referencedValueSet;
9393
}
9494

95-
setReferencedValueSet(referencedValueSet: string): void {
95+
setReferencedValueSet(referencedValueSet: string[]): void {
9696
this.referencedValueSet = referencedValueSet;
9797
}
9898
}

0 commit comments

Comments
 (0)