Postupy při tvorbě a hlášení metrik

Metriky vychází z přílohy č. 2 k usnesení vlády 289/2022

Úvod

Níže je popsaná datová struktura jednoho záznamu/transakce pro pilotní sběr metriky využívání vybraných digitálních systémů.

Záznamy z různých agendových systémů či pro různé agendy a služby VS můžete kombinovat do jednoho JSON/XML/CSV souboru.

Nikdy prosím nevytvářejte pro každou transakci samostatný soubor, naopak sdružujte více transakcí do jednoho souboru.

Téma / kořenová entita datové sady: Transakce

Vlastnosti/atributy:

Identifikátor/označení transakce

technický název: id

povinnost vyplnění: povinně

datový typ: řetězec

význam: číslo jednací či jiný v agendovém systému použitý identifikátor řízení s občanem/firmou

Výsledek transakce

technický název: vysledek

povinnost vyplnění: povinně

datový typ: celé číslo

omezení přípustných hodnot (a jejich význam) – pro pilot jen základní hodnoty (zvolte nejbližší možnou):

1 - dokončeno úspěšně

dokončeno úspěšně, např. poskytnutím služby / splněním povinnosti / schválením/zaevidováním …)

2 - dokončeno neúspěšně

Žádost/řízení neschválena, odmítnuta, nevyhověno apod.

Výsledný stav

technický název: stav

povinnost vyplnění: nepovinně

datový typ: řetězec

význam: konkrétní agendově specifický výsledný stav (např. „zamítnuto“ / „stornováno klientem“) anebo stav z agendového systému jednoznačně určující status

Uživatelská spokojenost

technický název: spokojenost

povinnost vyplnění: nepovinně (pokud se spokojenost zjišťuje)

datový typ: celé číslo

omezení přípustných hodnot (a jejich význam): známka 1-5 jako ve škole

Vazba na **orgán veřejné moci**

technický název: ovm

povinnost vyplnění: povinně

datový typ: viz definice **identifikátor OVM**

význam: identifikátor OVM, které data pro měření poskytuje (konstantní v rámci všech datových souborů poskytovaných daným OVM)

Vazba na **agendu**

technický název: agenda

povinnost vyplnění: povinně

datový typ: viz definice **kód agendy\\ **

Vazba na **službu veřejné správy**

technický název: sluzba

povinnost vyplnění: nepovinně

datový typ: řetězec – u služby z RPP/Katalogu služeb podle definice **identifikátor služby**, jinak lze použít pro odlišení např. typu/varianty transakce

Vazba na vstupní **obslužný kanál**

technický název: kanal_vstup

povinnost vyplnění: povinně

datový typ: viz definice typ obslužného kanálu

omezení přípustných hodnot: používaný číselník kanálů

Vazba na výstupní **obslužný kanál**

technický název: kanal_vystup

povinnost vyplnění: povinně

datový typ: viz definice typ obslužného kanálu

omezení přípustných hodnot: používaný číselník kanálů

Čas zahájenítechnický název: cas_zahajeni

povinnost vyplnění: povinně

datový typ a formát: viz definice Datum a čas

Čas ukončenítechnický název: cas_ukonceni

povinnost vyplnění: povinně

datový typ a formát: viz definice Datum a čas

Vazba na etapy v rámci transakce

technický název: etapy

povinnost vyplnění: nepovinné

datový typ: seznam (pole) prvků dle datového typu Etapa (viz dále)

Související entita / datový typ: Etapa

Vlastnosti/atributy:

Identifikátor/označení etapy

technický název: id

povinnost vyplnění: povinně

datový typ: řetězec

Název etapy

technický název: nazev

povinnost vyplnění: povinně

datový typ: řetězec

význam: Lidsky čitelné/srozumitelné pojmenování etapy

Čas zahájení

technický název: cas

povinnost vyplnění: povinně

datový typ a formát: viz definice Datum a čas

Vazba na **úkon služby veřejné správy**

technický název: ukon

povinnost vyplnění: nepovinně (jen pokud je k dispozici a dává smysl)

datový typ: viz definice: **identifikátor úkonu**

Příklad obsahu XML souboru s 2 transakcemi

Jméno XML souboru musí mít vždy příponu .xml.

