Indbakke: mail og API

Ordre-mail

Under Indstillinger → Mail vælger laboratoriet sin egen ordre-adresse, fx smilelab@mail.toothlab.io. Giv adressen videre til jeres klinikker — en klinik, der bruger flere laboratorier, styrer med adressen præcis, hvem ordren lander hos. Mailen bliver automatisk til en sag:

  • Afsenderens e-mail skal stå på kunden under Kunder. Kommer mailen fra en ukendt adresse, gemmes den som "Ikke genkendt" og bliver ikke til en sag — listen nederst på Indstillinger → Mail viser de seneste indgående mails, så I kan se den, tilføje adressen på kundekortet og bede om, at mailen sendes igen.
  • Emnet kan indeholde patient: X (også pt:, journal: eller id:). Så bliver X patientens journalreference. Ellers får sagen et midlertidigt MAIL-nummer, som I retter bagefter. Ligner X et CPR-nummer, gemmes det ikke: sagen får MAIL-nummeret, og der står i bemærkningerne, at Patient-ID'et i emnet lignede et CPR og blev udeladt.
  • Vedhæftninger lægges på sagen og virusscannes, før de bliver synlige.
  • Sagen oprettes som Modtaget på første trin med arbejdstypen "Andet" og mailens tekst i bemærkningerne. Ret arbejdstype, tænder og frist bagefter.
  • Er en 3Shape-ordre vedhæftet (en .3ox eller en zip af ordremappen), udfyldes sedlen i stedet automatisk — se Importér 3Shape-ordrer. Klinikkens 3Shape-id bliver husket, så en senere ordre fra samme klinik også kan lægges ind som fil.
  • Skriver tandlægen et CPR-nummer i mailen, fjernes det, før teksten gemmes. Vi opbevarer aldrig CPR.

Den fælles adresse ordre@mail.toothlab.io virker stadig, men kun når afsenderen entydigt hører til ét laboratorium — er afsenderen kunde hos flere, skal jeres egen adresse bruges (eller ordre+<de 8 første tegn af lab-id>@…).

API-nøgler

Under Indstillinger → API opretter I nøgler til mappe-vagt på scanner-pc'en, scanner-software eller økonomisystem. Giv nøglen et navn, tryk Opret nøgle, og kopiér den straks — den vises kun én gang. Listen viser navn, nøglens første tegn og hvornår den sidst blev brugt. Tilbagekald slår nøglen fra permanent. Nøglen sendes som Authorization: Bearer tf_… og giver kun adgang til jeres egen organisations data.

De tre kald

Liste over sager (valgfrit status og limit, højst 500):

curl -H "Authorization: Bearer tf_…" \
  "https://toothlab.io/api/v1/cases?status=received"

Opret en sag på en kunde (clientEmail skal være den e-mail, der står på kundekortet — alternativt labClientId; journalRef er påkrævet):

curl -H "Authorization: Bearer tf_…" -H "Content-Type: application/json" \
  -d '{"clientEmail":"bo@klinik.dk","journalRef":"P-12","workType":"Krone","teeth":[16],"material":"Zirkonia","dueDate":"2026-09-10"}' \
  https://toothlab.io/api/v1/cases

Læg en fil på sagen (multipart, feltet hedder file; GET på samme adresse lister filerne med status og sha256):

curl -H "Authorization: Bearer tf_…" \
  -F file=@scan.stl \
  https://toothlab.io/api/v1/cases/<id>/files

Importér en hel 3Shape-ordre (multipart; send hver fil i ordremappen som en file-del, eller én zip). clientEmail er kun nødvendig første gang en klinik optræder — derefter routes ordren på klinikkens 3Shape-id:

curl -H "Authorization: Bearer tf_…" \
  -F clientEmail=bo@klinik.dk \
  -F file=@2490963853_20251208.3ox -F file=@74d1b057.dcm -F file=@c317ac58.dcm \
  https://toothlab.io/api/v1/cases

Svaret rummer sagen, de danske filnavne og hvad der blev kasseret. Er ordren importeret før, svarer kaldet 200 med "duplicate": true og den eksisterende sag i stedet for at oprette en tvilling.

Filer uploadet via API'et virusscannes som alle andre og bliver først synlige, når de er kontrolleret.