Indhold

Introduktion

Formål

Denne guide har som formål at give et overblik over, hvordan CAVE servicen kaldes.
Guiden indeholder beskrivelse af de relevante dele af snitfladen. 

Sammenhæng med øvrige dokumenter

Dette dokument er en del af den samlede dokumentation for CAVE.

Dokumentets relation til de øvrige dokumenter er beskrevet i dokumentationsoversigten for projektet CAVE Service.

Læsevejledning

Dette dokument er henvendt til udviklere og arkitekter der skal anvende CAVE  servicen. 

Det forventes at læseren har et kendskab til REST services, da snitfladen er en REST snitflade.

Dokument historik

DatoAnsvarligBeskrivelse
5/2-2018KvalitetsITInitiel version

Definitioner og referencer

RerenceBeskrivelse
RESTRepresentational State Transfer
FHIRFast Health Interoperability Resources
HAPIHAPI-FHIR - Open Source FHIR implementation in Java

Brug af CAVE service

CAVE servicen udstiller en REST snitflade. Installation af CAVE servicen er lavet sådan, at det kun er LAR, der kan kalde CAVE servicen. 

Snitfladebeskrivelse

CAVE servicen implementerer FHIR standarden. FHIR (Fast Health Interoperability Resources) er en standard, der beskriver dataformater og et API til udveksling af sundhedsoplysnigner. API'et beskriver et REST api til at læse, opdatere, søge osv. Dataformaterne beskriver alle de typer af data, som FHIR standarden understøtter. Der understøttes en lang række af forskellige typer af data, og i forhold til CAVE servicen er det primært AllergyIntolerance, der anvendes. I CAVE servicen er det FHIR version 4.0, der anvendes. For yderlige information omkring fhir henvises til https://www.hl7.org/fhir/.

CAVE servicen er en implemtering af FHIR standarden, og API'et er derfor standard FHIR. I snitfladebeskrivelsen er kun beskrevet de dele, der er anvendt i forhold til LAR servicen. For yderlige detaljer henvises til FHIR standarden. 

Read allergy intolerance

Request

For at læse AllergyIntolerance oplysninger anvendes et HTTP Get kald. En række query parametre udgør søgekriterierne. Parametrene er standard FHIR parametre. 

Søgningen sker via patient.identifer og der angives oid for CPR systemet og CPR nr. på den patient, der søges data for. Nedenstående er det kald LAR servicen laver for at læse de nødvendige oplysninger. CPR nr. er markeret med fed og rød skrifttype.

http://localhost/cave/fhir/AllergyIntolerance?patient.identifier=urn%3Aoid%3A1.2.208.176.1.2%7C0101010102&_include=AllergyIntolerance%3Apatient&_include=AllergyIntolerance%3Arecorder&_include%3Arecurse=PractitionerRole%3Apractitioner&_include%3Arecurse=PractitionerRole%3Aorganization

Response

Svaret på ovenstående query består af en FHIR bundle. Der returneres nedenstående ressourcer i bundlen. En FHIR Bundle er det koncept, der anvendes i FHIR til at returnere flere ressourcer i eet svar. F.eks. hvis en patient har flere registreringer, eller der skal returneres flere forskellige typer af ressourcer. 


AllergyIntolerance
ElementBeskrivelse
identifierUnik identifier for registreringen. Er altid i UUID formatet.

clinicalStatus

Status på registreringen. Er enten Active, Inactive eller Resolved

verificationStatus

Altid confirmed da LAR servicen altid sender confirmed.
typeAltid allergy da LAR servicen altid sender allergy.
categoryAltid medication da LAR servicen altid sender medication.
criticalityKritikalitet af allergien. Er enten low, high eller unnable-to-assess.
codeSubstans eller tekstuel beskrivelse af substans som allergien drejer sig om. Består af en kode og et system eller en beskrivende tekst. System kan være oid for ATC kode og koden er så en specifik ATC kode.
patientReference til Patient ressourcen.
onsetDateTimeTidspunkt allergien er identificeret.

recorder

Reference til PractitionerRole ressourcen. PractitionerRole angiver organization og sundhedsfaglig person der har oprettet data.
noteTekst note
reaction.manifestationReaktion på allergien. Består af:
  • manifestation: Code og system for reaktionen. System er oid for SKS.
  • manifestationDescription: Tekstuel beskrivelse.
reaction.onsetTidspunkt hvor reaktionen er observeret.
reaction.severityHvor alvorlig reaktionen er. Enten Mild, moderate eller severe.
PractitionerRole
ElementBeskrivelse
PractitionerReference til Practitioner ressourcen.
OrganizationReference til Organization ressourcen.


