Versions Compared

Key

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

...

Eksempelkoden stammer oprindeligt (er tilrettet for simplificering) fra DROS integrationstest og kan findes her:  https://svn.nspop.dk/svn/components/dros/trunk/

...

  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 til documententry
    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
linenumberstrue
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
linenumberstrue
<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> 

...

En vigtig detalje er Document Entry UUID, som sættes på DocumentEntrypå DocumentEntry. Denne anvendes iforbindelse i forbindelse med "Ret Stable Dokument" og "Slet Dokument" og skal sættes med prefix "urn:uuid:".  I nedenstående request eksempel er det "urn:uuid:69d3b9f3-7919-40e0-8731-32fb339216c2"

Helt overordnet vil et kald ITI-41 kunne laves med:

Code Block
languagejava
linenumberstrue
// Indlæs dokumentet, som skal registreres
String documentPayload = getAppointmentXmlDocument();


// Opret documentEntry
DocumentEntry documentEntry = createDocumentEntry();

// Opret kald/request 
ProvideAndRegisterDocumentSetRequestType provideAndRegisterDocumentSetRequest = buildProvideAndRegisterDocumentSetRequestAftale(documentEntry, documentPayload);
try {
	// Udfør kald
	RegistryResponseType registryResponse = iti41PortType.documentRepositoryProvideAndRegisterDocumentSetB(provideAndRegisterDocumentSetRequest);

	// Aflæs kaldets svar
	handleResponse(registryResponse);
} catch (WebServiceException e) {
		// Håndter exception
}

Det at lave 

Code Block
languagejava
linenumberstrue
Code Block
languagejava
linenumberstrue


I requestet nedenfor ses selve dokumentet (som MTOM attachment) samt de specificerede metadata (den del af requestet, der er i tag SubmitObjectsRequest)

...