API Dokumentaatio

Hae eläimen tiedot REST API:n kautta omalle webbisivullesi

API Endpointit
Saatavilla olevat rajapinnat
GET/api/animals/{id_tai_slug}

Hae eläimen perustiedot ja uusimmat tulokset käyttäen ID:tä tai nimeä

GET/api/animals/{animal_id}/visits

Hae kaikki eläimen käynnit tuloksineen

Perustiedot ja uusimmat tulokset
GET /api/animals/{id_tai_slug}

Palauttaa eläimen perustiedot, lasketun iän sekä uusimmat testit ja toimenpiteet (yksi per tyyppi). Haku toimii joko eläimen UUID:llä tai URL-ystävällisellä nimellä (slug).

Esimerkki (UUID):

curl https://sim-klinikka.vercel.app/api/animals/1f0cd775-1ea5-4c21-a097-2514ebbb8e79

Esimerkki (Nimi):

Nimien erikoismerkit normalisoidaan automaattisesti (esim. "Ébène" muuttuu "ebene":ksi):

curl https://sim-klinikka.vercel.app/api/animals/ebene
Kaikki käynnit
GET /api/animals/{animal_id}/visits

Palauttaa kaikki eläimen käynnit kronologisessa järjestyksessä (uusin ensin). Jokainen käynti sisältää kaikki tutkimukset ja toimenpiteet tuloksineen.

Esimerkki:

curl https://sim-klinikka.vercel.app/api/animals/1f0cd775-1ea5-4c21-a097-2514ebbb8e79/visits

Vastaus:

{
  "visits": [
    {
      "id": "...",
      "date": "2024-01-15",
      "reason": "Vuositarkastus",
      "status": "DONE",
      "notes": "Kaikki hyvin",
      "allow_critical_diagnoses": false,
      "tests": [
        {
          "id": "...",
          "name": "Blood Chemistry Panel",
          "category": "lab",
          "status": "COMPLETED",
          "results": [
            {
              "parameter": "Glukose",
              "value": "5.2",
              "unit": "mmol/L",
              "is_abnormal": false,
              "comment": null
            }
          ]
        }
      ],
      "procedures": [
        {
          "id": "...",
          "name": "Vaccination",
          "category": "preventive",
          "status": "COMPLETED",
          "notes": "Rabies vaccine"
        }
      ]
    }
  ]
}
Perustietojen vastaus
JSON-muotoinen data
{
  "animal": {
    "id": "1f0cd775-1ea5-4c21-a097-2514ebbb8e79",
    "name": "Musti",
    "species": "dog",
    "breed": "Kultainennoutaja",
    "gender": "male",
    "date_of_birth": "2020-05-15",
    "age": "4 vuotta",
    "microchip": "123456789",
    "aging_type": "IRL"
  },
  "tests": [
    {
      "id": "...",
      "name": "Blood Chemistry Panel",
      "date": "2024-01-15",
      "results": [
        {
          "parameter": "Glukose",
          "value": "5.2",
          "unit": "mmol/L",
          "is_abnormal": false
        }
      ]
    }
  ],
  "procedures": [
    {
      "id": "...",
      "name": "Microchip Implantation",
      "date": "2024-01-10"
    }
  ]
}
CORS-tuki

API tukee CORS-headereitä, joten voit kutsua sitä suoraan selaimesta eri domainilta. Tämä mahdollistaa helpon integraation omalle webbisivullesi ilman backend-palvelinta.

