Regole generali

Per la fornitura dei medicinali attraverso la ricetta elettronica valgono le seguenti regole generali, applicabili alle funzionalità disponibili tramite le maschere online e alle funzionalità disponibili tramite servizi web esposti:

  1. per l’erogazione dei medicinali veterinari la ricetta elettronica potrà essere recuperata tramite il numero identificativo e pin della stessa;
  2. i medicinali sono identificati in maniera univoca tramite il loro AIC;
  3. nella fornitura dei medicinali vanno riportati il codice di lotto e la data di scadenza dei medicinali movimentati;
  4. a seguito di evasione parziale, utilizzando sempre lo stesso numero identificativo di prescrizione e PIN è possibile completare la fornitura (farmaci mancanti).

Flusso di fornitura dei medicinali

Quanto di seguito va a descrivere il seguente flusso operativo relativamente alle operazioni effettuabili da un utente con profilo Farmacista:

farmacia-fornitura-flow.PNG

La fornitura di una ricetta avviene selezionando dal bottone Menu la voce Fornitura ricetta.

farmacia-menu.PNG

Fornitura mediante applicativo

Una volta ottenuti:

E' possibile procedere alla fornitura dei farmaci inserendo nella maschera di ricerca della ricetta facendo attenzione alla scrittura del numero della ricetta affinché non contenga caratteri sporchi tipo ad esempio spazio che potrebbero impedire la corretta ricerca. Una volta inserito il numero è possibile procedere con la ricerca cliccando sul relativo bottone. Se la ricerca avrà esito positivo la tabella sottostante la form di ricerca restituirà un risultato, come nell'immagine di seguito

fornitura-ricerca.PNG

A questo punto è possibile accedere al dettaglio della fornitura in due modi:

  1. Doppio click sulla riga
  2. Selezione della riga e click sul bottone Visualizza Dettaglio

Verremo dunque spostati su una nuova maschera dove verrà richiesto l'inserimento del PIN della ricetta

fornitura-pin.PNG

Una volta inserito il PIN, se questo risulta corretto, avremo accesso alla maschera di dettaglio della fornitura che si presenta nel seguente modo:

fornitura-maschera.PNG

Com'è possibile evidenziare dall'immagine precedente possiamo suddividere l'area di lavoro in tre zone:

  1. Area blu: zona di riepilogo della ricetta
  2. Area verde: zona di vendita dei farmaci, dov'è inoltre possibile avere il dettaglio da ricetta
  3. Area rossa: zona relativa al dettaglio della vendita in caso siano state effettuate forniture parziali, utile nel caso ci si accorga che si è appena sbagliato ad effettuare la fornitura. Nel caso siano gia presenti forniture parziali effettuate dalla vostra farmacia, alla selezione del farmaco queste appariranno nella tabella evidenziata, come nella figura di seguito

Con il pulsante "Visualizza ricetta" è possibile aprire il PDF della ricetta emessa.

fornitura-parziale.PNG

E' possibile che la ricetta sia stata parzialmente fornita anche da altre farmacie. In tal caso non sarà possibile visualizzare il dettaglio di tali forniture. E' possibile pero' notare che una ricetta è stata parzialmente fornita, confrontando la quantità del prodotto da fornire con la richiesta iniziale della ricetta (visibile tramite il pulsante "Visualizza ricetta")

Fornitura di un farmaco

Per procedere con la fornitura di un farmaco è necessario selezionare il farmaco di interesse facendo:

  1. Doppio click sulla riga
  2. Selezione della riga e click sul bottone Vendita

Tale azione comporterà l'apertura di una popup come nell'immagine di seguito

fornitura-vendita.PNG

Com'è possibile evidenziare dall'immagine precedente possiamo suddividere l'area di lavoro in due zone:

  1. Area viola: zona di riepilogo della prescrizione relativa al farmaco che ci accingiamo a vendere
  2. Area gialla: zona di vendita dei farmaco

Una volta inseriti i campi obbligatori contraddistinti da un asterisco (*) rosso è possibile procedere alla fornitura del farmaco

Caso particolare: Sostituzione di un farmaco

