28. kesäkuuta 2007

Potilaslista/ateriatilaus-kohteen esimerkkitoteutukset

Esimerkkitoteutusten periaatteet

Tämä sivusto paketoi yhteen SerAPI-projektin kohteen potilaslista/ateriatilaus esimerkkitoteutukset (asiakas- ja palvelutoteutus). Toteutusten tarkoituksena on esitellä kohteessa määritettyä toiminnallisuutta ja siinä hyödynnettyä tietosisältöä, eikä toimia varsinaisena teknisenä ohjenuorana, minkä pohjalta tuotantojärjestelmissä toimivia potilasjärjestelmiä tulisi rakentaa. Käytännössä esimerkiksi potilaslista-rajapinnan palvelutoteutus tulisi rakentaa potilasydinjärjestelmän tai muun vastaavan potilastietoa tarjoavan tietokannan päälle. Tämä esimerkkipalveluntoteutus on yhteydessä ainoastaan omaan sisäänrakennettuun tietokantaansa, josta ei ole yhteyksiä muualle.

Esimerkkitoteutusten kuvaukset

Esimerkkitoteutukset ovat rakennettu SerAPI-hankkeessa kehitetyn potilaslista-kohteen WSDL-kuvauksen avulla, johon liittyy ateriatilaus-kohteen tietosisältöä vastaava XML-skeema. WSDL siis määrää esimerkkitoteutuksen kutsurajapinnan ja yleiset sisällön SOAP-kyselyille ja -vastauksille, ja erillinen ateriatilaus-skeema tarkemman ateriatilaukseen liittyvän tietosisällön (esimerkiksi ruokavalion). WSDL-tiedosto myös sisältää SOAP-päätepisteen, jossa esimerkkipalvelutoteutus ottaa vastaan palvelukutsuja

Esimerkkitoteutus pohjautuu seuraaviin määrityksiin:

Asiakastoteutuksen kuvaus

Asiakastoteutuksella kyetään tuottamaan ja suorittamaan palvelupyyntöjä sekä tarkastelemaan niille palvelutoteutuksen tuottamia vasteita. Asiakaspäähän on myös toteutettu mahdollisuus tarkastella toiminnallisuuden tuottamisessa käytettyjä varsinaisia SOAP-viestejä. Esimerkkiasiakastoteutus hyödyntää oletuksena alempana kuvattua esimerkkipalvelutoteutusta.