Patient
ElementBeskrivelse
IdentifierCode og system. System er OID for CPR og code er CPR nummer på patienten.
Practioner
ElementBeskrivelse
IdentifierCode og system. System er OID for autorisationskode og code er autorsiationskode for den sundhedsfaglige person, der har oprettet data.
Organization
ElementBeskrivelse
IdentifierCode og system. System er OID for SOR og code er den SOR kode for den organization, der har oprettet data.


RegisterPatientAllergyResponse

Består af ReplyStatus og en liste af MedicationAllergyIntoleranceReduced.

ReplyStatus
ElementBeskrivelsePåkrævet
StatusCodeStatus kode på forespørgselen.Ja
StatusTextStatus tekst svarende til status koden.Ja


Register allergy intolerance

Registrering af medicinintolerens sker med HTTP Post kald til CAVE servicen. Body består af en FHIR bundle med nedenstående ressourcer. Alle ressourcerne er standard FHIR ressourcer. 

Beskrivelse af de anvendte felter er den samme som når der læses data. Derfor er der ikke seperat beskrivelse af de enkelte felter. 


Eksempler

Læs allergyIntolerance

For at læse cave oplysninger i cave servicen anvendes et HTTP Get kald til CAVE Servicens REST snitflade. Nedenstående er den HTTP Get, der skal laves. Det med rødt markerede er den variable del i form af CPR nummer. 


http://cave.sdsd.dk/fhir/AllergyIntolerance?patient.identifier=urn%3Aoid%3A1.2.208.176.1.2%7C0101010110&_include=AllergyIntolerance%3Apatient&_include=AllergyIntolerance%3Arecorder&_include%3Arecurse=PractitionerRole%3Apractitioner&_include%3Arecurse=PractitionerRole%3Aorganization

Svaret på ovenstående request har endenstående format. I svaret er det entry listen, der indeholder de enkelte ressourcer, man får tilbage. Beskrivelse af de felter, der anvendes i hver resource, kan ses under snitfladebeskrivelse.

{
    "resourceType": "Bundle",
    "id": "bae2ae59-8dd2-4a22-bc0e-5dbc4840569d",
    "meta": {
        "lastUpdated": "2019-02-13T07:25:27.572+01:00"
    },
    "type": "searchset",
    "total": 5,
    "link": [
        {
            "relation": "self",
            "url": "http://cave.sdsd.dk/fhir/AllergyIntolerance?_include=AllergyIntolerance%3Apatient&_include=AllergyIntolerance%3Arecorder&_include%3Arecurse=PractitionerRole%3Apractitioner&_include%3Arecurse=PractitionerRole%3Aorganization&patient.identifier=urn%3Aoid%3A1.2.208.176.1.2%7C0101010110"
        }
    ],
    "entry": [
        {
            "fullUrl": "http://cave.sdsd.dk/fhir/AllergyIntolerance/608",
            "resource": {
                "resourceType": "AllergyIntolerance",
                "id": "608",
                "meta": {
                    "versionId": "1",
                    "lastUpdated": "2019-02-12T15:49:09.000+01:00"
                },
                "identifier": [
                    {
                        "value": "69a8c8f2-a410-41d4-af4d-57bcd6a9d721"
                    }
                ],
                "clinicalStatus": {
                    "coding": [
                        {
                            "code": "active"
                        }
                    ]
                },
                "verificationStatus": {
                    "coding": [
                        {
                            "code": "confirmed"
                        }
                    ]
                },
                "type": "allergy",
                "category": [
                    "medication"
                ],
                "criticality": "unable-to-assess",
                "code": {
                    "coding": [
                        {
                            "system": "urn:oid:2.16.840.1.113883.6.73",
                            "code": "N07B02"
                        }
                    ],
                    "text": "Metadon"
                },
                "patient": {
                    "reference": "Patient/607"
                },
                "onsetDateTime": "2019-01-11T09:01:03+01:00",
                "recorder": {
                    "reference": "PractitionerRole/606"
                },
                "lastOccurrence": "2019-01-11T09:01:03+01:00",
                "reaction": [
                    {
                        "manifestation": [
                            {
                                "coding": [
                                    {
                                        "system": "urn:oid:1.2.208.176.2.4.12",
                                        "code": "DT789"
                                    }
                                ],
                                "text": "Ser grønne elefanter!"
                            }
                        ],
                        "severity": "severe"
                    }
                ]
            },
            "search": {
                "mode": "match"
            },
            "response": {
                "status": "201 Created",
                "etag": "W/\"1\""
            }
        },
        {
            "fullUrl": "http://cave.sdsd.dk/fhir/PractitionerRole/606",
            "resource": {
                "resourceType": "PractitionerRole",
                "id": "606",
                "meta": {
                    "versionId": "1",
                    "lastUpdated": "2019-02-12T15:49:09.000+01:00"
                },
                "practitioner": {
                    "reference": "Practitioner/604"
                },
                "organization": {
                    "reference": "Organization/605"
                }
            },
            "search": {
                "mode": "include"
            },
            "response": {
                "status": "201 Created",
                "etag": "W/\"1\""
            }
        },
        {
            "fullUrl": "http://cave.sdsd.dk/fhir/Patient/607",
            "resource": {
                "resourceType": "Patient",
                "id": "607",
                "meta": {
                    "versionId": "1",
                    "lastUpdated": "2019-02-12T15:49:09.000+01:00"
                },
                "identifier": [
                    {
                        "system": "urn:oid:1.2.208.176.1.2",
                        "value": "0101010110"
                    }
                ]
            },
            "search": {
                "mode": "include"
            },
            "response": {
                "status": "201 Created",
                "etag": "W/\"1\""
            }
        },
        {
            "fullUrl": "http://cave.sdsd.dk/fhir/Practitioner/604",
            "resource": {
                "resourceType": "Practitioner",
                "id": "604",
                "meta": {
                    "versionId": "1",
                    "lastUpdated": "2019-02-12T15:49:08.000+01:00"
                },
                "identifier": [
                    {
                        "system": "urn:oid:1.2.208.176.1.3",
                        "value": "AUT_ID2"
                    }
                ]
            },
            "search": {
                "mode": "include"
            },
            "response": {
                "status": "201 Created",
                "etag": "W/\"1\""
            }
        },
        {
            "fullUrl": "http://cave.sdsd.dk/fhir/Organization/605",
            "resource": {
                "resourceType": "Organization",
                "id": "605",
                "meta": {
                    "versionId": "1",
                    "lastUpdated": "2019-02-12T15:49:08.000+01:00"
                },
                "identifier": [
                    {
                        "system": "urn:oid:1.2.208.176.1.1",
                        "value": "SOR_KODE1"
                    }
                ]
            },
            "search": {
                "mode": "include"
            },
            "response": {
                "status": "201 Created",
                "etag": "W/\"1\""
            }
        }
    ]
}

