Soluzione Esame di Stato II Prova Istituti Tecnici Informatica – Parte Sistemi e Reti (20 settembre 2019 – Sessione straordinaria)

Una possibile soluzione commentata della prova straordinaria di informatica del 20 settembre 2019. Come nostro solito, sviluppiamo e commentiamo una soluzione della sola porzione riguardante Sistemi e Reti. Non costituisce una soluzione corretta in modo assoluto, ma solo una possibile interpretazione con elementi, si spera, utili agli alunni che devono fronteggiare il nuovo Esame di Stato.

PRIMA PARTE

Un ospedale ha sei reparti distribuiti su tre piani (ogni reparto si sviluppa su un unico piano) e vuole innovare la sua infrastruttura tecnologica per realizzare servizi interni. Una delle procedure da informatizzare riguarda la gestione delle terapie mediche prescritte giornalmente ai pazienti ricoverati. In particolare, si vuole che ogni medico di reparto, dopo avere visitato un paziente, possa collegarsi in modalità wireless ad un server web interno, dislocato in un locale tecnico, per registrare le seguenti informazioni in una base di dati:

  • identificativi di medico, reparto, paziente
  • data ed ora della visita
  • annotazioni generali relative allo stato di salute del paziente
  • pressione arteriosa minima e massima, temperatura, frequenza cardiaca
  • eventuale prescrizione terapeutica (uno o più farmaci da assumere e relativa posologia)
  • Poiché nei reparti non sono mantenute scorte di farmaci, allo stesso server si collegherà anche la farmacia ospedaliera per predisporre i farmaci da inviare ai reparti per le terapie.
  • Il locale tecnico e la farmacia sono situati nel piano seminterrato dell’ospedale.

Per ragioni di sicurezza si vuole che:

  • le operazioni siano fatte esclusivamente attraverso tablet forniti ai medici dall’azienda ospedaliera;
  • i medici siano identificati al momento dell’accesso alla rete wireless;
  • i tablet non possano collegarsi a siti web non autorizzati.

Il candidato analizzi la realtà di riferimento e, fatte le opportune ipotesi aggiuntive, individui una soluzione che a suo motivato giudizio sia la più idonea per sviluppare i seguenti punti:

1. il progetto, anche mediante rappresentazioni grafiche, dell’infrastruttura tecnologica necessaria a gestire il servizio nel suo complesso, dettagliando:

        −l’architettura di rete in termini di apparati, protocolli adottati, topologia e caratteristiche dei collegamenti;

        −il piano di indirizzamento;

        −i servizi di rete che ritiene opportuni, con le configurazioni di massima.

2. il progetto della porzione della base di dati finalizzata alla gestione delle prescrizioni terapeutiche: si richiede in particolare il modello concettuale e il corrispondente modello logico.

3. il progetto delle pagine web che consentono agli operatori della farmacia ospedaliera di visionare gli elenchi giornalieri dei farmaci previsti nelle prescrizioni terapeutiche provenienti dai singoli reparti, codificandone una porzione significativa in un linguaggio a scelta.

SOLUZIONE

Come abitudine sulle pagine del nostro sito, approfondiamo la componente di Sistemi & Reti e delle applicazione di laboratorio inerenti, presenti sulla traccia d’esame.  In particolare, quindi, ci concentriamo sui punti 1 e 3. Ricordiamo che la soluzione non ha valore di assoluta certezza, poiché non esiste una soluzione univoca, ma fornisce allo studente elementi di riflessione ed approfondimento per svolgere analoga progettazione in fase d’esame, raccogliendo le varie conoscenze e competenze acquisite nel corso degli anni.

La progettazione della rete è un classico esempio svolto a lezione, simulato anche con Cisco Packet Tracer. Si tratta di applicare elementi di cablaggio strutturato, con elementi di reti wireless. Vediamo, innanzi tutto, un possibile schema su cui ragionare la nostra progettazione.

Infrastruttura e servizi

