API Dokumentaatio
Hae eläimen tiedot REST API:n kautta omalle webbisivullesi
/api/animals/{id_tai_slug}Hae eläimen perustiedot ja uusimmat tulokset käyttäen ID:tä tai nimeä
/api/animals/{animal_id}/visitsHae kaikki eläimen käynnit tuloksineen
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
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"
}
]
}
]
}{
"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"
}
]
}API tukee CORS-headereitä, joten voit kutsua sitä suoraan selaimesta eri domainilta. Tämä mahdollistaa helpon integraation omalle webbisivullesi ilman backend-palvelinta.
// 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))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!')
}
})
})
})404Eläintä ei löytynyt annetulla ID:llä tai nimellä500PalvelinvirheEläimen ID löytyy julkisen profiilin URL-osoitteesta:
https://sim-klinikka.vercel.app/profile/animals/1f0cd775-1ea5-4c21-a097-2514ebbb8e79Lihavoitu osa on eläimen UUID, jota käytetään API-kutsuissa.