Registrer cave oplysninger

For at registrere CAVE oplysninger sker det ved et HTTP Post kald til http://cave.sdsd.dk/fhir/AllergyIntolerance. Body består af en fhir bundle med de ressourcer der ønskes oprettet. Nedenstående er eksempel på HTTP body til oprettelse af data. 

Den enkelte felter er beskrevet under snitfladebeskrivelse. 




{
  "resourceType": "Bundle",
  "type": "transaction",
  "entry": [
    {
      "fullUrl": "urn:uuid:67e31dec-71e5-4f7d-88d6-402499aaa4ce",
      "resource": {
        "resourceType": "Practitioner",
        "identifier": [
          {
            "system": "urn:oid:1.2.208.176.1.3",
            "value": "AUT_ID2"
          }
        ]
      },
      "request": {
        "method": "POST",
        "url": "Practitioner"
      }
    },
    {
      "fullUrl": "urn:uuid:0615d12d-08eb-482b-9a4b-200cfc6d8adc",
      "resource": {
        "resourceType": "Organization",
        "identifier": [
          {
            "system": "urn:oid:1.2.208.176.1.1",
            "value": "SOR_KODE1"
          }
        ]
      },
      "request": {
        "method": "POST",
        "url": "Organization"
      }
    },
    {
      "fullUrl": "urn:uuid:4de0c3d5-4beb-42aa-a3f3-326e41442577",
      "resource": {
        "resourceType": "PractitionerRole",
        "practitioner": {
          "id": "urn:uuid:67e31dec-71e5-4f7d-88d6-402499aaa4ce"
        },
        "organization": {
          "id": "urn:uuid:0615d12d-08eb-482b-9a4b-200cfc6d8adc"
        }
      },
      "request": {
        "method": "POST",
        "url": "PractitionerRole"
      }
    },
    {
      "fullUrl": "urn:uuid:9185fff5-7d2b-428d-bada-5641075b157d",
      "resource": {
        "resourceType": "Patient",
        "identifier": [
          {
            "system": "urn:oid:1.2.208.176.1.2",
            "value": "0101010110"
          }
        ]
      },
      "request": {
        "method": "POST",
        "url": "Patient"
      }
    },
    {
      "resource": {
        "resourceType": "AllergyIntolerance",
        "clinicalStatus": {
          "coding": [
            {
              "code": "active"
            }
          ]
        },
                "identifier": [
                    {
                        "value": "69a8c8f2-a410-41d4-af4d-57bcd6a9d723"
                    }
                ],        
        "verificationStatus": {
          "coding": [
            {
              "code": "confirmed"
            }
          ]
        },
        "type": "allergy",
        "category": [
          "medication"
        ],
        "criticality": "unable-to-assess",
        "code": {
          "coding": [
            {
              "system": "urn:oid:2.16.840.1.113883.6.73",
              "code": "N07B02"
            }
          ],
          "text": "Metadon"
        },
        "patient": {
          "id": "urn:uuid:9185fff5-7d2b-428d-bada-5641075b157d"
        },
        "onsetDateTime": "2019-01-11T09:01:03+01:00",
        "recorder": {
          "id": "urn:uuid:4de0c3d5-4beb-42aa-a3f3-326e41442577"
        },
        "lastOccurrence": "2019-01-11T09:01:03+01:00",
        "reaction": [
          {
            "manifestation": [
              {
                "coding": [
                  {
                    "system": "urn:oid:1.2.208.176.2.4.12",
                    "code": "DT789"
                  }
                ],
                "text": "Ser grønne elefanter!"
              }
            ],
            "severity": "severe"
          }
        ]
      },
      "request": {
        "method": "POST",
        "url": "AllergyIntolerance"
      }
    }
  ]
}