La nostra progettazione prevede la realizzazione di un cablaggio strutturato, ovvero di un cablaggio che contempli diverse tipologie di reti lan, con diverse topologie, sfruttando anche cablaggi pre-esistenti come quello telefonico tradizionale su doppino e connettore RJ11. In figura vediamo uno schema di massima di come possiamo organizzare la nostra rete. Ogni piano è collegato con una dorsale, detta backbone, solitamente un cavo ethernet ad alte prestazioni o fibra ottica che possa trasportare 1 o 10Gbit/s per le CAT6 e 8. Qui si pone una scelta tecnologica: risparmiare oppure ottenere il massimo delle prestazioni e della suddivisione logica. Nel primo caso, sale un solo cavo tra i piani e arriva allo switch del piano terra ponticellato fino al router che necessiterà solo di due interfacce in questo modo ma saremo obbligati a vedere ogni piano come una unica rete logica che potrebbe essere funzionale ma poco gestibile. Nel secondo caso di cavi ne devono salire almeno tre, uno per piano, con un quarto cavo gestiamo il traffico del piano seminterrato così da portare al router quattro cavi di piano più quello della stanza tecnica. Scegliamo la seconda: in questo modo avremo una suddivisione logica di tutti i piani e della stanza tecnica. Questa soluzione ovviamente richiede di posare più cavi e potrebbe essere logisticamente più complessa da posare. Ad ogni piano si inseriscono, solitamente, dentro degli opportuni rack di metallo, dei patch panel, pannello di permutazione in italiano, ovvero un elemento passivo che raccoglie i cavi che entrano od escono dal rack fornendo un opportuna porta che possono poi essere suddivise in modo logico e collegate ai dispositivi attivi più idonei, nel nostro caso sicuramente degli apparati switch. In foto è riportato un esempio commerciale con 24 porte per plug RJ 45, categoria 6.

Pannello Patch

Per ogni piano possiamo aggiungere uno o più switch, anche modulari a seconda delle necessità, sia per la progettazione che stiamo effettuando sia per avere maggior scalabilità in futuro, magari cominciando da uno a 12 porte. Per coerenza, lo switch lo scegliamo con capacità Gigabit e abilitato ai cavi Ethernet di CAT6. Per il cablaggio dell’intera rete possiamo quindi scegliere cavi Ethernet CAT 6 con schermatura FTP o STP per migliori prestazioni e resistenza alle interferenze elettromagnetiche esterne. Tutti gli apparati, anche dove non esplicitamente specificato, dovranno quindi avere interfaccia o scheda di rete adeguata, per non creare colli di bottiglia.

Dimensionare una rete wireless richiede poche semplici regole. Ogni cabina dovrebbe essere dotata di uno un access point da posizionare possibilmente al centro sul soffitto del vagone. L’access-point è collegato con un cavo Ethernet allo switch posto sul piano, possibilmente con tecnologia PoE o PoE+, Power Over Ethernet, che oltre a trasportare il segnale, trasporta una alimentazione per il dispositivo collegato che varia tra i 15 watt circa e i 30 watt per la versione plus. In figura, accanto allo switch, è disegnato a titolo esemplificativo un alimentatore POE, ma spesso li troviamo già integrati nel dispositivo o, in quelli di fascia alta, può essere aggiunto in maniera modulare. Occorre un cavo quindi per collegare ogni AP. Alcuni AP, hanno una doppia interfaccia che permetterebbe in caso il collegamento a cascata ingresso/uscita. In questo secondo caso, potrebbe occorrere comunque inserire uno switch o repeater poiché la potenza del segnale PoE non è tale da alimentare in cascata più apparati. Per ogni reparto è quindi necessario avere uno o più AP, non essendoci particolari specifiche, presumiamo un numero congruo di due AP per reparto per un totale di quattro AP per piano, tutti collegati come già detto allo switch PoE di piano. In figura, per semplicità, ne abbiamo disegnati solo due per piano. Occorre poi valutare sul campo, in base alle necessità e le metrature da coprire, decidere se aggiungere altri AP per garantire prestazioni ed evitare zone d’ombra dovute ad oggetti o muri. Solitamente, e potrebbe essere una buona soluzione anche per noi. Gli AP sono disposti in modo intermedio all’inizio e la fine dei corridoi principali dei raparti, in alto non facilmente accessibili dai non addetti ai lavori.Anche per la farmacia, possiamo supporre esigenze analoghe con uno o due AP. Nella stanza tecnica, tutto cablato senza WiFi.

Si esclude invece categoricamente che gli AP siano collegati tra di loro con un ponte radio a mezzo di range-extender o repeater wireless poiché soluzione poco efficiente e di cui non si avverte la necessità. I dispositivi AP devono garantire connettività 802.11n e 802.11ac per le connessioni nella banda dei 2,4 e 5,4 Ghz, con preferenza alla seconda banda che decisamente offre alte prestazioni di banda. Gli switch sono collegati in cascata con il router principale dell’ospedale, che potrebbe essere collocato nella stanza tecnica. Dato l’elevato numero di AP che stiamo andando ad inserire, potrebbe essere vincente la scelta di usare dei Light AP, ovvero dispositivi con poche configurazioni in locale che vengono invece configurati a valle da un Wirelass LAN Controller che propaga e gestisce in modo centralizzato le configurazioni di rete, DHCP, misure di sicurezza ed autenticazione. In figura sottostante è riportato un WLC Cisco AIR-CT3504-K9-2 con supporto 802.11AC del valore commerciale di circa 2000 euro.