Käyttöesimerkki: Käyntien haku
// Hae kaikki käynnit
fetch('https://sim-klinikka.vercel.app/api/animals/YOUR_ANIMAL_ID/visits')
  .then(response => response.json())
  .then(data => {
    console.log(`Käyntejä yhteensä: ${data.visits.length}`)
    
    // Käy läpi kaikki käynnit
    data.visits.forEach(visit => {
      console.log(`\nKäynti: ${visit.date}`)
      console.log(`Syy: ${visit.reason}`)
      console.log(`Status: ${visit.status}`)
      
      // Käy läpi käynnin testit
      visit.tests?.forEach(test => {
        console.log(`  Testi: ${test.name}`)
        test.results?.forEach(result => {
          console.log(`    ${result.parameter}: ${result.value} ${result.unit}`)
        })
      })
      
      // Käy läpi käynnin toimenpiteet
      visit.procedures?.forEach(procedure => {
        console.log(`  Toimenpide: ${procedure.name}`)
      })
    })
  })
  .catch(error => console.error('Virhe:', error))
Käyntien suodatus ja analyysi
Esimerkkejä datan käsittelystä

Etsi käynnit joissa poikkeavia tuloksia:

fetch('https://sim-klinikka.vercel.app/api/animals/YOUR_ANIMAL_ID/visits')
  .then(response => response.json())
  .then(data => {
    // Suodata käynnit joissa on poikkeavia tuloksia
    const visitsWithAbnormalities = data.visits.filter(visit =>
      visit.tests?.some(test =>
        test.results?.some(result => result.is_abnormal)
      )
    )
    
    console.log(`${visitsWithAbnormalities.length} käyntiä poikkeavilla tuloksilla`)
    
    visitsWithAbnormalities.forEach(visit => {
      console.log(`\nKäynti: ${visit.date} - ${visit.reason}`)
      
      visit.tests.forEach(test => {
        const abnormals = test.results.filter(r => r.is_abnormal)
        if (abnormals.length > 0) {
          console.log(`  ⚠️ ${test.name}:`)
          abnormals.forEach(r => {
            console.log(`    ${r.parameter}: ${r.value} ${r.unit}`)
          })
        }
      })
    })
  })

Käyntien timeline HTML:nä:

fetch('https://sim-klinikka.vercel.app/api/animals/YOUR_ANIMAL_ID/visits')
  .then(response => response.json())
  .then(data => {
    const container = document.getElementById('visits-timeline')
    
    let html = '<div class="timeline">'
    
    data.visits.forEach(visit => {
      html += `
        <div class="visit">
          <h3>${visit.date} - ${visit.reason}</h3>
          <p>Status: ${visit.status}</p>
      `
      
      if (visit.tests?.length > 0) {
        html += '<h4>Tutkimukset:</h4><ul>'
        visit.tests.forEach(test => {
          html += `<li>${test.name} (${test.status})</li>`
        })
        html += '</ul>'
      }
      
      if (visit.procedures?.length > 0) {
        html += '<h4>Toimenpiteet:</h4><ul>'
        visit.procedures.forEach(proc => {
          html += `<li>${proc.name}</li>`
        })
        html += '</ul>'
      }
      
      html += '</div>'
    })
    
    html += '</div>'
    container.innerHTML = html
  })

Testien looppaaminen (perustiedot-endpoint):

fetch('https://sim-klinikka.vercel.app/api/animals/YOUR_ANIMAL_ID')
  .then(response => response.json())
  .then(data => {
    // Käy läpi kaikki testit
    data.tests.forEach(test => {
      console.log(`Testi: ${test.name}`)
      console.log(`Päivämäärä: ${test.date}`)
      
      // Käy läpi testin kaikki parametrit
      test.results.forEach(result => {
        console.log(`  ${result.parameter}: ${result.value} ${result.unit}`)
        if (result.is_abnormal) {
          console.log('    ⚠️ Poikkeava arvo!')
        }
      })
    })
  })
Virhetilanteet
404Eläintä ei löytynyt annetulla ID:llä tai nimellä
500Palvelinvirhe
Mistä saan eläimen ID:n?

Eläimen ID löytyy julkisen profiilin URL-osoitteesta:

https://sim-klinikka.vercel.app/profile/animals/1f0cd775-1ea5-4c21-a097-2514ebbb8e79

Lihavoitu osa on eläimen UUID, jota käytetään API-kutsuissa.