Obsah

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

Ú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:

Související entita / datový typ: Etapa

Vlastnosti/atributy:

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