
Un centre mĂ©dical automatisĂ© utilise de nombreux appareils diffĂ©rents, dont le fonctionnement doit ĂȘtre gĂ©rĂ© par un systĂšme d'information mĂ©dicale (SIM), ainsi que des dispositifs qui ne reçoivent pas d'instructions, mais doivent transmettre les rĂ©sultats de leur travail au SIM. Cependant, tous les appareils disposent de diffĂ©rentes options de connexion (USB, RS-232, Ethernet, etc.) et de modes d'interaction. Les prendre tous en charge dans le SIM est pratiquement impossible, c'est pourquoi une couche logicielle appelĂ©e DeviceManager (DM) a Ă©tĂ© dĂ©veloppĂ©e, offrant au SIM une interface unique pour donner des tĂąches aux appareils et recevoir les rĂ©sultats.

Pour augmenter la résilience du systÚme DM, il a été divisé en un ensemble de programmes hébergés sur des ordinateurs dans le centre médical. DM se divise en un programme principal et un ensemble de plugins qui interagissent avec un appareil spécifique et envoient des données au SIM. La structure générale de l'interaction avec DeviceManager, le SIM et les appareils est représentée dans l'image ci-dessous.

La structure d'interaction entre le SIM et DeviceManager présente 3 modes de fonctionnement des plugins :
- Le plugin ne reçoit aucune donnée du SIM et envoie des données, converties dans un format compréhensible pour lui, provenant de l'appareil (correspond à l'appareil de type 3 sur l'image ci-dessus).
- Le plugin reçoit du SIM une tùche courte (en termes de temps d'exécution), par exemple, imprimer sur une imprimante ou scanner une image, l'exécute et envoie le résultat en réponse à la demande (correspond à l'appareil de type 1 sur l'image ci-dessus).
- Le plugin reçoit du SIM une tĂąche longue, par exemple, effectuer un examen ou mesurer des indicateurs, et renvoie le statut d'acceptation de la tĂąche (la demande peut ĂȘtre refusĂ©e en cas d'erreur dans la demande). AprĂšs l'exĂ©cution de la tĂąche, les rĂ©sultats sont convertis dans un format comprĂ©hensible pour le SIM et tĂ©lĂ©chargĂ©s dans les interfaces correspondant Ă leur type (correspond Ă l'appareil de type 2 sur l'image ci-dessus).
Le programme principal de DM lance, initiale, redĂ©marre en cas d'arrĂȘt imprĂ©vu (plantage) et termine tous les plugins Ă la fin du travail. La composition des plugins sur chaque ordinateur est unique, seuls ceux indiquĂ©s dans les paramĂštres sont lancĂ©s.
Chaque plugin est un programme autonome qui interagit avec le programme principal. Cette dĂ©finition du plugin permet d'assurer un fonctionnement plus stable grĂące Ă l'indĂ©pendance de toutes les instances de plugins et du programme principal en termes de gestion des erreurs (si une erreur critique survient et fait planter un plugin, cela n'a pas d'impact sur les autres plugins ou sur le programme principal). Un plugin permet de travailler avec des appareils d'un mĂȘme type (souvent d'un mĂȘme modĂšle), tandis que certains plugins peuvent interagir seulement avec un appareil, et d'autres avec plusieurs. Pour connecter plusieurs appareils d'un mĂȘme type Ă un seul DM, plusieurs instances d'un mĂȘme plugin doivent ĂȘtre lancĂ©es.

Pour le développement du DM, l'outil Qt a été utilisé, car il permet dans la plupart des cas de s'abstraire du systÚme d'exploitation spécifique. Cela a permis de prendre en charge le fonctionnement avec des ordinateurs fonctionnant sous Windows, Linux et MacOS, ainsi que des cartes Raspberry. La seule restriction dans le choix du systÚme d'exploitation lors du développement des plugins est la disponibilité des pilotes et/ou des logiciels spéciaux pour un appareil donné.
L'interaction entre les plugins et le programme principal se fait via un QLocalSocket toujours actif, portant le nom de l'instance spĂ©cifique du plugin, selon le protocole que nous avons Ă©tabli. La mise en Ćuvre du protocole de communication des deux cĂŽtĂ©s a Ă©tĂ© rĂ©alisĂ©e sous la forme d'une bibliothĂšque dynamique, ce qui a permis Ă d'autres entreprises de dĂ©velopper certains plugins sans rĂ©vĂ©ler complĂštement l'interaction avec le programme principal. La logique interne du fonctionnement du socket local permet au programme principal d'ĂȘtre immĂ©diatement informĂ© d'un plantage grĂące Ă un signal de rupture de connexion. Lorsqu'un tel signal est Ă©mis, le plugin problĂ©matique est redĂ©marrĂ©, ce qui permet de gĂ©rer de maniĂšre plus douce les situations critiques.
L'interaction entre le MIS et le DM a Ă©tĂ© dĂ©cidĂ©e de se baser sur le protocole HTTP, car le MIS fonctionne sur la base Serveurs Web, qui facilite l'envoi et la rĂ©ception de requĂȘtes via ce protocole. Il est Ă©galement possible de distinguer les problĂšmes qui peuvent survenir lors de la mise en place ou de l'exĂ©cution des tĂąches par les appareils en fonction des codes de rĂ©ponse.
Dans les prochains articles, le fonctionnement du DM et de certains plugins sera examiné à travers plusieurs cabinets d'un centre de diagnostic.
Source : habr.com
