Page History
...
……. |
Lookup (V2)/Lookupid/Lookup (V1)
Der findes 3 services til opslag på log hændelser.
Lookup.V2 og Lookupid anvender MinLog2 formaterne men differentiere sig dog på den anvendte sikkerhedsmodel. Lookup anvender DGWS principperne og Lookupid servicen OIOIDWS. Beskrivelser og anvendelse heraf ligger uden for nærværende dokuments område.
Lookup.V1 anvender MinLog1 formaterne og DGWS principperne til sikkerhed. Beskrivelser og anvendelse heraf ligger uden for nærværende dokuments område - men kan findes her https://svn.nspop.dk/public/components/minlog-ws/latest/doc/. Det skal dog understreges at operationen "listLogStatementsOnBehalfOf" ikke er implementeret.
Adresse
Servicene er kan findes på:
https://<host>:<port>/minlog2-lookup/LookupService
https://<host>:<port>/minlog2-lookupid/LookupidService
https://<host>:<port>/minlog1-lookup/LookupService
og wsdl'en på:
https://<host>:<port>/minlog2-lookup/LookupService?wsdl
https://<host>:<port>/minlog2-lookupid/LookupidService?wsdl
https://<host>:<port>/minlog1-lookup/LookupService?wsdl
Autentifikation og autorisation
Autentifikation sikres på en af 2 måder
- For Lookup.V1 og Lookup.V2 - IDCard i SOAP header, som det er standard på NSP.
- For Lookupid - OIOIDWS
Lookup kræver autentifikationsniveau niveau 4 (MOCES).
Lookupid håndteres som implementeret i WSSEInInterceptor og foretager følgende:
- Validering af signaturer
- Validering af korrekt Audience
- Validering af timestamp
- Validering af eventuel fuldmagt
- Udtræk af messageid og CPR/CVR til senere anvendelse
BeskedsID
Kaldere af servicen er forpligtet til at forsyne hvert kald med et unikt beskedsID (messageID) i headeren. Dette er standard NSP og beskrivelsen ligger uden for nærværende dokuments område.
Skemabeskrivelse
Skemaet til Lookup kan findes gennem servicen:
...
http:// <host>:<port>/minlog2-lookupid/LookupidService?xsd=minlog2-lookup.xsd
http:// <host>:<port>/minlog1-lookup/LookupService?wsdl=Minlog.wsdl
Efterfølgende beskrives indholdet i body delen af soap beskeden for MinLog2. Beskrivelser til MinLog1 - findes her https://svn.nspop.dk/public/components/minlog-ws/latest/doc/
Request
Følgende elementer anvendes request til opslaget:
...
Navn
...
Beskrivelse
...
Definition
...
Kardinalitet
...
LogStatementForCPRPersonRequest
LogStatementOnBehalfOfRequest
...
Rod-element for forespørgslen.
...
1
...
PersonIdentifier
...
CPR-nummer eller evt. erstatnings-CPR-nummer på borgeren der er slået op på.
Anvendes til "MinLog"-opslag.
...
Streng af længde 50
...
0-1, valg mellem en af *PersonIdentifier-elementerne.
...
PersonIdentifier source attribut
...
Kilde til ID for borgerens CPR-nummer m.v.
...
CPR, E-CPR eller en Streng med max længde 200
...
1
...
OnBehalfOfPersonIdentifier
...
CPR-nummer, Initialer eller Autorisation af handlingen er udført på vegne af.
Anvendes til opslag i medhjælpsloggen.
...
Streng af længde 501, valg mellem en af *OnBehalfOfPersonIdentifier-elementerne
...
0-1, valg mellem en af * OnBehalfOfPersonIdentifier -elementerne
...
OnBehalfOfPersonIdentifier source attribut
...
Kilde til ID for OnBehalfOfPersonIdentifier
...
CPR, Initialer, Autorisation eller en Streng med max længde 200
...
1
...
Grouping
...
Angivelse af hvorledes svaret returneres:
- Ikke grupperet
eller grupperet efter: - Opslagssammenhæng (CorrelationId)
- Dato
- Organisation
- Brugeren der har udført handlingen
- Sundhedspersonen handlingen er udført på vegne af
...
Streng, defineret som en union af en enumeration af
"None",
"Correlation", "Date", "Organisation", "UserPerson", "OnBehalfOfPerson" og en Streng med max længde 50
...
1
...
Details
...
Angivelse af hvorvidt et grupperet svare skal indeholde detaljer. Alle detajler er pt. med i svaret uanset hvad denne er udfyldt med.
...
Streng, defineret som en union af en enumeration af
"All"
...
0-1
...
FilterPass
...
Filtrering på kritikalitet og type af opslag der ønskes returneret
...
0-1
Valg mellem FilterPass, FilterStop eller intet filter
...
FilterPass/ Criticality
...
Et antal angivelser af kritikalitet til filtreringen (privatmarkeret eller ingen angivelse)
...
Streng, defineret som en union af en enumeration af niveau for kritikalitet, og en Streng med max længde 50 tegn
...
0-*
...
FilterPass/ Addition
...
Et antal angivelser af tilføjelser til filtreringen (samtykke, værdispring eller ingen angivelse)
...
Streng, defineret som en union af en enumeration, og en Streng med max længde 50 tegn
...
0-*
...
FilterStop
...
Filtrering på kritikalitet og type af opslag der ikke ønskes returneret.
...
0-1
Valg mellem FilterPass, FilterStop eller intet filter
...
FilterStop/ Criticality
...
Et antal angivelser af kritikalitet til filtreringen (privatmarkeret eller ingen angivelse)
...
Streng, defineret som en union af en enumeration af niveau for kritikalitet, og en Streng med max længde 50 tegn
...
0-*
...
FilterStop/ Addition
...
Et antal angivelser af tilføjelser til filtreringen (samtykke, værdispring eller ingen angivelse)
...
Streng, defineret som en union af en enumeration, og en Streng med max længde 50 tegn
...
0-*
...
Chronologic
...
Med true angives at data returneres i kronologisk rækkefølge, med false i omvendt kronologisk rækkefølge.
...
Boolean
...
1
...
DateTime
...
DateTime-elementet indeholder en eksakt tidsangivelse for opslag.
Dato og tid skal angives i zulu tid / UTC. I praksis gøres dette ved at tilføje Z efter tidsangivelsen, samt at korrigere for de 1-2 timers forskel (henholdsvis vinter- og sommertid) der er mellem dansk tid og UTC. Tiden angives med en præcision i sekunder
...
DateTime
...
0-1
...
FromDateTime
...
Der returneres data fra og med dette tidspunkt, angivet med sekunders præcision.
...
DateTime
...
0-1
Enten skal DateTime eller (FromDateTime og ToDateTime) forekomme
...
ToDateTime
...
Der returneres data til og med dette tidspunkt.
...
DateTime
...
0-1
Enten skal DateTime eller (FromDateTime og ToDateTime) forekomme
...
PageSize
...
Det maksimale antal datasæt der ønskes returneret.
Er grouped = true gælder antallet antal grupper,
Er grouped = false gælder antallet antal LogDataEntry i svaret.
...
Integer, med en restriction > 0
...
0-1
...
PageNumber
...
Element der anvendes ved paginering og angiver hvilken side der ønskes.
...
Integer, med en restriction > 0
...
0-1
Response
Følgende elementer returneres i svaret fra Lookup:
...
Navn
...
Beskrivelse
...
Definition
...
Kardinalitet
...
ListLogStatementsResponse
...
Rod-element for svaret.
...
1
...
LogDataGroup
...
Rod-elementet for en gruppe.
...
0..*, dog ikke flere end evt. angivet i PageSize
...
NumberOfLogDataEntries
...
Antal logninger i gruppen, dvs. svarende til antal LogDataEntry-elementer der kan returneres.
...
Integer, med en restriction > 0
...
1
...
LogDataGroup/Source
...
∩
Opslagene kan være foretaget af samme kildesystem, men kan også komme fra en kæde af registreringskald fra forskellige systemer.
...
0-1
...
LogDataGroup/Source/ SystemName
...
∩
Såfremt der er grupperet en kæde af opslag fra forskellige systemer vil systemnavnene være forskellige, og derfor ikke returneret i gruppen.
...
∩
...
0-1
...
LogDataGroup/Source/ CorrelationId
...
∩
Såfremt CorrelationId er angivet i kaldet til registreringsservicen vil værdien være anvendt til gruppering og derfor forekomme for gruppen.
...
∩
...
0-1
...
LogDataGroup/Destination
...
∩
...
∩
...
1
...
LogDataGroup/Destination/ SystemName
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/Activity
...
∩
...
0-1
...
LogDataGroup/ Destination/ Reason
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/ Criticality
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/ Addition
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/ FromDateTime
...
Ældste DateTime eller FromDateTime i gruppen
...
DateTime
...
1
...
LogDataGroup/Destination/ ToDateTime
...
Yngste DateTime eller ToDateTime i gruppen
...
DateTime
...
1
...
LogDataGroup/Destination/ OrganisationId
...
∩
...
∩
...
0-1
...
LogDataGroup/ OrganisationId/Destination/ attribut source
...
∩
...
∩
...
1
...
LogDataGroup/Destination/ OrganisationName
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/ PersonIdentifier
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/ PersonIdentifiersource attribut
...
∩
...
∩
...
1
...
LogDataGroup/Destination/ PersonName
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/ CorrelationId
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/ UserPersonIdentifier
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/ UserPersonIdentifier source attribut
...
∩
...
∩
...
1
...
LogDataGroup/Destination/ UserPersonName
...
∩
...
∩
...
0-1
...
LogDataGroupDestination/ UserRole
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/ OnBehalfOfPersonIdentifier
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/ OnBehalfOfPersonIdentifier source attribut
...
∩
...
∩
...
1
...
LogDataGroup/Destination/ OnBehalfOfPersonName
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/ OnBehalfOfUserRole
...
∩
...
∩
...
0-1
...
LogDataGroup/Destination/Filter
...
∩
...
∩
...
0-1
...
LogDataGroup/ LogDataEntry
...
0-*
...
LogDataGroup/ LogDataEntry/Source
...
Element der indeholder information omkring det kaldende system, kildesystemet.
Kildesystemet kan være udeladt i de tilfælde en bruger har slået direkte op på systemet.
...
0-1
...
LogDataGroup/ LogDataEntry/Source/Source[/...]
...
Source-elementet kan igen indeholde et source-element. Dette anvendes såfremt kildesystemet igen er kaldt af et andet system.
...
0-1
...
LogDataGroup/ LogDataEntry/Source/ SystemName
...
Navn, evt. forkortet, for det anvendte kilde-system
...
Streng med max længde på 25 tegn
...
0-1
...
LogDataGroup/ LogDataEntry/Source/ CorrelationId
...
Et teknisk id, medsendt fra kildesystemet. Værdien anvendes til at identificere den sammenhæng som handlingen er gennemført i, eksempelvis et id for behandlingen eller indlæggelsen (EPJ) eller kontakten (LPS).
Værdien skal være unik for det anvendte system.
...
Streng med max længde på 46 tegn.
...
0-1
...
LogDataGroup/ LogDataEntry/Destination
...
Element der indeholder information omkring og fra det kaldte system, destinations-systemet, dvs. det system der foretager logningen.
...
1
...
LogDataGroup/ LogDataEntry/Destination/ SystemName
...
Navn, evt. forkortet, for det anvendte system, f.eks. "FMK".
...
Streng med max længde på 25 tegn
...
1
...
LogDataGroup/ LogDataEntry/Destination/Activity
...
Tekst der beskriver af den handling, som brugeren har udført eller forsøgt udført på kildesystemet.
Eksempelvis "hent medicinkort" på FMK.
...
Streng, max længde på 75 tegn
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/ Reason
...
Optionel tekst der beskriver årsagen til den handling, som brugeren har udført eller forsøgt udført på kildesystemet. Teksten anvendes kun i særlige tilfælde, hvor borgeren ikke har direkte kontakt til brugeren, eksempelvis ved support, fejlsøgning og tilskudsansøgninger.
Teksten udfyldes af systemet, som en eller få forud-definerede tekster, og må ikke være en fritekst udfyldt af brugeren.
...
Streng, max længde på 50 tegn
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/ Criticality
...
Niveau for kritikalitet, f.eks:
"Normal", "Værdispring", "Privatmarkerede data", …
Er værdien ikke angivet svarer dette til "Normal".
...
Streng med max længde 50 tegn
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/Addition
...
Angivelse af type af opslag som tilføjelse til kritikalitet, aktuelt "Samtykke" eller "Værdispring"
...
Streng med max længde 50 tegn
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/ DateTime
...
DateTime-elementet indeholder en tidsangivelse for opslag på eller forsøg på handling på borgerens data.
...
DateTime
...
0-1
Enten skal DateTime eller (FromDateTime og ToDateTime) forekomme.
...
LogDataGroup/ LogDataEntry/Destination/ FromDateTime
...
Som alternativ til DateTime herover kan der være foretaget en gruppering af f.eks. FMK inden data er afleveret til MinLog 2. I så fald kan FromDateTime og ToDateTime angive det interval hvor hændelserne er sket.
FMK kan gruppere samme type servicekald foretaget inden for et tidsrum på samme borger og af samme aktør m.v.
...
DateTime
...
0-1
Enten skal DateTime eller (FromDateTime og ToDateTime) forekomme.
...
LogDataGroup/ LogDataEntry/Destination/ ToDateTime
...
Se FromDateTime herover.
...
DateTime
...
0-1Enten skal DateTime eller (FromDateTime og ToDateTime) forekomme.
...
LogDataGroup/ LogDataEntry/Destination/ OrganisationId
...
ID for brugerens organisation.
...
Streng på max 200 tegn
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/ OrganisationId attribut source
...
Kilde til ID for brugerens organisation, defineret som en attribut på OrganisationId-elementet.
...
SOR, SKS, Yder, CVR-P, CVR, Kommunekode og en Streng med max længde 200
...
1
...
LogDataGroup/ LogDataEntry/Destination/ OrganisationName
...
Navn på brugens organisation
...
Streng med max længde 200
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/ PersonIdentifier
...
CPR-nummer eller evt. erstatnings-CPR-nummer på borgeren.
...
Streng af længde 50
...
1
...
LogDataGroup/ LogDataEntry/Destination/ PersonIdentifier attribut source
...
Kilde til ID for borgerens CPR-nummer eller erstatnings-CPR-nummer.
F.eks. "CPR" for almindelige CPR-numre i CPR-regstret.
...
CPR, E-CPR, ... og en Streng med max længde 200
...
1
...
LogDataGroup/ LogDataEntry/Destination/ PersonName
...
Borgerens navn.
...
Streng med max længde 147 tegn
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/ CorrelationID
...
Et teknisk id, medsendt fra kildesystemet. Værdien anvendes til at identificere den sammenhæng som handlingen er gennemført i, eksempelvis et id for behandlingen eller indlæggelsen (EPJ) eller kontakten (LPS).
Værdien skal være unik for det anvendte system.
...
Streng med max længde på 46 tegn.
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/ UserPersonIdentifier
...
CPR-nummer eller evt. erstatnings-CPR-nummer på brugeren der har udført handlingen.
...
Streng af længde 50
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/ UserPersonIdentifier attribut source
...
Kilde til UserPersonIndentifier.
F.eks. "CPR" for almindelige CPR-numre i CPR-regstret.
...
CPR, E-CPR, ... og en Streng med max længde 200
...
1
...
LogDataGroup/ LogDataEntry/Destination/ UserPersonName
...
Navn på brugeren der har udført handlingen.
...
Streng med max længde 147 tegn
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/ UserRole
...
Brugerens rolle.
...
Streng af længde 200 (svarende til FMK's RequestedRole)
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/ OnBehalfOfPersonIdentifier
...
CPR-nummer eller evt. erstatnings-CPR-nummer på brugeren handlingen er udført på vegne af.
...
Streng med max længde 50
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/ OnBehalfOfPersonIdentifier attribut source
...
Kilde til OnBehalfOfPersonIdentifier.
F.eks. "CPR" for almindelige CPR-numre i CPR-regstret.
...
CPR, E-CPR, ... og en Streng med max længde 200
...
1
...
LogDataGroup/ LogDataEntry/Destination/ OnBehalfOfPersonNavn
...
Navn på brugeren handlingen er udført på vegne af.
...
Streng med max længde 147 tegn
...
0-1
...
LogDataGroup/ LogDataEntry/Destination/Filter
...
Et eller flere felter der anvendes til angivelse af hvilken målgruppe logningen skal filtreres fra for.
Udelades feltet er der underforstået at logningen er relevant for alle.
...
Streng, aktuelt defineret som en union af en enumeration aktuelt indeholdende " Ikke borger" , "Ikke forældremyndighedsindehaver" og en Streng med max længde 50 tegn.
...
0-*
Operationer
Nedenfor følger en oversigt over de tilgængelige operationer.
GetLogStatementsForCPRPerson
Denne operation anvendes når der skal foretages et person opslag efter log registreringer. Efterfølgende vises body-delen af soap requestet. Check evt. integrationtest GetStatementsForCPRPersonTest for komplet soaprequest.
Eksempel-request:
...
…….
…….
<ml2:LogStatementForCPRPersonRequest xmlns:ml2="http://www.sundhedsdatastyrelsen.dk/minlog/xml.schema/2017/03/01/minlog2-registration.xsd">
<ns:PersonId source="CPR">2412751045</ns:PersonId>
<ns:Grouping>None</ns:Grouping>
<ns:Details>All</ns:Details>
<ns:Chronologic>false</ns:Chronologic>
</ml2:LogStatementForCPRPersonRequest>
…….
…….
GetLogStatementsOnBehalfOf
Denne operation anvendes når der skal foretages opslag i medhjælpsloggen, dvs. på handlinger der er foretaget på vegne af den sundhedsperson der slå op i medhjælpsloggen. Efterfølgende vises body-delen af soap requestet. Check evt. integrationtest GetStatementsOnBehalfOfTest for komplet soaprequest.
Eksempel-request:
...
…….
…….
<ml2:LogStatementOnBehalfOfRequest xmlns:ml2="http://www.sundhedsdatastyrelsen.dk/minlog/xml.schema/2017/03/01/minlog2-registration.xsd">
<ns:OnBehalfOfPersonId source="CPR">0707701045</ns:OnBehalfOfPersonId>
<ns:Grouping>None</ns:Grouping>
<ns:Details>All</ns:Details>
<ns:Chronologic>true</ns:Chronologic>
</ml2:LogStatementOnBehalfOfRequest>
…….
…….
Eksempel-response:
…….
…….
<ns6:LogStatementsResponse
...
…….
…….
Fejl
Fejl bliver returneret som SOAP faults. Nedenfor et par eksempler.
Lookup eksempel – Duplicate logentry
...
Lookup eksempel – udløbet IDCard
...
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<Header xmlns="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd">
<Linking>
<FlowID>flow_id</FlowID>
<MessageID>d8f950b4-d4f4-4fa6-9b4c-42c1e5183860</MessageID>
<InResponseToMessageID>ef539d3e-5c23-4b00-a88d-44f54ce52ad3</InResponseToMessageID>
</Linking>
<FlowStatus>flow_finalized_succesfully</FlowStatus>
</Header>
<ns4:Security
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:ns2="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:ns3="http://www.w3.org/2000/09/xmldsig#"
xmlns:ns4="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<Timestamp>
<Created>2017-06-29T14:28:13Z</Created>
</Timestamp>
</ns4:Security>
</SOAP-ENV:Header>
<soap:Body>
<soap:Fault xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<faultcode xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/">ns1:Server</faultcode>
<faultstring>IDCard expires after 9 hours</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
...
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<Header xmlns="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd">
<Linking>
<FlowID>flow_id</FlowID>
<MessageID>188963a9-6038-49a4-922f-5425d4be98a9</MessageID>
<InResponseToMessageID>AAABXO3Fbsg86L0drZOiylNPU0k=</InResponseToMessageID>
</Linking>
<FlowStatus>flow_finalized_succesfully</FlowStatus>
</Header>
<ns4:Security
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:ns2="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:ns3="http://www.w3.org/2000/09/xmldsig#"
xmlns:ns4="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<Timestamp>
<Created>2017-06-28T08:15:58Z</Created>
</Timestamp>
</ns4:Security>
</SOAP-ENV:Header>
<soap:Body>
<soap:Fault xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<faultcode xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/">ns1:Server</faultcode>
<faultstring> Caller must be authenticated at level 4</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Lookupid eksempel – Forkert audience
...
<S11:Envelope xmlns:S11="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://docs.oasis-open.org/ws-sx/ws-trust/200512" xmlns:wsa="http://www.w3.org/2005/08/addressing"><S11:Header><wsa:MessageID>uuid:ae4c3981-0628-4dbd-9e26-b1647930ae1b</wsa:MessageID><wsa:RelatesTo>uuid:f77f0581-7768-4292-9eac-6717a7724374</wsa:RelatesTo></S11:Header><S11:Body><S11:Fault>
<faultcode>wst:InvalidRequest</faultcode>
<faultstring>The request was invalid or malformed</faultstring>
</S11:Fault>
</S11:Body></S11:Envelope>