Nel caso il farmaco richiesto dalla fornitura non risulti disponibile e si vuole procedere con una sostituzione è possibile:

  1. Procedere alla ricerca di eventuali Farmaci compatibili. Eventualmente facendo click sul bottone Vai al prontuario, verrete spostati nel Prontuario Farmaceutico Veterinario gestito dal Ministero della Salute, dal quale è possibile effettuare delle ricerche avanzate (es. Ricerca per principio attivo, ecc...). La ricerca sul prontuario è facoltativa, nel caso si è già a conoscenza della denominazione del farmaco da sostituire passare direttamente al punto 2;

  2. Una volta scelto il farmaco tornate sulla popup di vendita del farmaco, facendo click sul bottone evidenziato dal cerchio azzurro nell'immagine di sopra procedete alla cancellazione del farmaco prescritto dal Veterinario e inserite il nuovo farmaco da voi scelto digitandone il nome.

Per concludere la fornitura del farmaco è possibile far click sul bottone Vendi in basso a destra nella popup.

A parità di Farmaco, identificato dalle prime sei cifre dell'AIC, è possibile effettuare una maggiorazione relativamente al numero di scatole fornite. Il sistema prima richiederà se siete sicuri di effettuare la sostituzione:

fornitura-conferma-sostituzione.png

Dopo di che chiederà una seconda conferma come nella popup seguente:

fornitura-conferma-maggiorazione.png

Fornitura massiva mediante CSV

Oltre alle funzionalità online per la fornitura manuale delle ricette elettroniche (vendita dei medicinali), il sistema informativo permette di effettuare la registrazione “massiva” dei medicinali forniti tramite un file in formato CSV.

Tracciato del file CSV

Il file CSV deve avere la seguente struttura:

numero

pin

prodAic

quantitativo

flTipomedicinale

galenico

fornProdAic

numConfezioni

dtScadenza

numLotto

gtinCodice

tipodocumentoCodice

numDocumento

1456923503953

4186

104862127

1

N

1

21/12/2030

testimportRidotto

E' obbligatorio passare l'intestazione delle colonne

Descrizione dei campi del tracciato

Vengono di seguito riportate le descrizioni dei campi obbligatori:

Vengono di seguito riportate le descrizioni dei campi non obbligatori:


Invio del file CSV

Per procedere all'import massivo delle forniture è sufficienete cliccare sul bottone “Import CSV forniture” nella maschera di fornitura dei medicinali. Verrà quindi aperta una popup come nell'immagine:

fornitura-popup-import-massivo.png

Nella popup si potrà scegliere il file da importare. Spuntare il flag “Consenti fornitura maggiorata” se nel csv che si va ad importare sono presenti delle sostituzioni dei medicinali prescritti, con numero di confezioni fornite maggiorate rispetto al numero di confezioni originariamente prescritte.

Logica di elaborazione

ATTENZIONE: la logica di elaborazione del file CSV inviato è di tipo “transazionale”, e prevede quindi che in caso di errori tutti i dati inviati vengano scartati.

Fornitura massiva mediante XML NSIS (Ambiente di TEST, DRAFT può esser soggetto a cambiamenti)

