Medio Web API
Medio Web API — prezentarea integrării
Această pagină arată ce endpoint alimentează fiecare secțiune, cu ce parametru, din ce câmpuri și cu ce cache.
- 7 endpointuri
- Sursa datelor: API live
Fluxul datelor
Toate datele sosesc pe server prin modulul lib/medio-api; tokenul nu ajunge niciodată în browser.
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.
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.
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
| Endpoint | Parametru | Unde apare | Câmpuri folosite | Cache |
|---|---|---|---|---|
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. |
| 300 s |
GET /specializationslib/medio-api · getSpecializations(intezmenyId?) | intezmeny_id | Grila de specialități, paginile de specialitate, filtrele din lista de medici, statistici. |
| 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. |
| 300 s |
GET /doctorlib/medio-api · getDoctorPricelist(doctorId) | doctor_id | Lista de prețuri proprie a medicului, pe profil. |
| 300 s |
GET /qualification-priceslib/medio-api · getQualificationPrices(qualificationId) | qualification_id | Lista de prețuri a paginii de specialitate, grupată după serviciul părinte. |
| 300 s |
GET /pricelistlib/medio-api · getPricelist() | — | Lista completă de prețuri, numărul de servicii și sursa denumirilor în engleză pentru celelalte endpointuri. |
| 300 s |
GET /searchlib/medio-api · searchApi(q) | q | Pagina de căutare, grupată după tipul rezultatului. |
| 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