Fluxul datelor

  1. Toate datele sosesc pe server prin modulul lib/medio-api; tokenul nu ajunge niciodată în browser.

  2. Când sunt setate atât MEDIO_API_BASE, cât și MEDIO_API_TOKEN, modulul apelează API-ul live (token Bearer, limită de 8 s); altfel servește fixture-urile mock.

  3. Răspunsurile live sunt păstrate în cache-ul de date Next.js timp de 300 de secunde; la eroare modulul trece la datele mock și înregistrează evenimentul.

  4. Câmpurile HTML sunt curățate pe server (sanitize-html, fără stiluri inline), iar widgetul de programare se încarcă doar de pe un host permis.

Endpointuri și utilizarea lor

EndpointParametruUnde apareCâmpuri folositeCache
GET /institutionslib/medio-api · getInstitutions()—

Locațiile pe pagina principală și pe pagina de contact, filtrul de locație din lista de prețuri, JSON-LD MedicalClinic.

  • intezmeny_id
  • intezmeny_nev
  • varos
300 s
GET /specializationslib/medio-api · getSpecializations(intezmenyId?)intezmeny_id

Grila de specialități, paginile de specialitate, filtrele din lista de medici, statistici.

  • szakterulet
  • link → qualificationId
  • intezmeny_id
  • tipus
300 s
GET /doctorslib/medio-api · getDoctorsBySpecialization(szakteruletId)szakterulet_id

Lista medicilor (combinată pe specialități, fără duplicate după id), medici recomandați, profilul medicului, JSON-LD Physician.

  • nev
  • profilkep
  • szakteruletek
  • beszelt_nyelvek
  • bemutatkozas
  • tanulmanyok
  • specializaciok (HTML)
  • intezmenyi_hatter (HTML)
  • tagsagok (HTML)
  • naptar_script → doctorId
  • sorrend
300 s
GET /doctorlib/medio-api · getDoctorPricelist(doctorId)doctor_id

Lista de prețuri proprie a medicului, pe profil.

  • szulo_szolgaltatas
  • szolgaltatas
  • min_ar
  • max_ar
  • tipus
  • info_text
  • link
300 s
GET /qualification-priceslib/medio-api · getQualificationPrices(qualificationId)qualification_id

Lista de prețuri a paginii de specialitate, grupată după serviciul părinte.

  • szulo_szolgaltatas_id
  • szulo_szolgaltatas
  • szolgaltatas
  • min_ar
  • max_ar
  • tipus_id
  • info_text
  • link
300 s
GET /pricelistlib/medio-api · getPricelist()—

Lista completă de prețuri, numărul de servicii și sursa denumirilor în engleză pentru celelalte endpointuri.

  • szakterulet(_eng)
  • szolgaltatas(_eng)
  • info_text(_eng)
  • szulo_szolgaltatas
  • min_ar
  • max_ar
  • tipus
  • intezmeny_id
  • link
300 s
GET /searchlib/medio-api · searchApi(q)q

Pagina de căutare, grupată după tipul rezultatului.

  • name
  • result_type
  • value
300 s

Lipsurile API-ului și tratarea lor

  • Specialitățile nu au câmp de id: qualificationId provine din parametrul de interogare al câmpului link.
  • Medicii nu au câmp de id: doctorId provine din adresa iframe-ului din naptar_script (parametrul doctorId).
  • Relația dintre szakterulet_id și qualificationId nu este documentată: o singură funcție le asociază (lib/medio-api/ids.ts), iar MEDIO_QUALIFICATION_MAP o poate suprascrie.
  • Câmpurile în engleză (*_eng) există doar în /pricelist; denumirile în engleză ale specialităților și serviciilor sunt preluate de acolo pentru celelalte endpointuri.
  • API-ul trimite textele în limba clinicii (aici română) și în engleză doar în /pricelist: celelalte limbi provin dintr-un tabel de traduceri al site-ului, cu o notă acolo unde lipsește traducerea.
  • Prețurile sosesc ca text (min_ar, max_ar), fără monedă: moneda se configurează pentru fiecare instituție (MEDIO_CURRENCY_MAP).
  • Mai multe câmpuri conțin HTML cu stiluri inline (specializaciok, intezmenyi_hatter, tagsagok, posibil bemutatkozas): serverul le curăță.
  • Parametrul intezmeny_id al /specializations este obligatoriu în schemă, dar opțional în descriere; demo-ul îl apelează fără parametru.
  • Dintre tipurile de rezultat ale /search doar „qualification” este documentat; celelalte primesc link intern când id-ul poate fi citit din URL-ul value.