<?xml version="1.0" encoding="UTF-8"?>
<root>
<transakce>
<id>234/2022</id>
<vysledek>1</vysledek>
<stav>schvaleno_3</stav>
<spokojenost>2</spokojenost>
<ovm>00007064</ovm>
<agenda>A1046</agenda>
<sluzba>S980</sluzba>
<kanal_vstup>DATOVA_SCHRANKA</kanal_vstup>
<kanal_vystup>DATOVA_SCHRANKA</kanal_vystup>
<cas_zahajeni>2022-05-13T09:00:00</cas_zahajeni>
<cas_ukonceni>2022-05-30T12:03:00</cas_ukonceni>
<etapy>
<etapa>
<id>AB43D-32243</id>
<nazev>přijmutí DS, zavedení do spisovky</nazev>
<cas>2022-05-13T09:00:00</cas>
<ukon>
</ukon>
</etapa>
<etapa>
<id>AB43D-32244</id>
<nazev>posouzeni zadosti</nazev>
<cas>2022-05-15T08:22:00</cas>
<ukon>
</ukon>
</etapa>
</etapy>
</transakce>
<transakce>
<id>235/2022</id>
<vysledek>1</vysledek>
<stav>schvaleno_3</stav>
<spokojenost>2</spokojenost>
<ovm>00007064</ovm>
<agenda>A1046</agenda>
<sluzba>S980</sluzba>
<kanal_vstup>DATOVA_SCHRANKA</kanal_vstup>
<kanal_vystup>DATOVA_SCHRANKA</kanal_vystup>
<cas_zahajeni>2022-05-13T09:00:00</cas_zahajeni>
<cas_ukonceni>2022-05-30T12:03:00</cas_ukonceni>
<etapy>
<etapa>
<id>AB43D-32243</id>
<nazev>přijmutí DS, zavedení do spisovky</nazev>
<cas>2022-05-13T09:00:00</cas>
<ukon>
</ukon>
</etapa>
<etapa>
<id>AB43D-32244</id>
<nazev>posouzeni zadosti</nazev>
<cas>2022-05-15T08:22:00</cas>
<ukon>
</ukon>
</etapa>
</etapy>
</transakce>
</root>

XML schéma

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="transakce">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:string" />
<xs:element name="vysledek" type="xs:unsignedByte" />
<xs:element name="stav" type="xs:string" />
<xs:element name="spokojenost" type="xs:unsignedByte" minOccurs="0" />
<xs:element name="ovm" type="xs:integer" />
<xs:element name="agenda" type="xs:string" />
<xs:element name="sluzba" type="xs:string" />
<xs:element name="kanal_vstup" type="xs:string" />
<xs:element name="kanal_vystup" type="xs:string" />
<xs:element name="cas_zahajeni" type="xs:dateTime" />
<xs:element name="cas_ukonceni" type="xs:dateTime" />
<xs:element name="etapy" minOccurs="0" >
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="etapa">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:string" />
<xs:element name="nazev" type="xs:string" />
<xs:element name="cas" type="xs:dateTime" />
<xs:element name="ukon" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

Příklad obsahu JSON souboru s 2 transakcemi

Jméno JSON souboru musí mít vždy příponu .json.

{
"transakce": [
{
"id": "234/2022",
"vysledek": "1",
"stav" : "schvaleno_3",
"spokojenost": "2",
"ovm": "00007064",
"agenda": "A1046",
"sluzba": "S980",
"kanal_vstup": "DATOVA_SCHRANKA",
"kanal_vystup": "DATOVA_SCHRANKA",
"cas_zahajeni": "2022-05-13T09:00:00",
"cas_ukonceni": "2022-05-30T12:03:00",
"etapy": {
"etapa": [
{
"id": "AB43D-32243",
"nazev": "přijmutí DS, zavedení do spisovky",
"cas": "2022-05-13T09:00:00",
"ukon": "U2343"
},
{
"id": "AB43D-32244",
"nazev": "posouzeni zadosti",
"cas": "2022-05-15T08:22:00",
"ukon": ""
}
]
}
},
{
"id": "235/2022",
"vysledek": "1",
"stav" : "schvaleno_3",
"spokojenost": "2",
"ovm": "00007064",
"agenda": "A1046",
"sluzba": "S980",
"kanal_vstup": "DATOVA_SCHRANKA",
"kanal_vystup": "DATOVA_SCHRANKA",
"cas_zahajeni": "2022-05-13T09:00:00",
"cas_ukonceni": "2022-05-30T12:03:00",
"etapy": {
"etapa": [
{
"id": "AB43D-32243",
"nazev": "přijmutí DS, zavedení do spisovky",
"cas": "2022-05-13T09:00:00",
"ukon": "U2343"
},
{
"id": "AB43D-32244",
"nazev": "posouzeni zadosti",
"cas": "2022-05-15T08:22:00",
"ukon": ""
}
]
}
}
]
}

Příklad obsahu CSV souboru s 2 transakcemi

Jméno CSV souboru musí mít vždy příponu .csv.