Il sistema è in grado recepire gli XML relativi alle comunicazioni che vengono mandate ad NSIS sulle forniture. Il tracciato risulta leggermente modificato rispetto a quanto necessario per NSIS in quanto è stata aggiunta una informazione aggiuntiva relativamente alla sostituzione dei farmaci. Di seguito è possibile scaricare l XSD necessario per generare XML compatibili con il nostro sistema informativo, dove si evidenzia (rispetto a quello "standard" NSIS) il campo aggiuntivo cod_orig che specifica il farmaco che originariamente era stato specificato dal Veterinario nella ricetta.

   1 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   2     <xs:element name="dataroot">
   3         <xs:complexType>
   4             <xs:sequence>
   5                 <xs:element ref="MITT" minOccurs="1" maxOccurs="unbounded" />
   6             </xs:sequence>
   7         </xs:complexType>
   8     </xs:element>
   9     <xs:element name="MITT">
  10         <xs:complexType>
  11             <xs:sequence>
  12                 <xs:element ref="DEST" minOccurs="1" maxOccurs="unbounded" />
  13             </xs:sequence>
  14             <xs:attribute name="id_mitt" use="required">
  15                 <xs:simpleType>
  16                     <xs:restriction base="xs:string">
  17                         <xs:pattern value="[0-9]{6}" />
  18                     </xs:restriction>
  19                 </xs:simpleType>
  20             </xs:attribute>
  21             <xs:attribute name="tipo_m" use="required">
  22                 <xs:simpleType>
  23                     <xs:restriction base="xs:string">
  24                         <xs:enumeration value="D" />
  25                         <xs:enumeration value="F" />
  26                     </xs:restriction>
  27                 </xs:simpleType>
  28             </xs:attribute>
  29         </xs:complexType>
  30     </xs:element>
  31     <xs:element name="DEST">
  32         <xs:complexType>
  33             <xs:sequence>
  34                 <xs:element ref="MOV" minOccurs="1" maxOccurs="unbounded" />
  35             </xs:sequence>
  36             <xs:attribute name="id_dest" use="optional">
  37                 <xs:simpleType>
  38                     <xs:restriction base="xs:string">
  39                         <xs:pattern value="[0-9]{6}|[0-9]{11}|[*]{0}" />
  40                     </xs:restriction>
  41                 </xs:simpleType>
  42             </xs:attribute>
  43             <xs:attribute name="tipo_d" use="required">
  44                 <xs:simpleType>
  45                     <xs:restriction base="xs:string">
  46                         <xs:enumeration value="W" />
  47                         <xs:enumeration value="K" />
  48                         <xs:enumeration value="Y" />
  49                         <xs:enumeration value="Z" />
  50                     </xs:restriction>
  51                 </xs:simpleType>
  52             </xs:attribute>
  53         </xs:complexType>
  54     </xs:element>
  55     <xs:element name="MOV">
  56         <xs:complexType>
  57             <xs:sequence>
  58                 <xs:element ref="DDT" minOccurs="1" maxOccurs="unbounded" />
  59             </xs:sequence>
  60             <xs:attribute name="tipo_mov" use="required">
  61                 <xs:simpleType>
  62                     <xs:restriction base="xs:string">
  63                         <xs:enumeration value="CM" />
  64                     </xs:restriction>
  65                 </xs:simpleType>
  66             </xs:attribute>
  67             <xs:attribute name="tipo_tr" use="required">
  68                 <xs:simpleType>
  69                     <xs:restriction base="xs:string">
  70                         <xs:enumeration value="T" />
  71                         <xs:enumeration value="E" />
  72                     </xs:restriction>
  73                 </xs:simpleType>
  74             </xs:attribute>
  75         </xs:complexType>
  76     </xs:element>
  77     <xs:element name="DDT">
  78         <xs:complexType>
  79             <xs:sequence>
  80                 <xs:element ref="RICETTA" minOccurs="1" maxOccurs="unbounded" />
  81             </xs:sequence>
  82             <xs:attribute name="d_tr" use="required">
  83                 <xs:simpleType>
  84                     <xs:restriction base="xs:date">
  85                         <xs:pattern value="20[0-9]{2}-[0-9]{2}-[0-9]{2}" />
  86                     </xs:restriction>
  87                 </xs:simpleType>
  88             </xs:attribute>
  89             <xs:attribute name="h_tr" use="optional">
  90                 <xs:simpleType>
  91                     <xs:restriction base="xs:string">
  92                         <xs:pattern value="[0-9]{2}:[0-9]{2}:[0-5]{1}[0-9]{1}|[*]{0}" />
  93                     </xs:restriction>
  94                 </xs:simpleType>
  95             </xs:attribute>
  96             <xs:attribute name="id_doc" use="required">
  97                 <xs:simpleType>
  98                     <xs:restriction base="xs:string">
  99                         <xs:pattern value="[0-9a-zA-Z \w _]{1,20}" />
 100                     </xs:restriction>
 101                 </xs:simpleType>
 102             </xs:attribute>
 103             <xs:attribute name="tipo_doc" use="required">
 104                 <xs:simpleType>
 105                     <xs:restriction base="xs:string">
 106                         <xs:enumeration value="D" />
 107                         <xs:enumeration value="F" />
 108                         <xs:enumeration value="A" />
 109                     </xs:restriction>
 110                 </xs:simpleType>
 111             </xs:attribute>
 112         </xs:complexType>
 113     </xs:element>
 114     <xs:element name="RICETTA">
 115         <xs:complexType>
 116             <xs:sequence>
 117                 <xs:element maxOccurs="unbounded" ref="AIC" />
 118             </xs:sequence>
 119             <xs:attribute name="cf_med_prs" use="required">
 120                 <xs:simpleType>
 121                     <xs:restriction base="xs:string">
 122                         <xs:pattern value="[a-zA-Z]{6}\d{2}[abcdehlmprstABCDEHLMPRST]\d{2}[a-zAZ]\d{3}[a-zA-Z]" />
 123                     </xs:restriction>
 124                 </xs:simpleType>
 125             </xs:attribute>
 126             <xs:attribute name="dat_ric" use="required">
 127                 <xs:simpleType>
 128                     <xs:restriction base="xs:date">
 129                         <xs:pattern value="20[0-9]{2}-[0-9]{2}-[0-9]{2}" />
 130                     </xs:restriction>
 131                 </xs:simpleType>
 132             </xs:attribute>
 133             <xs:attribute name="num_ric" use="required">
 134                 <xs:simpleType>
 135                     <xs:restriction base="xs:integer">
 136                         <xs:maxInclusive value="1000000" />
 137                     </xs:restriction>
 138                 </xs:simpleType>
 139             </xs:attribute>
 140             <xs:attribute name="tipo_ric" use="required">
 141                 <xs:simpleType>
 142                     <xs:restriction base="xs:string">
 143                         <xs:enumeration value="1" />
 144                     </xs:restriction>
 145                 </xs:simpleType>
 146             </xs:attribute>
 147         </xs:complexType>
 148     </xs:element>
 149     <xs:element name="AIC">
 150         <xs:complexType>
 151             <xs:attribute name="t_prod" use="required">
 152                 <xs:simpleType>
 153                     <xs:restriction base="xs:string">
 154                         <xs:enumeration value="1" />
 155                         <xs:enumeration value="8" />
 156                         <xs:enumeration value="9" />
 157                     </xs:restriction>
 158                 </xs:simpleType>
 159             </xs:attribute>
 160             <xs:attribute name="cod" use="required">
 161                 <xs:simpleType>
 162                     <xs:restriction base="xs:string">
 163                         <xs:pattern value="[0-9]{9}|[0-9]{14}" />
 164                     </xs:restriction>
 165                 </xs:simpleType>
 166             </xs:attribute>
 167             <xs:attribute name="d_scad" use="optional">
 168                 <xs:simpleType>
 169                     <xs:restriction base="xs:date">
 170                         <xs:pattern value="20[0-9]{2}-[0-9]{2}-[0-9]{2}" />
 171                     </xs:restriction>
 172                 </xs:simpleType>
 173             </xs:attribute>
 174             <xs:attribute name="lot" use="required">
 175                 <xs:simpleType>
 176                     <xs:restriction base="xs:string">
 177                         <xs:maxLength value="40" />
 178                         <xs:minLength value="1" />
 179                         <xs:pattern value="[!-~ ]{0,}" />
 180                     </xs:restriction>
 181                 </xs:simpleType>
 182             </xs:attribute>
 183             <xs:attribute name="qta" use="required">
 184                 <xs:simpleType>
 185                     <xs:restriction base="xs:int">
 186                         <xs:minInclusive value="0" />
 187                         <xs:maxInclusive value="999999999" />
 188                     </xs:restriction>
 189                 </xs:simpleType>
 190             </xs:attribute>
 191             <xs:attribute name="cod_orig" use="optional">
 192                 <xs:simpleType>
 193                     <xs:restriction base="xs:string">
 194                         <xs:pattern value="[0-9]{9}|[0-9]{14}" />
 195                     </xs:restriction>
 196                 </xs:simpleType>
 197             </xs:attribute>
 198         </xs:complexType>
 199     </xs:element>
 200 </xs:schema>