Un firewall hardware di Cisco

L’unica configurazione significativa da impostare sui Light AP è il canale. Infatti per ottimizzare l’uso della banda in caso di scelga di impostare un unico SSID come in questo caso, è consigliabile configurare in modo sfalsato l’occupazione dei canali, con una distanza di 5 canali tra stazioni vicine, per rendere nulle le interferenze, ma ovviamente se si deve costruire una rete su più piani dove gli AP che possono generare interferenza sono molto vicini, non è facile distanziare, ma va da se che più riusciamo ad allontanare i canali, migliori saranno le performance. Un esempio dei 4 AP dislocati tra reperti e corsia e una combinazioni di canali che minimizza le interferenze a parità di SSID.

La topologia della struttura cablata, rispecchia una rete a stella, o per meglio dire a “fiocco di neve”, con una forte spinta gerarchica dato dal backbone. Qualche libro di testo indica la topologia direttamente come “backbone”. Le singole reti wireless rappresentano la più classica delle topologie a bus, dove il canale condiviso altri non è che l’etere.                           

La stanza tecnica che conterrà i nostri server è stata disegnata a parte. Solitamente le stanze server sono dislocate in modo isolato da luoghi affollati o dove ci sono particolari rischi di incidenti, opportunamente blindate e climatizzate per meglio refrigerare i server al suo interno. Nella specifica del testo è già richiesto che i servizi vengano erogati attraverso un sistema web, per tanto avremo bisogno di un server web, un server per il database, un WLC come già accennato, e di un server RADIUS per l’autenticazione dei tablet assegnati ai rispettivi utenti. In questo modo è possibile avere account nominali che  permettono una maggiore sicurezza e utilizzo responsabile dell’utente a cui è assegnato l’account, rispetto ad una classica password condivisa con WPA2-PSK. Alcuni apparati recenti WLC e AP supportano il protocollo WPA3 che garantisce migliori performance e standard di sicurezza maggiori, sempre accompagnati dalla autenticazione robusta RADIUS. Ovviamente i server sono collegati con uno switch tra loro, alla bocca del router che è opportunamente difesa da traffico anomalo o non consentito dalla rete interna dei tablet con un firewall hardware e opportune ACL configurate. Non abbiamo previsto un collegamento internet mediante modem o altro meccanismo. In questo modo i tablet rimangono isolati dalla rete esterna e dalla visione di siti web non consentiti. In caso fosse necessario successivamente inserire un allaccio xDSL o simili, sarà da valutare la configurazione/blocco con firewall o proxy con filtri sui contenuti per inibire determinati siti di scarso interesse ospedaliero qualora fossero ricercati sui tablet. Prevedere anche una autenticazione via PHP possibilmente doppia con password più un token rilasciato via sms o app, per permettere al software web di distinguere anche gli utenti e le loro funzioni (medici o farmacisti ad esempio).

 Per i server, caratteristiche standard di interesse potrebbero essere:

  • CPU: 2x Intel Xeon Gold con 6 Cores
  • RAM 32 GB DDR4 con bit di parità per prevenire errori
  • 3 Hard Disk da 5 TeraByte l’uno, in tecnologia non necessariamente SSD ma con piatto rotante/meccanico per contenere i costi. Invece 2 SSD per il sistema operativo in RAID5 per maggiori performance. L’array di 3 HD per lo storage backup  è conveniente metterli con il RAID1 detto “mirroring” per avere una copia di scorta dei dati elaborati dai dischi principali. Il backup può essere perfezionato ulteriormente in un sistema cloud con cui ripristinare in locale eventuali anomalie/malfunzionamenti o una sostituzione degli hd danneggiati con un sistema di rimozione a caldo Hot Swap per la sostituzione rapida.
  • Due schede di rete 10 GBit (una ridondante di backup)
  • Doppio alimentatore ridondato
  • Software: in questo caso possiamo ricorrere ad un semplice server Apache con PHP7 sul server web e MySQL con InnoDB sul server Dati.  Alternativa ad Apache è Nginx che si sta diffondendo molto rapidamente e ha svariate funzionalità interessanti anche per il Python e in alcune applicazioni risulta anche più performante di Apache stesso.
  • Sistema Operativo Linux, come Mint, CentOS, Red Hat o Debian, specifiche distribuzioni per server di produzione.

 Per i medici, l’azienda ospedaliera può prevedere l’acquisto di tablet di fascia media di profilo prettamente commerciale visto che non ci sono richieste particolari di robustezza e resistenza ad urti o acqua. Caratteristiche tipo possono essere:

  • Schermi luminosi, con buoni angoli di visione e diagonale di 10 pollici
  • Hardware: CPU con tecnologia ARM, come i Cortex o simili di altre case come Nvidia, Intel e RAM di almeno 3 GigaByte. Valutare la predisposizione all’uso di un pennino touch per operazioni di firma o appunti veloci.
  • Autonomia: batterie abbastanza capienti da assicurare autonomie per i lunghi viaggi o sistemi di risparmio energetico particolarmente efficienti
  • Connettività: la connettività Wi-Fi ormai è su tutti i dispositivi con standard 802.11n e ac.
  • Fotocamera: nessuna specifica particolare
  • Software applicativi: i software possono essere delle tipologie più disparate ma devono mantenere un buon bilanciamento fra semplicità, fluidità e numero di funzioni
  • Memoria interna: consigliata 32GB
  • Sistema Operativo: Android 10, consigliato soprattutto perché aggiunge supporto per il WPA3
  • App: il servizio è erogato come web-app quindi non occorre nulla di particolare se non un browser mobile. Valutare l’installazione di app tipo block notes per prendere appunti, calendari per appuntamenti, pdf reader.
  • Per l’autenticazione dei medici attraverso il sistema RADIUS è possibile realizzarlo attraverso un CAPTIVE PORTAL direttamente a mezzo di browser web che blocca il traffico dell’indirizzo MAC fino all’avvenuta autenticazione.

