En service, der ønsker at blive routet igennem DCC via SOAP Actions (SA), skal opsætte en yderligere speciel service, her kaldet DKS (DCC Konfigurations Service). En DKS er en HTTP baseret services, der skal svare med et XML dokument på HTTP GET. Svaret skal indeholde konfigurationsinformation til CRK, Den Centrale Route Konfigurator.

Forespørgelsen må gerne understøtte If-Modified-Since HTTP headeren. 

En DKS beskriver routning for et enkelt service endpoint. Hvis en service har flere endpoints, skal der findes samme antal udbudte DKS - en pr endpoint.

DKS skal være tilgængelig på samme måde som servicen selv. Det skal dog bemærkes at CRK kun findes centralt, mens DCC er installeret hos samtlige regioner og centralt.

Eksempelsvar

Følgende er et eksempel på et svar:

 

Eksempel
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root xmlns="http://nspop.dk/2014/04">
  <dksVersion>1</dksVersion>
  <timestamp>2014-08-05T12:29:07.239+02:00</timestamp>
  <name>MedicineCard</name>
  <endpoint>http://195.80.250.83/fmk12/ws/MedicineCard</endpoint>
  <operations>
    <action name="http://www.dkma.dk/medicinecard/xml.schema/2012/06/01#GetPrescriptionMedication">
      <timeoutMillis>30000</timeoutMillis>
      <idCardLevel>MOCES</idCardLevel>
      <idCardMaxAgeMins>540</idCardMaxAgeMins>
    </action>
    <action name="http://www.dkma.dk/medicinecard/xml.schema/2009/01/01#UpdateMedicineCard">
      <timeoutMillis>30000</timeoutMillis>
      <idCardLevel>MOCES</idCardLevel>
      <idCardMaxAgeMins>540</idCardMaxAgeMins>
        <trifork:extra xmlns:trifork=”http://trifork.com/”>
			 This is some extra text
        </trifork:extra>
    </action>
  </operations>
  <trifork:extra xmlns:trifork=”http://trifork.com/”>
    This is some extra text
  </trifork:extra>
</root>

XML Skema

XML skemaet kan ses herefter (men også her). 

XSD
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://nspop.dk/2014/04"
           xmlns="http://nspop.dk/2014/04"
           elementFormDefault="qualified">
    <xs:simpleType name="modelType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="synchronous_timeout"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="idCardLevel">
        <xs:restriction base="xs:string">
            <xs:enumeration value="FOCES"/>
            <xs:enumeration value="VOCES"/>
            <xs:enumeration value="MOCES"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="actionType">
        <xs:sequence>
            <xs:element name="model" type="modelType" minOccurs="0" maxOccurs="1" />
            <xs:element name="timeoutMillis" type="xs:integer" minOccurs="0" maxOccurs="1" />
            <xs:element name="idCardLevel" type="idCardLevel" minOccurs="0"  maxOccurs="1" />
            <xs:element name="idCardMaxAgeMins" type="xs:integer" minOccurs="0" maxOccurs="1" />
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="operationsType">
        <xs:sequence>
            <xs:element name="action" type="actionType" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:element name="root">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="dksVersion" type="xs:integer"/>
                <xs:element name="timestamp" type="xs:dateTime"/>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="endpoint" type="xs:string"/>
                <xs:element name="operations" type="operationsType"/>
                <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Elementerne beskrives her:

ElementBeskrivelse
dksVersionDenne version skal stemme overens med xml skemaet, men pga. fortolkning kan der være forskel. Element er krævet, og tilladte værdier er pt. blot 1. Versionen fortæller CRK hvordan resterende indhold skal fortolkes.
timestamp

Dette er tidstemplet for hvornår dokumentet er lavet. Hvis ingen tidszone er angivet, vil lokal tidszone blive brugt. Hvis filens øvrige indhold ændres, skal timestamp ligeledes ændres.

name

En entydig streng, der identificerer servicen.

endpointDet endpoint servicen svarer på. Dokumentet beskriver kan actions for et eneste endpoint. Hvis flere endpoints ønskes beskrives, skal yderligere DKS services opsættes.
operationsListe af (Soap) actions. Rækkefølgen er her ikke signifikant.

Derudover er der subelementet, action:

ElementBeskrivelse
attributten nameDenne streng angiver Soap Action. Attributen er krævet.
timeout

Tiden i millisekunder; DCC bruger denne til at time en forespørgelse ud. Elementet kan undlades, hvormed default værdien, 30 sekunder, vælges.

model

Afkoblingsmodel; pt. understøttes kun synchronous_timeout. Elementet kan undlades, hvormed default værdien, synchronous_timeout, vælges. 

idCardLevelAngiver krævet sikkerhedsniveau for det tilhørende id kort. Kan pt. have en af værdierne FOCES, VOCES eller MOCES. Bemærk at kun ved anvendelse af MOCES, kan forespørgsler evt. være rutet gennem en decentral SOSI-GW. Elementet kan undlades.
idCardMaxAgeTilladte alder i minutter for id-kortet før SOSI-GW vil prompte med et nyt login. Dette er relevant for de installationer, hvor DCC er placeret foran SOSI-GW. Elementet kan undlades, hvilket bevirker at ingen alder forsøges håndhæves. Elementet kan undlades.

Ud over de her beskrevne elementer, er det også muligt at tilføje yderligere elementer; både sidst under action-element og efter operations-elementet. Dette muliggører DKS implementationer at tilføje extra detaljer enten til dokumentation eller til internt brug i implementationen. CRK vil ikke forsøge at tolke disse elementer. 

Indhold

CRK benytter sig at det angivne tidsstempel i svaret (timestamp element) til at afgøre om der er ændringer. Derudover understøtter CRK If-Modified-Since, og vil derfor kun forvente et fuldt svar, hvis denne værdi er forskellig for dokumentet.

Migrering

I en overgangsperiode vil NSP-projektet internt vedligeholde DKS-definitioner for de udbudte services. Disse vil løbende erstattet af DKS-services udstillet af de enkelte backend-services, efterhånden som disse understøttes.


  • No labels