
In het geautomatiseerde medische centrum wordt een verscheidenheid aan apparaten gebruikt, waarvan de werking moet worden beheerd door een medisch informatiesysteem (MIS), evenals apparaten die geen opdrachten ontvangen, maar wel de resultaten van hun werking naar de MIS moeten doorgeven. Echter, al deze apparaten hebben verschillende aansluitmogelijkheden (USB, RS-232, Ethernet, enz.) en manieren van interactie. Het is praktisch onmogelijk om ze allemaal in de MIS te ondersteunen, daarom is er een softwarelaag ontworpen, DeviceManager (DM), die een uniform interface biedt voor de MIS om taken aan apparaten op te geven en resultaten te ontvangen.

Om de fouttolerantie van het DM-systeem te verhogen, is DM opgedeeld in een set programma's die op de computers in het medische centrum zijn geplaatst. DM is verdeeld in een hoofprogramma en een set plugins die interactie hebben met specifieke apparaten en gegevens naar de MIS verzenden. De onderstaande afbeelding toont de algemene structuur van de interactie met DeviceManager, de MIS en de apparaten.

De structuur van de interactie tussen de MIS en DeviceManager toont 3 werkmodi van de plugins:
- De plugin ontvangt geen gegevens van de MIS en verzendt de van het apparaat omgevormde gegevens in een voor de MIS begrijpelijk formaat (komt overeen met apparaat type 3 in de bovenstaande afbeelding).
- De plugin ontvangt een korte (tijdgevoelige) taak van de MIS, bijvoorbeeld printen op een printer of scannen van een afbeelding, voert deze uit en stuurt het resultaat als antwoord op de aanvraag (komt overeen met apparaat type 1 in de bovenstaande afbeelding).
- De plugin ontvangt een langdurige taak van de MIS, bijvoorbeeld het uitvoeren van een onderzoek of het meten van indicatoren, en stuurt de status van de acceptatie van de taak terug (de aanvraag kan geweigerd worden bij een fout in de verzoek). Na het uitvoeren van de taak worden de resultaten omgevormd naar een voor de MIS begrijpelijk formaat en geëxporteerd naar de overeenkomstige interfaces voor dat type (komt overeen met apparaat type 2 in de bovenstaande afbeelding).
Het hoofprogramma van DM start, initialiseert, start opnieuw in geval van onverwachte stop (crash) en beëindigt de uitvoering van alle plugins bij het beëindigen van de werkzaamheden. De samenstelling van de plugins op elke computer is verschillend; er worden alleen de benodigde plugins uitgevoerd die in de instellingen zijn aangegeven.
Elke plugin is een zelfstandige toepassing die interactie heeft met het hoofdsysteem. Deze definitie van een plugin zorgt voor een stabielere werking, dankzij de onafhankelijkheid van alle plugin-instanties en het hoofdsysteem met betrekking tot foutafhandeling (als er een kritieke fout optreedt waardoor een plugin crasht, heeft dit geen invloed op andere plugins en het hoofdsysteem). Een enkele plugin kan werken met apparaten van één type (vaak van één model), waarbij sommige plugins alleen met één apparaat kunnen interageren, terwijl andere met meerdere apparaten kunnen werken. Voor het aansluiten van meerdere apparaten van hetzelfde type op één DM wordt gewerkt met meerdere instanties van dezelfde plugin.

Voor de ontwikkeling van de DM is de Qt-toolkit gebruikt, omdat deze in de meeste gevallen de mogelijkheid biedt om te abstraheren van een specifiek besturingssysteem. Dit maakte ondersteuning mogelijk voor computers met Windows, Linux en MacOS, evenals Raspberry Pi single-board computers. De enige beperking bij de keuze van het besturingssysteem voor de ontwikkeling van plugins is de beschikbaarheid van stuurprogramma's en/of speciale software voor het specifieke apparaat.
De interactie tussen de plugins en het hoofdsysteem gebeurt via een voortdurend actieve QLocalSocket met de naam van de specifieke plugin-instantie, volgens het protocol dat wij hebben opgesteld. De implementatie van het communicatieprotocol aan beide zijden is gerealiseerd in de vorm van een dynamische bibliotheek, waardoor andere bedrijven enkele plugins konden ontwikkelen zonder de volledige interactie met het hoofdsysteem te onthullen. De interne logica van de lokale socket stelt het hoofdsysteem in staat om onmiddellijk informatie te ontvangen over een crash door een verbroken verbinding-signaal. Bij activatie van zo'n signaal wordt de problematische plugin herstart, wat helpt om kritieke situaties soepeler af te handelen.
De interactie tussen de MIS en de DM is gebaseerd op het HTTP-protocol, aangezien de MIS is gebouwd op een webserver, waarin het eenvoudiger is om verzoeken via dit protocol te verzenden en te ontvangen. Ook is het mogelijk om problemen te onderscheiden die kunnen ontstaan bij het instellen of uitvoeren van taken door apparaten op basis van responscodes.
In de volgende artikelen zal aan de hand van verschillende kamers in het diagnostisch centrum de werking van de DM en enkele plugins worden behandeld.
Bron: habr.com