Ovenstående giver nedenstående svar. Savret indeholder de data, der er blevet oprettet. 


{
    "resourceType": "Bundle",
    "type": "transaction-response",
    "link": [
        {
            "relation": "self",
            "url": "http://cave.sdsd.dk/fhir"
        }
    ],
    "entry": [
        {
            "resource": {
                "resourceType": "Practitioner",
                "id": "604",
                "meta": {
                    "versionId": "1",
                    "lastUpdated": "2019-02-12T15:49:08.000+01:00"
                },
                "identifier": [
                    {
                        "system": "urn:oid:1.2.208.176.1.3",
                        "value": "AUT_ID2"
                    }
                ]
            }
        },
        {
            "resource": {
                "resourceType": "Organization",
                "id": "605",
                "meta": {
                    "versionId": "1",
                    "lastUpdated": "2019-02-12T15:49:08.000+01:00"
                },
                "identifier": [
                    {
                        "system": "urn:oid:1.2.208.176.1.1",
                        "value": "SOR_KODE1"
                    }
                ]
            }
        },
        {
            "resource": {
                "resourceType": "PractitionerRole",
                "id": "606",
                "meta": {
                    "versionId": "1",
                    "lastUpdated": "2019-02-12T15:49:09.000+01:00"
                },
                "practitioner": {
                    "reference": "Practitioner/604"
                },
                "organization": {
                    "reference": "Organization/605"
                }
            }
        },
        {
            "resource": {
                "resourceType": "Patient",
                "id": "607",
                "meta": {
                    "versionId": "1",
                    "lastUpdated": "2019-02-12T15:49:09.000+01:00"
                },
                "identifier": [
                    {
                        "system": "urn:oid:1.2.208.176.1.2",
                        "value": "0101010110"
                    }
                ]
            }
        },
        {
            "resource": {
                "resourceType": "AllergyIntolerance",
                "id": "653",
                "meta": {
                    "versionId": "1",
                    "lastUpdated": "2019-02-13T07:52:49.573+01:00"
                },
                "identifier": [
                    {
                        "value": "69a8c8f2-a410-41d4-af4d-57bcd6a9d723"
                    }
                ],
                "clinicalStatus": {
                    "coding": [
                        {
                            "code": "active"
                        }
                    ]
                },
                "verificationStatus": {
                    "coding": [
                        {
                            "code": "confirmed"
                        }
                    ]
                },
                "type": "allergy",
                "category": [
                    "medication"
                ],
                "criticality": "unable-to-assess",
                "code": {
                    "coding": [
                        {
                            "system": "urn:oid:2.16.840.1.113883.6.73",
                            "code": "N07B02"
                        }
                    ],
                    "text": "Metadon"
                },
                "patient": {
                    "reference": "Patient/607"
                },
                "onsetDateTime": "2019-01-11T09:01:03+01:00",
                "recorder": {
                    "reference": "PractitionerRole/606"
                },
                "lastOccurrence": "2019-01-11T09:01:03+01:00",
                "reaction": [
                    {
                        "manifestation": [
                            {
                                "coding": [
                                    {
                                        "system": "urn:oid:1.2.208.176.2.4.12",
                                        "code": "DT789"
                                    }
                                ],
                                "text": "Ser grønne elefanter!"
                            }
                        ],
                        "severity": "severe"
                    }
                ]
            }
        }
    ]
}