Jämförda versioner

Nyckel

  • Dessa rader lades till.
  • Denna rad togs bort.
  • Formateringen ändrades.
Kommentera: Updated the numberedheadings macro with the following parameter(s): []

Innehållsförteckning
stylenone

Sektion


Version av PU-tjänsten2.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.

Info
Även om syntaxen baseras på SQL så är det viktigt att poängtera att frågorna aldrig ställs direkt mot databasen. Dvs det finns ingen risk för SQL-injection. Alla sökstränger som kommer in till PU-tjänsten går först igenom validering innan den går genom en parser som översätter den till en syntax som kan användas mot PU-tjänstens databas (som ej är SQL-baserad).

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.

Kodblock
languagexml
<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>