> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rxscale.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Statistiken

> Organisationsweite Dashboard- und Arztstatistiken über die Management API

# Statistiken

Rufen Sie dieselben aggregierten Statistiken ab, die das Dashboard Ihres Admin-Tools anzeigt:
Bestell- und Rezeptvolumen, Aufschlüsselungen nach Apotheken-Bestellungen, Fragebogen-Einreichungen
und Rezeptanzahlen pro Arzt.

> [!NOTE]
>
> Statistiken für einen **einzelnen** Arzt (`GET /doctors/{doctor_uid}/statistics`,
> Berechtigung `doctor_statistics:read`) sind auf der Seite [Ärzte](/de/api-reference/management/doctors#arztstatistiken-abrufen)
> dokumentiert. Fragebogen-Einreichungsstatistiken (`GET /questionnaires/{questionnaire_uid}/statistics/submissions`)
> sind auf der Seite [Fragebögen](/de/api-reference/management/questionnaires#fragebogen-einreichungsstatistiken)
> dokumentiert. CSV-Exporte von Statistiken sind über diese API nicht verfügbar.

## Dashboard-Statistiken

```bash theme={null}
GET /v1/management/statistics/dashboard
```

Liefert dieselben aggregierten Statistiken, die im Admin-Tool-Dashboard angezeigt werden, für die
letzten 30 Tage: Bestell- und Rezeptanzahlen pro Tag und Status, Apothekenbestellungen pro
Apotheke, Fragebogen-Einreichungen, Arzt- und Produktanzahlen sowie 30-Tage-Entwicklungskennzahlen
für Bestellungen, Rezepte, Anamnese-Einreichungen, Wallet-Passes und Patienten.

**Erforderliche Berechtigung:** `statistics:read`

### Beispielanfrage

```bash theme={null}
curl -X GET "https://api.rxscale.com/v1/management/statistics/dashboard" \
  -H "X-API-Key: your-api-key-here"
```

### Antwort

```json theme={null}
{
  "orders_per_day": {
    "20679": 4,
    "20680": 7,
    "20681": 2
  },
  "prescriptions_per_day": {
    "20679": 3,
    "20680": 6
  },
  "prescriptions_per_status": {
    "signed": 42,
    "waiting for doctor": 3,
    "declined": 1
  },
  "orders_per_status": {
    "completed": 38,
    "waiting for pharmacy": 5
  },
  "pharmacy_orders_per_pharmacy": {
    "ph-xyz789": {
      "display_name": "Musterapotheke",
      "statuses": {
        "in-progress": 12,
        "completed": 30
      }
    }
  },
  "submissions_per_questionnaire": {
    "questionnaires": {
      "quest-abc123": {
        "identifier": "weight-loss-intake",
        "count": 18
      }
    },
    "total": 18
  },
  "doctor_count": 5,
  "product_count": 42,
  "order_development": {
    "current_count": 45,
    "previous_count": 38,
    "development_percent": 18.42,
    "development_absolute": 7
  },
  "prescription_development": {
    "current_count": 46,
    "previous_count": 40,
    "development_percent": 15.0,
    "development_absolute": 6
  },
  "anamnesis_development": {
    "current_count": 20,
    "previous_count": 17,
    "development_percent": 17.65,
    "development_absolute": 3
  },
  "wallet_passes": {
    "total": 120,
    "current_count": 12,
    "previous_count": 9,
    "development_percent": 33.33,
    "development_absolute": 3
  },
  "patients": {
    "total": 310,
    "current_count": 25,
    "previous_count": 21,
    "development_percent": 19.05,
    "development_absolute": 4
  }
}
```

### Antwortfelder

| Feld | Typ | Beschreibung |
| - | - | - |
| `orders_per_day` | object | Bestellanzahlen der letzten 30 Tage, geschlüsselt nach **Tages-Bucket** (siehe Hinweis unten) |
| `prescriptions_per_day` | object | Rezeptanzahlen der letzten 30 Tage, geschlüsselt nach Tages-Bucket |
| `prescriptions_per_status` | object | Rezeptanzahlen gruppiert nach Status |
| `orders_per_status` | object | Bestellanzahlen gruppiert nach Status |
| `pharmacy_orders_per_pharmacy` | object | Apothekenbestellanzahlen, geschlüsselt nach Apotheken-UID |
| `pharmacy_orders_per_pharmacy[].display_name` | string | Anzeigename der Apotheke |
| `pharmacy_orders_per_pharmacy[].statuses` | object | Apothekenbestellanzahlen gruppiert nach Status |
| `submissions_per_questionnaire.questionnaires` | object | Einreichungsanzahlen der letzten 30 Tage, geschlüsselt nach Fragebogen-UID |
| `submissions_per_questionnaire.questionnaires[].identifier` | string | Fragebogen-Identifier |
| `submissions_per_questionnaire.questionnaires[].count` | integer | Einreichungen der letzten 30 Tage |
| `submissions_per_questionnaire.total` | integer | Gesamteinreichungen über alle Fragebögen |
| `doctor_count` | integer | Gesamtzahl der Ärzte in der Organisation |
| `product_count` | integer | Gesamtzahl der Produkte in der Organisation |
| `order_development`, `prescription_development`, `anamnesis_development` | object | Aktueller vs. vorheriger 30-Tage-Zeitraum — siehe unten |
| `wallet_passes`, `patients` | object | Gleiche Struktur wie oben, zusätzlich ein kumulatives `total` |

> [!NOTE]
>
> Die Status-Schlüssel in `orders_per_status` sind die wörtlichen Statuswerte aus
> [Bestellstatus](/de/help-center/order-statuses); die Schlüssel in
> `pharmacy_orders_per_pharmacy[].statuses` stammen aus
> [Apotheken-Bestellstatus](/de/help-center/pharmacy-order-statuses). Die Schlüssel in
> `prescriptions_per_status` sind die wörtlichen `PrescriptionStatus`-Werte —
> `waiting for doctor`, `approved`, `signed`, `declined`, `cancelled`, `ON_HOLD`,
> `NON_QES_SIGNED`, `EXTERNALLY_SIGNED` — siehe [Rezeptstatus](/de/help-center/prescription-statuses)
> für die Bedeutung der einzelnen Werte. In jedem Fall werden nur Status mit mindestens
> einem passenden Datensatz im Zeitraum angezeigt.

> [!NOTE]
>
> `orders_per_day` und `prescriptions_per_day` sind nach **Tages-Bucket** geschlüsselt: dem
> Unix-Zeitstempel geteilt durch `86400` (Sekunden pro Tag), als Ganzzahl. Um einen Bucket
> wieder in ein Kalenderdatum umzuwandeln, multiplizieren Sie ihn mit `86400`, um den
> Unix-Zeitstempel für Mitternacht UTC dieses Tages zu erhalten (z. B. Bucket `20680` →
> `20680 * 86400 = 1786752000` → `2026-08-15T00:00:00Z`).

> [!NOTE]
>
> Jedes Entwicklungsobjekt liefert `current_count` (letzte 30 Tage), `previous_count` (die 30
> Tage davor), `development_absolute` (die Differenz) und `development_percent` (die
> prozentuale Veränderung, `null` wenn `previous_count` `0` ist). `wallet_passes` und
> `patients` enthalten zusätzlich ein kumulatives `total` über die gesamte Zeit.

### Fehlerantworten

| Statuscode | Beschreibung |
| - | - |
| `401` | Fehlende oder ungültige Anmeldedaten |
| `403` | Gültige Anmeldedaten, aber `statistics:read` fehlt |

## Statistiken für alle Ärzte

```bash theme={null}
GET /v1/management/statistics/doctors
```

Liefert paginierte Rezeptstatistiken für **jeden** Arzt in der Organisation, geschlüsselt nach
Arzt-UID. Um Statistiken für einen einzelnen Arzt abzurufen, verwenden Sie stattdessen
[`GET /doctors/{doctor_uid}/statistics`](/de/api-reference/management/doctors#arztstatistiken-abrufen).

**start\_seconds** `integer`

Beginn des Datumsbereichs (Unix-Zeitstempel). Standardmäßig 30 Tage zuvor.

**end\_seconds** `integer`

Ende des Datumsbereichs (Unix-Zeitstempel). Standardmäßig jetzt.

**page** `integer` (default: 0)

Seitennummer (0-indexiert)

**limit** `integer` (default: 50)

Anzahl der Ärzte pro Seite

**Erforderliche Berechtigung:** `statistics:read`

### Beispielanfrage

```bash theme={null}
curl -X GET "https://api.rxscale.com/v1/management/statistics/doctors?start_seconds=1784160000&end_seconds=1786752000&limit=25" \
  -H "X-API-Key: your-api-key-here"
```

### Antwort

```json theme={null}
{
  "data": {
    "doc-abc123": {
      "display_name": "Dr. Schmidt",
      "email": "schmidt@example.com",
      "statistics": {
        "approved": 42,
        "waiting for doctor": 3
      }
    },
    "doc-def456": {
      "display_name": "Dr. Meier",
      "email": "meier@example.com",
      "statistics": {}
    }
  },
  "totalRegistries": 2,
  "totalPages": 1
}
```

### Antwortfelder

| Feld | Typ | Beschreibung |
| - | - | - |
| `data` | object | Statistiken pro Arzt, geschlüsselt nach Arzt-UID |
| `data[].display_name` | string | Anzeigename des Arztes |
| `data[].email` | string | E-Mail-Adresse des Arztes |
| `data[].statistics` | object | Rezeptanzahlen gruppiert nach Status. `{}` für einen Arzt ohne Rezepte im Zeitraum |
| `totalRegistries` | integer | Gesamtzahl der Ärzte in der Organisation |
| `totalPages` | integer | Gesamtzahl der Seiten für das angegebene Limit |

> [!NOTE]
>
> Das Analysefenster ist begrenzt: Ein `start_seconds`, der mehr als 30 Tage vor `end_seconds`
> liegt, wird auf dieses Maximum begrenzt — `start_seconds=0` durchsucht also nicht jedes
> jemals erstellte Rezept.

### Fehlerantworten

| Statuscode | Beschreibung |
| - | - |
| `401` | Fehlende oder ungültige Anmeldedaten |
| `403` | Gültige Anmeldedaten, aber `statistics:read` fehlt |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.