Patent Publication Number: US-2023147762-A1

Title: Maintaining clinical messaging during network instability

Description:
INCORPORATION BY REFERENCE TO ANY PRIORITY APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 16/512,252, filed Jul. 15, 2019 and titled “MAINTAINING CLINICAL MESSAGING DURING NETWORK INSTABILITY” which is a continuation of International Application No. PCT/US19/41706, filed Jul. 12, 2019 and titled “SYSTEMS AND METHODS FOR FACILITATING CLINICAL MESSAGING IN A NETWORK ENVIRONMENT,” which claims priority to U.S. Provisional Application No. 62/699,499, filed on Jul. 17, 2018 and titled “SYSTEMS AND METHODS FOR FACILITATING CLINICAL MESSAGING IN A NETWORK ENVIRONMENT.” Any and all applications for which a foreign or domestic priority claim is identified in the Application Data Sheet as filed with the present application are hereby incorporated herein by reference in their entirety under 37 CFR 1.57. 
    
    
     TECHNICAL FIELD 
     This disclosure relates to the field of clinical messaging, and particularly to techniques for facilitating clinical messaging within and across various network environments. 
     BACKGROUND 
     Modern medical care often involves the use of medical infusion pumps to deliver fluids and/or fluid medicine to patients. Infusion pumps permit the controlled delivery of fluids to a patient and provide flexible yet controlled delivery schedules. Infusion pumps can communicate with a server configured to manage the infusion statuses of the individual infusion pumps. 
     SUMMARY 
     Various techniques for facilitating communication with and across a clinical environment and a cloud environment are described herein. These techniques may include converting pump messages into standardized dataset messages (also referred to herein simply as “messages”), merging the messages into a cache, transmitting the messages to a cloud server, detecting network outages, clearing an outbound queue, detecting missing messages, authenticating a connectivity adapter for cloud access, providing a segmented data structure, among others. These and other embodiments are described in greater detail below with reference to  FIGS.  1 - 13   . Although many of the examples are described in the context of a hospital environment including infusion pumps, the techniques described herein can be applied to any network environment including other medical devices (e.g., patient care monitors configured to display blood pressure, heart rate, blood oxygenation, and the like), or non-medical devices, or any combination thereof. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The embodiments described herein are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like references indicate similar elements. 
         FIG.  1    is a block diagram of an example clinical environment and an example cloud environment in accordance with aspects of the present disclosure. 
         FIG.  2    is a block diagram illustrating components of a clinical environment in accordance with aspects of the present disclosure. 
         FIG.  3    is a schematic diagram illustrating components of an infusion pump and a connectivity adapter of a clinical environment in accordance with aspects of the present disclosure. 
         FIG.  4    is a block diagram illustrating components of a cloud environment in accordance with aspects of the present disclosure. 
         FIG.  5    is a schematic diagram illustrating components of a data flow manager of a cloud environment in accordance with aspects of the present disclosure. 
         FIG.  6    is a flow diagram illustrating an example method for clearing an outbound queue in accordance with aspects of the present disclosure. 
         FIG.  7    is a flow diagram illustrating an example method for detecting missing messages in accordance with aspects of the present disclosure. 
         FIG.  8    is a flow diagram illustrating an example method for merging messages into a cache in accordance with aspects of the present disclosure. 
         FIG.  9    is a flow diagram illustrating an example method for converting a pump message to a standardized dataset message in accordance with aspects of the present disclosure. 
         FIG.  10    is a schematic diagram illustrating an example method for authenticating a connectivity adapter using an authentication proxy in accordance with aspects of this disclosure. 
         FIG.  11    is a flow diagram illustrating an example method for authenticating a connectivity adapter using an authentication proxy in accordance with aspects of this disclosure. 
         FIG.  12    is a block diagram illustrating a segmented data structure in accordance with aspects of the present disclosure. 
         FIG.  13    is a flow diagram illustrating an example method for moving data nodes in a segmented data structure in accordance with aspects of this disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     Overview of Example Network Environment 
       FIG.  1    illustrates network environment  100  in which clinical environment  102  communicates with cloud environment  106  via network  104 . The clinical environment  102  may include one or more healthcare facilities (e.g., hospitals). The components of the clinical environment  102  are described in greater detail below with reference to  FIG.  2   . The network  104  may be any wired network, wireless network, or combination thereof. In addition, the network  104  may be a personal area network, local area network, wide area network, over-the-air broadcast network (e.g., for radio or television), cable network, satellite network, cellular telephone network, or combination thereof. For example, the network  104  may be a publicly accessible network of linked networks such as the Internet. For example, the clinical environment  102  and the cloud environment  106  may each be implemented on one or more wired and/or wireless private networks, and the network  104  may be a public network (e.g., the Internet) via which the clinical environment  102  and the cloud environment  106  communicate with each other. The cloud environment  106  may be a cloud-based platform configured to communicate with multiple clinical environments. The cloud environment  106  may include a collection of services, which are delivered via the network  104  as web services. The components of the cloud environment  106  are described in greater detail below with reference to  FIG.  4   . 
     Components of Clinical Environment 
       FIG.  2    illustrates the clinical environment  102 , which includes one or more clinical IT systems  202 , one or more infusion pumps  204 , and one or more connectivity adapters  206 . Further, the clinical environment  102  may be configured to provide cloud user interfaces  208  (e.g., generated and provided by the cloud environment  106 ). The clinical IT system  202  may include a hospital infusion system (HIS) designed to manage the facilities&#39; operation, such as medical, administrative, financial, and legal issues and the corresponding processing of services. The HIS can include one or more electronic medical record (EMR) or electronic health record (EHR) systems, as well. The infusion pump  204  is a medical device configured to deliver medication to a patient. The connectivity adapter  206  is a network component configured to communicate with other components of the clinical environment  102  and also communicate with the cloud environment  106  on behalf of the other components of the clinical environment  102 . In one embodiment, all messages communicated between the clinical environment  102  and the cloud environment  106  pass through the connectivity adapter  206 . In some cases, the connectivity adapter  206  is a network appliance with limited storage space (e.g., memory and/or persistent storage). The cloud user interfaces  208  may be provided to a user in the clinical environment  102  via a browser application, desktop application, mobile application, and the like. The user may access status reports and other data stored in the cloud environment  106  via the cloud user interfaces  208 . 
     The components  202 - 208  illustrated in  FIG.  2    may communicate with one or more of the other components in the clinical environment  102 . For example, each of the clinical IT system  202  and the infusion pump  204  may communicate with the connectivity adapter  206  via physical local area network (LAN) and/or virtual LAN (VLAN). Although not shown in  FIG.  2   , the clinical environment  102  may include other medical devices and non-medical devices that facilitate the operation of the clinical environment  102 . 
     Overview of Messaging in the Clinical Environment 
       FIG.  3    illustrates the messages received, stored, and transmitted by the connectivity adapter  206  in the clinical environment  102 . As shown in  FIG.  3   , the infusion pump  204  may include motor controller unit (MCU)  204 A and communications engine (CE)  204 B. Although not shown in  FIG.  3   , the infusion pump  204  may include one or more memories and storage media configured to store various instructions, parameters, and/or messages. The connectivity adapter  206  may include transformation worker  206 A, device status manager  206 B, cache  206 C, and outbound queue  206 D. The MCU  204 A may generate and send messages to the CE  204 B for storage and transmission to the connectivity adapter  206 . In some cases, the messages are each associated with a message identifier (ID). In some embodiments, the MCU  204 A is a very small processor (e.g., 12 Mhz) and the CE  204 B is a more powerful processor (e.g., 400 Mhz). Pump messages sent to the connectivity adapter  206  generated by the MCU  204 A may be transformed into a standardized dataset message (e.g., message format used by the connectivity adapter  206  to communicate with the cloud environment  106 , also referred to herein simply as “messages”). In some embodiments, the standardized dataset format may allow multiple messages to be merged into a single standard dataset message that includes all the information included in the multiple messages. For example, a pump message that indicates the start of an infusion and another pump message that indicates the presence of an air-in-line alarm may occupy different locations within the standardized dataset message. Even though the start-of-infusion message was generated long before the air-in-line-alert message, they may be transmitted together packaged in the standardized dataset message without having to worry about having incomplete information about the infusion pump  204  at any given moment or having to request older messages that have been lost or become unavailable. The device status manager  206 B processes the transformed messages provided by the transformation worker  206 A and merges the data included in the transformed messages into the cache  206 C, which represents the current state of the infusion pump  204 . For example, the cache  206 C may include all of the current parameter values (or to the extent available to the connectivity adapter  206 ) at the infusion pumps connected to the connectivity adapter  206  (e.g., power status, infusion status, battery status, network status, infusion start time, volume to be infused, volume infused, dose, and the like). Although not shown in  FIG.  3   , the clinical IT system  202  may maintain the identities of the patients assigned to the individual infusion pumps  204  and other data that the connectivity adapter  206  may utilize in order to merge the messages from the pump into the cache  206 C. For example, the client IT system  202  may send instructions for programming the infusion pump  204  for initiating an infusion on a patient, and the instructions may include identifiers such as an infusion ID and a patient ID. Upon receiving a pump message containing the infusion ID, the connectivity adapter  206  can use the infusion ID to determine that the pump message relates to the patient having the patient ID (even when the pump message does not include the patient ID) based on the prior instructions received from the client IT system  202 . The connectivity adapter  206  can then add the information included in the pump message to the cache  206 C along with the patient ID. 
     The device status manager  206 B also sends the transformed messages to the outbound queue  206 D for transmission to the cloud environment  106 . The messages stored in the outbound queue  206 D may be associated with one or more message IDs. For example, a message can be associated with a single message ID corresponding to the original pump message. In another example, a message can include data from multiple pump messages and therefore include multiple message IDs. The messages transmitted from the outbound queue  206 D to the cloud environment  106  may be stored in the cloud environment  106  for providing reports and other data to a client (e.g., via the cloud user interfaces  208 ) and/or for compliance purposes. Additional details regarding the messaging in the clinical environment  102  are provided below. 
     Components of Cloud Environment 
       FIG.  4    illustrates the cloud environment  106 , which includes drug library manager (DLM)  402 , report manager  404 , device manager  406 , data flow manager (DFM)  408 , cloud manager (CM)  410 , data analyzer (DA)  412 , and database  414 . 
     The DLM  402  may provide a set of features and functions involved in the creation and management of drug libraries for use with infusion pumps. These drug libraries may provide user-defined settings for pump configuration and drug infusion error reduction. 
     The report manager  404  may provide various reporting capabilities for clinically relevant infusion data which users can choose to use for further analysis, such as tracking and trending of clinical practices. 
     The device manager  406  may oversee and manage the maintenance of infusion pumps, providing users the capability to view and manage asset and operational data. For example, the device manager  406  may schedule drug library and software updates for infusion pumps. 
     The DFM  408  may facilitate storing, caching, and routing of data between compatible infusion pumps  204 , connectivity adapters  206 , cloud services (e.g., infusion pump management software including modules  402 - 414  of  FIG.  4   ), and external systems. For example, the DFM may store infusion and operational data received from infusion pumps, store and cache infusion pump drug libraries and software images, convert and route network messaging between the cloud environment  106  and the clinical environment  102 , convert and route medication order information from a hospital information system to an infusion pump (e.g., auto-programming or smart-pump programming), and/or convert and route alert information and infusion events from infusion pumps to hospital information systems (e.g., alarm/alert forwarding, and auto-documentation, or infusion documentation). 
     The CM  410  may serve as a general-purpose computing platform for the other modules illustrated in  FIG.  4   . Functionally, the CM  410  may be similar to Microsoft Windows® or Linux® operating systems as it provides the following services: networking, computation, user administration and security, storage, and monitoring. 
     The DA  412  may provide data analytics tools for generating user interfaces and reports based on the data generated and/or received by the other modules illustrated in  FIG.  4   . 
     The database  414  may store data generated and/or received by the modules  402 - 412  of the cloud environment  106 . Although not illustrated in  FIG.  4   , the cloud environment may provide other resources such as processors, memory, disk space, network, etc. The modules  402 - 412  may be hardware components configured to perform one or more of the techniques described herein. Alternatively, the modules  402 - 412  may be implemented using software instructions stored in physical storage and executed by one or more processors. Although illustrated as separate components, the modules  402 - 412  may be implemented as one or more hardware components (e.g., a single component, individual components, or any number of components), one or more software components (e.g., a single component, individual components, or any number of components), or any combination thereof. 
     In some embodiments, the cloud environment  106  can be implemented using a commercial cloud services provider (e.g., Amazon Web Services®, Microsoft Azure®, Google Cloud®, and the like). In other embodiments, the cloud environment can be implemented using network infrastructure managed by the provider and/or developer of the modules  402 - 412  shown in  FIG.  4   . In some embodiments, the features and services provided by one or more of the modules  402 - 412  may be implemented on one or more hardware computing devices as web services consumable via one or more communication networks. In further embodiments, one or more of the modules  402 - 412  are provided by one or more virtual machines implemented in a hosted computing environment. The hosted computing environment may include one or more rapidly provisioned and released computing resources, such as computing devices, networking devices, and/or storage devices. 
     Overview of Messaging in the Cloud Environment 
       FIG.  5    illustrates the messages received, stored, and transmitted by the cloud environment  106 . As shown in  FIG.  5   , the DFM  408  may include cache  408 A and outbound queue  408 B. The cache  408 A may store the current state of the infusion pump  204 . For example, the cache  408 A may include all of the current parameter values (or to the extent available to the DFM  408 ) at the infusion pump  204  (e.g., power status, infusion status, battery status, network status, infusion start time, volume to be infused, volume infused, dose, and the like). In some cases, the current state stored in the cache  408 A is identical to the current state stored in the cache  206 C. In other cases, the current state stored in the cache  408 A includes additional information not stored in the cache  206 C, or vice versa. For example, the DFM  408  may have access to data sources not accessible (or readily accessible) by the connectivity adapter  206 , and the DFM  408  may have obtained additional data prior to merging the message and the additional data into the cache  408 A. In another example, due to a network outage, the connectivity adapter  206  may have been able to update its own cache  206 C but unable to transmit the relevant messages to the DFM  408 . In such a case, the cloud cache  408 A may include less information than the connectivity adapter cache  206 C. The outbound queue  408 B may include messages to be transmitted to the clinical environment  102 . For example, the outbound queue  408 B can include command messages (e.g., instructions to update the security settings on the connectivity adapter  206 ), request messages (e.g., requests for missing messages for logging purposes), etc. In other examples, the outbound queue  408 B may include log requests, drug library updates, software updates, security updates, and the like. In some embodiments, the items in the outbound queue  408 B are less time-sensitive than the items in the outbound queue  206 D. The process of detecting and requesting missing messages from the clinical environment  102  is described in greater detail below with reference to  FIG.  7   . In some cases, the data stored in the cache  408 A may be copied or moved to the database  414 . 
     Generation and Transmission of Pump Messages 
     Referring back to  FIG.  3   , when there is an event at the infusion pump  204  (e.g., the device has been powered on, infusion has been started or finished, an alarm condition has been satisfied, etc.), the MCU  204 A generates a message indicative of such an event and transmits the message to the CE  204 B. Upon receiving one or more messages from the MCU  204 A, the CE  204 B packages the messages received so far into a pump message (e.g., according to a protocol specific to the infusion pump  204 ) and transmits the pump message to the connectivity adapter  206 . For example, if multiple messages have been received from the MCU  204 A since the most recent pump message transmitted to the connectivity adapter  206 , the CE  204 B may merge the information included in the multiple messages into a single pump message in accordance with the pump protocol. The pump message transmitted to the connectivity adapter  206  may be reflective of the current state of the infusion pump  204  at the time the pump message is transmitted to the connectivity adapter  206 . In some embodiments, the infusion pumps  204  do not have Internet access and communicate only with the connectivity adapter  206  (e.g., to ensure that Internet connection is not needed for any clinical operations). In other embodiments, the infusion pumps  204  may communicate with network entities other than the connectivity adapter  206  (e.g., the cloud environment  106  via the Internet). 
     The infusion pump  204  may store its current and prior states (e.g., days, months, or years of messages received from the MCU  204 A or transmitted by the CE  204 B) in data store (not shown) located within the infusion pump  204 . As discussed further below, the connectivity adapter  206  may process requests from the DFM  408  for pump messages. For example, the DFM  408  may request messages from the infusion pump  204  when the DFM  408  realizes that it is missing one or more pump message. Pump messages can be missed by the DFM  408  during network outages, or other disruptions to network traffic. In such situations, as will be discussed in greater detail below, the DFM  408  can request the missing pump messages from the connectivity adapter  206 . The messages from the infusion pump  204  may include one or more parameters. Some of those parameters may be data fields that are overwritten as the parameters are updated. Other parameters are linked lists that include a sequence of past parameter values. For example, fields may be used for statuses such as power status, infusion status, and the like, and linked lists may be used for alerts, ruleset violations, and the like. 
     Connecting Infusion Pumps to Connectivity Adapter 
     In the event that the connection between the infusion pump  204  and the connectivity adapter  206  is terminated or otherwise unavailable, the MCU  204 A may continue to generate messages and the CE  204 B may continue to merge such additional messages into the most current state of the infusion pump  204 . Once the connection between the infusion pump  204  and the connectivity adapter  206  is re-established, the CE  204 B may transmit a single pump message (or multiple pump messages) that reflects all of the messages received from the MCU  204 A during the time of lost connectivity. For example, if the CE  204 B, during the time of lost connectivity, received a message that indicates that the power status changed to “on” and subsequently received another message that indicates that the infusion status changed to “on,” the CE  204 B may generate a pump message that has two key-value pairs, “power status=on” and “infusion status=on.” In other cases, these messages may be transmitted to the connectivity adapter  206  as separate pump messages. 
     In some embodiments, when the infusion pump  204  is turned on after being off for a period of time, or upon the connection between the infusion pump  204  and the connectivity adapter  206  being re-established, the infusion pump  204  sends all of the available, unsent messages or data to the connectivity adapter  206 . In some cases, such an approach may overload the internal network of the clinical environment  102  (e.g., if  500  infusion pumps  204  came back online after being offline for weeks). Thus, in some cases, the connectivity adapter  206  may deliberately reject such pump messages to reduce the network load, and have the infusion pumps  204  re-send the pump messages at a later time. The infusion pumps  204  may adopt a schedule for re-sending rejected pump messages that further reduces the network load (e.g., exponential back-offs where each retry is performed after a longer wait period, randomization where the back-offs are not strictly exponential and include random temporal variations, a combination of exponential back-offs and randomization, etc.). 
     By analyzing the pump messages received from the infusion pump  204 , the connectivity adapter  206  may determine that it has missed one or more messages that it should have received (e.g., due to older data being overwritten in the pump message). For example, if the connectivity adapter  206  receives a pump message that indicates that the power state of the infusion pump  204  has gone from “sleep” to “on,” where the information in the cache  206 C indicates that the most recent power state of the infusion pump  204  was “on.” By comparing the pump message and the information in the cache  206 C, the connectivity adapter  206  can determine that it must have missed a pump message that indicates that the power state of the infusion pump  204  was changed from “on” to “sleep.” In some cases, the connectivity adapter  206  requests these missing messages from the infusion pump  204  immediately. In other cases, the connectivity adapter  206  requests these missing messages at a later time (e.g., when the network activity is light or below a threshold). In some cases, the connectivity adapter  206  determines missing pump messages based on message IDs that are not in sequence. For example, pump messages may include message IDs that are sequential (such that one pump message generated immediately subsequently to another pump message has a message ID that immediately follows the message ID of said another message in a predetermined sequence of numbers or identifiers). In such a case, upon processing pump messages having message IDs  100050  and  100055  in a row, the connectivity adapter  206  may determine that pump messages having message IDs  100051 - 100054  were deleted, overwritten, or lost. 
     Transformation of Pump Messages 
     The transformation worker  206 A receives the pump messages and converts it to a standardized message format (e.g., standardized dataset messages used for transmitting information within and across the clinical environment  102  and the cloud environment  106 ). In some embodiments, the standardized dataset message can be a collection or envelope of messages that are each a key-value pair. For example, the standardized dataset message may include one key-value pair that says “message ID=100015,” another key-value pair that says “power status=on,” and another key-value pair that says “volume to be infused=5 mL.” In some cases, the standardized dataset message may include one or more keys having no value or having default values (e.g., “alarm count=0,” or “battery status=unknown”). Depending on the pump protocol associated with the pump message, the same information may be located in different parts of the pump message. The transformation worker  206 A identifies the data included in the pump messages based on the pump protocol and places the data into the appropriate locations of a standardized dataset message. For example, based on the pump protocol, the transformation worker  206 A extracts the power state of the infusion pump  204  and places the power state information in the standardized dataset message, which also includes information other than the power state. For example, all parameters or key-value pairs in the standardized dataset message other than those specified by the pump message may be set to default values. In some cases, such parameters or key-value pairs are left blank. Similarly, when requests are sent to the infusion pump  204 , the transformation worker  206 A transforms the standardized dataset message into a pump message understood by the infusion pump  204 . In some embodiments, the transformation worker  206 A may be implemented using a ruleset engine. In one embodiment, using a ruleset engine advantageously does not require the transformation worker  206 A to be rebooted when a new infusion pump or a new pump protocol is added. For example, the ability to be able to translate pump messages in a new pump protocol can be implemented as a configuration file that can be added to the connectivity adapter  206 , where the configuration file allows the transformation worker  206 A to be able to receive and process pump messages in the new pump protocol. Once the configuration file is added to the connectivity adapter  206 , the transformation worker  206 A can begin transforming such pump messages into the standardized dataset messages for further processing by the device status manager  206 B. In some cases, if the transformation worker  206 A does not recognize a pump message or the protocol used by the pump message or otherwise cannot process the pump message, the transformation worker  206 A stores the pump message in the connectivity adapter  206  and transforms the pump message upon the transformation mapping for the pump protocol becoming available. 
     The transformation worker  206 A may further include hints in the header of the standardized dataset message. The hints indicate to the device status manager  206 B which portions of the standardized dataset message contain new information and should thus be accessed by the device status manager  206 B and merged into the cache  206 C. Based on the hints, the device status manager  206 B can refrain from having to process the entire standardized dataset message generated by the transformation worker  206 A. For example, the standardized dataset message may have a hierarchical tree structure having five categories of pump parameters, where each category includes multiple pump parameters or sub-categories having multiple parameters. If only a parameter in one of the categories includes new information, the transformation worker  206 A may set a binary flag associated with that category to 1 and the binary flags associated with the remaining categories to 0 to indicate that the four categories do not include any new information. A given standardized dataset message may include a single hint indicating the location of the single piece of new information. Alternatively, the standardized dataset message may include multiple hints indicating the multiple locations where new information is provided. 
     Caching in Connectivity Adapter 
     The device status manager  206 B takes the message received from the transformation worker  206 A and “merges” the message into the cache  206 C. Merging a message into the cache may include updating the data stored in the cache  206 C based on the information included in the message. In some cases, the message may include information that prompts the device status manager  206 B to access additional information from other databases or sources and adding such additional information to the cache  206 C. For example, based on the infusion ID provided in the message, the device status manager  206 B may access the identity of the patient associated with the infusion pump having the infusion ID and store that information in the cache  206 C. As another example, the device status manager  206 B may access the clinical IT system  202  or the cloud environment  106  for additional information that can be stored in the cache  206 C. Accordingly, information from multiple data sources may be merged into the cache  206 C in response to the pump messages received from the infusion pump  204 . In yet another example, in the event that the information needed by the device status manager  206 B is in the cloud environment  106  (e.g., the pump message references a drug library that is not yet stored in the clinical environment  102 ), the device status manager  206 B merges the message into the cache  206 C and places the message in the outbound queue  206 D without accessing the cloud environment  106  (e.g., to make the message more complete based on the information in the cloud environment  106 ). In such a case, the DFM  408  may, upon receiving the message, access the necessary information, fill in the missing information in the message, and merge the message into the cache  408 A. In some cases, the device status manager  206 B may add information to the message (e.g., facility ID, account ID, etc.) before (or after) merging the message into the cache  206 C. 
     The cache  206 C may store the current state of the individual infusion pumps  204  configured to communicate with the connectivity adapter  206 . As additional messages are received from the infusion pumps  204 , the device status manager  206 B updates the current state stored in the cache  206 C to reflect the changes made by the messages from the infusion pumps  204 . In some embodiments, the device status manager  206 B determines whether the message received from the transformation worker  206 A is a live message or an historical message. A live message includes messages that are transmitted to the connectivity adapter  206  based on a new event at the infusion pump  204 . An historical message includes messages that are transmitted to the connectivity adapter  206  based on a prior event at the infusion pump  204 . Historical messages may be transmitted at the request of the connectivity adapter  206 . The device status manager  206 B is configured to merge the message into the cache  206 C upon determining that the message is a live message (and alternatively, refrain from merging the message into the cache  206 C upon determining that the message is an historical message). The cache  206 C may be implemented using an in-memory cache (e.g., Redis) or other storage devices. 
     In some cases, the messages sent to the cloud environment  106  are copies of the current state of the infusion pump  204  stored in the cache  206 C at the time the messages are sent to the cloud environment  106 . In other cases, the messages sent to the cloud environment  106  may not include all the parameters included in the current state of the infusion pump  204  stored in the cache  206 C. For example, the messages sent to the cloud environment  106  only includes information that might not be stored in the cloud environment  106 . In some cases, the device status manager  206 B does not include in the message transmitted to the cloud environment  106  at least some of the information in the cache  206 C if such information is otherwise available to the cloud environment  106 . In another example, the message may include a log request, which is not intended to reflect the current state of an infusion pump. Such a log request may include a flag that indicates that the message is a log request and a parameter identifying the requested information. 
     Outbound Queues 
     Once a message has been merged into the cache  206 C, the device status manager  206 B adds the message to the outbound queue  206 D for transmission to the cloud environment  106 . In some embodiments, the device status manager adds the message to the outbound queue  206 D regardless of whether the connectivity adapter  206  is connected to the cloud environment  106 . The connectivity adapter  206  may include a separate outbound queue for transmitting messages to the clinical IT system  202 . 
     The connectivity adapter  206  may include a service that picks up the messages stored in the outbound queue  206 D and tries to route them to the appropriate endpoints. Such a service may determine whether the connectivity adapter  206  is connected to the cloud environment  106  or not. As will be further described below, such a service may determine whether the messages in the outbound queue  206 D should be kept in the outbound queue  206 D or removed from the outbound queue  206 D. 
     Network Outages 
     The clinical environment  102  may be designed such that clinical functions of the clinical environment  102  continue to operate normally even during Internet outages or loss of connectivity to the cloud environment  106 . Thus, in some embodiments, clinical functions do not rely on connectivity to the cloud environment  106  or information to be requested and received from the cloud environment  106 . However, in some cases, the messages stored in the outbound queue  206 D may be held in the outbound queue  206 D (e.g., in the event of network jitter or momentary loss of connection) or removed from the outbound queue  206 D (e.g., in the event of prolonged outage or after the outbound queue  206 D becomes full) during an Internet or network outage. 
     For example, upon determining that the connection to the cloud environment  106  has been terminated or otherwise become unavailable, the connectivity adapter  206  may determine whether the outbound queue  206 D includes any messages to be transmitted to the cloud environment  106  and discard one or more of the messages from the outbound queue  206 D. For example, in the event of a prolonged outage, there may be a large number of messages in the outbound queue  206 D, which may overload the network. For example, the large number of messages in the outbound queue  206 D may delay transmission of time-sensitive alerts and may even include messages that are no longer relevant due to the length of the network outage. To prevent such issues, some of the messages in the outbound queue  206 D may be removed without transmitting them to the cloud environment  106 . In such cases, the cloud environment  106  will request those “missing” messages at a later time. In some embodiments, the messages in the outbound queue are discarded based on time (e.g., after being in the outbound queue for a specific amount of time). Alternatively, the determination of whether to discard one or more messages may be based on the size of the outbound queue. For example, the outbound queue may be fixed in size, and the oldest message is discarded upon a new message being added to the outbound queue that is full. For example, the messages may be discarded based on a first-in first-out (FIFO) manner. In some cases, the connectivity adapter  206  starts removing messages from the outbound queue  206 D only after the outbound queue  206 D reaches a threshold message size. 
     Outbound Queue Clearing Method 
     With reference now to  FIG.  6   , an example outbound queue clearing method  600  will be described. Since the connectivity adapter  206  does not have unlimited resources, during a network outage, the connectivity adapter  206  cannot let unsent messages pile up in the outbound queue  206 D indefinitely. Further, as discussed above, having to send old messages that have been in the outbound queue  206 D for a long time and no longer relevant may reduce network performance and interfere with transmission of messages that are more relevant. The example method  600  may be carried out, for example, by the connectivity adapter  206  of  FIG.  3    (or one or more components thereof). The method  600  illustrates an example algorithm that may be programmed, using any suitable programming environment or language, to create machine code capable of execution by a CPU or microcontroller. Various embodiments may be coded using assembly, C, OBJECTIVE-C, C++, JAVA, or other human-readable languages and then compiled, assembled, or otherwise transformed into machine code that can be loaded into read-only memory (ROM), erasable programmable read-only memory (EPROM), or other recordable memory that is coupled to the CPU or microcontroller and then executed by the CPU or microcontroller. For example, when the method  600  is initiated, a set of executable program instructions stored on one or more non-transitory computer-readable media (e.g., hard drive, flash memory, removable media, etc.) may be loaded into memory (e.g., random access memory or “RAM”) of a computing device of the clinical environment  102  and/or the cloud environment  106 . The executable instructions may then be executed by a hardware-based computer processor (e.g., a central processing unit or “CPU”) of the computing device. In some embodiments, the method  600  or portions thereof may be implemented on multiple processors, serially or in parallel. For convenience, the steps of the example method  600  are described as being performed by the connectivity adapter  206 . 
     At block  602 , the connectivity adapter  206  transmits one or more messages to the cloud environment  106 . As discussed above, the transmitted messages may be processed by the DFM  408  in the cloud environment  106  and merged into the cloud cache  408 A. 
     At block  604 , the connectivity adapter  206  detects a network outage. For example, the connectivity adapter  206  may detect the outage based on not having received during a specific time window an acknowledgement of receipt of a message transmitted to the cloud environment  106 . In some other cases, the connectivity adapter  206  may detect the outage based on its ping receiver not receiving any pings from the cloud environment  106  during a specific time window. In yet other cases, the connectivity adapter  206  may detect the outage based on receiving a message that the connection to the cloud environment  106  has been terminated. In some cases, the connectivity adapter  206  does not determine whether there is a network outage and tries to transmit a given message to the cloud environment  106  until an acknowledgement signal is received for the receipt of the given message. In such cases, the given message may remain in the outbound queue  206 D until the message is successfully transmitted to the cloud environment  106  or otherwise removed from the outbound queue  206 D (e.g., as discussed with reference to block  606 ). 
     At block  606 , the connectivity adapter  206  clears stale messages from the outbound queue  206 D. For example, stale messages may include messages associated with a pump event that is older than a threshold amount of time. In another example, stale messages may include messages that have been in the outbound queue  206 D for more than a threshold amount of time. In some cases, the threshold amount of time may be pump-specific or pump-event-type-specific. For example, time-sensitive events may have a shorter threshold amount of time. In yet another example, a stale message may include a message that has been in the outbound queue  206 D for the longest period of time (e.g., first in). In some cases, the connectivity adapter  206  may not clear or remove messages from the outbound queue  206 D unless the outbound queue  206 D is full. 
     At block  608 , the connectivity adapter  206  determines whether the connectivity adapter  206  is connected to the cloud environment  106 . Upon determining that the connectivity adapter  206  is not connected to the cloud environment  106 , the connectivity adapter  206  proceeds to block  606  to clear any stale messages in the outbound queue  206 D. Upon determining that the connectivity adapter  206  is connected to the cloud environment  106 , the connectivity adapter  206  proceeds to block  610 . 
     At block  610 , the connectivity adapter  206  transmits any remaining messages received during the network outage and still stored in the outbound queue  206 D (e.g., not deleted as stale). 
     In the method  600 , one or more of the blocks shown in  FIG.  6    may be removed (e.g., not performed) and/or the order in which the method  600  is performed may be switched. In some embodiments, additional blocks may be added to the method  600 . The embodiments of the present disclosure are not limited to or by the example shown in  FIG.  6   , and other variations may be implemented without departing from the spirit of this disclosure. 
     Missing Messages 
     In some embodiments, each message generated by the MCU  204 A is associated with a unique message ID. In other embodiments, each pump message generated by the CE  204 B is associated with a unique message ID. In yet other embodiments, each standardized dataset message generated by the transformation worker is associated with a unique message ID. These message IDs may follow a predetermined sequence, and based on one or more combinations of these message IDs, the DFM  408  processing the messages from the connectivity adapter  206  may determine whether one or more messages are missing (e.g., have been generated but not received by the DFM  408 ). For example, upon determining that a message having a message ID of  10010  was immediately followed by a message having a message ID of  10016 , the DFM  408  may determine that messages having message IDs  10011 - 10015  were not received and therefore missing. In some cases, the DFM  408  may be aware of periodic or scheduled messages expected to be received from the connectivity adapter  206 . Upon determining that such messages were not received according to the schedule, the DFM  408  may request such messages from the connectivity adapter  206 . 
     Upon determining that the DFM  408  is missing one or more events or messages, the DFM  408  may generate a request for such messages and store the request in the outbound queue  408 B for transmission to the connectivity adapter  206 . In some embodiments, the request is in the standardized dataset format and includes a flag having a value indicating that the request is a log retrieval request and not live data. A single log retrieval request may identify multiple messages to be requested from the infusion pump  204 . Upon receiving the log retrieval requests from the cloud environment  106 , the connectivity adapter  206  may transform the requests to one or more messages in the pump protocol and send to the infusion pump  204 . Alternatively, the connectivity adapter  206  may throttle the requests based on the network load or condition of the clinical environment  102 . 
     Missing Message Detection Method 
     With reference now to  FIG.  7   , an example missing message detection method  700  will be described. The example method  700  may be carried out, for example, by the DFM  408  of  FIG.  5    (or one or more components thereof). The method  700  illustrates an example algorithm that may be programmed, using any suitable programming environment or language, to create machine code capable of execution by a CPU or microcontroller. Various embodiments may be coded using assembly, C, OBJECTIVE-C, C++, JAVA, or other human-readable languages and then compiled, assembled, or otherwise transformed into machine code that can be loaded into read-only memory (ROM), erasable programmable read-only memory (EPROM), or other recordable memory that is coupled to the CPU or microcontroller and then executed by the CPU or microcontroller. For example, when the method  700  is initiated, a set of executable program instructions stored on one or more non-transitory computer-readable media (e.g., hard drive, flash memory, removable media, etc.) may be loaded into memory (e.g., random access memory or “RAM”) of a computing device of the clinical environment  102  and/or the cloud environment  106 . The executable instructions may then be executed by a hardware-based computer processor (e.g., a central processing unit or “CPU”) of the computing device. In some embodiments, the method  700  or portions thereof may be implemented on multiple processors, serially or in parallel. For convenience, the steps of the example method  700  are described as being performed by the DFM  408 . 
     At block  702 , the DFM  408  receives messages from the connectivity adapter  206 . As discussed above, the messages may reflect the current state of the infusion pumps  204  connected to the connectivity adapter  206  and may be in the standardized dataset format. 
     At block  704 , the DFM  408  detects missing messages. For example, the DFM  408  may detect one or more missing messages based on missing message IDs (i.e. after receiving a message with a message ID that does not immediately follow the message ID of the immediately prior message). 
     At block  706 , the DFM  408  generates a request for the missing messages for transmission to the connectivity adapter  206 . For example, the DFM  408  may wait until the number of missing messages reaches a threshold number (e.g., for a single pump or for a single connectivity adapter), and request the missing messages in bulk (e.g., under a single request). The generated request may be added to the outbound queue  408 B. 
     At block  708 , the DFM  408  transmits the request to the connectivity adapter  206 . Upon receiving the request, the connectivity adapter  206  may generate a corresponding request for the requested messages for transmission to the infusion pump  204 . 
     In the method  700 , one or more of the blocks shown in  FIG.  7    may be removed (e.g., not performed) and/or the order in which the method  700  is performed may be switched. In some embodiments, additional blocks may be added to the method  700 . The embodiments of the present disclosure are not limited to or by the example shown in  FIG.  7   , and other variations may be implemented without departing from the spirit of this disclosure. 
     Merging Messages into Cloud Cache 
     The DFM  408  may merge the messages received from the connectivity adapter  206  into the cache  408 A. In some cases, the DFM  408  merges a message into the cache  408 A upon determining that the current time is within a threshold time period from the time associated with the message. For example, the DFM  408  may determine that a message associated with an alert generated 5 hours ago was received too late for the message to be merged into the cache  408 A and refrain from merging the message into the cache  408 A. In some embodiments, all data stored in the cloud cache  408 A are received from the connectivity adapter  206 , and the cloud cache  408 A does not include any data that is not in the connectivity adapter  206  or was not previously processed by the connectivity adapter  206 . In other embodiments, the cloud cache  408 A stores drug library information, software update information, and the like that may not be in the connectivity adapter cache  206 C. In some embodiments, the DFM  408  pre-processes a portion of the data stored in the cache  408 A and/or pre-generates user interface data that may be requested by the clinical environment  102  and stores them in the cache  408 A for faster access. 
     Message Merging and Caching Method 
     With reference now to  FIG.  8   , an example message merging and caching method  800  will be described. The example method  800  may be carried out, for example, by the DFM  408  of  FIG.  5    (or one or more components thereof). The method  800  illustrates an example algorithm that may be programmed, using any suitable programming environment or language, to create machine code capable of execution by a CPU or microcontroller. Various embodiments may be coded using assembly, C, OBJECTIVE-C, C++, JAVA, or other human-readable languages and then compiled, assembled, or otherwise transformed into machine code that can be loaded into read-only memory (ROM), erasable programmable read-only memory (EPROM), or other recordable memory that is coupled to the CPU or microcontroller and then executed by the CPU or microcontroller. For example, when the method  800  is initiated, a set of executable program instructions stored on one or more non-transitory computer-readable media (e.g., hard drive, flash memory, removable media, etc.) may be loaded into memory (e.g., random access memory or “RAM”) of a computing device of the clinical environment  102  and/or the cloud environment  106 . The executable instructions may then be executed by a hardware-based computer processor (e.g., a central processing unit or “CPU”) of the computing device. In some embodiments, the method  800  or portions thereof may be implemented on multiple processors, serially or in parallel. For convenience, the steps of the example method  800  are described as being performed by the DFM  408 . 
     At block  802 , the DFM  408  receives a message from the connectivity adapter  206 . As discussed above, the message may reflect the current state of the infusion pump  204  connected to the connectivity adapter  206  and may be in the standardized dataset format. 
     At block  804 , the DFM  408  merges the message into the cache  408 A. In some cases, the DFM  408  determines whether the message is relevant to any potential UI generation requests (e.g., may be used to generate a UI provided to the clinical environment  102 ). Based on determining that the message is relevant to a potential UI generation request, the DFM  408  may merge the message into the cache  408 A. Alternatively, based on determining that the message is not relevant to a potential UI generation request, the DFM  408  may refrain from merging the message into the cache  408 A and merge the message into a database (e.g., database  414 ). In other embodiments, the DFM  408  may merge the message into the cache  408 A, and remove the information included in the message from the cache  408 A to the database  414  based on a determination that the message is not relevant to a potential UI generation request (e.g., after a specific time window). 
     At block  806 , the DFM  408  receives a request to generate a user interface (e.g., from the clinical environment  102 ). The user interface data to be generated may be based on information previously provided by the connectivity adapter  206  (e.g., pump status, infusion status, power status, etc.). 
     At block  808 , the DFM  408  accesses the cache  408 A for information to be used for generating the user interface. For example, the information may include the current state of a single infusion pump, multiple infusion pumps in communication with a single connectivity adapter at a single facility, multiple infusion pumps in communication with multiple connectivity adapters at a single facility, multiple infusion pumps at multiple facilities, or any combination thereof. 
     At block  810 , the DFM  408  provides the information accessed from the cache  408 A to other services such as the report manager  404  or the device manager  406 . Such services may generate the user interface and transmit the generated user interface to the clinical environment  102  (e.g., for presentation via the cloud user interface  208 ). In some cases, the requested user interface data are pre-generated by such services and stored in the cache  408 A. In such cases, the such services can simply access and transmit the user interface data stored in the cache  408 A to the clinical environment  102  or update the user interface data stored in the cache  408 A before transmitting them to the clinical environment  102 . 
     In the method  800 , one or more of the blocks shown in  FIG.  8    may be removed (e.g., not performed) and/or the order in which the method  800  is performed may be switched. In some embodiments, additional blocks may be added to the method  800 . The embodiments of the present disclosure are not limited to or by the example shown in  FIG.  8   , and other variations may be implemented without departing from the spirit of this disclosure. 
     Pump Message Conversion Method 
     With reference now to  FIG.  9   , an example pump message conversion method  900  connectivity adapter  206  of  FIG.  3    (or one or more components thereof). The method  900  illustrates an example algorithm that may be programmed, using any suitable programming environment or language, to create machine code capable of execution by a CPU or microcontroller of the connectivity adapter  206 . Various embodiments may be coded using assembly, C, OBJECTIVE-C, C++, JAVA, or other human-readable languages and then compiled, assembled, or otherwise transformed into machine code that can be loaded into read-only memory (ROM), erasable programmable read-only memory (EPROM), or other recordable memory of connectivity adapter  206  that is coupled to the CPU or microcontroller and then executed by the CPU or microcontroller. For example, when the method  900  is initiated, a set of executable program instructions stored on one or more non-transitory computer-readable media (e.g., hard drive, flash memory, removable media, etc.) may be loaded into memory (e.g., random access memory or “RAM”) of a computing device of the clinical environment  102  and/or the cloud environment  106 . The executable instructions may then be executed by a hardware-based computer processor (e.g., a central processing unit or “CPU”) of the computing device. In some embodiments, the method  900  or portions thereof may be implemented on multiple processors, serially or in parallel. For convenience, the steps of the example method  900  are described as being performed by the transformation worker  206 A. 
     At block  902 , the transformation worker  206 A detects a new type of infusion pump that uses a new pump protocol. For example, the transformation worker  206 A may check the device ID or protocol ID associated with the infusion pump and determine that the device ID or protocol ID does not match a predetermined list of device IDs or protocol IDs. 
     At block  904 , the transformation worker  206 A generates a connector (e.g., a software module or a set of computer executable instructions) for converting messages in the new pump protocol to the standardized dataset messages. For example, the transformation worker  206 A may download a new configuration file that can be used to implement the connector from the cloud environment  106 . Alternatively, the transformation worker  206 A may access the parameters included in a message in the new pump protocol and compare the parameters to the parameters in a standardized dataset message to generate a mapping between the two sets of parameters. 
     At block  906 , the transformation worker  206 A adds the connector between one or more infusion pumps using the new pump protocol. For example, the transformation worker  206 A may add the protocol ID to the list of mappings that the transformation worker  206 A is configured to perform. The transformation worker  206 A may add the protocol ID to the list of mappings that the transformation worker  206 A checks for upon receiving a pump message. 
     At block  908 , the transformation worker  206 A converts a message from the infusion pump using the new pump protocol to a standardized dataset message using the connector. 
     At block  910 , the transformation worker  206 A processes the converted message. For example, the transformation worker  206 A may send the message to the device status manager  206 B to be merged into the cache  206 C and/or added to the outbound queue  206 D. 
     In the method  900 , one or more of the blocks shown in  FIG.  9    may be removed (e.g., not performed) and/or the order in which the method  900  is performed may be switched. In some embodiments, additional blocks may be added to the method  900 . The embodiments of the present disclosure are not limited to or by the example shown in  FIG.  9   , and other variations may be implemented without departing from the spirit of this disclosure. 
     Cloud Authentication via Proxy 
       FIG.  10    illustrates a computing environment  1000  including user device  1002 , the clinical environment  102  including the connectivity adapter  206 , and the cloud environment  106  including authentication system  1004  and authentication proxy  1006 . As shown in  FIG.  10   , the authentication system  1004  may be configured to authenticate users based on login requests from the user devices  1002 , and provide cloud services to user devices  1002  that are successfully authenticated. In such cases, the user device  1002  may own user accounts created by the authentication system  1004  and provide the login credentials for the user accounts each time accessing the cloud services provided by the cloud environment  106 . 
     In some cases, the connectivity adapter  206  may be a network appliance and may lack the capability of managing and maintaining its own user account. In such cases, the connectivity adapter  206  may send an authentication request to the authentication proxy  1006  (e.g., via a connection such as a secured and authenticated Web Socket connection or another other TCP connection), and the authentication proxy  1006  may provide login credentials to the authentication system  1004  on behalf of the connectivity adapter  206  and receive a security token that can be used by the connectivity adapter  206  to generate a signed request. The connectivity adapter  206  may send the signed request to the authentication system  1004  (e.g., using HTTP), just as the authenticated user devices  1002  do in  FIG.  10   . In some cases, the connection between the connectivity adapter  206  and the authentication proxy  1006  utilize a different communications protocol (e.g., Web Socket) than the connection between the connectivity adapter  206  and the authentication system  1004  (e.g., HTTP). By using the authentication proxy  1006 , the connectivity adapter can utilize the cloud services provided by the cloud environment  106  without having to manage user accounts or login credentials. The authentication proxy  1006  may maintain one or more user accounts per clinical environment account. 
     Connectivity Adapter Authentication Method 
     With reference now to  FIG.  11   , an example connectivity adapter authentication method  1100  will be described. The example method  1100  may be carried out, for example, by the authentication proxy  1006  of  FIG.  10   . The method  1100  illustrates an example algorithm that may be programmed, using any suitable programming environment or language, to create machine code capable of execution by a CPU or microcontroller. Various embodiments may be coded using assembly, C, OBJECTIVE-C, C++, JAVA, or other human-readable languages and then compiled, assembled, or otherwise transformed into machine code that can be loaded into read-only memory (ROM), erasable programmable read-only memory (EPROM), or other recordable memory that is coupled to the CPU or microcontroller and then executed by the CPU or microcontroller. For example, when the method  1100  is initiated, a set of executable program instructions stored on one or more non-transitory computer-readable media (e.g., hard drive, flash memory, removable media, etc.) may be loaded into memory (e.g., random access memory or “RAM”) of a computing device of the clinical environment  102  and/or the cloud environment  106 . The executable instructions may then be executed by a hardware-based computer processor (e.g., a central processing unit or “CPU”) of the computing device. In some embodiments, the method  1100  or portions thereof may be implemented on multiple processors, serially or in parallel. For convenience, the steps of the example method  1100  are described as being performed by the authentication proxy  1006 . 
     At block  1102 , the authentication proxy  1006  receives an authentication request from the connectivity adapter  206  via a secured and authenticated Web Socket connection. For example, the Web Socket connection may be the connection via which the connectivity adapter  206  transmits messages to the cloud environment  106 . 
     At block  1104 , the authentication proxy  1006  identifies the login credentials of a user account to be used for authenticating the connectivity adapter  206 . For example, the authentication proxy  1006  may identify the user account based on one or more identifiers associated with the clinical environment  102 . In some embodiments, the clinical environment  102  is associated with one or more identifiers and has multiple regions, healthcare systems, and facilities therein. 
     At block  1106 , the authentication proxy  1006  transmits the login credentials to the authentication system  1004 , and at block  1108 , the authentication proxy  1006  receives a security token from the authentication system  1004 . 
     At block  1110 , the authentication proxy  1006  transmits the security token to the connectivity adapter  206 , and at block  1112 , the authentication proxy  1006  causes the connectivity adapter  206  to transmit a signed request to the authentication system using HTTP. 
     In the method  1100 , one or more of the blocks shown in  FIG.  11    may be removed (e.g., not performed) and/or the order in which the method  1100  is performed may be switched. In some embodiments, additional blocks may be added to the method  1100 . The embodiments of the present disclosure are not limited to or by the example shown in  FIG.  11   , and other variations may be implemented without departing from the spirit of this disclosure. 
     Data Segmentation 
       FIG.  12    shows a block diagram illustrating a segmented data structure  1200  including an account data node  1202 , which includes region data nodes  1204  and  1206 . The region data node  1204  includes system data node  1208 , and the region data node  1206  includes system data nodes  1210  and  1212 . The system data node  1208  includes facility data node  1214 . As shown in  FIG.  12   , facility data node that used to belong to the system data node  1208  has been moved to the system data node  1210 , which further includes facility data node  1218 . The system data node  1212  includes facility data node  1220 . As shown in  FIG.  12   , the facility data node includes infusion pumps  1218 A,  1218 B,  1218 C, etc. The account data node  1202  corresponds to an account generated for each unique entity that may own, oversee, and/or manage one or more healthcare facilities (e.g., hospital facilities) in one or more healthcare systems (e.g., a network of hospitals) in one or more regions (e.g., geographical divisions including multiple networks of hospitals). For example, the clinical environment  102  may correspond to any of a facility, system, region, or account. 
     In some embodiments, the data generated by the infusion pumps  204  and/or the connectivity adapters  206  at the individual facilities may be tagged with the facility ID and the account ID, since those two identifiers may be permanent. For example, the connectivity adapter  206  may receive a message from the infusion pump  204 , convert the message into a standardized dataset message, and inject one or more tags into the standardized dataset message by adding or setting one or more corresponding key-value pairs (e.g., facilityID=F0293, accountID=A29847, etc.) in the standardized dataset message. On the other hand, as the facilities are restructured and moved around within the enterprise structure, the data corresponding to the facilities may be assigned a different system ID or region ID. For example, in the example of  FIG.  12   , the facility data node  1216  has been moved from the system data node  1208  to system data node  1210  (e.g., representative of a change in the boundary between two regions), the data generated at the facility corresponding to the facility data node  1216 , while still belonging to the facility data node  1216  and account data node  1202 , no longer belongs to the system data node  1208  and region data node  1204 , and instead belongs to the system data node  1210  and region data node  1206 . Thus, by tagging the messages prior to transmitting them to the cloud environment  106  with immutable IDs (e.g., facility ID and account ID) and not IDs that may or may not change in the future, the connectivity adapter  206  facilitates security control, access, filtering, and reporting of such data. Further, as a result, the infusion pumps  204  need not be aware or keep track of the facility to which they are connected, since any messages or other data generated by the infusion pumps  204  will be appropriately tagged by the connectivity adapter  206  to which they are connected. For example, if an infusion pump is moved from one facility to another, the infusion pump can simply start sending messages to the connectivity adapter  206  at the new facility without worrying about the change in facility, since any new data generated by the infusion pump at the new facility will be tagged with the new facility ID by the new connectivity adapter  206 . Further, by allowing the facilities to be moved across systems and regions, the segmented data structure  1200  allows facilities having one characteristic to be decoupled from other facilities having another characteristic (e.g., EHR vendor A vs. EHR vendor B, pump type X vs. pump type Y, etc.). 
     In some embodiments, data generated by the infusion pumps and/or connectivity adapters may include a facility ID and an account ID as immutable (permanent) IDs, and may include one or more mutable IDs such as a region ID and a system ID. The IDs associated with the data generated in a given facility may reflect the structural associations at the time of generation (old structure). When the facility is later restructured (new structure), the new structure is used in connection with the data (e.g., for reporting the data) and the prior mutable IDs may be ignored or updated as needed. Thus, data records are tagged based on the structure (e.g., account, region, system, facility) at the time that the data records are created. When the structure is subsequently modified, the system can (i) continue to use the data records as tagged at the time of creation despite the changes, (ii) update the mutable IDs to reflect the modified structure, and use the data records with the immutable IDs and updated mutable IDs, (iii) use the data records with only the immutable IDs (e.g., ignoring the mutable IDs), or (iv) use the data records with the immutable IDs and any mutable IDs that still reflect the modified structure. 
     Segmented Data Restructuring Method 
     With reference now to  FIG.  13   , an example segmented data restructuring method  1300  will be described. The example method  1300  may be carried out, for example, by the connectivity adapter  206  of  FIG.  3    (or one or more components thereof) or the cloud environment  106  of  FIG.  5    (or one or more components thereof). The method  1300  illustrates an example algorithm that may be programmed, using any suitable programming environment or language, to create machine code capable of execution by a CPU or microcontroller. Various embodiments may be coded using assembly, C, OBJECTIVE-C, C++, JAVA, or other human-readable languages and then compiled, assembled, or otherwise transformed into machine code that can be loaded into read-only memory (ROM), erasable programmable read-only memory (EPROM), or other recordable memory that is coupled to the CPU or microcontroller and then executed by the CPU or microcontroller. For example, when the method  1300  is initiated, a set of executable program instructions stored on one or more non-transitory computer-readable media (e.g., hard drive, flash memory, removable media, etc.) may be loaded into memory (e.g., random access memory or “RAM”) of a computing device of the clinical environment  102  and/or the cloud environment  106 . The executable instructions may then be executed by a hardware-based computer processor (e.g., a central processing unit or “CPU”) of the computing device. In some embodiments, the method  1300  or portions thereof may be implemented on multiple processors, serially or in parallel. For convenience, the steps of the example method  1300  are described as being performed by the connectivity adapter  206  and/or the cloud environment  106 . 
     At block  1302 , the connectivity adapter  206  receives a message from an infusion pump  204  at a facility (e.g., hospital). 
     At block  1304 , the connectivity adapter  206  adds an account ID and a facility ID to the message received from the infusion pump  204 . In some cases, the message from the infusion pump  204  may be converted to a standardized dataset message, and the account ID and facility ID may be added to the standardized dataset message. In some embodiments, the connectivity adapter  206  determines one or more IDs described herein (e.g., account ID, facility ID, region ID, system ID, etc.) associated with the infusion pump  204  by checking one or more indicators in a priority order. For example, the connectivity adapter  206  may determine a given indicator associated with the infusion pump  204  and access a database of facility IDs (or other IDs) to determine whether any of the facility IDs are associated with the determined indicator associated with the infusion pump  204 . The indicator may be one or more of (i) the network port via which the infusion pump  204  is connected to the connectivity adapter  206  (e.g., pumps associated with Facility A may connect via Port  9292 , pumps associated with Facility B may connect via Port  9293 , etc.), (ii) location data associated with the infusion pump  204 , (iii) the Internet Protocol (IP) address associated with the infusion pump  204 , (iv) the name associated with the infusion pump  204 , (v) the Media Access Control (MAC) address associated with the infusion pump  204 , (vi) the Wi-Fi access point associated with the infusion pump  204 , and (vii) the serial number associated with the infusion pump  204 . If the connectivity adapter  206  determines, after checking one or more of the indicators, that the facility ID (or another ID) cannot be found in the database, the connectivity adapter  206  may add a default facility ID to the message received from the infusion pump  204  at block  1304 , indicating that the pump message originated from an infusion pump not associated with a known facility. 
     In some embodiments, one or more of the indicators described herein are checked in a specific priority order. For example, the connectivity adapter  206  may first try to determine the facility ID (or another ID) based on the MAC address of the infusion pump  204 . If the connectivity adapter  206  does not find a facility ID matching the MAC address, the connectivity adapter  206  may then try to determine the facility ID based on the serial number of the infusion pump  204 . If the connectivity adapter  206  does not find a facility ID matching the serial number, the connectivity adapter  206  may then try to determine the facility ID based on the location data associated with the infusion pump  204 . If the connectivity adapter  206  does not find a facility ID matching the location data, the connectivity adapter  206  may add a default facility ID to the message received from the infusion pump  204  at block  1304 , indicating that the pump message originated from an infusion pump not associated with a known facility. Although the priority order of MAC address, serial number, and location data is used as an example, the techniques described herein can be applied to any other combination of indicators may be checked in any other priority order. 
     At block  1306 , the cloud environment  106  transfers the facility at which the infusion pump  204  is located to another system (e.g., a healthcare system or a network of facilities) without changing the account ID and the facility ID of the message. For example, the facility may be using the EMR system from vendor A, and all facilities using the EMR system from vendor A within the existing healthcare system may have been separated out to a new healthcare system. 
     At block  1308 , the cloud environment  106  updates the region ID and the system ID associated with the facility in which the infusion pump  204  is located. By updating the region ID and system ID of the facility, any new data generated in the facility may be accessible using the new region ID and system ID. Further, even after moving the facility  1216  from the system  1208  to the system  1210 , the pump messages generated by the infusion pumps at the facility  1216  may continue to be stamped, tagged, or otherwise associated with the same account ID and the facility ID as those used prior to the move. In some cases, when an infusion pump is physically moved to a new facility, the connectivity adapter  206  at the new facility may stamp, tag, or otherwise associate the pump messages generated by the infusion pump with a new facility ID corresponding to the new facility. 
     In the method  1300 , one or more of the blocks shown in  FIG.  13    may be removed (e.g., not performed) and/or the order in which the method  1300  is performed may be switched. In some embodiments, additional blocks may be added to the method  1300 . The embodiments of the present disclosure are not limited to or by the example shown in  FIG.  13   , and other variations may be implemented without departing from the spirit of this disclosure. 
     Example Clauses 
     Embodiments of the present disclosure can be defined by the following non-limiting clauses: 
     Clause 1. A system configured to facilitate messaging during a network outage, the system comprising: a plurality of infusion pumps configured to deliver medication to patients, each infusion pump of the plurality of infusion pumps comprising a memory configured to store operational software and a processor configured to generate pump messages; a connectivity adapter comprising computer hardware and in communication with the plurality of infusion pumps over a first network; and a server comprising computer hardware and in communication with the connectivity adapter over a second network different from the first network, wherein the connectivity adapter is configured to: receive a first pump message from a first infusion pump of the plurality of infusion pumps, the first pump message including information that is new to the connectivity adapter; generate a first standardized dataset message based on the information in the first pump message; store the first standardized dataset message in an outbound queue for transmission to the server; subsequent to storing the first standardized dataset message in the outbound queue, receive a second pump message from the first infusion pump, the second pump message including additional information that is new to the connectivity adapter; generate a second standardized dataset message based on the additional information in the second pump message; store the second standardized dataset message in the outbound queue for transmission to the server; remove the first standardized dataset message from the outbound queue without transmitting the first standardized dataset message to the server; and transmit the second standardized dataset message in the outbound queue to the server. 
     Clause 2. The system of Clause 1, wherein the first pump message includes a first message identifier (ID), and the second pump message includes a second message ID that immediately follows the first message ID in value. 
     Clause 3. The system of Clause 1, wherein the first standardized dataset message includes a first message identifier (ID), and the second standardized dataset message includes a second message ID that immediately follows the first message ID in value. 
     Clause 4. The system of Clause 1, wherein the first pump message includes a first parameter indicative of a status of the first infusion pump, and the first standardized dataset message includes (i) the first parameter and (ii) a second parameter that is not in the first pump message and indicative of another status of the first infusion pump. 
     Clause 5. The system of Clause 4, wherein the second parameter is associated with one of a null value or a default value. 
     Clause 6. The system of Clause 1, wherein the connectivity adapter is further configured to store the information in the first pump message in a cache. 
     Clause 7. The system of Clause 6, wherein the connectivity adapter is further configured to receive a third pump message from the first infusion pump, and based on determining that the third pump message does not include information new to the connectivity adapter, refrain from storing the information in the third pump message in the cache. 
     Clause 8. The system of Clause 1, wherein the connectivity adapter is further configured to update a parameter stored in a cache based on the information in the first pump message. 
     Clause 9. The system of Clause 1, wherein the connectivity adapter is further configured to, subsequent to removing the first standardized dataset message from the outbound queue without transmitting the first standardized dataset message to the server, receive a request for the first pump message from the server. 
     Clause 10. The system of Clause 9, wherein the connectivity adapter is further configured to, in response to the request for the first pump message, transmit a request for the first pump message to the first infusion pump. 
     Clause 11. A method of facilitating messaging during a network outage, the method comprising: receiving a first pump message from a first infusion pump over a first network; generating a first standardized dataset message based on the information in the first pump message; storing the first standardized dataset message in an outbound queue for transmission to a server over a second network different from the first network; subsequent to storing the first standardized dataset message in the outbound queue, receiving a second pump message from the first infusion pump over the first network; generating a second standardized dataset message based on the additional information in the second pump message; storing the second standardized dataset message in the outbound queue for transmission to the server; removing the first standardized dataset message from the outbound queue without transmitting the first standardized dataset message to the server; and transmitting the second standardized dataset message in the outbound queue to the server over the second network. 
     Clause 12. The method of Clause 11, wherein the first pump message includes a first message identifier (ID), and the second pump message includes a second message ID that immediately follows the first message ID in value. 
     Clause 13. The method of Clause 11, wherein the first standardized dataset message includes a first message identifier (ID), and the second standardized dataset message includes a second message ID that immediately follows the first message ID in value. 
     Clause 14. The method of Clause 11, wherein the first pump message includes a first parameter indicative of a status of the first infusion pump, and the first standardized dataset message includes (i) the first parameter and (ii) a second parameter that is not in the first pump message and indicative of another status of the first infusion pump. 
     Clause 15. The method of Clause 14, wherein the second parameter is associated with one of a null value or a default value. 
     Clause 16. The method of Clause 11, further comprising storing the information in the first pump message in a cache. 
     Clause 17. The method of Clause 16, further comprising receiving a third pump message from the first infusion pump, and based on determining that the third pump message does not include information new to the connectivity adapter, refraining from storing the information in the third pump message in the cache. 
     Clause 18. The method of Clause 11, further comprising updating a parameter stored in a cache based on the information in the first pump message. 
     Clause 19. The method of Clause 11, further comprising, subsequent to removing the first standardized dataset message from the outbound queue without transmitting the first standardized dataset message to the server, receiving a request for the first pump message from the server. 
     Clause 20. The method of Clause 19, further comprising, in response to the request for the first pump message, transmitting a request for the first pump message to the first infusion pump. 
     Clause 21. A system configured to facilitate messaging during a network outage, the system comprising: a plurality of infusion pumps configured to deliver medication to patients, each infusion pump of the plurality of infusion pumps comprising a memory configured to store operational software and a processor configured to generate pump messages; a connectivity adapter comprising computer hardware and in communication with the plurality of infusion pumps over a first network; and a server comprising computer hardware and in communication with the connectivity adapter over a second network different from the first network, wherein the connectivity adapter is configured to: receive a first pump message from a first infusion pump of the plurality of infusion pumps, the first pump message including information that is new to the connectivity adapter; generate a first standardized dataset message based on the information in the first pump message; store the first standardized dataset message in an outbound queue for transmission to the server; subsequent to storing the first standardized dataset message in the outbound queue, receive a second pump message from the first infusion pump, the second pump message including additional information that is new to the connectivity adapter; generate a second standardized dataset message based on the additional information in the second pump message; store the second standardized dataset message in the outbound queue for transmission to the server; determine whether a removal condition for removing the first standardized dataset message from the outbound queue without transmitting the first standardized dataset message to the server is satisfied; and subsequent to determining whether the removal condition is satisfied, removing the first standardized dataset message from the outbound queue. 
     Clause 22. The system of Clause 21, wherein the connectivity adapter is further configured to, subsequent to determining that the removal condition is satisfied, remove the first standardized dataset message from the outbound queue without transmitting the first standardized dataset message to the server. 
     Clause 23. The system of Clause 21, wherein the connectivity adapter is further configured to, subsequent to determining that the removal condition is not satisfied, remove the first standardized dataset message from the outbound queue and transmit the first standardized dataset message to the server. 
     Clause 24. The system of Clause 22 or 23, wherein determining whether the removal condition is satisfied comprises determining whether the first standardized dataset message has been in the outbound queue for a time period greater than a threshold time period. 
     Clause 25. The system of Clause 22 or 23, wherein determining whether the removal condition is satisfied comprises determining whether the outbound queue includes a number of messages that is greater than a threshold number of messages. 
     Clause 26. The system of Clause 22 or 23, wherein the first pump message includes a first message identifier (ID), and the second pump message includes a second message ID that immediately follows the first message ID in value. 
     Clause 27. The system of Clause 22 or 23, wherein the first standardized dataset message includes a first message identifier (ID), and the second standardized dataset message includes a second message ID that immediately follows the first message ID in value. 
     Clause 28. The system of Clause 22 or 23, wherein the first pump message includes a first parameter indicative of a status of the first infusion pump, and the first standardized dataset message includes (i) the first parameter and (ii) a second parameter that is not in the first pump message and indicative of another status of the first infusion pump. 
     Clause 29. The system of Clause 28, wherein the second parameter is associated with one of a null value or a default value. 
     Clause 30. The system of Clause 22 or 23, wherein the connectivity adapter is further configured to store the information in the first pump message in a cache. 
     Clause 31. The system of Clause 30, wherein the connectivity adapter is further configured to receive a third pump message from the first infusion pump, and based on determining that the third pump message does not include information new to the connectivity adapter, refrain from storing the information in the third pump message in the cache. 
     Clause 32. The system of Clause 22 or 23, wherein the connectivity adapter is further configured to update a parameter stored in a cache based on the information in the first pump message. 
     Clause 33. The system of Clause 22, wherein the connectivity adapter is further configured to, subsequent to removing the first standardized dataset message from the outbound queue without transmitting the first standardized dataset message to the server, receive a request for the first pump message from the server. 
     Clause 34. The system of Clause 33, wherein the connectivity adapter is further configured to, in response to the request for the first pump message, transmit a request for the first pump message to the first infusion pump. 
     Clause 35. A method for providing messaging in a clinical environment, the method comprising: storing a plurality of messages in a message queue, wherein the plurality of messages contain information about one or more infusion pumps residing in the clinical environment, the plurality of messages stored in the message queue including at least a first message and a second message; transmitting at least some of the plurality of messages to a remote server configured to receive messages generated in the clinical environment; subsequent to the transmission, detecting a network outage, wherein the network outage prevents transmission of messages to the remote server; determining that the first message in the message queue satisfies a condition for being removed from the message queue without being successfully transmitted to the remote server; removing the first message from the message queue such that the first message is removed from the message queue prior to being received by the remote server; determining that the network outage has been resolved; and transmitting the second message to the remote server such that the second message is received by the remote server and the first message is not received by the remote server. 
     Clause 36. The method of Clause 35, further comprising detecting the network outage based at least on not having received an acknowledgement from the remote server during a specific time window. 
     Clause 37. The method of Clause 35, further comprising detecting the network outage based at least on receiving a message from the remote server that a connection to the remote server is terminated. 
     Clause 38. The method of Clause 35, further comprising determining that the first message satisfies the condition based at least on the first message being associated with an infusion pump event that is older than a threshold amount of time. 
     Clause 39. The method of Clause 35, further comprising determining that the first message satisfies the condition based at least on the first message being the oldest message in the message queue. 
     Clause 40. The method of Clause 35, further comprising determining that the first message satisfies the condition based at least on the message queue being full. 
     Clause 41. The method of Clause 35, further comprising attempting, prior to determining that the first message satisfies the condition, to transmit the first message to the remote server, and determining that the first message was not received by the remote server. 
     Clause 42. An apparatus configured to provide messaging in a clinical environment, the apparatus comprising: one or more processors; and one or more memories in communication with the one or more processors and storing computer-executable instructions that, when executed by the one or more processors, configure the one or more processors to: cause a plurality of messages to be stored in a message queue, wherein the plurality of messages contain information about one or more infusion pumps residing in the clinical environment, the plurality of messages stored in the message queue including at least a first message and a second message; cause at least some of the plurality of messages to be transmitted to a remote server configured to receive messages generated in the clinical environment; subsequent to the transmission, determine that the first message in the message queue satisfies a condition for being removed from the message queue; cause the first message to be removed from the message queue such that the first message is removed from the message queue prior to being received by the remote server; and cause the second message to be transmitted to the remote server such that the second message is received by the remote server and the first message is not received by the remote server. 
     Clause 43. The apparatus of Clause 42, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to detect a network outage that prevents transmission of messages to the remote server. 
     Clause 44. The apparatus of Clause 43, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to detect the network outage based at least on not having received an acknowledgement from the remote server during a specific time window. 
     Clause 45. The apparatus of Clause 43, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to detect the network outage based at least on receiving a message from the remote server that a connection to the remote server is terminated. 
     Clause 46. The apparatus of Clause 42, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to determine that the first message satisfies the condition based at least on the first message being associated with an infusion pump event that is older than a threshold amount of time. 
     Clause 47. The apparatus of Clause 42, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to determine that the first message satisfies the condition based at least on the first message being the oldest message in the message queue. 
     Clause 48. The apparatus of Clause 42, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to determine that the first message satisfies the condition based at least on the message queue being full. 
     Clause 49. The apparatus of Clause 42, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to attempt, prior to determining that the first message satisfies the condition, to transmit the first message to the remote server, and determine that the first message was not received by the remote server. 
     Clause 50. Non-transitory physical computer storage storing computer-executable instructions that, when executed by one or more computing devices, configure the one or more computing devices to: cause a plurality of messages to be stored in a message queue, wherein the plurality of messages contain information about one or more infusion pumps residing in the clinical environment, the plurality of messages stored in the message queue including at least a first message and a second message; cause at least some of the plurality of messages to be transmitted to a remote server configured to receive messages generated in the clinical environment; subsequent to the transmission, determine that the first message in the message queue satisfies a condition for being removed from the message queue; cause the first message to be removed from the message queue such that the first message is removed from the message queue prior to being received by the remote server; and cause the second message to be transmitted to the remote server such that the second message is received by the remote server and the first message is not received by the remote server. 
     Clause 51. The non-transitory physical computer storage of Clause 50, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to detect a network outage that prevents transmission of messages to the remote server. 
     Clause 52. The non-transitory physical computer storage of Clause 50, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to determine that the first message satisfies the condition based at least on the first message being associated with an infusion pump event that is older than a threshold amount of time. 
     Clause 53. The non-transitory physical computer storage of Clause 50, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to determine that the first message satisfies the condition based at least on the first message being the oldest message in the message queue. 
     Clause 54. The non-transitory physical computer storage of Clause 50, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to attempt, prior to determining that the first message satisfies the condition, to transmit the first message to the remote server, and determine that the first message was not received by the remote server. 
     Clause 55. A method for providing messaging in a clinical environment, the method comprising: storing a plurality of messages in a message queue, wherein the plurality of messages contain information about one or more infusion pumps residing in the clinical environment, the plurality of messages stored in the message queue including at least a first message; transmitting at least some of the plurality of messages to a remote server configured to receive messages generated in the clinical environment; subsequent to the transmission, detecting a temporary interruption in a network connection to the remote server, wherein the temporary interruption prevents transmission of messages to the remote server; determining that the first message in the message queue does not satisfy a condition for being removed from the message queue without being successfully transmitted to the remote server; determining that the temporary interruption has been resolved; and transmitting the first message to the remote server such that the first message is received by the remote server. 
     Clause 56. The method of Clause 55, further comprising detecting the temporary interruption based at least on not having received an acknowledgement from the remote server during a specific time window. 
     Clause 57. The method of Clause 55, further comprising detecting the temporary interruption based at least on receiving a message from the remote server that a connection to the remote server is terminated. 
     Clause 58. The method of Clause 55, further comprising determining that the first message does not satisfy the condition based at least on the first message being associated with an infusion pump event that is not older than a threshold amount of time. 
     Clause 59. The method of Clause 55, further comprising determining that the first message does not satisfy the condition based at least on the first message not being a time-sensitive message. 
     Clause 60. The method of Clause 55, further comprising attempting, prior to determining that the first message does not satisfy the condition, to transmit the first message to the remote server, and determining that the first message was not received by the remote server. 
     Clause 61. An apparatus configured to provide messaging in a clinical environment, the apparatus comprising: one or more processors; and one or more memories in communication with the one or more processors and storing computer-executable instructions that, when executed by the one or more processors, configure the one or more processors to: cause a plurality of messages to be stored in a message queue, wherein the plurality of messages contain information about one or more infusion pumps residing in the clinical environment, the plurality of messages stored in the message queue including at least a first message; cause at least some of the plurality of messages to be transmitted to a remote server configured to receive messages generated in the clinical environment; subsequent to the transmission, determine that the first message in the message queue does not satisfy a condition for being removed from the message queue; and cause the first message to be transmitted to the remote server such that the first message is received by the remote server. 
     Clause 62. The apparatus of Clause 61, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to detect an interruption in a network connection between the apparatus and the remote server that prevents transmission of messages from the apparatus to the remote server. 
     Clause 63. The apparatus of Clause 62, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to detect the interruption based at least on not having received an acknowledgement from the remote server during a specific time window. 
     Clause 64. The apparatus of Clause 62, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to detect the interruption based at least on receiving a message from the remote server that the network connection between the apparatus and the remote server is terminated. 
     Clause 65. The apparatus of Clause 61, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to determine that the first message does not satisfy the condition based at least on the first message being associated with an infusion pump event that is not older than a threshold amount of time. 
     Clause 66. The apparatus of Clause 61, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to determine that the first message does not satisfy the condition based at least on the first message not being a time-sensitive message. 
     Clause 67. The apparatus of Clause 61, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to attempt, prior to determining that the first message does not satisfy the condition, to transmit the first message to the remote server, and determine that the first message was not received by the remote server. 
     Clause 68. Non-transitory physical computer storage storing computer-executable instructions that, when executed by one or more computing devices, configure the one or more computing devices to: cause a plurality of messages to be stored in a message queue, wherein the plurality of messages contain information about one or more infusion pumps residing in the clinical environment, the plurality of messages stored in the message queue including at least a first message; cause at least some of the plurality of messages to be transmitted to a remote server configured to receive messages generated in the clinical environment; subsequent to the transmission, determine that the first message in the message queue does not satisfy a condition for being removed from the message queue; and cause the first message to be transmitted to the remote server such that the first message is received by the remote server. 
     Clause 69. The non-transitory physical computer storage of Clause 68, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to detect an interruption in a network connection to the remote server that prevents transmission of messages to the remote server. 
     Clause 70. The non-transitory physical computer storage of Clause 69, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to detect the interruption based at least on not having received an acknowledgement from the remote server during a specific time window. 
     Clause 71. The non-transitory physical computer storage of Clause 69, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to detect the interruption based at least on receiving a message from the remote server that the network connection to the remote server is terminated. 
     Clause 72. The non-transitory physical computer storage of Clause 68, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to determine that the first message does not satisfy the condition based at least on the first message being associated with an infusion pump event that is not older than a threshold amount of time. 
     Clause 73. The non-transitory physical computer storage of Clause 68, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to determine that the first message does not satisfy the condition based at least on the first message not being a time-sensitive message. 
     Clause 74. The non-transitory physical computer storage of Clause 68, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to attempt, prior to determining that the first message does not satisfy the condition, to transmit the first message to the remote server, and determine that the first message was not received by the remote server. 
     Clause 75. A method for detecting missing messages from a clinical environment, the method comprising: processing a plurality of messages from a network device residing in the clinical environment, wherein the plurality of messages contain information about one or more infusion pumps residing in the clinical environment, wherein the plurality of messages includes a first message having a first message identifier value and a second message having a second message identifier value; determining that one or more messages are missing between the first message and the second message based on (i) receiving the second message after the first message without receiving any other message therebetween and (ii) determining that there is at least one message identifier value between the first message identifier value and the second message identifier value in a predetermined sequence; and transmitting a message request to the network device residing in the clinical environment, wherein the message request identifies the one or more messages that should have been received from the network device but have not been received. 
     Clause 76. The method of Clause 75, further comprising, in response to the message request, receiving one or more additional messages from the network device, wherein the one or more messages include information that would have been included in the one or more messages. 
     Clause 77. The method of Clause 76, further comprising updating, based at least on the one or more additional messages received in response to the message request, a cache to include additional information about the one or more infusion pumps residing in the clinical environment. 
     Clause 78. The method of Clause 75, further comprising causing the network device to request additional information from the one or more infusion pumps that would have been included in the one or more messages. 
     Clause 79. The method of Clause 75, further comprising, in response to determining that the one or more messages has reached a threshold count, transmitting the message request to the network device residing in the clinical environment. 
     Clause 80. A system configured to detect missing messages from a clinical environment, the system comprising: one or more processors; and one or more memories in communication with the one or more processors and storing computer-executable instructions that, when executed by the one or more processors, configure the one or more processors to: process a plurality of messages from a network device residing in the clinical environment, wherein the plurality of messages contain information about one or more infusion pumps residing in the clinical environment; detect one or more missing messages that should have been received from the network device but have not been received; and cause a message request to be transmitted to the network device residing in the clinical environment, wherein the message request identifies the one or more missing messages that should have been received from the network device but have not been received. 
     Clause 81. The system of Clause 80, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to receive, in response to the message request, one or more additional messages from the network device, wherein the one or more messages include information that would have been included in the one or more missing messages. 
     Clause 82. The system of Clause 81, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to cause, based at least on the one or more additional messages received in response to the message request, a cache to be updated to include additional information about the one or more infusion pumps residing in the clinical environment. 
     Clause 83. The system of Clause 80, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to detect the one or more missing messages based at least on message identifier information associated with one or more of the plurality of messages. 
     Clause 84. The system of Clause 80, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to detect the one or more missing messages based at least on a first message in the plurality of messages having a message identifier that does not immediately follow another message identifier of a second message of the plurality of messages that immediately follows the first message. 
     Clause 85. The system of Clause 80, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to cause the network device to request additional information from the one or more infusion pumps that would have been included in the one or more missing messages. 
     Clause 86. The system of Clause 80, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to cause, in response to determining that the one or more missing messages has reached a threshold count, the message request to be transmitted to the network device residing in the clinical environment. 
     Clause 87. The system of Clause 80, wherein the message request includes a flag having a value indicating that the message request is a log retrieval request and not live data. 
     Clause 88. Non-transitory physical computer storage storing computer-executable instructions that, when executed by one or more computing devices, configure the one or more computing devices to: process a plurality of messages from a network device residing in the clinical environment, wherein the plurality of messages contain information about one or more infusion pumps residing in the clinical environment; detect one or more missing messages that should have been received from the network device but have not been received; and cause a message request to be transmitted to the network device residing in the clinical environment, wherein the message request identifies the one or more missing messages that should have been received from the network device but have not been received. 
     Clause 89. The non-transitory physical computer storage of Clause 88, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to receive, in response to the message request, one or more additional messages from the network device, wherein the one or more messages include information that would have been included in the one or more missing messages. 
     Clause 90. The non-transitory physical computer storage of Clause 89, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to cause, based at least on the one or more additional messages received in response to the message request, a cache to be updated to include additional information about the one or more infusion pumps residing in the clinical environment. 
     Clause 91. The non-transitory physical computer storage of Clause 88, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to detect the one or more missing messages based at least on message identifier information associated with one or more of the plurality of messages. 
     Clause 92. The non-transitory physical computer storage of Clause 88, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to detect the one or more missing messages based at least on a first message in the plurality of messages having a message identifier that does not immediately follow another message identifier of a second message of the plurality of messages that immediately follows the first message. 
     Clause 93. The non-transitory physical computer storage of Clause 88, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to cause the network device to request additional information from the one or more infusion pumps that would have been included in the one or more missing messages. 
     Clause 94. The non-transitory physical computer storage of Clause 88, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to cause, in response to determining that the one or more missing messages has reached a threshold count, the message request to be transmitted to the network device residing in the clinical environment. 
     Clause 95. A method for generating a user interface based on messages from a clinical environment, the method comprising: processing a message from a network device residing in the clinical environment, wherein the message includes information about one or more infusion pumps in communication with the network device in the clinical environment; determining that the information included in the message satisfies a condition for updating a cache to include at least some of the information included in the message, wherein the cache stores information usable to generate user interfaces in response to a request from a computing device residing in the clinical environment; updating the cache to include at least some of the information included in the message from the network device; receiving a request for a user interface from the computing device residing in the clinical environment; accessing, from the updated cache, user interface information to be used to generate the user interface, wherein the user interface information includes at least some of the information that the cache was updated to include; and outputting instructions for displaying the user interface on the computing device, wherein the instructions are based at least on the user interface information accessed from the updated cache. 
     Clause 96. The method of Clause 95, wherein the message includes information indicating a current state of the one or more infusion pumps. 
     Clause 97. The method of Clause 95, wherein the cache stores information associated with two or more infusion pumps residing in different medical facilities. 
     Clause 98. The method of Clause 95, wherein the user interface information includes user interface data previously generated and stored in the cache. 
     Clause 99. The method of Clause 95, further comprising updating user interface data stored in the cache, and outputting the instructions based at least on the updated user interface data. 
     Clause 100. The method of Clause 95, wherein the condition is satisfied based on the information in the message being usable to generate one or more user interfaces in response to a request from the clinical environment. 
     Clause 101. The method of Clause 95, further comprising causing the user interface to be outputted on a display of the computing device. 
     Clause 102. A system configured to detect missing messages from a clinical environment, the system comprising: one or more processors; and one or more memories in communication with the one or more processors and storing computer-executable instructions that, when executed by the one or more processors, configure the one or more processors to: process a message from a network device residing in the clinical environment, wherein the message includes information about one or more infusion pumps in communication with the network device in the clinical environment; determine that the information included in the message satisfies a condition for updating a cache to include at least some of the information included in the message, wherein the cache stores information usable to generate user interfaces in response to a request from a computing device residing in the clinical environment; cause the cache to be updated to include at least some of information included in the message from the network device; process a request for a user interface from the computing device residing in the clinical environment; access, from the updated cache, user interface information to be used to generate the user interface, wherein the user interface information includes at least some of the information that the cache was updated to include; and output instructions for displaying the user interface on the computing device, wherein the instructions are based at least on the user interface information accessed from the updated cache. 
     Clause 103. The system of Clause 102, wherein the message includes information indicating a current state of the one or more infusion pumps. 
     Clause 104. The system of Clause 102, wherein the cache is configured to store information associated with two or more infusion pumps residing in different medical facilities. 
     Clause 105. The system of Clause 102, wherein the user interface information includes user interface data previously generated and stored in the cache. 
     Clause 106. The system of Clause 102, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to cause user interface data stored in the cache to be updated, and output the instructions based at least on the updated user interface data. 
     Clause 107. The system of Clause 102, wherein the condition is satisfied based on the information in the message being usable to generate one or more user interfaces in response to a request from the clinical environment. 
     Clause 108. The system of Clause 102, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to cause the user interface to be outputted on a display of the computing device. 
     Clause 109. Non-transitory physical computer storage storing computer-executable instructions that, when executed by one or more computing devices, configure the one or more computing devices to: process a message from a network device residing in the clinical environment, wherein the message includes information about one or more infusion pumps in communication with the network device in the clinical environment; determine that the information included in the message satisfies a condition for updating a cache to include at least some of the information included in the message, wherein the cache stores information usable to generate user interfaces in response to a request from a computing device residing in the clinical environment; cause the cache to be updated to include at least some of information included in the message from the network device; process a request for a user interface from the computing device residing in the clinical environment; access, from the updated cache, user interface information to be used to generate the user interface, wherein the user interface information includes at least some of the information that the cache was updated to include; and output instructions for displaying the user interface on the computing device, wherein the instructions are based at least on the user interface information accessed from the updated cache. 
     Clause 110. The non-transitory physical computer storage of Clause 109, wherein the message includes information indicating a current state of the one or more infusion pumps. 
     Clause 111. The non-transitory physical computer storage of Clause 109, wherein the cache is configured to store information associated with two or more infusion pumps residing in different medical facilities. 
     Clause 112. The non-transitory physical computer storage of Clause 109, wherein the user interface information includes user interface data previously generated and stored in the cache. 
     Clause 113. The non-transitory physical computer storage of Clause 109, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to cause user interface data stored in the cache to be updated, and output the instructions based at least on the updated user interface data. 
     Clause 114. The non-transitory physical computer storage of Clause 109, wherein the condition is satisfied based on the information in the message being usable to generate one or more user interfaces in response to a request from the clinical environment. 
     Clause 115. A method for converting messages having one message format from infusion pumps residing in a clinical environment into messages having another message format, the method comprising: detecting a first pump protocol used by one or more infusion pumps in the clinical environment, the first pump protocol defining the first message format; generating a message converter configured to convert a pump message having the first message format into a standardized dataset message having a second message format different from the first message format and including at least some additional data or metadata not included in the pump message; receiving a first pump message from an infusion pump in the clinical environment, wherein the infusion pump is configured to generate pump messages using the first pump protocol; converting the first pump message into a standardized dataset message having the second message format using the message converter, wherein the standardized dataset message includes information associated with the infusion pump and includes at least some additional data or metadata not included in the first pump message; and transmitting the standardized dataset message to a remote server configured to receive standardized dataset messages. 
     Clause 116. The method of Clause 115, wherein the standardized dataset message includes one or more key-value pairs that are not included in the first pump message. 
     Clause 117. The method of Clause 116, wherein the one or more key-value pairs are each set to a default value or a null value. 
     Clause 118. The method of Clause 115, wherein the standardized dataset message includes identification data that identifies one or more portions of the standardized dataset message that include new information. 
     Clause 119. The method of Clause 115, further comprising detecting the first pump protocol based on a protocol identifier associated with the first pump protocol not being on a predetermined list of protocol identifiers. 
     Clause 120. The method of Clause 119, further comprising subsequent to detecting the first pump protocol, adding the protocol identifier associated with the first pump protocol to the predetermined list of protocol identifiers. 
     Clause 121. The method of Clause 115, wherein the message converter comprises a software module that is configured to receive a pump message in the first pump protocol as input and output a standardized dataset message based on the pump message. 
     Clause 122. The method of Clause 115, wherein the message converter is a configuration file downloaded from the remote server. 
     Clause 123. An apparatus configured to convert messages having one message format from infusion pumps residing in a clinical environment into messages having another message format, the apparatus comprising: one or more processors; and one or more memories in communication with the one or more processors and storing computer-executable instructions that, when executed by the one or more processors, configure the one or more processors to: detect a first pump protocol used by one or more infusion pumps in the clinical environment, the first pump protocol defining a first message format; generate a message converter configured to convert a pump message having the first message format into another message having a second message format different from the first message format and including at least some additional data or metadata not included in the pump message; receive a first message from an infusion pump in the clinical environment, wherein the infusion pump is configured to generate messages using the first pump protocol; cause the first message to be converted into a second message having the second message format using the message converter, wherein the second message includes information associated with the infusion pump and includes at least some additional data or metadata not included in the first message; and cause the second message to be transmitted to a remote server configured to receive messages having the second message format. 
     Clause 124. The apparatus of Clause 123, wherein the second message includes one or more key-value pairs that are not included in the first message. 
     Clause 125. The apparatus of Clause 124, wherein the one or more key-value pairs are each set to a default value or a null value. 
     Clause 126. The apparatus of Clause 123, wherein the second message includes identification data that identifies one or more portions of the second message that include new information. 
     Clause 127. The apparatus of Clause 123, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to detect the first pump protocol based on a protocol identifier associated with the first pump protocol not being on a predetermined list of protocol identifiers. 
     Clause 128. The apparatus of Clause 123, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to, subsequent to detecting the first pump protocol, cause the protocol identifier associated with the first pump protocol to be added to the predetermined list of protocol identifiers. 
     Clause 129. The apparatus of Clause 123, wherein the message converter comprises a software module that is configured to receive a pump message having the first message format as input and output another message having the second message format based on the pump message. 
     Clause 130. The apparatus of Clause 123, wherein the message converter is a configuration file downloaded from the remote server. 
     Clause 131. Non-transitory physical computer storage storing computer-executable instructions that, when executed by one or more computing devices, configure the one or more computing devices to: detect a first pump protocol used by one or more infusion pumps in the clinical environment, the first pump protocol defining a first message format; generate a message converter configured to convert a pump message having the first message format into another message having a second message format different from the first message format and including at least some additional data or metadata not included in the pump message; receive a first message from an infusion pump in the clinical environment, wherein the infusion pump is configured to generate messages using the first pump protocol; cause the first message to be converted into a second message having the second message format using the message converter, wherein the second message includes information associated with the infusion pump and includes at least some additional data or metadata not included in the first message; and cause the second message to be transmitted to a remote server configured to receive messages having the second message format. 
     Clause 132. The non-transitory physical computer storage of Clause 131, wherein the second message includes one or more key-value pairs that are not included in the first message, the one or more key-value pairs each having a default value or a null value. 
     Clause 133. The non-transitory physical computer storage of Clause 131, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to detect the first pump protocol based on a protocol identifier associated with the first pump protocol not being on a predetermined list of protocol identifiers, and subsequent to detecting the first pump protocol, cause the protocol identifier associated with the first pump protocol to be added to the predetermined list of protocol identifiers. 
     Clause 134. The non-transitory physical computer storage of Clause 131, wherein the message converter comprises a software module that is downloaded from the remote server, the message converter being configured to receive a pump message having the first message format as input and output another message having the second message format based on the pump message. 
     Clause 135. A method for authenticating a network device residing in a clinical environment using a token, the method comprising: processing an authentication request from the network device residing in the clinical environment via a first network connection, wherein the authentication request includes identifying information associated with the clinical environment, and wherein the clinical environment includes one or more infusion pumps in communication with the network device; identifying login credentials to be used to authenticate the network device residing in the clinical environment; transmitting the login credentials to an authentication system configured to authenticate requests from the network device residing in the clinical environment via a second network connection different from the first network connection; receiving a security token from the authentication system, the security token being usable by the network device to transmit requests to the authentication system via the second network connection; and transmitting the security token to the network device residing in the clinical environment via the first network connection. 
     Clause 136. The method of Clause 135, wherein the first network connection is a Web Socket connection. 
     Clause 137. The method of Clause 135, wherein the first network connection is secured and authenticated. 
     Clause 138. The method of Clause 135, further comprising causing the network device residing in the clinical environment to transmit a signed request to the authentication system. 
     Clause 139. The method of Clause 135, wherein the first network connection and the second network connection are both established over a wide area network. 
     Clause 140. The method of Clause 135, further comprising receiving a message from the network device residing in the clinical environment via the first network connection, wherein the messages include information associated with the one or more infusion pumps in communication with the network device. 
     Clause 141. The method of Clause 140, wherein the network device is configured to communicate with the one or more infusion pumps over a local area network. 
     Clause 142. A system configured to authenticate a network device residing in a clinical environment using a token, the system comprising: one or more processors; and one or more memories in communication with the one or more processors and storing computer-executable instructions that, when executed by the one or more processors, configure the one or more processors to: process an authentication request from the network device residing in the clinical environment via a first network connection, wherein the authentication request includes identifying information associated with the clinical environment, and wherein the clinical environment includes one or more infusion pumps in communication with the network device; identify login credentials to be used to authenticate the network device residing in the clinical environment; cause the login credentials to be transmitted to an authentication system configured to authenticate requests from the network device residing in the clinical environment via a second network connection different from the first network connection; receive a security token from the authentication system, the security token being usable by the network device to transmit requests to the authentication system via the second network connection; and cause the security token to be transmitted to the network device residing in the clinical environment via the first network connection. 
     Clause 143. The system of Clause 142, wherein the first network connection is a Web Socket connection. 
     Clause 144. The system of Clause 142, wherein the first network connection is secured and authenticated. 
     Clause 145. The system of Clause 142, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to cause the network device residing in the clinical environment to transmit a signed request to the authentication system. 
     Clause 146. The system of Clause 142, wherein the first network connection and the second network connection are both established over a wide area network. 
     Clause 147. The system of Clause 142, wherein the computer-executable instructions, when executed by the one or more processors, further configure the one or more processors to receive a message from the network device residing in the clinical environment via the first network connection, wherein the messages include information associated with the one or more infusion pumps in communication with the network device. 
     Clause 148. The system of Clause 147, wherein the network device is configured to communicate with the one or more infusion pumps over a local area network. 
     Clause 149. Non-transitory physical computer storage storing computer-executable instructions that, when executed by one or more computing devices, configure the one or more computing devices to: process an authentication request from the network device residing in the clinical environment via a first network connection, wherein the authentication request includes identifying information associated with the clinical environment, and wherein the clinical environment includes one or more infusion pumps in communication with the network device; identify login credentials to be used to authenticate the network device residing in the clinical environment; cause the login credentials to be transmitted to an authentication system configured to authenticate requests from the network device residing in the clinical environment via a second network connection different from the first network connection; receive a security token from the authentication system, the security token being usable by the network device to transmit requests to the authentication system via the second network connection; and cause the security token to be transmitted to the network device residing in the clinical environment via the first network connection. 
     Clause 150. The non-transitory physical computer storage of Clause 149, wherein the first network connection is a secured and authenticated Web Socket connection. 
     Clause 151. The non-transitory physical computer storage of Clause 149, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to cause the network device residing in the clinical environment to transmit a signed request to the authentication system. 
     Clause 152. The non-transitory physical computer storage of Clause 149, wherein the first network connection and the second network connection are both established over a wide area network. 
     Clause 153. The non-transitory physical computer storage of Clause 149, wherein the computer-executable instructions, when executed by the one or more computing devices, further configure the one or more computing devices to receive a message from the network device residing in the clinical environment via the first network connection, wherein the messages include information associated with the one or more infusion pumps in communication with the network device. 
     Clause 154. The non-transitory physical computer storage of Clause 149, wherein the condition is satisfied based on the information in the message being usable to generate one or more user interfaces in response to a request from the clinical environment. 
     Clause 155. A method for tagging messages from infusion pumps residing in a clinical environment, the method comprising: processing a pump message including information about an infusion pump residing in the clinical environment; tagging the pump message with a facility identifier indicative of a facility associated with the infusion pump and an account identifier indicative of an account associated with the infusion pump, wherein the facility is below the account in a hierarchical structure, and wherein the hierarchical structure includes one or more intermediate levels that are between the facility and the account in the hierarchical structure; and transmitting the tagged pump message to a remote server such that the facility identifier of the tagged pump message and the account identifier of the tagged message need not be changed by the remote server in response to the facility being moved within the hierarchical structure. 
     Clause 156. The method of Clause 155, wherein the facility identifier and the account identifier are permanent identifiers that are not changed in response to the facility being moved to another system or region in the hierarchical structure. 
     Clause 157. The method of Clause 155, wherein the infusion pump is configured to generate pump messages without determining the facility associated with the infusion pump or the account associated with the infusion pump. 
     Clause 158. The method of Clause 155, further comprising determining, in a priority order, whether one or more facility detection indicators correspond to one of a plurality of facility identifiers stored in a database. 
     Clause 159. The method of Clause 158, further comprising, in response to determining that none of the one or more facility detection indicators corresponds to any of the plurality of facility identifiers stored in the database, tagging the pump message with a default facility identifier indicating that the pump message originated from an infusion pump that is not associated with a known facility. 
     Clause 160. The method of Clause 155, further comprising tagging the pump message with a first intermediate identifier indicative of a first intermediate level of the one or more intermediate levels such that the tagged pump message includes the facility identifier, the account identifier, and the first intermediate identifier. 
     Clause 161. The method of Clause 160, in response to determining that the facility is no longer associated with the first intermediate level in the hierarchical structure, updating the first intermediate identifier, such that the tagged pump message includes the updated first intermediate identifier. 
     Clause 162. The method of Clause 155, wherein processing the pump message comprises converting a message in a first format received from the infusion pump into the pump message in a second format different from the first format. 
     Clause 163. An apparatus configured to tag messages from infusion pumps residing in a clinical environment, the apparatus comprising: one or more processors; and one or more memories in communication with the one or more processors and storing computer-executable instructions that, when executed by the one or more processors, configure the one or more processors to: process a pump message including information about an infusion pump residing in the clinical environment; cause the pump message to be tagged with a facility identifier indicative of a facility associated with the infusion pump and an account identifier indicative of an account associated with the infusion pump, wherein the facility is below the account in a hierarchical structure, and wherein the message is not tagged with at least one other identifier indicative of an intermediate level that is between the facility and the account in the hierarchical structure; and cause the tagged pump message to be transmitted to a remote server such that the facility identifier of the tagged pump message and the account identifier of the tagged message need not be changed by the remote server in response to the facility being moved within the hierarchical structure. 
     Clause 164. The apparatus of Clause 163, wherein the facility identifier and the account identifier are permanent identifiers that are not changed in response to the facility being moved within the hierarchical structure. 
     Clause 165. The apparatus of Clause 163, wherein the facility identifier and the account identifier are permanent identifiers that are not changed in response to the facility being moved to another system or region in the hierarchical structure. 
     Clause 166. The apparatus of Clause 163, wherein the infusion pump is configured to generate pump messages without determining the facility associated with the infusion pump or the account associated with the infusion pump. 
     Clause 167. The apparatus of Clause 163, wherein the computer-executable instructions further configure the one or more processors to cause the pump message to be tagged with a first intermediate identifier indicative of a first intermediate level of the one or more intermediate levels such that the tagged pump message includes the facility identifier, the account identifier, and the first intermediate identifier. 
     Clause 168. The apparatus of Clause 167, wherein the computer-executable instructions further configure the one or more processors to, in response to determining that the facility is no longer associated with the first intermediate level in the hierarchical structure, cause the first intermediate identifier to be updated, such that the tagged pump message includes the updated first intermediate identifier. 
     Clause 169. The apparatus of Clause 163, wherein processing the pump message comprises converting a message in a first format received from the infusion pump into the pump message in a second format different from the first format. 
     Clause 170. Non-transitory physical computer storage storing computer-executable instructions that, when executed by one or more computing devices, configure the one or more computing devices to: process a pump message including information about an infusion pump residing in the clinical environment; cause the pump message to be tagged with a facility identifier indicative of a facility associated with the infusion pump and an account identifier indicative of an account associated with the infusion pump, wherein the facility is below the account in a hierarchical structure, and wherein the message is not tagged with at least one other identifier indicative of an intermediate level that is between the facility and the account in the hierarchical structure; and cause the tagged pump message to be transmitted to a remote server such that the facility identifier of the tagged pump message and the account identifier of the tagged message need not be changed by the remote server in response to the facility being moved within the hierarchical structure. 
     Clause 171. The non-transitory physical computer storage of Clause 170, wherein the facility identifier and the account identifier are permanent identifiers that are not changed in response to the facility being moved to another system or region in the hierarchical structure. 
     Clause 172. The non-transitory physical computer storage of Clause 170, wherein the infusion pump is configured to generate pump messages without determining the facility associated with the infusion pump or the account associated with the infusion pump. 
     Clause 173. The non-transitory physical computer storage of Clause 170, wherein the intermediate level in the hierarchical structure is a system associated with the infusion pump or a region associated with the infusion pump. 
     Clause 174. The non-transitory physical computer storage of Clause 170, wherein processing the pump message comprises converting a message in a first format received from the infusion pump into the pump message in a second format different from the first format. 
     Other Considerations 
     It is to be understood that not necessarily all objects or advantages may be achieved in accordance with any particular embodiment described herein. Thus, for example, those skilled in the art will recognize that certain embodiments may be configured to operate in a manner that achieves or optimizes one advantage or group of advantages as taught herein without necessarily achieving other objects or advantages as may be taught or suggested herein. 
     Many other variations than those described herein will be apparent from this disclosure. For example, depending on the embodiment, certain acts, events, or functions of any of the algorithms described herein can be performed in a different sequence, can be added, merged, or left out altogether (e.g., not all described acts or events are necessary for the practice of the algorithms). Moreover, in certain embodiments, acts or events can be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors or processor cores or on other parallel architectures, rather than sequentially. In addition, different tasks or processes can be performed by different machines and/or computing systems that can function together. 
     The various illustrative logical blocks, modules, and algorithm elements described in connection with the embodiments disclosed herein can be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, and elements have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. The described functionality can be implemented in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the disclosure. 
     The various illustrative logical blocks and modules described in connection with the embodiments disclosed herein can be implemented or performed by a machine, such as a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor can be a microprocessor, but in the alternative, the processor can be a controller, microcontroller, or state machine, combinations of the same, or the like. A processor can include electrical circuitry configured to process computer-executable instructions. In another embodiment, a processor includes an FPGA or other programmable device that performs logic operations without processing computer-executable instructions. A processor can also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Although described herein primarily with respect to digital technology, a processor may also include primarily analog components. For example, some or all of the signal processing algorithms described herein may be implemented in analog circuitry or mixed analog and digital circuitry. A computing environment can include any type of computer system, including, but not limited to, a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a portable computing device, a device controller, or a computational engine within an appliance, to name a few. 
     The elements of a method, process, or algorithm described in connection with the embodiments disclosed herein can be embodied directly in hardware, in a software module stored in one or more memory devices and executed by one or more processors, or in a combination of the two. A software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of non-transitory computer-readable storage medium, media, or physical computer storage known in the art. An example storage medium can be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium can be integral to the processor. The storage medium can be volatile or nonvolatile. The processor and the storage medium can reside in an ASIC. The ASIC can reside in a user terminal. In the alternative, the processor and the storage medium can reside as discrete components in a user terminal. 
     Conditional language used herein, such as, among others, “can,” “might,” “may,” “e.g.,” and the like, unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements, and/or states. Thus, such conditional language is not generally intended to imply that features, elements and/or states are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without author input or prompting, whether these features, elements and/or states are included or are to be performed in any particular embodiment. The terms “comprising,” “including,” “having,” and the like are synonymous and are used inclusively, in an open-ended fashion, and do not exclude additional elements, features, acts, operations, and so forth. Also, the term “or” is used in its inclusive sense (and not in its exclusive sense) so that when used, for example, to connect a list of elements, the term “or” means one, some, or all of the elements in the list. Further, the term “each,” as used herein, in addition to having its ordinary meaning, can mean any subset of a set of elements to which the term “each” is applied. 
     Disjunctive language such as the phrase “at least one of X, Y, or Z,” unless specifically stated otherwise, is otherwise understood with the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present. 
     Unless otherwise explicitly stated, articles such as “a”, “an”, or “the” should generally be interpreted to include one or more described items. Accordingly, phrases such as “a device configured to” are intended to include one or more recited devices. Such one or more recited devices can also be collectively configured to carry out the stated recitations. For example, “a processor configured to carry out recitations A, B, and C” can include a first processor configured to carry out recitation A working in conjunction with a second processor configured to carry out recitations B and C. 
     While the above detailed description has shown, described, and pointed out novel features as applied to various embodiments, it will be understood that various omissions, substitutions, and changes in the form and details of the devices or algorithms illustrated can be made without departing from the spirit of the disclosure. As will be recognized, certain embodiments described herein can be implemented within a form that does not provide all of the features and benefits set forth herein, as some features can be used or practiced separately from others. All such modifications and variations are intended to be included herein within the scope of this disclosure. Further, additional embodiments created by combining any two or more features or techniques of one or more embodiments described herein are also intended to be included herein within the scope of this disclosure.