Punto 2: Indirizzamento

Il piano di indirizzamento è molto semplice e dettato dalla scelte anche strutturali fatte. Ogni piano ha la sua rete logica che possiamo scegliere assegnando IP privati di classe C 192.168.0.0/24 per la farmacia, 192.168.10.0/24 per il primo piano, 192.168.20.0/24 per il secondo piano e 192.168.30.0/24 per il terzo. La stanza tecnica può essere indirizzata con 192.168.40.0/24. Le reti scelte contano tutte 256 – 2 host, numero adeguato a gestire il carico di utenze decisamente meno numeroso. Gli indirizzi IP possono essere distribuiti mediante DHCP impostato sul WLC o sul router, tutti in versione IP v4, mentre i server devono necessariamente avere IP fisso (ad es. 192.168.40.10/24, 192.168.40.20/24, 192.168.40.30/24 per i rispettivi tre server ed un IP di manutenzione per il WLC 192.168.50/24). Gli switch sono di liv 2 TCP/IP quindi non necessitano di IP ovviamente; qualora si scegliessero switch Cisco o di fascia alta con interfaccia di configurazione, si dovranno valutare gli opportuni IP.

 Punto 3: Pagine web

 Prima di vedere il codice PHP, abbiamo bisogno di una tabella Terapia. Senza scomodare tutti i dettagli del modello E/R, in linea di massima il nostro db potrebbe essere il seguente:

Per la nostra specifica, equivale ad effettuare il join tra le tabelle Terapia e Farmaco, con risultante dalla relazione N-N con le relative chiavi esterne. Nel diagramma abbiamo semplificato le notazioni. Dalla specifica, ai farmacisti non interessa sapere reparto o paziente ma solo i farmaci necessari da preparare prescritti nelle diverse terapie.

