API-530
WIP (väldigt) på förslag för ny resurs i caseStatus samt caseManagement för att returnera statusar på ärenden på ett (subset) nationellt format. Den nationella specen är på svenska, därav är även API:et på svenska.
För PoC:en antar vi att status endast kommer att frågas på ärenden i Ecos2 och att det är externalCaseId som används.
Antaganden / Förslag för PoC:
OpenE "kopplas bort" och för poc:en skapas ett enkelt GUI (fejka Tillväxtverket) för att skicka anrop direkt mot caseStatus.
För att ytterligare förenkla används
externalCaseId
istället för personnummer (bara i poc).TODO: Vet ej hur detta skall lösas framgent, men någon metod/nyutveckling för att hämta tillväxtverkets id:n kopplat mot pnr / org.nr?
Då caseStatus är en "dum" tjänst, dvs slussar vidare json från caseManagement bör caseManagement stå för översättning av statusar från Ecos2 -> "nationell standard".
CaseManagement gör en kopia av ett anrop mot Ecos2 men med en egen mappning av svar till nationell standard, dvs gå förbi existerande mappnings-logik.
“Lösningsförslag”
Nya resurser i både caseStatus samt caseManagement skapas, t.ex:
GET /cases/tvCaseMapping?anropandeSystem=system&externalCaseId=externalCaseId-1
.caseStatus gör ett anrop mot caseManagement, som idag fast ny endpoint för att särskilja.
CaseManagement anropar
GetCase
i Ecos2 för att hämta statusar på ärenden.Svare från Ecos2 mappas serdan till nationell standard:
kundhandelser ()
varje
OccurrenceListItemSvcDto
mappas till ett objekt ikundhandelser
OccurrenceTypeId
->handelsebeskrivning
OccurrenceDate
->registreradTidpunkt
? ->
handelserubrik
. Här bör vi kunna nyttja en enum som innehåller förklarande text tillhörande varje kundhandelsekategori i "kundhandelsekategori".OccurrenceTypeId
->kundhandelsekategori
metadata
Utelämnar
huvudman
samtexternAnvandare
(för poc).hamtatDatum
==LocalDateTime.now()
;
Förslag på API efter POC:
Request
{
"anropandeSystem": "något system",
"huvudman": "165565491461",
"externAnvandare": "197001011234"
}
Fördel: Enklare för klienter
Nackdel: Vi måste leta reda på alla ärenden, hantering av personuppgifter ( ? )
Alternativt förslag på request (utökning med key-value-lista, där mottagaren (vi) har specificerat vilka nycklar och värden som är aktuella.) för att möjliggöra att skicka in data som inte annars passar in i API:et:
Kan bli stökigt att köra GET vid många ärenden, eller undvika anropande system att göra ett anrop per ärende. I sådana fall kan en POST användas och är “lagligt” enligt spec, typ… I detta fall aggregerar tjänsten caseStatus / oepStatus alla ärenden till _ett_ response.
{
"anropandeSystem": "något system",
"flexibeltFaltMedBraNamn": [
{
"externalCaseId": "externalCaseId-1"
},
{
"externalCaseId": "externalCaseId-2"
}
]
}
Fördel: Sändande system håller reda på ärenden, slipper hantering av personuppgifter
Nackdel: Ärendenummer hålls av klient, utökning av spec, tappar kontrollen på api:et, hålla dokumentation / giltiga värden aktuella blir utmanande.
{
"anropandeSystem": "något system",
"arendenummer": "externalCaseId-1"
}
Fördel: Sändande system håller reda på ärenden, slipper hantering av personuppgifter, behåller kontroll över vad som kan skickas in.
Nackdel: Utökning av spec, ett anrop per ärendestatus
Response:
Förklaring av parametrar
request
parameter | typ | förklaring | Extra-info / kommentar |
---|---|---|---|
anropandeSystem | String |
|
|
externAnvandare | String | Den externa användare som utför förfrågan, kan vara personnummer eller organisationsnummer. |
|
huvudman | String | Person eller organisation som det skall hämtas uppgifter om. |
|
response → metadata
parameter | typ | förklaring | Extra-info / kommentar |
---|---|---|---|
huvudman | String | Person eller organisation som det skall hämtas uppgifter om. |
|
externAnvandare | String | Den externa användare som utför förfrågan, kan vara personnummer eller organisationsnummer. |
|
hamtatDatum | DateTime | Datum när kundhändelserna hämtades, kanske inte oerhört nödvändig men är med i specen. | ISO8601: “YYYY-MM-DDThh:mm:ssTZD” / “2021-09-29T13:05:00+01:00” |
response → kundhandelser
parameter | typ | förklaring | Extra-info / kommentar |
---|---|---|---|
handelserubrik | String | Kortfattad beskrivning för ärendet |
|
handelsebeskrivning | String | Ännu längre beskrivande text för ärendet | Behövs denna? |
kundhandelseId | String |
| Skall enligt spec vara unikt överallt, är |
kundhandelsekategori | String | Typ av händelse för ärendet | Möjliga värden: Mottagningskvittens, Beslut, Fråga, Upplysning |
registreradTidpunkt | DateTime | Startdatum för ärendet | Tas från |
Förtydligande “kundhandelsekategori”
Efter mail-konversation med Martin Karlsson på Tillväxtverket är det i dagsläget dessa 4 kundhändelsekategorier som gäller:
Mottagningskvittens (Bollen är hos oss …)
Beslut (Bollen är i mål …)
Fråga (Bollen är hos dig …)
Upplysning (Ungefär som “Fråga”, du kan göra något men behöver inte, annars tar vi det vi har. En “vänlig upplysning” om vad kunden kan tänkas ta sig för. )
ToDo efter poc
Mappning av värden:
från Ecos2 till
kundhandelsekategori, handelserubrik, handelsebeskrivning
Vad skall användas i parametern
kundhandelseId
, ärexternalCaseId
vettigt?Hur får vi tag i ärenden från Ecos2 m.h.a. personnummer / orgnummer?