2.1 SimpleQL
Version av PU-tjänsten | 2.1 |
Senaste revidering |
|
Senast reviderad av |
Bakgrund
SimpleQL är en syntax framtagen för att enkelt kunna söka personuppgifter via framtaget RIV-TA kontrakt. Målet med syntaxen var att använda en sedan tidigare känd syntax, men att hålla nere komplexiteten. Pga dessa två föll valet på en SQL-baserade syntax för igenkänningsfaktorn, men med anpassningar för att ge det stöd som behövs inom användningsfallen för personuppgiftstjänsten (PU-tjänsten) med låg komplexitet.
Beskrivning
I en söksträng ingår alltid två keywords. Dessa är FROM samt WHERE och är de enda keywords som används och de är alltid obligatoriska. Tillsammans med dessa anges vilka noder man vill söka på och vilka dessa noder är begränsas enligt beskrivning i detta dokument. Till noderna anges sedan operatorer och värden. Precis som med noderna så är operatorerna begränsade och specificeras i detta dokument.
Med noder så avses de noder som ingår i typen LookupResidentsResponse som är en del av domänen masterdata.citizen.citizen.
Alla sökningar görs utan hänsyn till gemen/versal skrivning (case insensitive).
OBS! Tjänsten returnerar aldrig uppgifter om sekretessmarkerade personer. Detta eftersom en sådan funktionalitet kan missbrukas genom att utföra sökningar på adresser och få reda på vilka med sekretessmarkering som bor på den adressen.
Användning / Begränsning
Nedan anges vilka tillåtna keywords, operatorer och noder som är giltiga för PU-tjänsten version 2.1.
En generisk söksträng följer följande mönster:
FROM <rootnod att utgå ifrån> WHERE <nod> <operator> '<värde>' AND <nod> <operator> '<värde>'
'<värde>' skall alltid anges inom enkla citationstecken.
Keywords
- FROM
- Anger vilken nod som skall vara root-nod och som samtliga noder specificerade i WHERE satsen är relativa emot.
- WHERE
- Anger noder, operatorer och värden för sökningen.
Operatorer
- AND
- Används för att sätta samma flera villkor. Enbart AND villkor stöds i version 2.1
- =
- Anger att värdet för noden skall matchas exakt (dock case insensitive)
- LIKE
- Anger att värdet för noden innehåller 1..2 wildcards i form av "%".
- %
- Wildcard som används tillsammans med LIKE. 1..2 "%" kan användas i samma värde. Ett värde kan både börja och sluta med "%".
Noder
Beskrivning av nedan sökbara noder återfinns i TKB samt IS för PU-tjänsten.
- PopulationRegistrationRecord.PersonalRecord.PersonalIdentity.Id
- PopulationRegistrationRecord.PersonalRecord.Name.GivenName
- PopulationRegistrationRecord.PersonalRecord.Name.MiddleName
- PopulationRegistrationRecord.PersonalRecord.Name.SurName
- PopulationRegistrationRecord.PersonalRecord.AddressInformation.ResidentialAddress.PostalAddress2
- PopulationRegistrationRecord.PersonalRecord.AddressInformation.ResidentialAddress.PostalCode
- PopulationRegistrationRecord.PersonalRecord.AddressInformation.ResidentialAddress.City
- PopulationRegistrationRecord.PersonalRecord.PopulationRegistrationLocality.CountyCode
- PopulationRegistrationRecord.PersonalRecord.PopulationRegistrationLocality.MunicipalityCode
- PopulationRegistrationRecord.PersonalRecord.AddressInformation.NationalKeys.PropertyId
- PopulationRegistrationRecord.PersonalRecord.AddressInformation.NationalKeys.AddressPlaceId
- PopulationRegistrationRecord.PersonalRecord.AddressInformation.NationalKeys.ApartmentId
Exempel på söksträngar
Personer med förnamn Johan och efternamn Andersson.
FROM PopulationRegistrationRecord.PersonalRecord.Name
WHERE GivenName = 'Johan'
AND SurName = 'Andersson'
Personer födda 1978 med förnamn Anna och som är folkbokförd i kommun 0183 (notera uppdelning av län och kommun enligt SKV's data).
FROM PopulationRegistrationRecord.PersonalRecord
WHERE PersonalIdentity.Id LIKE '1978%'
AND Name.GivenName = 'Anna'
AND PopulationRegistrationLocality.CountyCode = '01'
AND PopulationRegistrationLocality.MunicipalityCode = '83'
Personer boende inom postnummer 83132 som är födda i Maj 2014.
FROM PopulationRegistrationRecord.PersonalRecord
WHERE AddressInformation.ResidentialAddress.PostalCode = '83132'
AND PersonalIdentity.Id LIKE '201405%'
Personer boende i län 04 på gata Trollrunan och med efternamn Hansson.
FROM PopulationRegistrationRecord.PersonalRecord
WHERE PopulationRegistrationLocality.CountyCode = '04'
AND AddressInformation.ResidentialAddress.PostalAddress2 LIKE 'Trollrunan%'
AND Name.SurName = 'Hansson'
Exempel på Request
Följande exempel visar ett request mot tjänsten searchResidentsForProfile. Enbart body av requestet är representerat. Sökningen efterfrågar följande:
Alla personer i län 01 som har förnamn Johan och ett efternamn som börjar på Trulls. I svaret efterfrågas data i form av svarsprofil 2.
<SearchResidentsForProfile> <query>FROM PopulationRegistrationRecord.PersonalRecord WHERE Name.GivenName = 'Johan' AND Name.SurName LIKE 'Trulls%' AND PopulationRegistrationLocality.CountyCode = '01'</query> <queryLanguage>SimpleQL</queryLanguage> <profile>P2</profile> </SearchResidentsForProfile>