Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Det er op til anvenderen selv at vælge platform og frameworks, der passer til resten af dennes løsning. Her gives dog et forslag til, hvordan det kan gribes an, hvis man arbejder på en java platform. Andre platforme kan have tilsvarende værktøjer og muligheder.

Eksempelkoden stammer oprindeligt fra DROS integrationstest og kan findes her:  https://svn.nspop.dk/svn/components/dros/trunk/

ITI snitfladerne kaldes som SOAP web services, og er i det såkaldte XML basererede "RIM format". Til at realisere disse kald kan tredieparts bibliotekerne fra IPF Open eHealth Integration Platform anvendes. Disse kan blandt andet mappe fra RIM formatet til en en "OpeneHealth core model", som er java klasser. Og gør det at udvikle ITI kald meget lettere at arbejde med.

Helt overordnet kan kalde processen det at lave et ITI kald deles op i følgende trin

  1. Opret kald i OpeneHealth code model
    1. For iti41 kald indebærer det blandt andet opret/indlæs af dokument samt opret af metadata
    2. For iti42, 57 og 61 indebærer det oprettelse af metadata
  2. Udfør kald - det transformeres til RIM formatet på vej ud, og tilbage til core model ved returnering automatisk vha. openeHealth frameworket
  3. Aflæs kaldets svar og håndter eventuelle fejl returneret

...

Først OpeneHealth core model, den kode man skriver i sit program:

Code Block
languagejava
documentEntry.getConfidentialityCodes().add(new Code("N", new LocalizedString("N"), "2.16.840.1.113883.5.25"));

AssigningAuthority patientIdAssigningAuthority = new AssigningAuthority("1.2.208.176.1.2");
Code patientCode = new Code("2512489996", new LocalizedString("CPR"), "1.2.208.176.1.2");
documentEntry.setPatientId(new Identifiable(patientCode, patientIdAssigningAuthority));

Og her tilsvarende RIM format., som openeHealth automatisk oversætter det til:

Code Block
languagexml
<ns2:Classification classificationScheme="urn:uuid:f4f85eac-e6cb-4883-b524-f2705394840f" classifiedObject="urn:uuid:69d3b9f3-7919-40e0-8731-32fb339216c2" nodeRepresentation="N" id="urn:uuid:9068bc2b-1717-4337-abfb-027f303b20c6">
  <ns2:Slot name="codingScheme">
    <ns2:ValueList>
      <ns2:Value>2.16.840.1.113883.5.25</ns2:Value>
    </ns2:ValueList>
  </ns2:Slot>
  <ns2:Name>
    <ns2:LocalizedString xml:lang="en-US" charset="UTF-8" value="N"/>
  </ns2:Name>
</ns2:Classification>

<ns2:ExternalIdentifier registryObject="urn:uuid:69d3b9f3-7919-40e0-8731-32fb339216c2" identificationScheme="urn:uuid:58a6f841-87b3-4a3e-92fd-a8ffeff98427" value="2512489996^^^&1.2.208.176.1.2&ISO" id="urn:uuid:6dc240d8-d871-4df1-b8c6-3414f1415022">
  <ns2:Name>
    <ns2:LocalizedString value="XDSDocumentEntry.patientId"/>
  </ns2:Name>
</ns2:ExternalIdentifier> 

...

I afsnittene nedenfor, som omhandler understøttelse af bruger historierne "opret stable dokumnent", "ret stable dokument" og "slet dokument"  er der vist psodokode, som illustrerer, hvordan man kan implementere kaldende kaldene vha. ovennævnte metode. Afsnittene hænger sådan sammen, at for den givne brugerhistorie kan man se koden (OpeneHealth core model), som skaber kaldet, og hvilke request og response (rim format) det medfører. Som skrevet er der tale om psodokode, for at illustrere principperne, og ikke fuldt implementeret logik, som kan kopieres, som det er.

Understøttelse af Brugerhistorier

...