CREATE TABLE `FarmaciTerapia` (
  `ID` int(11) NOT NULL,
  `ID_Terapia` int(11) NOT NULL,
  `ID_Farmaco` int(11) NOT NULL,
  `Posologia` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `Farmaco` (
  `ID` int(11) NOT NULL,
  `Nome` varchar(60) NOT NULL,
  `Casa Farmaceutica` varchar(60) NOT NULL,
  `Descrizione` varchar(100) NOT NULL,
  `Costo` decimal(6,2) NOT NULL,
  `Principio Attivo` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `Terapia` (
  `ID` int(11) NOT NULL,
  `ID_Paziente` int(11) NOT NULL,
  `ID_Medico` int(11) NOT NULL,
  `DataSomministrazione` date NOT NULL,
  `DataInizio` date DEFAULT NULL,
  `DataFine` date DEFAULT NULL,
  `Note` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


ALTER TABLE `FarmaciTerapia`
  ADD PRIMARY KEY (`ID`),
  ADD KEY `ID_Farmaco` (`ID_Farmaco`),
  ADD KEY `ID_Terapia` (`ID_Terapia`);

ALTER TABLE `Farmaco`
  ADD PRIMARY KEY (`ID`);

ALTER TABLE `Terapia`
  ADD PRIMARY KEY (`ID`);

ALTER TABLE `FarmaciTerapia`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE `Farmaco`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE `Terapia`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

ALTER TABLE `FarmaciTerapia`
  ADD CONSTRAINT `FarmaciTerapia_ibfk_1` FOREIGN KEY (`ID_Farmaco`) REFERENCES `Farmaco` (`ID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  ADD CONSTRAINT `FarmaciTerapia_ibfk_2` FOREIGN KEY (`ID_Terapia`) REFERENCES `Terapia` (`ID`) ON DELETE RESTRICT ON UPDATE RESTRICT;
COMMIT;

A questo punto abbiamo gli elementi per costruire la nostra pagina web per visualizzare la lista dei farmaci con la posologia. Abbiamo inserito degli elementi di grafica con un CSS per rendere più gradevole la pagina. Ovviamente la query può essere potenziata visualizzando altre informazioni, raggruppando magari le richieste per reparto o visualizzando codici utili a reperire tra gli scaffali della farmacia le singole scatole. Altra miglioria è trasformare la posologia con enum o tabelle accessorie con campi come Quantità, Unità di misura, Intervallo di tempo ecc.

I codice corrispondete è molto semplice e lineare con un solo script che abbiamo chiamato terapie.php. Nel file config.php incluso sono semplicemente riportati i valori per effettuare il login al dbms.

<!DOCTYPE html>
<html lang="it">
	<head>
		<title>Farmaci da preparare</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<link href="css/normal.css" rel="stylesheet" type="text/css">
	</head>
<body>
<header>
	<div id="logo"><img src="img/logo.svg" alt="logo"></div>
	<div id="title">Ospedale 2.0</div> 
</header>
<nav>
	<a href="#">Home</a>
	<a href="#">Pagina 1</a>
	<a href="#">Pagina 2</a>
	<a href="#">Pagina 3</a>
</nav>
<main>
<h2>Farmaci Giornalieri</h2>
<?php
	require_once("config.php");

    $connessione = mysqli_connect($mysql_host,$mysql_user,$mysql_pass,$mysql_db);
    if (mysqli_connect_errno())
        die("Connessione non riuscita: " . mysqli_error($connessione));

    $idreparto = mysqli_real_escape_string($connessione, stripcslashes(trim($_GET['idreparto'])));

    $query = "SELECT T.*, FT.Posologia, F.Nome, F.CasaFarmaceutica 
                FROM Terapia as T, FarmaciTerapia as FT, Farmaco as F
                WHERE FT.ID_Terapia = T.ID
                AND FT.ID_Farmaco = F.ID
                AND T.DataInizio <= CURRENT_DATE()
                AND T.DataFine >= CURRENT_DATE()";
    $res = mysqli_query($connessione,$query) or die("Errore nella login: " . mysqli_error($connessione));
    $i = 0;

    while ($row = mysqli_fetch_assoc($res))
    {
        $farmaco    = $row['Nome'];
        $casa 	    = $row['CasaFarmaceutica'];
        $posologia	= $row['Posologia'];

        if ($i == 0)
        {
            echo "Farmaci da preparare per il ".date("d/m/Y")."<br><br>";
            echo "<table border=1>";
            echo "<tr>
                        <th>N.</th><th>Nome</th><th>Casa Farmaceutica</th><th>Posologia</th>
                    </tr>";				
        }

        $i++;	
        echo "<tr>
                <td>$i</td><td>$farmaco</td><td>$casa</td><td>$posologia</td>
                </tr>";
            
    }
    echo "</table>";
            
    mysqli_close($connessione);

?>

</main>
<footer>Realizzato da Alfredo Centinaro</footer>
</body>	
</html>

SECONDA PARTE

I quesiti che rispondono alla parte di Sistemi e Reti sono i primi tre e di forte attualità.

I. In relazione al tema proposto nella prima parte, il candidato integri il progetto (database e pagine web) prevedendo la funzione che consente al medico di visualizzare via web sul proprio tablet lo storico dei dati relativi a pressione arteriosa massima e minima, temperatura, frequenza cardiaca di un dato paziente.

Il quesito è un classico esempio di implementazione in PHP vista nelle sessioni di esame precedenti, di qualsiasi riforma, ed abbondantemente trattata in classe. L’unico elemento che attira la nostra attenzione è la specifica “via web sul proprio tablet”, che ci fa pensare subito che il sito web con front-end in HTML/CSS e back-end in PHP che vogliamo realizzare deve avere degli elementi di sito “responsive”. Pur concentrandoci sulla parte back-end, adottiamo un CSS per la grafica più piacevole, prevedendo gli accorgimenti sul viewport. Per brevità non contempliamo un sito desktop vs tablet con la gestione dei “media”. Quello che vogliamo ottenere è mostrato in figura sottostante.

 Richiamando lo script paziente.php con parametro idpaziente=1, vogliamo eseguire una query che reperisca le info del paziente nr 1 e le stampa. Per questo creiamo il nostro db nel seguente modo, senza tener particolarmente conto dello schema E/R iniziale del primo quesito progettuale.

CREATE TABLE `Paziente` (
  `id` int(11) NOT NULL,
  `CF` varchar(16) NOT NULL,
  `Nome` varchar(60) NOT NULL,
  `Cognome` varchar(60) NOT NULL,
  `Sesso` varchar(1) NOT NULL DEFAULT 'M',
  `DataNascita` date NOT NULL,
  `IndirizzoResidenza` varchar(120) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `Paziente` (`id`, `CF`, `Nome`, `Cognome`, `Sesso`, `DataNascita`, `IndirizzoResidenza`) VALUES
(1, 'CNTLRD82A02L103V', 'Alfredo', 'Centinaro', 'M', '1982-01-02', NULL);

CREATE TABLE `ValoriPaziente` (
  `ID` int(11) NOT NULL,
  `ID_Paziente` int(11) NOT NULL,
  `DataVisita` date NOT NULL,
  `PressioneMax` decimal(10,2) DEFAULT NULL,
  `PressioneMin` decimal(10,2) DEFAULT NULL,
  `Temperatura` decimal(10,2) DEFAULT NULL,
  `FrequenzaCardio` decimal(10,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `ValoriPaziente` (`ID`, `ID_Paziente`, `DataVisita`, `PressioneMax`, `PressioneMin`, `Temperatura`, `FrequenzaCardio`) VALUES
(1, 1, '2020-01-02', '120.00', '80.00', '36.50', '67.00'),
(2, 1, '2020-01-03', '110.00', '78.00', '36.80', '70.00');

ALTER TABLE `Paziente`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `CF` (`CF`);

ALTER TABLE `ValoriPaziente`
  ADD PRIMARY KEY (`ID`),
  ADD UNIQUE KEY `ID_Paziente` (`ID_Paziente`,`DataVisita`);

ALTER TABLE `Paziente`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

ALTER TABLE `ValoriPaziente`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

ALTER TABLE `ValoriPaziente`
  ADD CONSTRAINT `Paziente` FOREIGN KEY (`ID_Paziente`) REFERENCES `Paziente` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
COMMIT;

A questo punto il nostro script PHP:

<!DOCTYPE html>
<html lang="it">
	<head>
		<title>Dati paziente</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<link href="css/normal.css" rel="stylesheet" type="text/css">
		<link href="css/normal.css" rel="stylesheet" type="text/css">
	</head>
<body>
<header>
	<div id="logo"><img src="img/logo.svg" alt="logo"></div>
	<div id="title">Ospedale 2.0</div> 
</header>
<nav>
	<a href="#">Home</a>
	<a href="#">Pagina 1</a>
	<a href="#">Pagina 2</a>
	<a href="#">Pagina 3</a>
</nav>
<main>
<h2>Storico paziente</h2>
<?php
	require_once("config.php");

	if (isset($_GET['idpaziente']))
	{
		$connessione = mysqli_connect($mysql_host,$mysql_user,$mysql_pass,$mysql_db);
		if (mysqli_connect_errno())
		  die("Connessione non riuscita: " . mysqli_error($connessione));
	
		$idpaziente = mysqli_real_escape_string($connessione, stripcslashes(trim($_GET['idpaziente'])));

		$query = "SELECT V.*, P.Nome, P.Cognome 
					FROM ValoriPaziente as V,Paziente as P 
					WHERE V.ID_Paziente = $idpaziente
					  AND V.ID_Paziente = P.ID 
					LIMIT 10";
		$res = mysqli_query($connessione,$query) or die("Errore nella login: " . mysqli_error($connessione));
		$i = 0;

		while ($row = mysqli_fetch_assoc($res))
		{
			$cognome= $row['Cognome'];
			$nome 	= $row['Nome'];
			$max	= $row['PressioneMax'];
			$min	= $row['PressioneMin'];
			$temp	= $row['Temperatura'];
			$freq   = $row['FrequenzaCardio'];
			$data   = $row['DataVisita'];

			if ($i == 0)
			{
				echo "<p>Paziente: $cognome $nome </p><br>";
				echo "<table border=1>";
				echo "<tr>
						  <th>N.</th><th>Data</th><th>Pressione MAX</th><th>Pressione min</th><th>Temperatura °C</th><th>Frequenza Cardiaca</th>
					  </tr>";				
			}

			$i++;	
			echo "<tr>
				  	<td>$i</td><td>$data</td><td>$max</td><td>$min</td><td>$temp</td><td>$freq</td>
				  </tr>";
			  
		}
		echo "</table>";
		 		
		mysqli_close($connessione);
	}
?>

</main>
<footer>Realizzato da Alfredo Centinaro</footer>
</body>	
</html>

e il suo foglio di stile, analogo a quello dell’esercizio 1, punto 3:

header
{
    background-color: lightslategray;
    width: 100%;
    display: inline-block;
}

nav
{
    border: 1px solid lightslategrey;
    height: 2em;
    width: fit-content;
    background-color: lavender;
    padding: 0.5em 0 0 0.5em; 
}

footer
{
    clear: both;
    border: 1px solid lightslategrey;
    height: 2em;
    width: fit-content;   
    background-color: lightslategray;
    text-align: center;
    color: whitesmoke;
    padding: 1em 0 0 0;
}

#logo{display: block; float:left;}

#title
{
    display: block; 
    float:left;
    font-weight: bold;
    font-size: xx-large;
    color: mintcream;
    padding: 1em 0 0 1em;
}

main
{
    display: block; 
    float:left;
    height: 300px;
    width: 100%;
    margin: 5px 0 0 5px;
}

h2
{
    text-align: center;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif
}

a:link{color: darkred; margin: 0 10px 0 0; }

II. In relazione al tema proposto nella prima parte, considerando che vengono trattati dati sensibili di tipo sanitario, il candidato descriva le possibili soluzioni ed i protocolli utilizzabili per impedire l’uso di dispositivi diversi dai tablet forniti al personale medico, per garantire l’accesso solo tramite autenticazione delle diverse categorie di utenti, per garantire la continuità ed affidabilità del servizio.

Per impedire l’accesso alle informazioni interne nel primo caso di rete interna e attraverso i soli dispositivi forniti al personale medico, possiamo fare riferimento a tecniche di MAC filtering associate alla rete WiFi della struttura e una rete con SSID segreto o comunque con password WPA2-psk. Quindi ad esempio potremmo filtrare i MAC delle schede di rete dei tablet che si collegano agli Access point sparsi nell’edificio: quelli non riconosciuti perché non inseriti nella white list, vengono inibiti nella navigazione. La tecnica del MAC filtering non è decisamente la più efficace ma sicuramente la più semplice da applicare per dissuadere un attaccante che può sempre fingere di avere altro MAC valido con un attacco “MAC spoofing”. Soluzione più drastica ma efficace, è quella di predisporre sui tablet una connessione VPN con IPSec o SSL/TLS, ad esempio con una app come OpenVPN, per fare in modo di redirezionare il traffico direttamente sul servizio web o un sistema similare di autenticazione Captive Portal. I captive portal spesso hanno sistemi di autenticazioni robusti e sicuri basati sia su MAC Filtering che su sistemi RADIUS e standard 802.1x che permettono di identificare o il singolo tablet o addirittura il singolo utente che usa il dispositivo, aggiungendo una tracciabilità e responsabilità individuale del traffico del singolo dispositivo, anche a fronte di una rete WiFi con SSID visibile e accesso libero non vincolato necessariamente da password e protocollo WPA2. Le tecniche viste non solo impediscono l’accesso ai dati ma anche l’accesso alla rete WiFi ai non autorizzati e/o preventivamente registrati. Nel caso si voglia fornire un accesso WiFi pubblico, è possibile prevedere una rete Guest su misura che viene gestita per un determinato traffico ovviamente diverso da quello della rete interna.

III. La rivoluzione digitale ha profondamente modificato la gestione delle attività economiche portando ad una crescente richieste di servizi di natura informatica. Il candidato, dopo aver analizzato le esigenze delle imprese che devono gestire le proprie attività in modalità digitale, presenti i principali paradigmi di servizi cloud (XaaS) disponibili, delineando le caratteristiche di ciascuno.

Il testo del quesito non è affatto banale e di grande attualità. La crescente richiesta di servizi informatici soprattutto web data la forte diffusione non solo dei classici siti web ma anche di app ha portato molte aziende a concentrare o spostare l’attenzione sulla infrastruttura informatica necessaria ad erogare tali servizi. Accanto a questa esigenza orientata verso i clienti, anche internamente la gestione aziendale è profondamente cambiata assieme ai Sistemi Informativi necessari alle aziende per gestire personale, produzione e contabilità. Mentre una parte di queste attività era delegata a semplici pc dedicati e semplici software generalisti come fogli di calcolo, la complessità di determinate attività ha richiesto sistemi gestionali software complessi come ERP o CRM per gestire la grande mole di dati da gestire. Questo ha richiesto una capacità hardware non indifferente, che diventa più esigente al crescere dei servizi offerti e del numero di utenti che ne usufruisce. Le aziende medio/grandi hanno sicuramente la capacità di investire in una infrastruttura di rete personale, gestita internamente probabilmente nei propri spazi ed uffici, con personale e sistemisti di rete qualificati che sono capaci di garantire continuità del servizio, disaster recovery, diffusione di buone pratiche a vario titolo. Ovviamente, la gestione di una infrastruttura fatta di server, switch, router, assieme alle quotidiane attività ha un costo e non è affatto banale. Molte aziende acquistano dispositivi e pc ad esempio in leasing per ammortizzare i costi, o usano procedure di ammortamento per fare investimenti in ambito sempre digitale come quelli che molti governi recenti stanno sovvenzionando per permettere alle aziende di aggiornarsi e diventare Industrie 4.0 a tutti gli effetti. La concorrenza però è grande e la necessità di “risparmiare” per i più piccoli è elemento di sopravvivenza. Così molte aziende che non possono permettersi una infrastruttura interna, decidono sempre più spesso di “esternalizzare” la proprio infrastruttura letteralmente affittandola da fornitori esterni. “Outsourcing”, così viene detto l’affitto di server, risorse di calcolo, spazio e storage web, assieme a tutta la loro gestione, così che l’azienda è tenuta ad acquistare solo pc per il personale interno che poi si collegherà direttamente alla azienda fornitrici su cui verranno installati i software gestionali ERP e CRM per la gestione interna, o dove saranno resi disponibili servizi di hosting o dedicati per la diffusione di siti web, app ed altri servizi web oriented. Assieme ai pc, l’azienda che ha i servizi in outsourcing, deve solo avere una connessione internet adeguata. Qui è il vero problema di fondo per le aziende italiane che sono bloccate da un digital divide non indifferente rispetto ad paesi europei o statunitensi. Per avere servizi esternalizzati l’infrastruttura a banda larga ed ultra larga in fibra ottica diventa il collo di bottiglia per garantire reattività, velocità, produttività e continuità del servizio. Grandi passi avanti si stanno facendo per garantire FTTH (Fiber to the home) o FTTB (Fiber To The Build) e portare quindi fibra ottica direttamente fino agli edifici, piuttosto che lasciare l’annoso problema che prevede fibra ottica lungo le dorsali di comunicazione e doppino telefonico classico in rame nell’ultimo miglio che penalizza fortemente la banda in download ed upload. 

Tornando a l’esternalizzazione, esistono tre modelli che le aziende possono adottare. Lo IAAS, Infrastructure-as-a-Service, è l’affitto esterno delle solo componenti hardware ad esempio server, storage e connessione di rete. Il classico esempio è cloud storage, ovvero il salvataggio di dati su dischi in cloud. Esistono esempi ben noti al lettore come GDrive, DoprBox. Software-as-a-Service è un modello che racchiude applicativi e sistemi software, accessibili da un qualsiasi tipo di dispositivo come il classico GSuite ch epermette di avere fogli di calcolo, word processor e mail su qualsiasi dispositivo, dal pc di casa fino al telefonino condividendo gli stessi account. Il terzo modello è il Platform-as-a-Service (PaaS) nel quale vengono situati i servizi di piattaforme online, dedicati per lo più  agli sviluppatori, dove si può effettuare il deployment di applicazioni e servizi web che intende fornire esternamente senza gestire direttamente tutto quello che c’è sotto.Piattaforme come Amazon Web Service AWS, o Microsoft Azure sono esempi commerciali sempre più diffusi nell’offerta di questi modelli. La quarta voce XaaS, Everithing-as-a-service, è il modo di riassumere ed integrare pesantemente i precedenti tre modelli in una logica che li supera tutti integrando pesantemente web, telefonia e servizi differenti per garantire una trasversalità dell’offerta verso il cliente interno o esterno, machine learning e big data. Es. mi collego da cliente ad amazon per acquistare una lampadina? Si attiva tutto un processo che mi guida e agliuta a realizzare l’impianto elettrico della casa coinvolgendo, attraverso CRM e ERP, la gestione degli acquisti, della vendita, dell’assistenza su tutto l’intero processo, reso automatizzato e sincronizzato. 

Ultima modifica 19 Maggio 2023