Sunteți pe pagina 1din 11

ANEXA 101

Specificaii de interfaare cu SIUI+PE+CEAS pentru aplicaiile de raportare ale furnizorilor de servicii medicale i farmaceutice Metode de obinere a numrului de asigurat (CID)

ISTORICUL REVIZIILOR DOCUMENTULUI


Versiune 1.0 (PROIECT) 1.0 (PUBLICAT) Data 11.01.2013 18.02.2013 Comentarii Versiune iniial propus Versiune iniial publicat

Specificaii de interfaare cu SIUI+PE+CEAS pentru aplicaiile de raportare ale furnizorilor de servicii medicale i farmaceutice Metode de obinere a numrului de asigurat (CID) Anexa 001

CUPRINS

1. INTRODUCERE ......................................................................................................................................................3 1.1. Ce este CID-ul? ..........................................................................................................................................3 2. BIBLIOTECI DE GENERARE A CID-ULUI ....................................................................................................................4 2.1. Biblioteca Cnas.Siui.CidGen.dll (C#, .NET) ..............................................................................................4 2.1.1. Utilizarea bibliotecii din .NET/C# ......................................................................................................5 2.1.2. Utilizarea bibliotecii din Excel prin OLE/COM ...................................................................................5 2.2. Biblioteca CidGen32.dll (C++) ...................................................................................................................6 2.2.1. Utilizarea bibliotecii din .NET/C# ......................................................................................................7 2.2.2. Utilizarea bibliotecii din C++ ..............................................................................................................7 2.3. Biblioteca CidGen64.dll (C++) ...................................................................................................................8 2.4. Drepturi i limitri .....................................................................................................................................8 3. METODE ONLINE DE OBINERE A CID-ULUI .............................................................................................................9 3.1. Metoda Web getInsured expus de SiuiInsuredWS ...................................................................................9 3.1.1. Serviciul pentru verificarea calitii de asigurat a persoanelor nregistrate n sistem .................9 3.1.2. Structura fiierului de rspuns la verificare a calitii de asigurat............................................... 10

Versiunea 1.0 din 18.02.2013

Pagina 2 din 11

Specificaii de interfaare cu SIUI+PE+CEAS pentru aplicaiile de raportare ale furnizorilor de servicii medicale i farmaceutice Metode de obinere a numrului de asigurat (CID) Anexa 001

1. INTRODUCERE
Acest document este anex la "Specificaia de interfaare cu SIUI+PE+CEAS" i descrie din punct de vedere tehnic modalitile de obinere a numrului de asigurat (CID) utilizat de aplicaiile de raportare care interacioneaz cu Sistemul Informatic Unic Integrat (SIUI) al Casei Naionale de Asigurri de Sntate (CNAS), extins cu Prescripia Electronic i Cardul Electronic de Asigurri de Sntate. NOT Acest document este destinat productorilor de aplicaii informatice n domeniul medical i al asigurrilor de sntate, facilitnd accesul acestora la informaiile tehnice necesare actualizrii aplicaiilor existente sau dezvoltrii de aplicaii noi n vederea raportrii electronice ctre SIUI+PE+CEAS a serviciilor prestate de furnizorii de servicii medicale i farmaceutice.

1.1. CE ESTE CID-UL?


CID-ul reprezint numrul unic de identificare al asigurailor din SIUI (Sistemul Informatic Unic Integrat), denumi i Cod de IDenitificare, care va fi imprimat pe Cardul Electronic al Asigurrilor de Sntate (CEAS) din Romnia. CID-ul este folosit la identificarea unic a persoanelor asigurate n sistemul de asigurri sociale din Romnia. Spre deosebire de Codul Numeric Personal (CNP) utilizat de Direcia pentru Evidena Populaiei a Ministerului de Interne, CID-ul nu conine informaii cu caracter personal cu privire la persoana pe care o identific, aa cum sunt, de exemplu: data naterii sau sexul acesteia. Valoarea CID-ului este generat pe baza CNP-ului pentru permite utilizarea acestuia pn la implementarea complet la nivel naional a cardului electronic de asigurat. Pentru a nu permite identificarea CNP-ului persoanei prin intermediul CID-ului, algoritmul de generare al acestuia este unul aleatoriu i ireversibil, din clasa algoritmului de HASH, care garanteaz cu o probabilitate suficient de mare unicitatea secvenei de cifre generate. Pentru a veni n ntmpinarea dezvoltatorilor teri de aplicaii informatice, CNAS a dezvoltat o serie de biblioteci programatice pentru obinerea numrului unic de asigurat (CID) pe baza CNP-ului. De asemenea SIUI, expune prin metode accesibile online o procedur prin care se poate obine numrului unic de asigurat, direct din sistem, fr utilizarea unor biblioteci software intermediare.

Versiunea 1.0 din 18.02.2013

Pagina 3 din 11

Specificaii de interfaare cu SIUI+PE+CEAS pentru aplicaiile de raportare ale furnizorilor de servicii medicale i farmaceutice Metode de obinere a numrului de asigurat (CID) Anexa 001

2. BIBLIOTECI DE GENERARE A CID-ULUI


Exist dou categorii de biblioteci pentru obinerea CID-ului, prima dezvoltat n .NET utiliznd C# i disponibil deja de la nceputul anului 2012, iar a doua dezvoltat n C++ i publicat la nceputul anului 2013. A doua categorie de biblioteci adreseaz cteva limitri ale primei versiuni, i anume: Permite utilizarea din mai multe medii de programare, date fiind mecanismele de interoperabilitate mai rspndite pentru C++, inclusiv pentru medii de programare mai vechi, cum ar fi FoxPro sau VisualBasic; Permite utilizarea pe sisteme de operare Windows 8; Permite utilizarea nativ pe sisteme de operare pe 64 de bii.

Una dintre limitrile majore ale ambelor variante este dependena de sistemul de operare Windows, prin utilizarea bibliotecilor criptografice expuse de acesta. Pentru a veni n ntmpinarea acestei limitri, sistemul SIUI permite obinerea CID-ului corespunztor unui CNP prin interogarea sistemului utiliznd mecanismele programatice expuse deja i detaliate n Specificaiile de Interfaare. Prin intermediul acestei metode CID-ul poate fi obinut din orice aplicaie, dezvoltat, instalat i utilizat pe orice platform informatic, prin intermediul serviciilor Web.

2.1. BIBLIOTECA CNAS.SIUI.CIDGEN.DLL (C#, .NET)


Biblioteca Cnas.Siui.CidGen a fost dezvoltat i distribuit ctre productorii de aplicaii pentru ca acetia s poat genera offline n aplicaiile proprii CID-ul pentru pacienii care beneficiaz de servicii medicale decontate de CNAS. Biblioteca expune o clas static, denumit CrytoHash declarat n namespace-ul Cnas.Siui.CidGen, care expune la rndul ei o metod public denumit GetCidHash, cu semntura de mai jos:
/// <summary> /// Generates a CID value for a given CNP value. /// </summary> /// <param name="cnp">A string value representing the CNP.</param> /// <returns>A string value representing the CID.</returns> public static string GetCidHash( string cnp );

Biblioteca necesit pentru utilizare existena Microsoft .NET Framework 2.0 (sau o versiune superioar) pe staia de lucru unde este instalat aplicaia de raportare, ceea ce implic faptul c poate fi utilizat pe orice sistem de operare Windows ncepnd cu Windows XP (cu SP3) i Windows Server 2013 (cu SP1), inclusiv Windows Vista i Windows 7.

Versiunea 1.0 din 18.02.2013

Pagina 4 din 11

Specificaii de interfaare cu SIUI+PE+CEAS pentru aplicaiile de raportare ale furnizorilor de servicii medicale i farmaceutice Metode de obinere a numrului de asigurat (CID) Anexa 001

Prin modul n care aceast bibliotec a fost mpachetat pentru distribuie exist o restricie cu privire la utilizarea acesteia pe sisteme cu Microsoft .NET Framework 4.5, i ne referim n mod special la Windows 8, care vine preinstalat cu .NET Framework 4.5. Aceast bibliotec se gsete n arhiva anexat prezentului document cu numele CidGen.NET.zip i este nsoit de cteva exemple de utilizare, prezentate n continuare. 2.1.1. Utilizarea bibliotecii din .NET/C# Exemplul de mai jos prezint o modalitate simpl de a afia ntr-o caset de text valaorea CID-ului pentru un CNP introdus ntr-o alt caset de text.
using Cnas.Siui.CidGen; // preluare CNP string cnp =textCnp.Text.Trim(); // generare i afiare CID textCid.Text = CryptoHash.GetCidHash( cnp );

Exemplu poate fi consultat sub form de cod surs C# n arhiva anexat la prezentul document, cu numele SiuiCidGen-src.zip, care conine o aplicaie simpl (Cnp2Cid.exe) care permite obinerea CID-ului dintr-un CNP care este introdus de la tastatur. 2.1.2. Utilizarea bibliotecii din Excel prin OLE/COM Exemplul de mai jos prezint o modalitate simpl de a utiliza biblioteca n Microsoft Excel. nainte utilizare trebuie s v asigurai c exist n referine biblioteca cu numele "CNAS-SIUI - Generator CID", n caz contract urmai instruciunile de mai jos.
Public Function GetCid(CNP As String) As String Dim cidGen As New Cnas_Siui_CidGen.Generator On Error GoTo HELL GetCid = cidGen.GetCidFromCnp(CNP) Exit Function HELL: MsgBox Error, vbExclamation End Function

Pentru utilizarea funciei de mai jos, se editeaz de exemplu celula B1 din Excel i se introduce formula =GetCid(A1), care va prelua valoarea CNP-ului din celula A1 i va afia CID-ul corespunztor. Exemplu poate fi consultat sub form de cod surs VBA n arhiva anexat la prezentul document, cu numele SiuiCidGen-xls.zip, care conine un fier Microsoft Excel cu macrouri (CidGen.xlsm) care prezint posibilitatea de afiare a dou coloane, una cu CNP-uri i cealalt cu CID-uri, n care valorile din a doua coloan sunt calculate n timp-real pe baza valorilor din prima coloan. Arhiva conine i cteva exemple ale modului de nregistrare/deznregistrare ale bibiotecii pentru utilizarea prin OLE/COM din programele compatibile, prezentate i n continuare. nainte de utilizare, dezarhivati fiierele ntr-un director accesibil tuturor utilizatorilor i aplicaiilor care vor utiliza exemplul. Lansai cmd.exe cu drepturi de administrator,
Versiunea 1.0 din 18.02.2013 Pagina 5 din 11

Specificaii de interfaare cu SIUI+PE+CEAS pentru aplicaiile de raportare ale furnizorilor de servicii medicale i farmaceutice Metode de obinere a numrului de asigurat (CID) Anexa 001

schimbai calea curent ctre cea unde ai dezarhivat fiierele, iar apoi rulai comanda de mai jos: (Microsoft .NET Framework 2.0 trebuie s fie instalat pe staia de lucru !)
> C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe Cnas.Siui.CidGen.dll /tlb /codebase

Dup execuia acestei comenzi un fiier cu numele Cnas.Siui.CidGen.tlb va aprea lng Cnas.Siui.CidGen.dll, reprezentnd varianta accesibil prin OLE/COM a bibliotecii .NET.

2.2. BIBLIOTECA CIDGEN32.DLL (C++)


Biblioteca CidGen32.dll a fost dezvoltat i distribuit ctre productorii de aplicaii pentru ca acetia s poat genera offline n aplicaiile proprii CID-ul pentru pacienii care beneficiaz de servicii medicale decontate de CNAS. Biblioteca necesit pentru utilizare existena Microsoft Visual C++ Runtime (versiunea minim 2010) instalat pe staia de lucru. Biblioteca expune, pe de o parte o funcie static care permite utilizarea ca API din alte medii de programare, care nu au accces la conveniile specifice C++, prezentat n continuare ntr-un extract din fiierul header care o definete:
//-------------------------------------------------// export function declaration for usage outside C++ // Gets the CID from PID extern "C" __declspec(dllexport) int GetCid(const char* pid, char* cid);

Pe de alt parte, pentru utilizarea direct din C++, biblioteca expune o clas denumit CidGen declarat n namespace-ul CnasSiui care expune la rndul ei o metod denumit GetCid, prezentat n continuare ntr-un extract din fiierul header care o definete:
using namespace std; namespace CnasSiui { //-------------------------------------------// export class declaration for usage from C++ class __declspec(dllexport) CidGen { public: // Gets the CID from PID static std::string GetCid( std::string pid ); }; }

Aceast bibliotec se gsete n arhiva anexat prezentului document cu numele CidGen32.zip, nsoit de fiierele de referin pentru Microsoft Visual C++ Runtime corespunztoare versiunii pe 32 de bii, care trebuie distribuite mpreun cu biblioteca. Prezentm n continuare cteva exemple de utilizare.

Versiunea 1.0 din 18.02.2013

Pagina 6 din 11

Specificaii de interfaare cu SIUI+PE+CEAS pentru aplicaiile de raportare ale furnizorilor de servicii medicale i farmaceutice Metode de obinere a numrului de asigurat (CID) Anexa 001

2.2.1. Utilizarea bibliotecii din .NET/C# Biblioteca C++ poate fi utilizat n .NET/C# ntr-un mod asemntor versiunii anterioare, prin simpla declarare a unei clase statice wrapper peste funcia expus de biblioteca C++, astfel:
public static class CidGen { [DllImport( "CidGen32.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl )] [return: MarshalAs( UnmanagedType.Bool )] private static extern bool GetCid( [MarshalAs( UnmanagedType.LPStr )] string pid, [MarshalAs( UnmanagedType.LPStr )] StringBuilder cid ); public static string GetCidHash ( string cnp ) { var cid = new StringBuilder(); return GetCid( cnp, cid ) ? cid.ToString() : null; } }

n acest fel putem implementa urmtoarea secven de cod, foarte asemntoare cu cea din primul exemplu.
// preluare CNP string cnp =textCnp.Text.Trim(); // generare i afiare CID textCid.Text = CidGen.GetCidHash( cnp );

2.2.2. Utilizarea bibliotecii din C++ Pentru utilizarea bibliotecii C++ direct dintr-o alt aplicaie dezvoltat n C++, propunem urmtorul exemplu de cod:
/////////////////////// // C++ style usage #include "CidGen.h" #include <string> // declare pid and read from console std::string pid = ""; std::cout << "Enter CNP: "; getline( cin, pid ); // compute cid and output to console std::string cid = CnasSiui::CidGen::GetCid( pid ); std::cout << "CID ( " << pid << " ) = " << cid ;

Versiunea 1.0 din 18.02.2013

Pagina 7 din 11

Specificaii de interfaare cu SIUI+PE+CEAS pentru aplicaiile de raportare ale furnizorilor de servicii medicale i farmaceutice Metode de obinere a numrului de asigurat (CID) Anexa 001

2.3. BIBLIOTECA CIDGEN64.DLL (C++)


Aceast bibliotec se gsete n arhiva anexat prezentului document cu numele CidGen64.zip, nsoit de fiierele de referin pentru Microsoft Visual C++ Runtime corespunztoare versiunii pe 64 de bii, care trebuie distribuite mpreun cu biblioteca. Arhiva reprezint de fapt doar o versiune de distribuie specific pentru platformele pe 64 de bii, toate observaiile i notele de la versiunea pe 32 de bii fiind valabile pentru aceast versiune, precum i modul de utilizare. Pentru detalii putei consulta seciunea anterioar.

2.4. DREPTURI I LIMITRI


Bibliotecile de generare a CID-ului sunt furnizate ca atare, n format executabil binar i pot fi utilizate i/sau redistribuite ne-exclusiv, fr plata unor drepturi bneti, doar ca parte integrant a unor aplicaii informatice pentru domeniul medical. Se interzice, n conformitate cu legea drepturilor de autor, obinerea unor drepturi bneti prin vinderea sau acordarea de licene asupra utilizrii nemijlocite a bibliotecii, altfel dect n cadrul unor aplicaii informatice pentru domeniul medical. Se interzice, n conformitate cu legea drepturilor de autor, modificarea, adaptarea, traducerea, executarea unor lucrri derivative cu acelai scop, decompilarea, aplicarea tehnicilor de inginerie invers, dezasamblarea sau ncercarea n orice alt fel de obinere a codul surs din oricare dintre biblioteci. Utilizarea bibliotecilor de generare a CID-ului n cadrul propriilor aplicaii informatice se realizeaz numai pe riscul productorilor software teri, bibliotecile fiind furnizate ca atare i fr niciun fel de garanie explicit sau implicit (i) c bibliotecile vor ndeplini cerinele productorilor teri, (ii) c bibliotecile nu vor avea nicio eroare sau niciun defect, (iii) privind securitatea, fiabilitatea, oportunitatea sau performana bibliotecile i (iv) c orice erori din cadrul bibliotecilor vor fi corectate. Verificarea funcionrii aplicaiilor tere este responsabilitatea strict a productorilor acestora, niciun defect al acestora neputnd fi atribuit interaciunii cu bibliotecile de generare a CID-ului.

Versiunea 1.0 din 18.02.2013

Pagina 8 din 11

Specificaii de interfaare cu SIUI+PE+CEAS pentru aplicaiile de raportare ale furnizorilor de servicii medicale i farmaceutice Metode de obinere a numrului de asigurat (CID) Anexa 001

3. METODE ONLINE DE OBINERE A CID-ULUI


Sistemul SIUI permite obinerea CID-ului corespunztor unui CNP prin apelarea metodei getInsured, expus de serviciul Web SiuiInsuredWS. Prin intermediul acestei metode CID-ul poate fi obinut din orice aplicaie, dezvoltat, instalat i utilizat pe orice platform informatic, prin intermediul serviciilor Web. NOT Aceast funcionalitate nu este nc disponibil. Vom publica un anun special atunci cnd va deveni disponibil pe mediul de testare pentru verificarea funcionrii aplicaiilor tere, iar apoi pe mediul de producie.

3.1. METODA WEB GETINSURED EXPUS DE SIUIINSUREDWS


3.1.1. Serviciul pentru verificarea calitii de asigurat a persoanelor nregistrate n sistem Acest serviciu este folosit pentru verificarea online a calitii de asigurat pe baza CNPului unui beneficiar de servicii medicale sau farmaceutice, precum i pentru a obine numrul unic de asigurat (CID) cu care persoana este nregistrat n SIUI. Aplicaiile de raportare pot folosi acest serviciu pentru a verifica starea de asigurat a unui beneficiar, asistnd operatorul prin pre-completarea informaiilor corespunztoare sau prin afiarea unor mesaje de avertizare n cazul n care se dorete nregistrarea de servicii pentru persoane neasigurate sau nenregistrate n sistem. Metoda Web care trebuie apelat are urmtoarea semntur: String getInsured ( String pid, Date requestDate ) parametrul pid de tip ir de caractere reprezint CNP-ul unui beneficiar; parametrul requestDate de tip dat calendaristic reprezint data la care se dorete verificarea calitii de asigurat, de exemplu data verificrii sau data efecturii serviciului.

Metoda ntoarce ca rspuns un ir de caractere reprezentnd coninutul unui fiier n format XML care conine urmtoarele informaii: Un cod numeric de rspuns indicnd dac beneficiarul este asigurat sau nu, dac figureaz ca decedat n sistem, dac nu este nregistrat n sistem. CNP-ul pentru care s-a realizat cererea de verificare, nsoit de CID-ul corespunztor acestuia.
Pagina 9 din 11

Versiunea 1.0 din 18.02.2013

Specificaii de interfaare cu SIUI+PE+CEAS pentru aplicaiile de raportare ale furnizorilor de servicii medicale i farmaceutice Metode de obinere a numrului de asigurat (CID) Anexa 001

Lista categoriilor de asigurare valabile la data interogrii Lista strilor de asigurare (pentru prescriere) valabile la data interogrii

Observaie: n cazul unei erori ntlnite n sistem la procesarea cererii se va ntoarce un cod numeric de rspuns (-1) precum i o descriere a erorii. Schema de validare pentru fiierul de rspuns este detaliat n seciunea urmtoare. Aplicaia de raportare trebuie s proceseze fiierul de rspuns i s afieze un mesaj sugestiv pentru utilizator cu privire la starea de asigurat a persoanei respective. Dac este cazul aplicaia va pre-completa cmpurile corespunztoare categoriei de asigurat. Este de preferat ca aplicaia de raportare s realizeze validarea de corectitudine a CNPului, algoritmul fiind arhicunoscut, pentru a nu suprancrca sistemul cu cereri inutile. Un exemplu tipic de algoritm pentru verificarea categoriei de asigurat este:
Utilizatorul introduce CNP-ului unui pacient sau selecteaz un pacient dintr-o list derulant, n vederea nregistrrii unui serviciu medical. Aplicaia valideaz corectitudinea CNP-ului: - Dac CNP-ul este incorect se afieaz un mesaj de avertizare. - Altfel se continu verificarea online: Aplicaia apeleaz metoda getInsured folosind CNP-ul respectiv i data interogrii ca parametri. Dac SIUI ntoarce un ir de caractere ca rspuns, aplicaia l salveaz ntr-un fiier XML: - Se valideaz fiierul XML cu schema XSD corespunztoare. - Dac fiierul este valid atunci: - Se parcurge fiierul i se extrage valoarea CID-ului. - Altfel se afieaz mesaj de eroare "Fiier de rspuns invalid". Altfel se afieaz un mesaj de eroare de comunicaie.

NOT Recomandm realizarea interogrilor de obinere a CID-ului i de consultare a calitii de asigurat dintr-un singur apel ctre SIUI. 3.1.2. Structura fiierului de rspuns la verificare a calitii de asigurat
Nume schem Namespace Nume element Descriere element Nume element Descriere element Nume atribut pid cid GetInsuredResponse.xsd http://www.cnas.ro/siui/2.0 insuredResponse insured Descriere atribut Codul numeric personal al pacientului (CNP) Numrul de asigurat al pacientului (CID) Nr apariii: minim 1, maxim 1 Nr apariii: minim 1, maxim 1 Obligatoriu Tip de date Constrngeri Nu Nu pidType cidType -

state

Starea de asigurat a pacientului

Nume element Descriere element Nume element


Versiunea 1.0 din 18.02.2013

categories Lista de categorii category

-1-Eroare 0-Inexistent Da xs:short 1-Asigurat 2-Neasigurat 3-Decedat Nr apariii: minim 0, maxim 1 Nr apariii: minim 0, maxim nelimitat
Pagina 10 din 11

Specificaii de interfaare cu SIUI+PE+CEAS pentru aplicaiile de raportare ale furnizorilor de servicii medicale i farmaceutice Metode de obinere a numrului de asigurat (CID) Anexa 001

Descriere element Nume atribut code validFrom validTo Nume element Descriere element Nume element Descriere element Nume atribut code validFrom validTo Nume tip simplu pidType

Categoria pacientului Descriere atribut Obligatoriu Tip de date Constrngeri Codul categoriei de asigurat (valoare Da string din nomenclatorul de categorii) Data de nceput a valabilitii Nu date Data de sfrit a valabilitii Nu date Nr apariii: minim 0, maxim 1 states Lista de strilor de asigurare ale persoanei (valori folosite la reete) Nr apariii: minim 0, maxim nelimitat state Starea de asigurare a persoanei Descriere atribut Obligatoriu Tip de date Constrngeri Codul strii de asigurat (valoarea Da string codului din nomenclatorul de stri) Data de nceput a valabilitii Nu date Data de sfrit a valabilitii Nu date Descriere tip simplu Tipul de date folosit pentru CNP Tip de date string Constrangeri Lungime min. 13 Lungime max. 13 Patern [0-9]{13} Constrangeri Lungime min. 20 Lungime max. 20 Patern [0-9]{20}

Nume tip simplu cidType

Descriere tip simplu Tipul de date folosit pentru CID

Tip de date string

Versiunea 1.0 din 18.02.2013

Pagina 11 din 11

S-ar putea să vă placă și