fornitura-izs-nsis.xsd

Per quanto riguarda il flusso di import, è identico a quanto specificato sopra per il csv a parte che per iniziare bisogna cliccare sul bottone Import XML forniture

Fornitura massiva mediante servizio web REST JSON

Attenzione: versione DRAFT che può essere soggetta a cambiamenti.

Il sistema informativo permette di effettuare la registrazione “massiva” della fornitura di medicinali tramite l’invocazione di un servizio web REST JSON.

URL del servizio REST

Il servizio REST JSON è esposto al seguente URL (endpoint):

Tracciato JSON di INPUT

E’ possibile invocare il web service REST attraverso un tracciato JSON così formattato:

   1 [{
   2     "numero": 1479111882578,
   3     "pin": 3468,
   4     "prodAic": 105025011,
   5     "flTipomedicinale": "N",
   6 
   7     "galenico": "",
   8     "fornProdAic": "",
   9     "numConfezioni": "3",
  10     "dtScadenza": "14-11-2019",
  11     "numLotto": "XSS 123 A",
  12     "gtinCodice": "",
  13     "tipodocumentoCodice": "",
  14     "numDocumento": ""
  15 }, {
  16     "numero": 1479117689369,
  17     "pin": 9657,
  18     "prodAic": 104807058,
  19     "flTipomedicinale": "N",
  20     "galenico": "",
  21     "fornProdAic": "",
  22     "numConfezioni": "7",
  23     "dtScadenza": "14-11-2019",
  24     "numLotto": "AB 34 A 3",
  25     "gtinCodice": "",
  26     "tipodocumentoCodice": "",
  27     "numDocumento": ""
  28 }]

