---
{
  "title": "Aidbox ist der erste FHIR-Server, der alle SQL-on-FHIR-Tests besteht",
  "description": "Aidbox ist soeben der erste FHIR-Server geworden, der alle SQL-on-FHIR-Tests besteht – dank vollständiger Unterstützung des repeat-Elements. Dieses Update ermöglicht es Entwicklern, tief verschachtelte FHIR-Strukturen wie QuestionnaireResponse.item mit einer einzigen, eleganten Definition abzufragen.",
  "date": "2025-11-06",
  "author": "Aleksandr Kislitsyn",
  "reading-time": "3 minutes",
  "tags": [
    "SQL on FHIR",
    "Aidbox"
  ]
}
---
Wir haben kürzlich Unterstützung für das
[
repeat-Element
](https://build.fhir.org/ig/FHIR/sql-on-fhir-v2/StructureDefinition-ViewDefinition-definitions.html#diff_ViewDefinition.select.repeat)
aus der
[
SQL-on-FHIR-Spezifikation
](https://build.fhir.org/ig/FHIR/sql-on-fhir-v2/index.html)
hinzugefügt – und damit ist Aidbox der erste FHIR-Server, der alle Tests der
[
SQL-on-FHIR-Testsuite
](https://sql-on-fhir.org/extra/impls.html)
besteht.

![SQL-on-FHIR test suite results](image-1.avif)

Dieser Meilenstein spiegelt unsere fortlaufende Arbeit wider, strukturierte klinische Daten leichter abfragbar, analysierbar und wiederverwendbar zu machen – ohne aufwändige Transformationen oder benutzerdefinierte Logik. SQL on FHIR überbrückt die Lücke zwischen dem flexiblen Datenmodell von FHIR und der Einfachheit von SQL und ermöglicht es Gesundheitsteams, Erkenntnisse direkt aus ihren FHIR-Daten zu gewinnen.

## Was ist das repeat-Element und wie funktioniert es?

`select.repeat` ermöglicht es Ihnen, eine Liste von [FHIRPath](/articles/unlocking-fhirpath-power-a-deep-dive-into-static-type-analysis-for-robust-tooling)-Ausdrücken anzugeben, von denen jeder einen Pfad definiert, um eine FHIR-Ressource rekursiv zu durchlaufen. Aidbox folgt dann automatisch jedem Pfad bis in beliebige Tiefe und sammelt die Ergebnisse aller Ebenen.

Einfach ausgedrückt: Das Element hilft dabei, komplexe, tief verschachtelte Gesundheitsdaten in eine leicht abfragbare Tabelle zu überführen – und spart dabei stundenlange manuelle Einrichtungs- und Datenvorbereitungsarbeit.

Eine [
FHIR-QuestionnaireResponse
](https://build.fhir.org/questionnaireresponse.html)-Ressource kann beispielsweise Abschnitte, Fragen und Folgefragen enthalten, die hierarchisch angeordnet sind. Jedes `item`-Element kann weitere `item`-Elemente desselben Typs enthalten – und diese können wiederum weitere enthalten, sodass eine rekursive Struktur mit beliebiger Verschachtelungstiefe entsteht.

Betrachten Sie das folgende Beispiel:


```javascript
{
 "resourceType": "QuestionnaireResponse",
 "status": "amended",
 "id": "qr1",
 "item": [
  {
   "linkId": "1",
   "text": "Group 1",
   "item": [
    {
     "linkId": "1.1",
     "text": "Question 1.1",
     "answer": [
      {
       "valueString": "Answer 1.1",
       "item": [
        {
         "linkId": "1.1.1",
         "text": "Follow-up to 1.1"
        }
       ]
      }
     ]
    },
    {
     "linkId": "1.2",
     "text": "Question 1.2",
     "item": [
      {
       "linkId": "1.2.1",
       "text": "Question 1.2.1"
      }
     ]
    }
   ]
  },
  {
   "linkId": "2",
   "text": "Group 2"
  }
 ]
}
```


Anstatt für jede Verschachtelungsebene ein separates `forEach`-Element zu verwenden, können Sie `repeat` nutzen, um die gesamte Struktur rekursiv zu durchlaufen und alle `item`-Elemente auf einmal zu extrahieren:

ViewDefinition:


```javascript
{
  "resource": "QuestionnaireResponse",
  "status": "active",
  "select": [
    {
      "column": [
        {
          "name": "id",
          "path": "id",
          "type": "id"
        }
      ]
    },
    {
      "repeat": [
        "item"
      ],
      "column": [
        {
          "name": "linkId",
          "path": "linkId",
          "type": "string"
        },
        {
          "name": "text",
          "path": "text",
          "type": "string"
        }
      ]
    }
  ]
}
```


Das Ergebnis der Ausführung dieser ViewDefinition ist eine Tabelle mit den folgenden Spalten:

| id | linkId | text |
| --- | --- | --- |
| qr1 | 1 | Group 1 |
| qr1 | 1.1 | Question 1.1 |
| qr1 | 1.2 | Question 1.2 |
| qr1 | 1.2.1 | Question 1.2.1 |
| qr1 | 2 | Group 2 |

## Probieren Sie es selbst aus
Sie können es selbst ausprobieren, indem Sie eine neue Aidbox-Instanz starten und dabei den Anweisungen in der Anleitung [Aidbox lokal ausführen](https://www.health-samurai.io/docs/aidbox/getting-started/run-aidbox-locally) folgen.

Siehe auch: [SQL on FHIR Validation](/blog/sql-on-fhir-validation) und [Einführung von $materialize: SQL-Schnittstelle für FHIR-Daten](/blog/introducing-materialize-sql-interface-for-fhir-data).