Asiakastoteutus on saatavilla kahtena versiona: asennuspaketoituna, ajettavana versiona sekä sovellusprojektina, jossa mukana tulee toteutuksen lähdekoodi (C#-toteutus, vaatii Visual Studio.NET 2005-asennuksen). Molemmille toteutuksille on saatavilla yhteinen käyttö- ja asennusohjeistus.

Ladattavat esimerkkiasiakastoteutuksen tiedostot:

Palvelutoteutuksen kuvaus

Palvelun toteutus on rakennettu itsenäisen SQL-tietokannan päälle. Seuraava kaavio sisältää toteutuksen tietokantakuvauksen, ja samalla siten myös esittää toteutuksen rajapintojen tietosisällön.


Kaavio 1: Esimerkkitoteutuksen tietokantakaavio

Esimerkkitoteutusta käyttävä asiakassovellus voidaan luoda edellä mainitusta WSDL-kuvauksesta ja siihen liittyvistä skeematiedostoista.

Esimerkkitoteutusten käyttöesimerkkejä

Tässä kappaleessa kuvataan esimerkkitoteutusten tuottamia ja ymmärtämiä SOAP-sanomia ja niiden vastaussanomia.

Esimerkkikysely 1: Osastolla 701 olevien potilaiden haku päivänä 30.5.2007

<?xml version="1.0" encoding="UTF-8"?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body>
         <queryPatients xmlns="urn:serapi:PatientList">
            <generalQueryParameters>
               <department>
                  <id>701</id>
                  <idSystem>1.2.246.10.2458998</idSystem>
               </department>
               <startDate>2007-05-30</startDate>
               <endDate>2007-05-30</endDate>
               <extensionId>serapi.1</extensionId>
            </generalQueryParameters>
            <ns1:patientListQueryExtension xmlns:ns1="urn:serapi:PatientListExtension">
               <ns1:patientStatus>asBooked</ns1:patientStatus>
            </ns1:patientListQueryExtension>
         </queryPatients>
      </soapenv:Body>
   </soapenv:Envelope>

Esimerkkivastaus 1: Osastolla 701 olevien potilaat päivänä 30.5.2007

<?xml version="1.0" encoding="utf-8"?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body>
         <queryPatientsResponse xmlns="urn:serapi:PatientList">
            <foundPatient>
               <generalPatientInformation>
                  <patient>
                     <id>030488</id>
                     <idSystem>1.2.237.21</idSystem>
                  </patient>
                  <lastName>Thunder</lastName>
                  <givenNames>Dermot</givenNames>
                  <personId>030488-800Y</personId>
                  <birthDate>1974-04-03</birthDate>
               </generalPatientInformation>
               <ns1:patientListExtension xmlns:ns1="urn:serapi:PatientListExtension">
                  <ns1:asBooked>
                     <ns1:department>
                        <ns1:id>701</ns1:id>
                        <ns1:idSystem>1.2.246.10.2458998</ns1:idSystem>
                     </ns1:department>
                     <ns1:bookedDate>2007-05-30</ns1:bookedDate>
                  </ns1:asBooked>
               </ns1:patientListExtension>
            </foundPatient>
            <foundPatient>
               <generalPatientInformation>
                  <patient>
                     <id>110645</id>
                     <idSystem>1.2.237.21</idSystem>
                  </patient>
                  <lastName>Le Mans</lastName>
                  <givenNames>Jim Johnny</givenNames>
                  <personId>110645-600D</personId>
                  <birthDate>1974-06-11</birthDate>
               </generalPatientInformation>
               <ns1:patientListExtension xmlns:ns1="urn:serapi:PatientListExtension">
                  <ns1:asBooked>
                     <ns1:department>
                        <ns1:id>701</ns1:id>
                        <ns1:idSystem>1.2.246.10.2458998</ns1:idSystem>
                     </ns1:department>
                     <ns1:bookedDate>2007-05-30</ns1:bookedDate>
                  </ns1:asBooked>
               </ns1:patientListExtension>
            </foundPatient>
         </queryPatientsResponse>
      </soapenv:Body>
   </soapenv:Envelope>

Esimerkkikysely 2: Potilaan "030488" tietojen hakeminen

<?xml version="1.0" encoding="UTF-8"?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body>
         <getPatientInfo xmlns="urn:serapi:PatientList">
            <generalQueryParameters>
               <patient>
                  <id>030488</id>
                  <idSystem>1.2.237.21</idSystem>
               </patient>
               <startDate>2007-05-30</startDate>
               <endDate>2007-05-30</endDate>
               <extensionId>serapi.1</extensionId>
            </generalQueryParameters>
         </getPatientInfo>
      </soapenv:Body>
   </soapenv:Envelope>

Esimerkkivastaus 2: Potilaan "030488" tiedot

<?xml version="1.0" encoding="utf-8"?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body>
         <getPatientInfoResponse xmlns="urn:serapi:PatientList">
            <patientInformation>
               <patient>
                  <id>030488</id>
                  <idSystem>1.2.237.21</idSystem>
               </patient>
               <ns1:patientInfoExtension xmlns:ns1="urn:serapi:PatientListExtension">
                  <ns1:dietaryInformation>
                     <ns1:diet>
                        <ns1:code>N</ns1:code>
                        <ns1:codeSystem>1.2.246.10.2458998</ns1:codeSystem>
                        <ns1:name>Normaali ruokavalio</ns1:name>
                     </ns1:diet>
                     <ns1:primaryDiet>true</ns1:primaryDiet>
                     <ns1:texture>
                        <ns1:code>K</ns1:code>
                        <ns1:codeSystem>1.2.246.10.2458998</ns1:codeSystem>
                        <ns1:name>Kiinteä</ns1:name>
                     </ns1:texture>
                  </ns1:dietaryInformation>
               </ns1:patientInfoExtension>
            </patientInformation>
         </getPatientInfoResponse>
      </soapenv:Body>
   </soapenv:Envelope>

University of Kuopio, SerAPI project, HIS research
Marko.Sormunen@uku.fi