La semantica dei campi del tracciato JSON è la stessa dei corrispondenti campi utilizzati nella fornitura massiva mediante CSV. Per la loro descrizione fare quindi riferimento al relativo paragrafo.

L’invocazione del servizio WEB REST deve avere il seguente header:

   1     Content-Type: application/json
   2     Cookie: <''INSERIRE_UN_JSESSIONID_VALIDO''>
   3     Accept: application/json

Il JSESSIONID (coockie di sessione) deve essere generato attraverso il meccanismo di autenticazione

Tracciato JSON di OUTPUT

Il servizio REST risponderà con un JSON con il seguente formato:

   1 {
   2     "result": [...]
   3 }

Viene di seguito riportata la descrizione dei due campi del JSON restituito:

Il cookie di sessione (JSESSIONID) è ottenibile effettuando una invocazione al servizio web REST JSON disponbile al seguente endpoint:

E’ possibile invocare il web service REST attraverso un tracciato JSON così formattato:

   1 {
   2     ''j_username'': <username dell'utente>,
   3     ''j_password'': <password dell'utente>
   4 }

L’invocazione del servizio WEB REST deve avere il seguente header:

Logica di elaborazione

ATTENZIONE: La logica di elaborazione del tracciato JSON inviato al servizio REST è di tipo “transazionale”, e prevede quindi che in caso di errori tutti i dati inviati vengano scartati.

Registro dei prodotti forniti

Il registro dei prodotti forniti è raggiungibile dall'apposita voce di menu. Qui è possibile visualizzare lo storico di tutte le forniture ed è inoltre possibile eventualmente effettuare delle azioni correttive sulle stesse.

Correzione dei dati della fornitura

E' possibile correggere i dati relativi ai campi Data di scadenza e Numero di Lotto, dopo aver effettuato una ricerca sulla tabellina è necessario far doppio click sulla riga di fornitura da modificare, si aprirà un pop-up dove è possibile modificare i campi, una volta conclusa la modifica per salvare i dati è sufficiente cliccare su bottone Aggiorna

Cancellazione dei dati in caso di errata fornitura

Se al momento della fornitura è stato inserito un quantitativo errato l'unico modo per procedere alla correzione del dato è cancellare la fornitura associata e poi ripetere l'azione. Una volta effettuata la ricerca dalla tabellina selezionare una o più righe da cancellare dopo di che premere il bottone Cancella selezionati in basso a destro.

Tabella dei prodotti ed esportazione in excel

Una volta effettuata la ricerca dalla tabellina dei risultati è possibile esportare in Excel il risultato come spiegato alla seguente pagine di manuale