Patient registrieren
Patientendaten anlegen. Kein Authorization-Header nötig.
Content-Type: application/json. signature (Base64-PNG) und signedDocuments (PDF-Array) schließen sich gegenseitig aus: nur eines von beiden senden.| Feld | Beschreibung | |
|---|---|---|
| customer.careDegree | ✱ Pflicht | Pflegegrad 1–4 |
| customer.deliveryInterval | ✱ Pflicht | Lieferintervall: 1, 2, 3, 1/2, 1/4, 1/6, manually |
| customer.birthdate | ✱ Pflicht | Geburtsdatum YYYY-MM-DD |
| customer.insuranceId | ✱ Pflicht | mipId der Krankenkasse (z.B. 73 = DAK) |
| customer.insuranceNumber | ✱ Pflicht | Versichertennummer |
| customer.patientAddress | ✱ Pflicht | Objekt: title, firstName, lastName, street, houseNumber, zipCode |
| additionalInformation.ikNumber | ✱ Pflicht | IK-Nummer des Lieferanten |
| additionalInformation.supplierNumber | ✱ Pflicht | Lieferantennummer |
| customer.signature | optional | PNG als Base64-String — alternativ zu signedDocuments |
| signedDocuments | optional | Array: [{documentType, fileName, content}] — alternativ zu signature |
| requestPhoneConsultation | optional | Boolean, Standard: false |
| changeRequested | optional | Boolean — Wechsel von anderem Anbieter |
$body = [
'customer' => [
'careDegree' => 2,
'deliveryInterval' => 1,
'birthdate' => '1950-05-15',
'insuranceId' => '221', // mipId z.B. 73=DAK, 221=AOK Rheinland/Hamburg
'insuranceNumber' => 'Y123456789',
'patientAddress' => [
'title' => 'Herr',
'firstName' => 'Max',
'lastName' => 'Mustermann',
'street' => 'Hafenstraße',
'houseNumber' => '7',
'zipCode' => '21107',
'phoneNumber' => '04012345678',
'email' => 'max@example.de',
],
],
'additionalInformation' => [
'ikNumber' => '123456789',
'supplierNumber' => '468937',
'version' => '1.0.0',
],
'requestPhoneConsultation' => false,
'changeRequested' => false,
];
$ch = curl_init('https://www.docdorado.de/register');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($body),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
]);
$result = json_decode(curl_exec($ch), true);
// Antwort: ['customerNumber' => '551861']
Authentifizierung
Token und customerNumber für alle weiteren Requests holen. Werte werden automatisch übernommen.
token und customerNumber zurück. Kein Auth-Header nötig. Der Token ist bei allen nachfolgenden Requests als HTTP-Header token: <TOKEN> zu senden — nicht als Authorization: Bearer.| Feld | Beschreibung | |
|---|---|---|
| supplierNumber | ✱ Pflicht | Lieferantennummer (z.B. "468937") |
| insuranceNumber | ✱ Pflicht | Versichertennummer des Patienten |
| zipCode | ✱ Pflicht | Postleitzahl des Patienten |
$ch = curl_init('https://www.docdorado.de/php/api/customer/auth');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'supplierNumber' => '468937',
'insuranceNumber' => 'B917251864',
'zipCode' => '28717',
]),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
]);
$result = json_decode(curl_exec($ch), true);
$token = $result['token']; // z.B. "48634515c64e436c..."
$customerNumber = $result['customerNumber']; // z.B. "551861"
// Diesen Token bei ALLEN weiteren Requests als Header mitschicken:
// 'token: ' . $token
Kundendaten abrufen
Vollständige Kundendaten inkl. Adresse, Krankenkasse und Genehmigungen.
token: <TOKEN>.| Feld | Beschreibung | |
|---|---|---|
| {customerNumber} | ✱ Pflicht | Kundennummer in der URL (aus Auth) |
| token (Header) | ✱ Pflicht | Token aus Auth-Response als HTTP-Header |
$customerNumber = '551861';
$token = '48634515c64e436c...';
$ch = curl_init("https://www.docdorado.de/php/api/customer/{$customerNumber}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'token: ' . $token,
'Content-Type: application/json',
],
]);
$data = json_decode(curl_exec($ch), true);
// Wichtige Felder in der Antwort:
// $data['billingAddress']['contact']['firstName']
// $data['healthInsuranceData']['healthInsuranceName']
// $data['healthInsuranceData']['approvals'] // Genehmigungsstatus pro Context
// $data['careBoxState'] // Gesamtstatus
// $data['nextExecutionDate'] // nächste Lieferung
Status abrufen
Aktuellen Status eines Kunden abfragen.
careBoxStatus) des Kunden zurück sowie die erlaubten Statuswerte. Auth-Header: token: <TOKEN>.$ch = curl_init("https://www.docdorado.de/php/api/customer/status/{$customerNumber}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['token: ' . $token],
]);
$data = json_decode(curl_exec($ch), true);
// Antwort:
// [
// 'careBoxStatus' => 1, // 1=active 2=inactive 3=paused 99=deleted
// 'careBoxStateName' => 'active',
// 'allowedStatusList' => ['1' => 'active', '2' => 'inactive', ...]
// ]
Status ändern
Kundenstatus auf einen neuen Wert setzen.
token: <TOKEN>. Erlaubte Werte: 1 = active, 2 = inactive, 3 = paused, 99 = deleted.| Feld | Beschreibung | |
|---|---|---|
| customerNumber | ✱ Pflicht | Kundennummer |
| newStatus | ✱ Pflicht | 1 (active) | 2 (inactive) | 3 (paused) | 99 (deleted) |
| token (Header) | ✱ Pflicht | Token aus Auth |
$ch = curl_init('https://www.docdorado.de/php/api/customer/change/status');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'customerNumber' => '551861',
'newStatus' => 3, // 3 = paused
]),
CURLOPT_HTTPHEADER => [
'token: ' . $token,
'Content-Type: application/json',
],
]);
$result = json_decode(curl_exec($ch), true);
Bestellungen abrufen
Liste aller Bestellungen eines Kunden.
token: <TOKEN>. Sendungsnummer: In jedem Order-Objekt befinden sich trackingCodes (Array mit Paket-Nummern) und trackingUrls (DHL-Links) — das sind die Sendungsnummern.| Feld | Beschreibung | |
|---|---|---|
| {customerNumber} | ✱ Pflicht | Kundennummer in der URL |
| limit (Query) | optional | Max. Anzahl Bestellungen, Standard 1000 |
$ch = curl_init("https://www.docdorado.de/php/api/customer/orders/{$customerNumber}?limit=1000");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['token: ' . $token],
]);
$data = json_decode(curl_exec($ch), true);
foreach ($data['orders'] as $order) {
echo $order['orderNumber']; // Bestellnummer
echo $order['orderState']; // completed / open / ...
echo $order['trackingCodes'][0]; // Sendungsnummer (z.B. "00340434782341231007")
echo $order['trackingUrls'][0]; // DHL-Tracking-Link
echo $order['receiptDate']; // Eingangsdatum
echo $order['deliveryDate']; // Lieferdatum
// $order['cartItems'] => Array der gelieferten Produkte
}
Warenkorb abrufen
Aktuellen Warenkorb eines Kunden anzeigen (Dashboard-Ansicht).
token: <TOKEN>.$ch = curl_init("https://www.docdorado.de/php/api/customer/cart/{$customerNumber}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['token: ' . $token],
]);
$data = json_decode(curl_exec($ch), true);
// Antwort:
// [
// 'items' => [
// ['positionName' => 'Nitrilhandschuhe', 'quantity' => 1, 'context' => 54, 'articleIdentifier' => 'NM'],
// ...
// ]
// ]
CareBox anzeigen
Aktuellen CareBox-Inhalt eines Kunden abrufen.
token: <TOKEN>.$ch = curl_init("https://www.docdorado.de/php/api/customer/careBox/{$customerNumber}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['token: ' . $token],
]);
$data = json_decode(curl_exec($ch), true);
// Antwort: Artikel gruppiert nach Context
// ['careBox'] => [
// '54' => ['items' => [...], 'boxPrice' => 39.00],
// '51' => ['items' => [...], 'boxPrice' => 82.04],
// ]
foreach ($data['careBox'] as $context => $box) {
echo "Context $context: {$box['boxPrice']} EUR
";
foreach ($box['items'] as $item) {
echo " {$item['articleIdentifier']} x{$item['quantity']}
";
}
}
CareBox ändern
Produkte im CareBox-Warenkorb des Kunden setzen (Menge 0 = entfernen).
token: <TOKEN>. {customerNumber} ist Teil der URL.| Feld | Beschreibung | |
|---|---|---|
| items | ✱ Pflicht | Array: [{articleIdentifier: "NXL", quantity: 1}, ...] — Menge 0 = entfernen |
$ch = curl_init("https://www.docdorado.de/php/api/customer/change/careBox/{$customerNumber}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'items' => [
['articleIdentifier' => 'NXL', 'quantity' => 1],
['articleIdentifier' => 'FDS', 'quantity' => 2],
['articleIdentifier' => 'HDT', 'quantity' => 0], // 0 = entfernen
],
]),
CURLOPT_HTTPHEADER => [
'token: ' . $token,
'Content-Type: application/json',
],
]);
$result = json_decode(curl_exec($ch), true);
// Artikel-IDs (Auszug): B E ES F FD FDS FDT HD HD100 HDG HDT
// NL NM NS NXL VL VM VS VXL W WB WS MS LS LL LXL
Intervall abrufen
Lieferintervall und nächstes Ausführungsdatum eines Kunden.
token: <TOKEN>.$ch = curl_init("https://www.docdorado.de/php/api/customer/interval/{$customerNumber}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['token: ' . $token],
]);
$data = json_decode(curl_exec($ch), true);
// Antwort:
// [
// 'careBoxInterval' => '2', // Intervall in Monaten (oder Tagen)
// 'nextExecutionDate' => '2026-08-02', // nächste geplante Lieferung
// ]
Intervall ändern
Lieferintervall und Startdatum eines Kunden anpassen.
token: <TOKEN>.| Feld | Beschreibung | |
|---|---|---|
| customerNumber | ✱ Pflicht | Kundennummer |
| careBoxInterval | ✱ Pflicht | Intervall in Tagen (z.B. 15, 30) |
| start | ✱ Pflicht | Startdatum YYYY-MM-DD |
$ch = curl_init('https://www.docdorado.de/php/api/customer/change/interval');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'customerNumber' => '551861',
'careBoxInterval' => '15', // Tage
'start' => '2026-09-01',
]),
CURLOPT_HTTPHEADER => [
'token: ' . $token,
'Content-Type: application/json',
],
]);
$result = json_decode(curl_exec($ch), true);
Genehmigungsstatus abrufen
Aktuelle Genehmigungen eines Kunden abfragen.
token: <TOKEN>. Hinweis: Ein Ablehnungsgrund wird von der API nicht als eigenes Feld zurückgegeben — nur der Status (careBoxState) ist verfügbar.$ch = curl_init("https://www.docdorado.de/php/api/customer/approvals/{$customerNumber}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['token: ' . $token],
]);
$data = json_decode(curl_exec($ch), true);
// Genehmigungen pro Context:
foreach ($data['healthInsuranceData']['approvals'] as $approval) {
$context = $approval['context']; // 51, 54, 15, ...
$state = $approval['careBoxState']; // 1=genehmigt, 4=blockiert, 7=abgelehnt
$statName = $approval['careBoxStateName']; // "active", "blocked", ...
$until = $approval['supplyEnd']; // Gültigkeit bis
}
// careBoxState-Werte:
// 1=genehmigt 4=nicht erwünscht/blockiert 5=neu 6=eingereicht
// 7=abgelehnt 12=storniert 13=abgelaufen
| Wert | Status |
|---|---|
| 1 | Genehmigt |
| 4 | Nicht erwünscht |
| 5 | Neu |
| 6 | Eingereicht |
| 7 | Abgelehnt |
| 12 | Storniert |
| 13 | Abgelaufen |
Dokumentenliste abrufen
Alle Dokumente eines Kunden auflisten. Die erste documentId wird automatisch gespeichert.
documentId wird automatisch im Testbereich gespeichert und beim "Dokument abrufen"-Panel vorausgefüllt. Auth-Header: token: <TOKEN>.$ch = curl_init("https://www.docdorado.de/php/api/customer/list/documents/{$customerNumber}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['token: ' . $token],
]);
$data = json_decode(curl_exec($ch), true);
// Antwort:
// [
// 'documents' => [
// [
// 'documentId' => '557018c702804a9d...',
// 'documentType' => '10',
// 'fileName' => 'Wechselerklarung_pdf_...',
// 'fileType' => 'pdf',
// 'createdAt' => '2026-06-12',
// ],
// ],
// 'documentTypes' => ['10' => 'Unterschriebene Wechselerklarung', ...],
// ]
$documentId = $data['documents'][0]['documentId'];
Dokument abrufen
Ein einzelnes Dokument anhand der documentId laden.
documentId. Auth-Header: token: <TOKEN>.| Feld | Beschreibung | |
|---|---|---|
| {customerNumber} | ✱ Pflicht | Kundennummer in der URL |
| {documentId} | ✱ Pflicht | Document-ID aus list/documents |
$documentId = '557018c702804a9db8994d552967643d';
$ch = curl_init("https://www.docdorado.de/php/api/customer/document/{$customerNumber}/{$documentId}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['token: ' . $token],
]);
$data = json_decode(curl_exec($ch), true);
// Antwort enthält u.a.:
// $data['content'] => Base64-kodierter PDF-Inhalt
// $data['fileName'] => Dateiname
// $data['fileType'] => 'pdf'
// PDF speichern:
file_put_contents('dokument.pdf', base64_decode($data['content']));
Erlaubte Dokumenttypen
Liste aller erlaubten Dokumenttypen inkl. MIME-Type und Maximalgröße.
Authorization: Bearer <TOKEN> (dieser Endpoint nutzt Bearer-Format).$ch = curl_init('https://www.docdorado.de/get/document/types');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $token,
'Content-Type: application/json',
],
]);
$data = json_decode(curl_exec($ch), true);
// Antwort (Beispiel):
// [
// ['id' => 3, 'name' => 'Hilfsmittelantrag', 'mimeType' => 'application/pdf', 'maxSize' => 2097152],
// ['id' => 10, 'name' => 'Wechselerklarung', 'mimeType' => 'application/pdf', 'maxSize' => 2097152],
// ['id' => 24, 'name' => 'Rezept', 'mimeType' => 'application/pdf', 'maxSize' => 2097152],
// ]
Produkte nach Context
Verfügbare Produkte für einen bestimmten Context-Wert abrufen.
token: <TOKEN>. Wichtige Context-Werte: 51 = Inkontinenzversorgung, 54 = Desinfektion/Einmalhandschuhe, 15 = Pflegehilfsmittel.| Feld | Beschreibung | |
|---|---|---|
| {context} | ✱ Pflicht | Context-ID in der URL: 15, 51, 54, 99, … |
// Context-Werte: 15, 51, 54, 99
$context = 51;
$ch = curl_init("https://www.docdorado.de/php/api/products/{$context}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['token: ' . $token],
]);
$data = json_decode(curl_exec($ch), true);
// Antwort: Array von Produkten
// [
// [
// 'articleIdentifier' => 'NXL',
// 'positionName' => 'Nitrilhandschuhe XL - 100 Stück',
// 'hmvz' => '54.99.01.1001',
// 'grossTotal' => 10.71,
// 'tax' => 19,
// ],
// ...
// ]
Verlängerung unterschreiben
Unterschrift für eine Vertragsverlängerung übermitteln.
| Feld | Beschreibung | |
|---|---|---|
| supplierNumber | ✱ Pflicht | Lieferantennummer (Integer) |
| customerNumber | ✱ Pflicht | Kundennummer aus Auth |
| context | ✱ Pflicht | Produktgruppe: 51 (Inkontinenz), 54 (Desinfektion) … |
| signature | ✱ Pflicht | PNG-Bild als Base64-String (data:image/png;base64,…) |
$ch = curl_init('https://www.docdorado.de/sign/renewal');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'supplierNumber' => 468937,
'customerNumber' => '551861',
'context' => 51,
'signature' => 'data:image/png;base64,iVBOR...', // PNG-Base64
]),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
]);
$result = json_decode(curl_exec($ch), true);
Krankenkassen abrufen
Vollständige Liste aller Krankenkassen aus der API (kein Token erforderlich).
mipId (= insuranceId bei Registrierung), Name und Typ zurück. Kein Auth-Token nötig. Gut geeignet um das Dropdown bei Registrierung dynamisch zu befüllen.$ch = curl_init('https://www.docdorado.de/get/health/insurances');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$insurances = json_decode(curl_exec($ch), true);
// Ergebnisstruktur (Auszug):
// [
// ['mipId' => '73', 'name' => 'DAK-Gesundheit', 'type' => 'public'],
// ['mipId' => '89', 'name' => 'TK', 'type' => 'public'],
// ['mipId' => '97', 'name' => 'DKV', 'type' => 'private'],
// ...
// ]