
I et automatisert medisinsk senter brukes mange forskjellige apparater, hvis drift må styres av et medisinsk informasjonssystem (MIS), samt enheter som ikke tar imot kommandoer, men som må overføre resultatene av arbeidet sitt til MIS. Imidlertid har alle enhetene forskjellige tilkoblingsalternativer (USB, RS-232, Ethernet osv.) og metoder for interaksjon med dem. Å støtte dem alle i MIS er praktisk talt umulig, derfor ble det utviklet et programvarelag kalt DeviceManager (DM), som gir MIS et enhetlig grensesnitt for å sette opp oppgaver til enhetene og motta resultater.

For å øke systemets feil-toleranse ble DM delt opp i et sett med programmer plassert på datamaskiner i det medisinske senteret. DM er delt opp i et hovedprogram og et sett med moduler som utfører interaksjonen med spesifikke enheter og sender data til MIS. Nedenfor vises en generell struktur for interaksjonen med DeviceManager, MIS og apparatene.

På strukturen for interaksjonen mellom MIS og DeviceManager vises 3 varianter av modulenes arbeid:
- Modulen mottar ingen data fra MIS og sender konverterte data fra apparatet i et format forståelig for den (tilsvarer apparatet av type 3 på bildet ovenfor).
- Modulen mottar fra MIS en kort (i utførelsestid) oppgave, for eksempel å skrive ut på skriveren eller skanne et bilde, utfører den og sender resultatet i svaret på forespørselen (tilsvarer apparatet av type 1 på bildet ovenfor).
- Modulen mottar fra MIS en langvarig oppgave, for eksempel å utføre en undersøkelse eller måle indikatorer, og sender status for oppgaveovertakelsen i svaret (oppgaveopprettingen kan bli avslått ved feil i forespørselen). Etter at oppgaven er utført, konverteres resultatene til et format forståelig for MIS og lastes opp til de tilsvarende grensesnittene for sin type (tilsvarer apparatet av type 2 på bildet ovenfor).
Hovedprogrammet DM starter, initierer, omstarter ved uventet stopp (nedbrudd) og avslutter alle moduler når arbeidet er fullført. Sammenstillingen av moduler på hver datamaskin er unik, bare de nødvendige som er angitt i innstillingene startes.
Hver plugg er et selvstendig program som interagerer med hovedprogrammet. Denne definisjonen av en plugg sikrer en mer stabil drift, gjennom uavhengigheten til alle instanser av plugger og hodet når det gjelder feilhåndtering (hvis det oppstår en kritisk feil som får en plugg til å krasje, vil dette ikke påvirke andre plugger og hodet). En plugg tillater drift med en type enhet (ofte med en bestemt modell), og noen plugger kan bare interagere med én enhet, mens andre kan håndtere flere. For å koble flere enheter av samme type til én DM, brukes kjøring av flere instanser av den samme pluggen.

Verktøysettet Qt ble brukt til utviklingen av DM, fordi det i de fleste tilfeller lar oss abstrahere fra det spesifikke operativsystemet. Dette muliggjorde støtte for datamaskiner basert på Windows, Linux og MacOS, samt Raspberry enkeltkortsdatorer. Den eneste restriksjonen ved valg av operativsystem under utviklingen av plugger er tilgjengeligheten av drivere og/eller spesialprogramvare for den spesifikke enheten.
Interaksjonen mellom plugger og hodet skjer gjennom en kontinuerlig aktiv QLocalSocket med navnet til den spesifikke instansen av pluggen, etter protokollen vi har utviklet. Implementeringen av kommunikasjonsprotokollen fra begge sider ble utformet som et dynamisk bibliotek, noe som tillot andre selskaper å utvikle noen plugger uten å avsløre hele interaksjonen med hodet. Den interne logikken til den lokale sokkelen gjør at hodet umiddelbart vil vite om et krasj ved hjelp av signalet for brudd på forbindelsen. Når dette signalet aktiveres, blir den problematiske pluggen restartet, noe som tillater en mer skånsom håndtering av kritiske situasjoner.
Interaksjonen mellom MIS og DM ble besluttet å bli bygget på HTTP-protokollen, siden MIS fungerer på basis av Web-serveren, der det er lettere å sende og motta forespørselene over denne protokollen. Det finnes også mulighet for å skille problemer som kan ha oppstått ved oppsett eller utførelse av oppgaver fra enhetene basert på svarkoder.
I de kommende artiklene vil arbeidet til DM og noen plugger bli vurdert ved eksempel på flere kontorer i det diagnostiske senteret.
Kilde: habr.com