Răspunsuri exemplu din sursa de date curentă

Primul element al fiecărui endpoint, așa cum îl returnează lib/medio-api.

GET /institutions1
{
  "intezmeny_id": 132,
  "intezmeny_nev": "Medio Demo Clinic S.R.L",
  "varos": ""
}
GET /specializations?intezmeny_id=13218
{
  "intezmeny_id": 132,
  "intezmeny_nev": "Medio Demo Clinic S.R.L",
  "szakterulet": "Acupunctură",
  "tipus_id": 2,
  "tipus": "Felnőtt",
  "link": "https://mediodemoclinicsrl.medflow.ro/services/10000087?qualificationId=10000087"
}
GET /doctors?szakterulet_id=100000871
{
  "intezmeny_id": 132,
  "nev": "Prof. Mihai Stan",
  "profilkep": "/doctors/102363.jpg",
  "szakteruletek": "Acupunctură, Competenţă imunitară, ONCOLOGIE MEDICALĂ",
  "bemutatkozas": "Atenție la detalii și utilizarea celor mai noi tehnologii medicale.",
  "beszelt_nyelvek": "",
  "specializaciok": "[HTML] Chirurgie minim invazivă",
  "tanulmanyok": "[HTML] UMF 'Carol Davila', București",
  "intezmenyi_hatter": "[HTML] Rețeaua Privată de Sănătate",
  "tagsagok": "[HTML] Colegiul Medicilor din România, Societatea Română de Acupunctură",
  "naptar_script": "[HTML iframe + script] https://mediodemoclinicsrl.medflow.ro/doctors/102363?doctorId=102363&qualificationId…",
  "naptar_script_2": "[HTML iframe + script] https://mediodemoclinicsrl.medflow.ro/doctors/102363?doctorId=102363&qualificationId…",
  "sorrend": 6
}
GET /doctor?doctor_id=1023606
{
  "intezmeny_id": 132,
  "szakterulet_id": 10000083,
  "szakterulet": "Competenţă imunitară",
  "szulo_szolgaltatas_id": 10000083,
  "szulo_szolgaltatas": "Competenţă imunitară",
  "szolgaltatas": "Consultație imunologie",
  "min_ar": "240",
  "max_ar": "300",
  "tipus_id": 2,
  "tipus": "Felnőtt",
  "link": "https://mediodemoclinicsrl.medflow.ro/services/10000083?serviceId=10000996,10001067,10001106,10001132,10001…",
  "info_text": "Serviciu medical de consultație imunologie oferit în cadrul departamentului de Competenţă imunitară."
}
GET /qualification-prices?qualification_id=100000873
{
  "intezmeny_id": 132,
  "szakterulet_id": 10000087,
  "szakterulet": "Acupunctură",
  "szakterulet_eng": "",
  "szulo_szolgaltatas_id": 10000087,
  "szulo_szolgaltatas": "Acupunctură",
  "szolgaltatas": "Evaluare energetică și diagnostic acupunctură",
  "szolgaltatas_eng": "",
  "min_ar": "220",
  "max_ar": "220",
  "tipus_id": 2,
  "tipus": "Felnőtt",
  "link": "https://mediodemoclinicsrl.medflow.ro/services/10000087?serviceId=10001248",
  "info_text": "Serviciu medical de evaluare energetică și diagnostic acupunctură oferit în cadrul departamentului de Acupu…",
  "info_text_eng": ""
}
GET /pricelist55
{
  "intezmeny_id": 132,
  "szakterulet_id": 10000087,
  "szakterulet": "Acupunctură",
  "szakterulet_eng": "",
  "szulo_szolgaltatas_id": 10000087,
  "szulo_szolgaltatas": "Acupunctură",
  "szolgaltatas": "Evaluare energetică și diagnostic acupunctură",
  "szolgaltatas_eng": "",
  "min_ar": "220",
  "max_ar": "220",
  "tipus_id": 2,
  "tipus": "Felnőtt",
  "link": "https://mediodemoclinicsrl.medflow.ro/services/10000087?serviceId=10001248",
  "info_text": "Serviciu medical de evaluare energetică și diagnostic acupunctură oferit în cadrul departamentului de Acupu…",
  "info_text_eng": ""
}
GET /search?q=kardio0
null