transakce/id,transakce/vysledek,transakce/stav,transakce/spokojenost,transakce/ovm,transakce/agenda,transakce/sluzba,transakce/kanal_vstup,transakce/kanal_vystup,transakce/cas_zahajeni,transakce/cas_ukonceni,transakce/etapy/etapa/0/id,transakce/etapy/etapa/0/nazev,transakce/etapy/etapa/0/cas,transakce/etapy/etapa/1/id,transakce/etapy/etapa/1/nazev,transakce/etapy/etapa/1/cas

234/2022,1,"schvaleno_3",2, 00007064,A1046,S980,DATOVA_SCHRANKA,DATOVA_SCHRANKA,2022-05-13T09:00:00,2022-05-30T12:03:00,AB43D-32243,"přijmutí DS, zavedení do spisovky",2022-05-13T09:00:00,AB43D-32244,posouzeni zadosti,2022-05-15T08:22:00

235/2022,1,"schvaleno_3",2, 00007064,A1046,S980,DATOVA_SCHRANKA,DATOVA_SCHRANKA,2022-05-13T09:00:00,2022-05-30T12:03:00,AB43D-32243,"přijmutí DS, zavedení do spisovky",2022-05-13T09:00:00,AB43D-32244,posouzeni zadosti,2022-05-15T08:22:00

Zasílání zdrojových dat

Snažili jsme se zvolit nejjednodušší způsob nahrávání, a to pro situaci, kdy budete soubory nahrávat ručně, tak pokud budete mít připraven automatický proces.

K nahrávání se použije oficiální utilita od Microsoftu azcopy.

Utilita je k dispozici pro všechny obvyklé platformy (Win32, Win64, Linux, MacOS)

Jeden z parametrů utility je BLOB SAS URL + token - neboli URL a auth token, kterym server pozná kam nahrát vaše data a že jsou to data od vás.

BLOB SAS URL + token v příkladu: "https:%%//%%ddgdata.blob.core.windows.net/test1?sp=rac&st=2022-05-10T12:55:50Z&se=2022-06-10T20:55:50Z&spr=https&sv=2020-08-04&sr=c&sig=XXX

V příkladu uvedeném níže je neplatný BLOB SAS URL + token, pouze jako příklad. Váš BLOB SAS token vám zašleme datovou schránkou na jméno. Poté ve scriptu pouze nahradíte tento příklad za váš BLOB SAS URL + token.

Postup pro nahrání dat

Stáhnout utilitu azcopy

https:%%//%%docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10(stáhne se zip soubor azcopy_windows_amd64_10.14.1)

Utilita azcopy.exe je uložena v adresáři c:\test

Pomocí dodaného klíče (každý resort bude mít svůj, odpovídající příslušnému containeru v rámci storage account) zkusím uploadovat textový soubor:

C:\test>azcopy copy "c:\test\hello.txt" "https:%%//%%ddgdata.blob.core.windows.net/test1?sp=rac&st=2022-05-10T12:55:50Z&se=2022-06-10T20:55:50Z&spr=https&sv=2020-08-04&sr=c&sig=XXX" –recursive=true

INFO: Proxy detected: https:%%//%%azcopyvnextrelease.blob.core.windows.net → //10.29.98.90:3128

INFO: Scanning…

INFO: Any empty folders will not be processed, because source and/or destination doesn't have full folder support

Job 017888f3-0deb-674e-47f4-719ac8f654c6 has started

Log file is located at: C:\Users\mcervenka\.azcopy\017888f3-0deb-674e-47f4-719ac8f654c6.log

INFO: Proxy detected: https:%%//%%ddgdata.blob.core.windows.net → //10.29.98.90:3128

0.0 %, 0 Done, 0 Failed, 1 Pending, 0 Skipped, 1 Total,

Job 017888f3-0deb-674e-47f4-719ac8f654c6 summary

Elapsed Time (Minutes): 0.0336

Number of File Transfers: 1

Number of Folder Property Transfers: 0

Total Number of Transfers: 1

Number of Transfers Completed: 1

Number of Transfers Failed: 0

Number of Transfers Skipped: 0

TotalBytesTransferred: 19

Final Job Status: Completed

Pomocí azcopy mohu zkontrolovat, zda je soubor uložen (pozn. při uploadu souboru stejného názvu dojde k přepsání původního souboru)

C:\test>azcopy list https:%%//%%ddgdata.blob.core.windows.net/test1?sp=rac&st=2022-05-10T12:55:50Z&se=2022-06-10T20:55:50Z&spr=https&sv=2020-08-04&sr=c&sig=XXX

INFO: Proxy detected: https:%%//%%azcopyvnextrelease.blob.core.windows.net → //10.29.98.90:3128

INFO: Proxy detected: https:%%//%%ddgdata.blob.core.windows.net → //10.29.98.90:3128

INFO: hello.txt; Content Length: 19.00 B