[ perakojotgenije @ 09.07.2015. 09:09 ] @
Na adresi http://www.rfzo.rs/index.php/osiguranalica/ekartica/kzo-down izdat je program za čitanje podataka sa novih zdravstvenih knjižica.

Na istom mestu su postavili i WebClientService koji bi trebalo da je API pomoću kojeg bih mogao da iščitam podatke. Problem je u tome što instaliram taj program i ne znam šta da radim sa tim.
Na web sajtu nema nikakvo objašnjenje kako se to koristi, gde se referencira, kako se poziva. Ima li neko iskustva sa ovim?
[ djux66 @ 22.07.2015. 13:10 ] @
Kad instaliraš WebClientService imaš dll fajl nstwcs-hc-client.dll koji možeš da referenciraš uokviru C# projekta, tu imaš sve što ti treba da očitaš KZO, baci pogled.
[ LazaBre @ 11.10.2016. 11:25 ] @
Djux, moze mala pomoc za start,
prilicno sam slab sa programiranjem ali se trudim i ucim, kada refinaciram DLL koji si vec pomenuo unutar projekta, kako ga pozivam?
Pozz
[ patak_daca @ 11.10.2016. 17:30 ] @
Pozdrav!



Probaj ovako:

1. U VS ( sa desne strane ) klikni desnim tasterom miša na "References" i izaberi "add Reference..."

2. Sa lokacije: C:\Program Files\RFZO\KZOCitac\
( tamo gde si instalirao čitač zdr. knjiž.) izaberi Interop.nstwcs-hc-client.dll i SmartcardLibrary.dll
možda ti ovaj drugi ne treba, ali ajd'

3. U VS uradiš using ili Imports ( zavisi šta koristiš vb ili c# , ja sam koristio vb ( tada ) )

Code:
Imports nstwcsLib
Imports SmartcardLibrary


4. Ovo je deo code koji čita podatke ( naravno, moraš imati čitač i elektron. zdr. knji. u čitaču), code je Vb.net - u

Code:
 Dim g As New nstwcsLib.SmartCardService
        Dim h As Object
        Dim b As String


        For Each fern As String In g.ListReaders()
            b = fern
        Next


        Dim k As New nstwcsLib.DocReadService
        Try
            k.InitCard(b, 1)
        Catch ex As Exception
            MsgBox("Ubacite karticu zdravstvenog osiguranja u čitač!", MsgBoxStyle.Exclamation)
            Exit Sub
        End Try


        Dim lbo As String = k.ReadZKFixedPersoData.InsurantNumber
        Dim jmbg As String = k.ReadZKVariableAdminData.IDNumber

        Dim ime As String = k.ReadZKFixedPersoData.FirstName
        Dim prezime As String = k.ReadZKFixedPersoData.LastName
        Dim datum_rodjenja As String = k.ReadZKFixedPersoData.DateOfBirth
        Dim overena_do As String = k.ReadZKVariablePersoData.DateOfExpiry
        Dim tjano_overena As String = k.ReadZKVariablePersoData.Permanent
        Dim broj_zk As String = k.ReadZKVariablePersoData.CardID


Kada ti ovo proradi samo uživaj...

ako sam negde pogrešio u kopiranju nemoj da zameriš....

Pozdrav!


[ djux66 @ 12.10.2016. 20:05 ] @
patak_daca ti je već objasnio ali evo i ja da se uključim:

1. instaliraj KZO Middleware (x86 je dovoljno)
2. dodaj referencu za dll fajl nstwcs-hc-client.dll

kreiraj klasu koja sadrži sve blokove koji se očitavaju:

Code:

using nstwcsLib;

namespace KzoReader
{
    public class CardData
    {
        public ZKDocumentBlock ZkDocumentBlock { get; set; }
        public ZKFixedPersoBlock ZkFixedPersoBlock { get; set; }
        public ZKVariablePersoBlock ZkVariablePersoBlock { get; set; }
        public ZKVariableAdminBlock ZkVariableAdminBlock { get; set; }
    }
}


kreiraj klasu koja će da vrši očitavanje

Code:

using nstwcsLib;

namespace KzoReader
{
    public static class MyReader
    {
        private static readonly SmartCardService SmartCardService = new SmartCardService();
        private static DocReadService _docReadService = new DocReadService();

        public static CardData ReadData()
        {
            var readers = SmartCardService.ListReaders();
            if (readers == null)
                return null; //citac nije prepoznat

            _docReadService.InitCard(readers[0],1);

            return new CardData()
            {
                ZkFixedPersoBlock = _docReadService.ReadZKFixedPersoData(),
                ZkVariablePersoBlock = _docReadService.ReadZKVariablePersoData(),
                ZkDocumentBlock = _docReadService.ReadZKDocumentData(),
                ZkVariableAdminBlock = _docReadService.ReadZKVariableAdminData()
            };
        }

        public static void Reset()
        {
            _docReadService.ReleaseCard();
            _docReadService = new DocReadService();
        }
    }
}


a pozivaš je npr. ovako

Code:

using System.Windows.Forms;

namespace KzoReader
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                var result = MyReader.ReadData();
                if (result == null)
                {
                    MessageBox.Show(@"citac nije prepoznat");
                    return;
                }

                txtData.Text = result.ZkDocumentBlock.DateOfExpiry.ToShortDateString();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, @"Greska", MessageBoxButtons.OK, MessageBoxIcon.Error);
                MyReader.Reset();
            }
        }
    }
}





[ LazaBre @ 19.10.2016. 10:15 ] @
Drugiari pa vi ste LEGENDE!!!!
Iyvnjavam se što odgovaram ovako kasno, MNOGO VAM HVALA NA POMOĆI I SAVETIMA, useo sam da uradim čitanje sa knjižice i isti povežem sa RFZO Web SERVISOM radi usaglašavanja podataka kao i sa IZIS sistemom :))

Još jednom Vam hvala MNOGO! :) Pivo na moj racun ako Vas ikad navede put na jug :))
[ patak_daca @ 19.10.2016. 18:37 ] @
Pozdrav!

Nema na čemu.