Förslag till format
Detta är ett förslag till gemensamt sprutjournalsformat för import, export och delning mellan system. Syftet är att beskriva vilka fält som ingår i respektive formatversion och hur en export kan struktureras.
Formatet är uppdelat i SJF 2015:1 för äldre sprutjournaler och SJF 2026:1 för sprutjournaler från 2026. Exempelobjekten nedan är avsedda som utgångspunkt för fortsatt dialog om JSON, XML och andra maskinläsbara format.
STANDARDER
Dokumentationskraven för användning av växtskyddsmedel förändras från år 2026. Svenska Sprutjournal AB föreslår därför att systemleverantörer på den svenska marknaden ska tillämpa två sprutjournals-format ("SJF").
SJF 2015:1 som ska användas för sprutjournaler med datum fram till och med 2025-12-31 och SJF 2026:1 som ska användas för sprutjournaler med datum från och med 2026-01-01.
En export av sprutjournaler ska kunna innehålla sprutjournaler i både SJF 2015:1 och SJF 2026:1.
Varje sprutjournal ska ha ett globalt unikt id och en revision. Detta
gäller både SJF 2015:1 och SJF 2026:1 och gör det möjligt att känna igen samma journal även
efter att den har överförts mellan system eller kompletterats i efterhand.
id tilldelas en gång och bevaras vid import och vidareexport. Det kan vara ett
UUIDv4 eller ett globalt unikt leverantörs- och systemprefix tillsammans med ett id som är
unikt inom systemet, exempelvis sprutjournal-se-10403 eller datavaxt-crop-plan-83713.revision anger när de strukturerade journaluppgifterna senast ändrades, som en
tidsstämpel i UTC med formatet YYYY-MM-DDTHH:mm:ss.sssZ. Det omfattar journalens
innehållsfält, inklusive free_text, men hela documents-fältet med
bilagor och deras metadata är undantaget. Vid ändring av journaluppgifterna ska revisionen få
ett värde som är senare än föregående revision. Oförändrad import eller export ska bevara
värdet.id och får en ny revision. En kopia som avser en ny behandling ska få ett nytt id.id och revision ska alltid motsvara samma strukturerade
journaluppgifter, även om olika bilagor medföljer. Att lägga till, ändra, ta bort eller välja
vilka bilagor som exporteras ändrar inte journalens revision. Bilagornas filinnehåll
identifieras med respektive dokuments checksum.version anger formatversionen och ändras inte vid en vanlig rättelse av journalen.Både SJF 2015:1 och SJF 2026:1 ska stödja import och export av inkompletta journaler. Samtliga
innehållsfält får ha värdet null när värdeangivelse saknas. Det gäller även
nästlade fält, exempelvis en produkts dos, och hela objekt eller listor som location, crop och products. Fälten version, id och revision ska alltid ha ett värde så att journalens format, identitet och revision kan
bestämmas.
Typbeskrivningarna nedan gäller när ett värde finns. Saknade värden anges med JSON-värdet null, inte texten "null". Fält markerade som valfria får även
utelämnas och ska då tolkas som saknade. Import och vidareexport ska bevara saknade uppgifter
utan att ersätta dem med exempelvis noll eller "inte relevant".
Listor ska vara null eller innehålla minst en post. Alla listposter ska ha den
angivna typen; null används för hela listan, inte som en listpost. Tomma listor [] ska inte användas. Fälten fixed_protective_distances och adjusted_protective_distances ska innehålla minst en sträng när de är angivna.
Fältet products, exportens journals och documents på både
journal- och exportnivå ska innehålla minst ett objekt när de är angivna. När inga poster är
angivna används null. Detta innebär inte i sig att en bedömning har gjorts.
När ett fält har en separat frånvaroorsak får både värdet och orsaken vara null. En
frånvaroorsak får endast anges när själva värdet är null. När ett värde anges ska
frånvaroorsaken vara null. Import och vidareexport ska bevara angivna orsaker och
får inte gissa en orsak till ett saknat värde. Att en journal kan överföras enligt formatet
innebär inte att dess dokumentation är komplett.
harvest_date anger den faktiska skördedagen som ett datum i formatet YYYY-MM-DD, eller null när datum saknas. Om orsaken till att datum
saknas är känd anges den separat i harvest_date_absence_reason. Samma regler gäller
för SJF 2015:1 och SJF 2026:1.
harvest_date | harvest_date_absence_reason | Betydelse |
|---|---|---|
"2026-08-10" | null | Faktisk skördedag är angiven. |
null | null | Uppgift om skördedatum och frånvaroorsak saknas. |
null | "not_applicable" | Skördedatum är inte tillämpligt för denna användning. |
null | "not_yet_harvested" | Det är känt att skörd ännu inte har skett. |
En frånvaroorsak får endast anges när harvest_date är null. När ett
skördedatum anges ska harvest_date_absence_reason vara null.
Frånvaroorsaken ska vara en av koderna ovan eller null; visningstexten får
översättas i gränssnittet, men koderna ska bevaras vid import och export.
I SJF 2026:1 anger crop.growth_stage en giltig BBCH-kod som heltal, där 0 betyder BBCH 00. När utvecklingsstadium inte är tillämpligt anges growth_stage: null och growth_stage_absence_reason: "not_applicable" inuti crop.
I båda formatversionerna anger quarantine_in_days karenstiden som ett heltal på
minst noll dagar. Värdet 0 betyder en faktisk karenstid på noll dagar. När
karenstid inte är tillämplig anges quarantine_in_days: null och quarantine_in_days_absence_reason: "not_applicable" på journalnivå.
Båda frånvaroorsakerna får endast vara "not_applicable" eller null.
När värdet och orsaken båda är null saknas uppgift om både värdet och varför det
saknas. Ett angivet värde, även 0, ska alltid ha frånvaroorsaken null.
Ett villkor som inte kan uttryckas i antal dagar får inte automatiskt tolkas som att karenstid
inte är tillämplig; villkoret ska bevaras i free_text.
Följande JSON-utdrag ur en SJF 2026:1-journal visar när båda uppgifterna är kända som inte tillämpliga:
{
"crop": {
"growth_stage": null,
"growth_stage_absence_reason": "not_applicable"
},
"quarantine_in_days": null,
"quarantine_in_days_absence_reason": "not_applicable"
}
Fälten dose_unit och area_unit ska använda etablerade enhetssymboler när
sådana finns. Reglerna gäller både SJF 2015:1 och SJF 2026:1. Exemplen nedan är inte en uttömmande
lista över tillåtna enheter.
L och milliliter mL. Andra exempel är g, kg, t och ha. Symbolernas stora och små bokstäver ska
bevaras; enheter ska inte generellt omvandlas till gemener./ utan omgivande blanksteg, exempelvis L/ha, mL/ha och g/ha. Kvadratmeter och kubikmeter skrivs som m2 respektive m3 i formatet, som ASCII-skrivsätt för m² och m³.dose_amount eller area_amount, exempelvis 1.5. Om mängden räknas om till en annan
enhet ska talet ändras tillsammans med enheten: 1.5 L/ha motsvarar 1500 mL/ha.null eller hindra överföringen av journalen.null.SJF 2015:1
SJF 2015:1 är en standard för sprutjournaler med datum fram till och med 2025-12-31.
Alla innehållsfält nedan tillåter även null enligt reglerna för saknade värden.
as a string, always "2015:1"
as a globally unique string, preserved across systems, e.g. "sprutjournal-se-10403"
as a string containing the last change timestamp of the structured journal data, excluding the entire documents field, in UTC formatted as YYYY-MM-DDTHH:mm:ss.sssZ, e.g. "2025-08-10T14:30:00.000Z"
as a string formatted as YYYY-MM-DD, e.g. "2024-10-24"
as a string formatted as hh:mm, e.g. "18:00"
as a string, e.g. "John Doe"
as an object containing
name as a string, e.g. "A5"
gnss_coordinate (optional) as an object containing
latitude as a number in WGS 84, e.g. 58.39123
longitude as a number in WGS 84, e.g. 13.84567
fixed_protective_distances as an array containing at least one string, e.g. ["2m till dräneringsbrunn"], or null when no entries are provided
adjusted_protective_distances as an array containing at least one string, e.g. ["8m till åkerholmens södra sida", "2m på områdets norra sida"], or null when no entries are provided
as an object containing
name as a string, e.g. "Vete"
as a string, e.g. "Ogräsbekämpning"
as null when no entries are provided, or an array of at least one object containing
name as a string, e.g. "Boxer"
registration_number (optional) as a string, e.g. "5760"
dose_amount as a number, e.g. 1.5
dose_unit as a string using unit symbols, e.g. "L/ha", "mL/ha" or "g/ha", following the open unit list rules above
as a string, e.g. "Ej relevant"
as an integer with minimum value 0, e.g. 0; 0 means an actual waiting period of zero days, and null means no value has been provided
as "not_applicable" (waiting period is not applicable), or null (no absence reason is specified). Must be null when quarantine_in_days contains a value, including 0.
as a string containing the actual harvest date formatted as YYYY-MM-DD, e.g. "2025-08-10", or null when no date is provided
as "not_applicable" (harvest date is not applicable), "not_yet_harvested" (harvest has not yet occurred), or null (no absence reason is specified). Must be null when harvest_date contains a date.
(optional) as a string, e.g. "Västlig vind, 1,5 m/s och 15°C"
(optional) as an array of at least one document object attached to this journal, or null when no documents are included. Uses the document format below and is excluded from revision.
Sprutjournal enligt 2015:1 skulle därmed kunna se ut enligt följande JSON-objekt.
{
"version": "2015:1",
"id": "sprutjournal-se-10403",
"revision": "2025-08-10T14:30:00.000Z",
"date": "2024-10-24",
"time": "18:00",
"spreader": "John Doe",
"location": {
"name": "A5",
"gnss_coordinate": {
"latitude": 58.39123,
"longitude": 13.84567
},
"fixed_protective_distances": [
"2m till dräneringsbrunn"
],
"adjusted_protective_distances": [
"8m till åkerholmens södra sida",
"2m på områdets norra sida"
]
},
"crop": {
"name": "Vete"
},
"purpose": "Ogräsbekämpning",
"products": [
{
"name": "Boxer",
"registration_number": "5760",
"dose_amount": 1.5,
"dose_unit": "L/ha"
}
],
"flowering_vegetation": "Ej relevant",
"quarantine_in_days": 0,
"quarantine_in_days_absence_reason": null,
"harvest_date": "2025-08-10",
"harvest_date_absence_reason": null,
"free_text": "Västlig vind, 1,5 m/s och 15°C",
"documents": null
}
SJF 2026:1
SJF 2026:1 är en standard för sprutjournaler med datum från och med 2026-01-01.
Alla innehållsfält nedan tillåter även null enligt reglerna för saknade värden.
as a string, always "2026:1"
as a globally unique string, preserved across systems, e.g. "datavaxt-crop-plan-83713"
as a string containing the last change timestamp of the structured journal data, excluding the entire documents field, in UTC formatted as YYYY-MM-DDTHH:mm:ss.sssZ, e.g. "2026-06-02T10:30:00.000Z"
as a string formatted as YYYY-MM-DD, e.g. "2026-05-25"
as a string formatted as hh:mm, e.g. "12:00"
as a string, e.g. "John Doe"
as a string, e.g. "Behandling av ytor"
as an object containing
name as a string, e.g. "A1"
gnss_coordinate (optional for agricultural parcels eligible for agricultural support) as an object containing
latitude as a number in WGS 84, e.g. 58.39123
longitude as a number in WGS 84, e.g. 13.84567
fixed_protective_distances as an array containing at least one string, e.g. ["2m till dräneringsbrunn"], or null when no entries are provided
adjusted_protective_distances as an array containing at least one string, e.g. ["2m på områdets norra sida"], or null when no entries are provided
as a number describing treated area, volume or amount of seed, e.g. 100
as a string using unit symbols where available, e.g. "ha", "m3", "kg" or "antal frön", following the open unit list rules above
as an object containing
name as a string, e.g. "Höstvete"
eppo_code as a string, e.g. "TRZAW"
growth_stage as an integer representing a valid BBCH code, e.g. 40; 0 means BBCH 00, and null means no value has been provided
growth_stage_absence_reason as "not_applicable" (growth stage is not applicable), or null (no absence reason is specified). Must be null when growth_stage contains a value, including 0.
as a string, e.g. "Svampbehandling"
as null when no entries are provided, or an array of at least one object containing
name as a string, e.g. "Revytrex"
registration_number as a string, e.g. "5585"
dose_amount as a number, e.g. 1.5
dose_unit as a string using unit symbols, e.g. "L/ha", "mL/ha" or "g/ha", following the open unit list rules above
as a string, e.g. "Relevant men ingen blommande vegetation"
as an integer with minimum value 0, e.g. 35; 0 means an actual waiting period of zero days, and null means no value has been provided
as "not_applicable" (waiting period is not applicable), or null (no absence reason is specified). Must be null when quarantine_in_days contains a value, including 0.
as a string containing the actual harvest date formatted as YYYY-MM-DD, e.g. "2026-08-10", or null when no date is provided
as "not_applicable" (harvest date is not applicable), "not_yet_harvested" (harvest has not yet occurred), or null (no absence reason is specified). Must be null when harvest_date contains a date.
(optional) as a string, e.g. "Västlig vind, 1,5 m/s och 15°C"
(optional) as an array of at least one document object attached to this journal, or null when no documents are included. Uses the document format below and is excluded from revision.
Sprutjournal enligt 2026:1 skulle därmed kunna se ut enligt följande JSON-objekt. Bilagan är en schematisk exempelkarta i SVG-format, med filstorlek och checksumma beräknade från den bifogade filens byte.
{
"version": "2026:1",
"id": "datavaxt-crop-plan-83713",
"revision": "2026-06-02T10:30:00.000Z",
"date": "2026-06-02",
"time": "12:00",
"spreader": "John Doe",
"type_of_use": "Behandling av ytor",
"location": {
"name": "A1",
"gnss_coordinate": {
"latitude": 58.39123,
"longitude": 13.84567
},
"fixed_protective_distances": [
"2m till dräneringsbrunn"
],
"adjusted_protective_distances": [
"2m på områdets norra sida"
]
},
"area_amount": 100,
"area_unit": "ha",
"crop": {
"name": "Höstvete",
"eppo_code": "TRZAW",
"growth_stage": 40,
"growth_stage_absence_reason": null
},
"purpose": "Svampbehandling",
"products": [
{
"name": "Revytrex",
"registration_number": "5585",
"dose_amount": 1500,
"dose_unit": "mL/ha"
}
],
"flowering_vegetation": "Relevant men ingen blommande vegetation",
"quarantine_in_days": 35,
"quarantine_in_days_absence_reason": null,
"harvest_date": null,
"harvest_date_absence_reason": "not_yet_harvested",
"free_text": "Västlig vind, 1,5 m/s och 15°C",
"documents": [
{
"name": "Schematisk exempelkarta A1",
"mime_type": "image/svg+xml",
"file_size": 227,
"checksum": "1faf5905ed4b6aacd20427950305c8929f578013129d83220bb644fb86659622",
"binary_object": "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgMTIwIj48dGl0bGU+U2NoZW1hdGlzayBleGVtcGVsa2FydGEgZsO2ciBBMTwvdGl0bGU+PHBhdGggZD0iTTIwIDIwSDE4MFYxMDBIMjBaIiBmaWxsPSIjZDllZGMyIiBzdHJva2U9IiM0NDdiMjgiLz48dGV4dCB4PSIxMDAiIHk9IjY1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5BMTwvdGV4dD48L3N2Zz4="
}
]
}
Här saknas bland annat datum, plats, utvecklingsstadium och dos. Journalen kan ändå exporteras
och importeras. När uppgifterna kompletteras behålls dess id och revision uppdateras.
{
"version": "2026:1",
"id": "sprutjournal-se-10404",
"revision": "2026-06-03T10:30:00.000Z",
"date": null,
"time": null,
"spreader": null,
"type_of_use": null,
"location": null,
"area_amount": null,
"area_unit": null,
"crop": {
"name": "Höstvete",
"eppo_code": null,
"growth_stage": null,
"growth_stage_absence_reason": null
},
"purpose": null,
"products": [
{
"name": "Revytrex",
"registration_number": "5585",
"dose_amount": null,
"dose_unit": null
}
],
"flowering_vegetation": null,
"quarantine_in_days": null,
"quarantine_in_days_absence_reason": null,
"harvest_date": null,
"harvest_date_absence_reason": null,
"free_text": null,
"documents": null
}
Dokument är valfria bilagor som kan bifogas både till en enskild sprutjournal och till exporten som helhet. Samma dokumentformat används på båda nivåerna i SJF 2015:1 och SJF 2026:1. Sprutföraren väljer vilka bilagor som ska följa med exporten.
documents innehåller bilagor för just den behandlingen, exempelvis anpassade
kartbilder eller foton. Kopplingen till journalen ska bevaras vid import och vidareexport.documents innehåller gemensamma bilagor, exempelvis sprutförarens utbildningsbevis
eller spridningsutrustningens godkännande. De blir inte automatiskt bilagor till varje journal.På båda nivåerna är documents en lista med minst ett dokumentobjekt eller null när inga bilagor medföljer. Även dokumentens innehållsfält får vara null när uppgift saknas. Ett utelämnat eller null-värderat documents-fält är inte en instruktion att radera tidigare bilagor vid import.
Medföljande bilagor ska hanteras även om journalens id och revision redan finns i mottagande system.
Dokumentens filinnehåll identifieras med checksum, en SHA-256-kontrollsumma
beräknad på originalfilens byte före base64-kodning. När filinnehållet ändras ska kontrollsumman
beräknas på nytt. Kontrollsumman omfattar inte dokumentets namn eller övriga metadata och anger
inte vilken fil som är nyast eller om en fil ersätter en annan. En importör ska inte automatiskt
ersätta en bilaga enbart för att ett dokument har samma namn och en annan checksumma. När checksum saknas kan den inte användas för att identifiera filinnehållet.
as null when no entries are provided, or an array of at least one object containing
name as a string, e.g. "Behörighetsbevis"
mime_type as a string, e.g. "application/pdf", "image/png", "image/jpeg" or "image/svg+xml"
file_size as a non-negative integer containing the original file size in bytes before base64 encoding, e.g. 311130
checksum as a string of 64 lowercase hexadecimal characters containing the SHA-256 hash of the original file bytes before base64 encoding
binary_object as the original file bytes encoded as a base64 string, without a data URL prefix
Export
En export av sprutjournaler ska kunna innehålla sprutjournaler i både SJF 2015:1 och SJF 2026:1.
Varje journal kan ha egna bilagor i sitt documents-fält. Gemensamma bilagor
placeras i exportens documents-fält enligt dokumentformatet ovan.
as an array containing at least one SJF 2015:1 or SJF 2026:1 journal object, or null when no journals are included
as an array containing at least one document object shared at export level, or null when no such documents are included
Export av sprutjournaler skulle därmed kunna se ut enligt följande JSON-objekt.
{
"journals": [
{
"version": "2015:1",
"id": "sprutjournal-se-10403",
"revision": "2025-08-10T14:30:00.000Z",
"date": "2024-10-24",
"time": "18:00",
"spreader": "John Doe",
"location": {
"name": "A5",
"gnss_coordinate": {
"latitude": 58.39123,
"longitude": 13.84567
},
"fixed_protective_distances": [
"2m till dräneringsbrunn"
],
"adjusted_protective_distances": [
"8m till åkerholmens södra sida",
"2m på områdets norra sida"
]
},
"crop": {
"name": "Vete"
},
"purpose": "Ogräsbekämpning",
"products": [
{
"name": "Boxer",
"registration_number": "5760",
"dose_amount": 1.5,
"dose_unit": "L/ha"
}
],
"flowering_vegetation": "Ej relevant",
"quarantine_in_days": 0,
"quarantine_in_days_absence_reason": null,
"harvest_date": "2025-08-10",
"harvest_date_absence_reason": null,
"free_text": "Västlig vind, 1,5 m/s och 15°C",
"documents": null
},
{
"version": "2026:1",
"id": "datavaxt-crop-plan-83713",
"revision": "2026-06-02T10:30:00.000Z",
"date": "2026-06-02",
"time": "12:00",
"spreader": "John Doe",
"type_of_use": "Behandling av ytor",
"location": {
"name": "A1",
"gnss_coordinate": {
"latitude": 58.39123,
"longitude": 13.84567
},
"fixed_protective_distances": [
"2m till dräneringsbrunn"
],
"adjusted_protective_distances": [
"2m på områdets norra sida"
]
},
"area_amount": 100,
"area_unit": "ha",
"crop": {
"name": "Höstvete",
"eppo_code": "TRZAW",
"growth_stage": 40,
"growth_stage_absence_reason": null
},
"purpose": "Svampbehandling",
"products": [
{
"name": "Revytrex",
"registration_number": "5585",
"dose_amount": 1500,
"dose_unit": "mL/ha"
}
],
"flowering_vegetation": "Relevant men ingen blommande vegetation",
"quarantine_in_days": 35,
"quarantine_in_days_absence_reason": null,
"harvest_date": null,
"harvest_date_absence_reason": "not_yet_harvested",
"free_text": "Västlig vind, 1,5 m/s och 15°C",
"documents": [
{
"name": "Schematisk exempelkarta A1",
"mime_type": "image/svg+xml",
"file_size": 227,
"checksum": "1faf5905ed4b6aacd20427950305c8929f578013129d83220bb644fb86659622",
"binary_object": "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgMTIwIj48dGl0bGU+U2NoZW1hdGlzayBleGVtcGVsa2FydGEgZsO2ciBBMTwvdGl0bGU+PHBhdGggZD0iTTIwIDIwSDE4MFYxMDBIMjBaIiBmaWxsPSIjZDllZGMyIiBzdHJva2U9IiM0NDdiMjgiLz48dGV4dCB4PSIxMDAiIHk9IjY1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5BMTwvdGV4dD48L3N2Zz4="
}
]
}
],
"documents": null
}
Resurser
Anpassade skyddsavstånd
Journalen
Övrigt
Svenska Sprutjournal AB
Organisationsnummer: 559390-6984
Säte: Gemla
mejl: [email protected]
telefon: 076-020 81 44