US20200092163A1 - Event notification in interconnected content-addressable storage systems - Google Patents
Event notification in interconnected content-addressable storage systems Download PDFInfo
- Publication number
- US20200092163A1 US20200092163A1 US16/550,127 US201916550127A US2020092163A1 US 20200092163 A1 US20200092163 A1 US 20200092163A1 US 201916550127 A US201916550127 A US 201916550127A US 2020092163 A1 US2020092163 A1 US 2020092163A1
- Authority
- US
- United States
- Prior art keywords
- event
- content
- addressable storage
- data
- notification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0686—Additional information in the notification, e.g. enhancement of specific meta-data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H30/00—ICT specially adapted for the handling or processing of medical images
- G16H30/20—ICT specially adapted for the handling or processing of medical images for handling medical images, e.g. DICOM, HL7 or PACS
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H50/00—ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics
- G16H50/30—ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics for calculating health indices; for individual health risk assessment
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16Z—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS, NOT OTHERWISE PROVIDED FOR
- G16Z99/00—Subject matter not provided for in other main groups of this subclass
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5061—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the interaction between service providers and their network customers, e.g. customer relationship management
- H04L41/5064—Customer relationship management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/104—Grouping of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H04L67/20—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/53—Network services using third party service providers
Definitions
- This disclosure relates to content-addressable storage (CAS) for handling, storing, and distributing medical imaging information and, more specifically, to event notification in interconnected content-addressable storage systems.
- CAS content-addressable storage
- Many files stored in computer systems contain data that is not expected to change over time.
- the percentage of files that are expected to remain unchanged can range up to 90% of all of the stored files. Examples of data and files that are expected to remain unchanged include medical images, images of cancelled bank checks, images collected by oil and gas exploration, surveillance videos, files containing television news clips, and many types of archival and historical data.
- Other files are expected to change regularly, such as a database file, a word processing document that is being edited, and any type of file that represents current state, such as a file holding cumulative email messages as they arrive.
- Stored files must be accessible. Further, they must be accessible whether it's the kind of data that changes quickly, such as a file storing current email, or whether it is the kind of data that will not change much over time, such as medical images.
- CAS technology can be used to store different types of data including, by way of example, data that does not change over time.
- a “handle” (not necessarily the location of the file in a directory) or a GUID (globally unique identifier) is created for each stored object. This handle can be created based on known techniques, such as hashing.
- Embodiments of the systems, methods, and devices described herein overcome problems of the prior art and enable management of interconnected content-addressable storage systems.
- event notification in an interconnected content-addressable storage system may include receiving a request for event notification of a particular type of event at a first content-addressable storage server (implemented on one or more computing devices) from a first application. Receiving a request to perform an action associated with an event of the particular event type at a second content-addressable storage server, where the first and second content-addressable storage servers are distinct and where the first and second content-addressable storage servers are both part of a content-addressable storage cloud.
- the embodiments may also include performing the action associated with the event of the particular event type at the second content-addressable storage server, and, upon performance of the action associated with the event of the particular event type at the second content-addressable storage server, propagating an event notification through the content-addressable storage cloud.
- the first content-addressable storage server may provide for notification to the first application of the event of the particular event type.
- notifications may be sent through the cloud using broadcasts or other methods.
- events notifications may be for storage, alteration, deletion, and/or reading of data in the content-addressable storage cloud or any other appropriate event or action. Numerous other embodiments are described herein.
- FIG. 1 illustrates a block diagram of an exemplary embodiment of a system for management of interconnected content-addressable storage systems.
- FIG. 2 is a block diagram representing an exemplary process for event notification in a system of interconnected content-addressable storage systems.
- FIG. 3 is a block diagram representing a second exemplary process for event notification in a system of interconnected content-addressable storage systems.
- FIG. 4 is a block diagram representing an exemplary process for providing a shared archive in a system of interconnected content-addressable storage systems.
- FIG. 5 illustrates a second block diagram of an exemplary embodiment of a system for content sharing with interconnected content-addressable storage systems.
- FIG. 6 is a block diagram representing an exemplary process for content sharing in a system of interconnected content-addressable storage systems.
- FIG. 7 is a block diagram representing an exemplary process for creating and managing virtual packages.
- FIG. 8 is a block diagram representing an exemplary data structure and data in a system of interconnected content-addressable storage systems.
- FIG. 9 is a block diagram representing an exemplary process for virtual package management in a system of interconnected content-addressable storage systems.
- FIG. 10 illustrates abstract representations of virtual packages.
- FIG. 11 is a block diagram representing an exemplary process for access control in a system of interconnected content-addressable storage systems.
- FIG. 12 is a block diagram representing an exemplary process for providing a file system interface in a system of interconnected content-addressable storage systems.
- FIG. 13 is a block diagram representing an exemplary process for encryption in a system of interconnected content-addressable storage systems.
- Various embodiments overcome one or more issues with the prior art. Other embodiments may overcome different issues with the prior art. For example, some embodiments overcome issues related to event notification, others: virtual packages, yet others: shared archives. Some embodiments overcome more than one issue.
- Some of the embodiments allow applications to subscribe to “events” that correspond to actions in the CAS cloud.
- the actions that may take place in the CAS cloud include, but are not limited to, the deposition, reading, alteration, or deletion of data.
- An application (or user) may subscribe for all such actions, or for only those related to a particular group, application, or individual performing the related action.
- DICOM provides no such event notification. Providing this event notification can simplify the process for an entity to become aware, for example, of new file about which it is interested, regardless of where they are deposited in the CAS cloud. In systems that did not take advantage of event notifications embodiments herein, learning of new files in which the application is interested can be complicated.
- a radiology department in Virginia wanted to know if there were new X-rays to analyze from hospitals around the country, then they (e.g., the IT department in Virginia) might set up polling programs that would check specific directories at each hospital (and possibly more than one directory at each hospital). Even in a static national network environment without technical issues, this would be a cumbersome task—and would likely have many technical challenges related to communicating through firewalls, mixed authentication standards, varieties of network and communications capabilities, and ensuring compliance to various standards (e.g., HIPAA or “Health Insurance Portability and Accountability Act”).
- a radiology department's application may subscribe to the deposition of medical images by PACS machines into a particular file directory (perhaps mirrored to the CAS cloud as a bitfile)—or deposited directly into the CAS cloud.
- Those events may signal that the medical images should be analyzed by the team in Virginia.
- the team in Virginia receives those notifications without needing to perform the technical connection to the computer or server that deposited the files—and without checking any directories.
- the hospital in Virginia would receive event notification based on any events in that group (or any group to which subscribes).
- the CAS cloud can even provide the necessary access control. Related examples are discussed more below with respect to FIG. 4 .
- the separate DICOM (or other types of) servers may each have their own identifiers for patients that the doctor may not be aware of Each server may also have separate access control (e.g., username and password)—and the doctor may not have log-in or other access information for each server. It would be difficult, extremely time consuming, and in many instances, impossible for the doctor to obtain patient data from all of these servers.
- Some embodiments herein provide parsing and archiving of data stored in the CAS cloud, and later search and retrieval of that data, the underlying files, and related data.
- the data may be stored to, for example, a network-attached storage (NAS) or other computer hard drive by a PACS machine, and simultaneously or subsequently copied to the CAS cloud.
- PACS machines may write data to drives as single files, often called “blobs.”
- the CAS cloud regardless of make or model of the PACS machine, will parse the information newly-written to the CAS cloud and add the information for the written data to the archive. For example, consider a PACS machine that writes a blob to its NAS drive that contains two X-rays and an MRI image with corresponding DICOM headers.
- Metadata is a broad term encompassing its plain and ordinary meaning, including but not limited to “data or a set of data that provides information about the data with which it is associated.”
- an X-ray or ultrasound file may have metadata attached thereto (e.g., as a DICOM header or XDS-I header) that describes the X-ray.
- the metadata may be stored in a structured header, as plain text, etc.
- some files may contain metadata.
- an analysis or report may contain metadata as part of the analysis or report (e.g., patient name, data, patient identifier, etc.).
- a user with appropriate permissions could search the archive and find (and retrieve) the X-rays and/or the MRI.
- the user could also search for and retrieve data that had been stored by other PACS machines, ultrasound machines, etc.
- the shared archive can look for related data. For example, if the doctor input a patient identifier for the search, the shared archive may look up that patient identifier in a master patient index to find equivalent entries. The shared archive could then look up related data based on the other patient identifiers from the master patient index. Further, the shared archive may look up related data that is obtained based on data that is retrieved as part of the search.
- the first response may be for a particular study.
- the study will have a unique identifier.
- the shared archive could then automatically query for all data related to that study number.
- One of the results of for the study number query may indicate that the patient previously had a different patient identifier.
- the shared archive could then look up all data for that previous identifier. This process may continue until all appropriate related data is found.
- a shared archive with related data search not only collects all of the related data in a way that it may be homogeneously searched, but also provides a way to find related data for queries.
- patient identifier is a broad term, encompassing its plain and ordinary meaning, including, but not limited to, “a number, reference, or code that represents a patient in a data system, such as a database, PACS, DICOM message, etc.”
- patient identifiers may include name, social security number, system-specific patient number, Unique Patient Identifier, patient account number, etc.
- Patient identifiers may also be a combination of one or more of these.
- a patient identifier may be a combination of patient name and social security number.
- Patient identifiers may also be unique to a patient across an organization, enterprise, nation, or all system (universal or global).
- Grouping data can be difficult in medical systems, yet it is very important. If a doctor would like to group all of the data related to a particular patient, study, series, etc., that doctor would have to find all of the files and burn them to a CD, DVD, or, more likely, numerous CDs or DVDs. In current systems, all of this data may be stored on separate PACS systems, DICOM servers, etc. As noted above and elsewhere herein, merely finding the data that the doctor would like to store package together is difficult or impossible in most systems. Finding the data may require translating patient identifiers from those used in one system to those used in another, mapping accession numbers, manipulating the use of certain data records, etc. Further, these difficulties may be encountered for each server (e.g., a DICOM server or PACS server).
- a DICOM server e.g., a DICOM server or PACS server.
- a doctor may not even know on which PACS, DICOM, or other server data resides. Even if the doctor knew on which server data resides, the doctor may not be able to find data related to a particular patient, study, series, etc. Further, even if the doctor could find all of this data, she may not be able to store the data to a single CD or DVD. Further, CDs and DVDs can get destroyed, lost, or, worse, fall into the wrong hands. Additionally, the person distributing the package of files may not be able to control the access to the files in the virtual package over time. For example, once a CD or DVD is distributed, even if it has embedded access control, that embedded access control would be static and could not change over time.
- Embodiments of virtual packages herein overcome one or more these issues.
- a doctor may choose to include related data, and, as described elsewhere herein, related data may be automatically discovered and retrieved in a manner that, in many cases, might not be possible for the doctor to do alone.
- the doctor can distribute the virtual package without concern for the size of the underlying files. Instead, the virtual package provides a smaller and much more manageable set of data than the underlying files. Additionally, the doctor need not be as concerned with ensuring proper access control.
- the CAS system provides access control for the files therein, including those in the virtual package. Further, the CAS system can provide access control that varies over time.
- access control is being implemented by the CAS system at the time that the files are being accessed. As such, if the access control needs to change over time (e.g., if a malpractice suit was brought, access to data related to that suite may be restricted, monitored, etc.), the CAS can provide that changing access control.
- Some embodiments herein cover new approaches for the creation of and access to virtual packages in an interconnected content-addressable storage system. Other embodiments herein provide new and novel techniques for controlling access to data in a content-addressable storage system. Additionally, various embodiments herein provide interfaces for different filesystems heretofore unavailable in the context of content-addressable storage. For example, some of the embodiments herein provide a Common Internet File System (“CIFS”) interface. In addition, in some embodiments, data is protected (e.g., by encryption) as it is moved around the cloud, replicated, stored, and/or sent to applications using the cloud.
- CIFS Common Internet File System
- the system and method described herein can advantageously be implemented using computer software, hardware, firmware, or any combination of software, hardware, and firmware.
- the system is implemented as a number of software modules that comprise computer executable code for performing the functions described herein.
- the computer-executable code is executed on one or more general purpose computers.
- any module that can be implemented using software to be executed on a general purpose computer can also be implemented using a different combination of hardware, software, or firmware.
- such a module can be implemented completely in hardware using a combination of integrated circuits.
- such a module can be implemented completely or partially using specialized computers designed to perform the particular functions described herein rather than by general purpose computers.
- the modules described herein can be combined or divided.
- any two or more modules can be combined into one module.
- the CAS server 121 and device manager module 141 may be combined into a single module that performs the functions of both modules.
- any one module can be divided into multiple modules.
- the CAS server 121 can be divided into multiple modules such that each individual module performs part of the functions of the CAS server 121 and all of the modules collectively perform all such functions.
- any two or more databases can be combined into one database and that any one database can be divided into multiple databases.
- multiple distributed computing devices can be substituted for anyone computing device illustrated herein. In such distributed embodiments, the functions of the one computing device are distributed such that some functions are performed on each of the distributed computing devices.
- Content-addressed storage is a broad term, encompassing its plain and ordinary meaning, and includes techniques by which a unit of data stored on a storage system is accessed using an address that is derived from the content of the unit of data.
- storage identifier is a broad term, encompassing its plain and ordinary meaning, including, but not limited to a number, reference, pointer, or object that references a memory location, location in a CAS or CAS cloud, or other storage location.
- One type of storage identifier is a “GUID” or “globally unique identifier.”
- a GUID may be a globally unique identifier that is made sequentially, based on a timestamp, etc.
- a GUID may be created based on a hash (MD5, SHA, etc.).
- the unit of data may be provided as an input to a hashing function which generates a GUID that is used as the content address for the unit of data.
- a host computer sends a request to a content-addressable storage server to retrieve a unit of data
- the host provides the content address of the unit of data (e.g., a GUID).
- the storage server determines, based on the content address, the physical location of the unit of data in the storage server, retrieves the unit of data from that location, and returns the unit of data to the host computer.
- cloud is a broad term, encompassing its plain and ordinary meaning, including, but not limited to “a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.”
- configurable computing resources e.g., networks, servers, storage, applications, and services
- a cloud 110 of content-addressable storage servers 121 - 125 may comprise numerous content-addressable storage servers, and these content-addressable storage servers may be connected in any number of ways.
- each content-addressable storage server may be connected to every other content-addressable storage server (not depicted in FIG. 1 ).
- each content-addressable storage server may be connected to one or more of the other content-addressable storage servers in the cloud.
- any communication between two content-addressable storage servers may be over a direct connection, over a single path via one or more of the other content-addressable storage service, or over one or more of multiple paths via one or more of the other content-addressable storage servers.
- Various direct connections, single path connections, and multipath connections, are depicted in FIG. 1 .
- the system 100 may include one or more CAS servers 121 - 125 . Each of these CAS servers may include or have thereto attached one or more storage servers (not pictured).
- the CAS servers may include one or more RAID storage systems, cloud storage, tape storage, optical disks, magnetic disks, and/or any other appropriate type of storage. There may be any number of CAS servers and each may have any number of storage systems. Two or more storage systems may reside on the same physical disk or storage, or each storage system may reside on one or more disks or other storage separate from all of the other storage systems.
- content stored in a CAS server 121 - 125 may be retrieved based on a GUID and/or based on a search, as discussed herein.
- a CAS server 121 - 125 when a CAS server 121 - 125 receives content to store, it may store the content and metadata to the storage system.
- the content may be stored in the same format in which it is received on an attached memory.
- other storage devices or methods may be used, such as flat files, directories, databases, or the like.
- the metadata may be stored in any fashion, including in a database, flat file, directory of files, or the like.
- the metadata may be stored in XML or other structured file as plain text and this plain text may be searchable.
- the metadata is stored in a database, and this database may be searchable.
- the application modules 131 - 133 can be any type of applications that need storage of data, particularly long-term storage of data that is not going to change quickly.
- the application modules 131 - 133 may be medical application modules, and these medical application modules may need access to medical images, such as X-rays, CT scans, Mills, etc. that have been stored over a period of time.
- the application modules 131 - 133 may communicate directly with the cloud 110 .
- application modules 131 - 133 may communicate with a device manager module 141 - 143 , respectively.
- device manager module 141 - 143 may provide an interface between an application module 131 - 133 and the content-addressable storage cloud 110 , thereby providing application modules 131 - 133 with a more traditional data interface than they would have if they were directly coupled to the CAS cloud 110 .
- application modules 131 - 133 may be able to request or search for data through the device manager module 141 - 143 .
- Device manager modules 141 - 143 may act on that request for that search by looking for a global unique identifier, or GUID, that corresponds to the data (perhaps by querying a GUID/Object database 151 - 153 ). Once the device manager modules 141 - 143 have the GUID, they will be able to request the data associated with the GUID either from an attached database (not pictured), or from the content-addressable storage cloud 110 .
- GUID global unique identifier
- the device manager module 141 may look up the GUID for that X-ray in its GUID/object database 151 . Once the device manager module 141 has the GUID corresponding to the X-ray, it may request the object associated with the GUID from the content-addressable storage server 121 . If the content-addressable storage server 121 has the object associated with the GUID, then it will return it to the device manager module 141 .
- content-addressable storage server 121 may forward the request for the GUID to one or more other content-addressable storage servers in the cloud 110 .
- Each of the content-addressable storage servers to which the request for the file associated with the GUID was sent will check to see if the object associated with the GUID is stored locally to it.
- these content-addressable storage servers to which the request was forwarded will return the object associated with the GUID to content-addressable storage server 121 , if it is stored locally.
- the content-addressable storage servers to which the request was forwarded do not have the object associated with the GUID stored locally, then they will each forward the request to one or more other content-addressable storage servers in the cloud 110 . This process will continue until one of the content-addressable storage servers in the cloud 110 has the object associated with the GUID. Once the object associated with the GUID has been located, it will be returned to content-addressable storage server 121 . Content-addressable storage server 121 will then return the object to the device manager module 141 , which will in turn provide the object, in this case a file containing an X-ray, to the PACS application module 131 .
- the object associated with the GUID is cached or stored locally at the content-addressable storage server.
- the content-addressable storage server 121 may store that object locally (e.g., at CAS server 121 ). As such any subsequent request for that GUID made to content-addressable storage server 121 may proceed more quickly because the object associated with the GUID is already stored locally at content-addressable storage server 121 .
- a content-addressable storage server such as content-addressable storage server 121
- one or more objects may be offloaded to other content-addressable storage systems in the cloud 110 .
- the choice of which objects to offload may be based on any number of factors, such as the age of the object, the size of the object, or some combination of the two. Many techniques are known to those skilled in the art, including those that may predict which objects are likely to be used in future. In some embodiments, the less likely an object is to be used in the future, the more likely it should be an object chosen to offload onto another content-addressable storage system in the cloud 110 .
- a user may use the shared archive module 133 to query for particular studies (e.g., all X-rays for a particular patient taken in the previous 5 years).
- the shared archive module 133 may forward the request to the data manager module 143 .
- the data manager module 143 may look up the GUIDs for the X-rays and request that data from the CAS cloud 110 .
- the CAS server 123 may then look locally for the data associated with the GUIDs. If the data associated with the GUIDs are not there, then the request for the GUIDs may be sent into the CAS cloud 110 to obtain the data associated with the GUIDs, as above.
- the CAS server 123 Once the CAS server 123 has the data associated with the requested GUIDs, it will send that data to the data manager module 143 , which will return it to the requesting application, shared archive module 133 . The user will then have local access to the data in the CAS cloud 110 .
- FIG. 1 depicts a shared archive module 133 that has a shared archive CAS module 143 and a database 153 .
- FIG. 1 depicts the database 153 being connected to the shared archive CAS module 143 , but the database 153 may also be directly connected to the shared archive module 133 or connected to both the shared archive CAS module 143 and the shared archive module 133 . Further, in some embodiments, two or more of the shared archive module 133 , shared archive CAS module 143 , and database 153 may be combined as a single unit or module or may run on a single computer (not pictured).
- FIG. 1 partitions the functionality of the overall system into modules for ease of explanation. It is to be understood, however, that one or more modules may operate as a single unit. Conversely, a single module may comprise one or more subcomponents that are distributed throughout one or more locations. Further, the communication between the modules may occur in a variety of ways, such as hardware implementations (e.g., over a network, serial interface, parallel interface, or internal bus), software implementations (e.g., database, DDE, passing variables), or a combination of hardware and software.
- hardware implementations e.g., over a network, serial interface, parallel interface, or internal bus
- software implementations e.g., database, DDE, passing variables
- Some embodiments allow users or applications to subscribe to particular event notifications.
- DICOM does not provide event notification. Nevertheless, users of DICOM and similar protocols and systems may desire or need event notification.
- users or applications can subscribe to receive event notifications from the CAS cloud.
- the event notifications may correspond to or be triggered by, events or actions taking place in the CAS cloud. For example, turning to FIG. 1 , when a PACS application 131 stores an X-ray, MRI, or other medical image in the content-addressable storage cloud 110 , via the data manager module 141 , that storage action may be associated with an event.
- Other applications such as application 132 may subscribe to events of a particular event type, such as the storage of X-ray images by the PACS application 131 .
- an associated event notification is propagated through the CAS cloud 110 , as represented by the arrows in the CAS cloud 110 .
- the PACS application 131 may store data in the cloud 110 via its local CAS server 121 . Its local CAS server 121 may forward a related event notification to the other CASs in the cloud 110 , such as CAS server 124 .
- CAS server 124 may in turn forward the event notification to CAS server 125 and, subsequently, CAS server 125 may forward that event notification to CAS server 122 .
- the device manager module 142 or the application 132 may then receive the event notification from CAS server 122 .
- the application 132 may communicate directly with CAS server 122 or to device manager module 142 which may in turn speak to CAS server 122 .
- Various other embodiments of event notification automation are described herein.
- event notification is a broad term, encompassing its plain and ordinary meaning, including, but not limited a notification that a particular event has taken place. The types of notifications and their delivery are discussed herein.
- the term “event” as used herein is a broad term, encompassing its plain and ordinary meaning, including, but not limited to, execution or performance of a particular action with respect to data in a CAS cloud or with respect to the CAS cloud itself. Particular examples of events are described herein.
- FIG. 2 is a flow diagram depicting a method 200 for event notification automation.
- a first system subscribes to an event notification for an event group “G.”
- the first system may be, for example, application 132 .
- the group G may represent any type of group for which application 132 may want to receive event notifications.
- the group G may correspond to all events for a particular department in a hospital, for a particular hospital, for a particular doctor for all medical images of a certain type, such as X-rays, MRIs, etc. —or any other appropriate grouping.
- the group G may be defined by any combination of one or more of patient identity, doctor identity, hospital department, hospital, timing, or any other appropriate aspect.
- the types of events in group G may also be limited to data being written to the CAS cloud 110 , data being modified in the CAS cloud 110 , and/or data being deleted from the CAS cloud 110 . Additional grouping characteristics for event types for a group may also include, for example, storage, retrieval, migration, reloading, deleting, getting properties, changing groups, duplicating bit file, burning a volume, any check or analysis on the CAS cloud, any synchronization or action such as a shutdown initialization, purging in the CAS cloud, etc.
- application 132 may subscribe to events associated with all actions in the CAS cloud 110 .
- all event notifications have a Group ID (e.g., event group “G” discussed above) and GUID in the body of the notification.
- An application or server may check all newly-arrived event notifications and find those to which it is subscribed by matching or filtering for the Group IDs in which it is interested.
- Method 200 depicts only a single event notification subscription. Nonetheless, systems may subscribe to event notifications for additional actions and/or for different groups other than group G. Various embodiments will allow the first subscriber system to subscribe to event notifications for multiple groups and for multiple event types and perform the subsequent blocks 220 - 240 and optionally 250 for those other event notifications. For example, application 132 may subscribe to events related to all deletions of X-ray files from a particular hospital, all additions of X-ray files from a particular hospital, and/or all maintenance issues with the CAS cloud.
- a second system After the first system subscribes to event notifications for group G in block 210 , a second system performs an event that triggers an event notification for group G in block 220 . For example, if application 132 subscribed to events for X-rays being written to the CAS cloud at a particular hospital in block 210 , and PACS application 131 triggers an event in that group by writing an X-ray to the CAS cloud from that particular hospital in block 220 . That event notification would get propagated through the CAS cloud 110 to CAS server 122 as part of block 230 .
- each CAS server 121 - 125 may forward the event notifications to every CAS server 121 - 125 to which it is connected unless it is the CAS server 121 - 125 from which it received the event notification.
- CAS server 121 would forward the event notification to CAS server 124 as well as any other CAS servers to which it is attached.
- CAS server 124 would then forward the event notification to all CAS servers 123 , 125 , and any others to which it is connected other than CAS server 121 , from which it received the event notification originally.
- each receiving CAS server will forward it to its other neighbors until all CAS servers in the cloud have received the event notification.
- the CAS servers may form a tree or hierarchy which defines to which neighboring CAS servers each CAS server should forward the message, thereby eliminating some or all duplicate event notifications being received at CAS servers in the CAS cloud 110 .
- each event notification has associated with it an identifier or signature. That identifier or signature may allow a CAS server 121 - 125 in cloud 110 to identify if the CAS server 121 - 125 has received a duplicate event notification. Where appropriate, embodiments ignore duplicate event notifications and provide only the first of duplicate event notifications to subscribers. The CAS servers 121 - 125 may also forward only the first event notification received and, upon checking the unique identified with subsequent event notifications, not forward any duplicate event notifications to its neighboring CAS servers in the cloud 110 .
- An event notification may include a reference (e.g., a GUID) to the data associated with the action that was performed as well as a group ID, timing, identity, and/or the type of event.
- the first system will receive the event notification for the event in block 240 .
- the first system may receive the event notification by performing a polling action, such as running a recurrent script or a program that monitors events in the CAS cloud.
- a polling action such as running a recurrent script or a program that monitors events in the CAS cloud.
- an application 132 may run a program that continually monitors a location associated with storing new event notifications in CAS server 122 .
- the application 132 or the event monitoring program may compare the incoming notification's group ID with the group IDs for which application 132 has subscriptions. If a matching group ID is found, then the application 132 is then aware of the new event notification.
- the CAS server 122 and/or another application in the CAS cloud 110 may have a subscription manager (not depicted in FIG. 1 ), which will push events to a device manager module 142 or an application 132 in order to provide application 132 with updates on events for which it has subscriptions.
- the subscription manager will check on newly arrived events in the CAS cloud 110 and check the group IDs against the subscriptions of application 132 and/or device manager module 142 . If a matching group ID is found, the subscription manager will send the event to application 132 and/or device manager module 142 .
- the first system may, optionally, retrieve data effected by or associated with the event from the CAS cloud 110 .
- the first system may, optionally, retrieve data effected by or associated with the event from the CAS cloud 110 .
- application 132 may retrieve the GUID from the event notification and retrieve the data associated with the event from the CAS using the GUID.
- Application 132 can then retrieve the X-ray in block 250 .
- a subscription module may also automatically retrieve the data associated with the event and send it to application 132 and/or device manager module 142 .
- retrieving data from a CAS cloud 110 may involve querying the device manager module 142 or the application 132 may be able to request the file corresponding to the GUID directly from the CAS cloud 110 .
- Event notification embodiments herein may be implemented as a parallel to or as part of an implementation of the HL-7 standard.
- event notification may be implemented to represent Instance Availability Notifications to the systems using IHE/HL-7.
- the HL-7 Instance Availability Notification may be implemented, for instance, using the event notification in the CAS as described herein.
- the storage of a file in the CAS cloud may trigger an event notification, sent as an Instance Availability Notification.
- the event notification may notify interested workflow actors (such as an IHE Department System Scheduler/Order Filler, Post-Processing Manager and Report Manager, etc.) about the availability status of data in the CAS.
- the messages may be sent using an HL-7 Observation Results Unsolicited message, Medical Document Management message, or any other appropriate message type.
- FIG. 3 illustrates an abstract representation of an example workflow for two medical service providers connected to a content-addressable storage server cloud.
- the first hospital is in California and the second is associated with a radiology department in Virginia, both of which may be connected to the same CAS cloud 110 in FIG. 1 .
- the hospital in California subscribes to receive event Group “VA” event notifications in block 310 .
- the Group VA event notifications may be, for example, when the group in Virginia has stored reports on analysis of medical imagery in the content-addressable storage cloud.
- the radiology department in Virginia may subscribe to receive event Group “CA” event notifications in block 311 .
- the Group CA may correspond to X-rays being deposited or stored in the CAS cloud.
- the two medical service providers may later receive event notifications, as represented by the two dashed arrows in FIG. 3 .
- the California hospital performs an X-ray
- the Radiology Department in Virginia analyzes the X-ray
- the California hospital receives a notification of that analysis.
- Different imagery may be used (MM, ultrasound, etc.) or no imagery may be used at all.
- the events and workflows may be related to analysis of written reports, proofreading transcription, or any other appropriate workflow or analysis.
- an X-ray is performed at the hospital in California.
- the X-ray may be performed using any known means, technique, or method.
- the X-ray is stored in the content-addressable storage server cloud thereby triggering a Group CA event notification.
- Storing the X-ray to a CAS server or cloud may include writing it to a CAS server or cloud directly using a CAS interface, writing to a directory that is mirrored to a CAS server or cloud, writing to a file system interface that interfaces with the CAS server or cloud, or any other appropriate method, system, or technique. For example, referring to FIG.
- a PACS application 131 or a device manager module 141 may write the X-ray to a NAS or other directory, which may then mirror the X-ray to the CAS server or cloud (possibly with header or other files or information as part of the same file).
- “Mirroring” a folder or directory to the CAS cloud 110 may take many forms, including replicating the folder as a single bit file in the CAS cloud 110 or individual files in the directory may be stored in the CAS cloud 110 and the structure of the folder (e.g., mapping of GUIDs for particular files to corresponding directories) may be stored separately (e.g., also in the CAS cloud 110 or at PACS application 131 or device manager module 141 ).
- Triggering the Group CA event may include content-addressable storage systems that are interconnected in a CAS cloud 110 forwarding the events until each content-addressable storage system in the CAS cloud 110 has received the event notification or at the very least until a CAS server connected to the radiology department in Virginia receives the event notification. Numerous examples of generating or triggering event notifications are described in detail elsewhere herein.
- the radiology department in Virginia receives the Group CA event notification.
- Receiving that notification may spawn under number of workflows including emailing a radiologist, populating a database or to-do list at a radiologist's workstation, inserting an X-ray into a radiology workflow or queue, etc. In this way, a radiologist may be able notified that a new X-ray, is available and needs analysis.
- block 350 may include manually or automatically retrieving the X-ray from the CAS server or cloud after the event notification is received.
- Block 350 may also include the radiologist performing analysis of the X-ray. After analyzing the received X-ray, the radiologist may store a report on that analysis into the content-addressable storage system or cloud, thereby triggering a Group VA event notification in block 360 .
- the report may include the radiologist's opinion, analysis, annotations, or any other information or work product that has been made by the radiologist.
- storing to a CAS server or cloud may include writing the report to a directory and that directory being copied to the content-addressable storage server; writing to a network attached storage system, where that network attached storage system operating as an interface for the content-addressable storage system; storing the report directly to a CAS server via a CAS interface or to the cloud; or any other appropriate writing means or technique.
- an application 132 or a device manager module 142 may control the writing of the report to the CAS server 122 or CAS cloud 110 .
- the Group VA event notification generated by the radiologist's report being stored on the content-addressable storage server or cloud is propagated through the content-addressable storage server cloud and received at the hospital in California in block 370 .
- Receiving the Group VA event notification in block 370 may spawn another workflow or actions, such as sending an email to an appropriate doctor, team of doctors, administrators, or other practitioners, etc.
- Receiving the Group VA event notification in block 370 may be followed by storing an indication of the event in a database, file, or queue. Any other appropriate notifications or actions may be taken based on the receipt of the Group VA event notification.
- the report or analysis may be retrieved in block 380 .
- the report may be retrieved in any appropriate manner, including those techniques discussed herein.
- a doctor may retrieve the report from the CAS cloud 110 based on the GUM in the Group VA event notification using an application 131 - 133 .
- the application may, in turn, use the data manager module 141 - 143 to retrieve the report stored from the CAS cloud 110 .
- the doctor may then review the analysis and continue patient care. From there the doctor may be able to review that analysis and discuss it with a patient as appropriate.
- the doctor who originally performed the X-ray in California may later receive an email that the radiology department in Virginia analyzed the X-ray and can now retrieve and review the report with the patient.
- a technician may perform an ultrasound and store the ultrasound data in the content-addressable storage server cloud. Storage of that ultrasound data may generate an event for a radiology department to analyze it. The analysis may then be performed, and a report on the analysis stored in the content-addressable storage server cloud, thereby generating its own event notification. A doctor may then be notified of that the report on the ultrasound is ready for review. The doctor may retrieve the ultrasound data and related report from the content-addressable storage server cloud and perform further review on the ultrasound and the report. The doctor may then discuss the report or findings with the patient and possibly perform another ultrasound. This further ultrasound may again be deposited in the CAS, which will again trigger the radiology department to perform analysis. And the workflow may be extended and/or repeated.
- Embodiments herein provide a shared archive in an interconnected content-addressable storage system.
- an application 132 and a PACS application 131 may each store information in a content-addressable storage server cloud 110 .
- an application such as shared archive module 133 or shared archive CAS module 143 , may parse the incoming files being stored in the content-addressable storage server cloud 110 .
- the shared archive may extract information from the metadata in those files and store the information (perhaps database 153 ).
- the term “information” is a broad term, encompassing its plain and ordinary meaning, including, but not limited to “data or metadata in a parsed or otherwise accessible form.”
- metadata when metadata is parsed, the information from the metadata may be accessible, for example, in RAM in a data structure, as entries in a database, etc.
- a user may access the shared archive module 133 and query for files stored in the CAS cloud 110 .
- the query may be for a particular type of image, such as an MRI image, a particular patient, a particular doctor, or a particular hospital.
- the shared archive may search the database 153 for records that match the query and related data.
- the shared archive module 133 may then return results to the requester (e.g., the one that sent the query) in the form of GUIDs for the files that correspond to the metadata.
- the response to the query may be the metadata itself, a report on the metadata, or any other appropriate information related to the metadata.
- the shared archive may return all or a part of the file(s) matching the query.
- a flow diagram depicts a method 400 for providing a shared archive.
- a PACS machine stores a file containing medical data (such as imaging data) and related metadata to a disk drive, such as a network-attached storage drive.
- the network-attached storage drive is mirrored to the CAS cloud as part of block 410 .
- Mirroring a directory or drive may include copying all files from one or more directories onto other drives (or into other directories). Redundant Array of Independent Disks (RAID) is one example of using mirroring techniques.
- RAID Redundant Array of Independent Disks
- a local or networked drive (or directory) is mirrored to the CAS, then as files are copied to that drive (or directory) are copied to the CAS.
- the data manager module 141 may then copy that file from the mirrored directory to CAS server 121 , which will return a GUID for the file.
- the GUID may be stored in the GUID/OBJ database 151 along with information about the stored file.
- the term “medical data” is a broad term, encompassing its plain and ordinary meaning, including but not limited to images, videos, reports, and other medical-related data associated with one or more patients, accession numbers, study numbers, series numbers, etc.
- Medical data may include or have associated with it, related metadata.
- medical data include, but are not limited to DICOM images, DICOM reports, files in a proprietary format that have header data or metadata, XDS-I-encapsulated files or reports, or any other appropriate data image or metadata.
- block 411 depicts an application storing a file, which contains a report and metadata, directly into the CAS cloud via a CAS interface 472 .
- the CAS interface 472 is described extensively above with respect to FIG. 1 and elsewhere herein.
- Another source of data is depicted in block 412 .
- an application writes a file containing imaging data and metadata to a CAS cloud via a file system (e.g., CIFS) interface 473 .
- CIFS interface may be particularly useful for legacy applications that communicate directly to a CIFS drive.
- the application may be able to believe that it is writing to a network-based CIFS drive and, in fact, the application is instead writing to the CAS cloud.
- network interfaces such as CIFS interfaces
- CIFS interfaces are described elsewhere herein and various embodiments herein include other files system interfaces, such as NFS, FAT, SAMBA, etc.
- NFS non-volatile memory
- FAT FAT
- SAMBA shared memory access point transfer point allocation
- the metadata of the stored file is parsed.
- the stored files may have a single header containing metadata related to a report, image, or other documents stored therein.
- an XDS-I file has a header and an encapsulated file portion, and the XDS-I header may have parsable metadata which is parsed and used in the subsequent blocks of method 400 .
- a DICOM header may include a preamble and a prefix followed by numerous data elements. The header may contain data describing the data elements stored in the file. This header information is parsed in order to extract information about the subsequent data elements in the DICOM file.
- Blobs may contain multiple DICOM files and/or other format files. For example, if a blob contains multiple DICOM files, then each header may be separately parsed, and information extracted about the data elements following each header. A similar process occurs regardless of the type of file stored in the CAS cloud.
- Headers can be parsed based on the format of the file and header. Some headers are in a mark-up language format and can be parsed based on that mark-up language. For example, XDS-I headers are typically in XML or a related mark-up language. Other headers, such as DICOM headers, may have fields that identify and define where and what type of information is in the header. Other formats and methods of parsing them are also encompassed by the embodiments herein.
- the information extracted from the parsed metadata is stored in the shared archive with a reference (e.g., a GUID) to the file itself. For example, if a DICOM image containing an X-ray is parsed in block 420 and patient name, doctor, time of performance of the X-ray, and hospital is extracted from the DICOM header in block 420 , then in block 430 this information is stored in the shared archive and associated with the GUID of the stored DICOM file.
- a reference e.g., a GUID
- the shared archive module 133 may take the information obtained from parsing the file stored in the CAS and store it in database 153 along with the GUID or other identifier that is associated with the metadata. In this way, a user may later be able to search the information in the database 153 to find matching files and retrieve the GUIDs and/or the files.
- FIG. 4 there is a dotted line from block 430 back to blocks 410 , 411 and 412 .
- This dotted line represents that the actions related to blocks 410 - 430 may repeat.
- the actions related to blocks 410 - 430 may repeat multiple times asynchronously with the actions in blocks 440 and 450 .
- multiple files may be stored in the CAS cloud sequentially or at the same time (blocks 410 - 412 ) and the metadata for each of those files may be parsed (block 420 ) and stored in the shared archive (block 430 ).
- This process can continue notwithstanding that queries may be received on the shared archive. That is, when a query is received on the shared archive (block 440 ), the query will be run on whichever data has already been parsed from files stored in the CAS (e.g., the latest information available).
- a query is received on the shared archive.
- the query may be of any appropriate type (Boolean, SQL, natural language, DICOM Query/Retrieve, etc.).
- the query may be for X-rays for a particular patient, all images for a particular patient, all files (e.g., reports, images, etc.) for a particular patient, all files or a subset of files for a particular doctor, all files or a subset of files for a particular department in a hospital or a particular hospital, etc.
- the queries may be for particular periods of time, for example, all X-rays stored with relation to a particular patient between Jan. 1, 2009 and Jan. 12, 2009.
- the query is run on the shared archive in block 450 .
- Running the query may simply comprise running a query on database 153 .
- the query may request results related to a particular patient. Those results may then be the basis of more queries for related data in block 451 .
- one or more queryable data items may be extracted.
- queryable data item is a broad term encompassing its plain and ordinary meaning, including, but not limited to, a data item for which a search may be performed.
- the queryable data item may be one or more data items, obtained from the search results, for which subsequent queries or searches may be run.
- a query for an X-ray could return an X-ray that is associated with a particular accession number.
- the shared archive, in block 451 may then perform another query, on the accession number, to find related data.
- accession number as used herein is a broad term that encompasses its plain and ordinary meaning, including, but not limited to, a number or identifier that identifies a particular object or collection of objects (such as a particular lab results or set of lab results).
- Requesting related data can be a very complex undertaking.
- requesting related data may simply include sending requests to those connected servers and systems for all data related to that identifier.
- different identifiers are used by different systems within the same interconnected medical environment. For example, one imaging server may identify patients by social security number. Another may identify patients by a patient identifier generated by that system or some other centralized system.
- the multiple systems may prepend or append information such as time stamps or locations onto the identifier in order to identify that patient study or accession uniquely.
- systems may codify or place identifiers in different or inconsistent locations. For example, consider a PACS system or other imaging system in which there is only a single field for the patient identifier. Some hospital systems may also use hierarchies of patient identifiers in order to identify the patient correctly across a broad range of systems. An imaging system that only has a single location to store a patient identifier with a record may then have to be modified or treated differently. For example, one of the two patient identifiers needed may be stored in the space provided on that system for the single patient identifier. The other patient identifier on the other hand, may be stored in another field, such as an accession field, middle name field, or comment field.
- FIG. 8 there is a data structure 800 that contains a patient identifier field 810 , a study number field 820 , and a hospital number field 830 . As indicated by the three dots, there may be numerous other fields. If a system needs to store two patient indices, then data structure 800 may not provide sufficient fields. The primary patient index 811 may have to be stored in the patient identifier field 810 .
- the secondary patient index 812 may be stored in the study number field 820 , and the study number 821 may be stored in the hospital number field 830 .
- Other changes may have to be propagated through the rest of data structure 800 .
- requesting related data from a system may require knowing how the data structures or other pertinent identifiers are used within that system.
- a system wishing to talk to a PACS that uses the data structure 800 in FIG. 8 would have to know to send its primary patient index in the data structures field 810 , its secondary patient index in the study number field 820 , the study number in the hospital number field 830 , etc. Additional embodiments of searching for related data are discussed elsewhere herein.
- a query for all data on a patient identifier may result in results associated with numerous accession numbers, study numbers, serried numbers, etc.
- queries may be run on the returned accession numbers, study numbers, series numbers, etc. Those queries may, in turn, results in other identifiers being discovered (related to other accession numbers, series numbers, study numbers, and possibly other patient or data indices). Each of those new identifiers may also be searched and return results.
- the query may be translated using a master patient index to run the query on other identities associated with the patient (e.g., other patient identifiers, social security numbers, etc.). Master patient indexes are described elsewhere herein.
- a patient may be assigned an index upon a first visit to the hospital, and, years later, be assigned another. This relationship may be stored in the master patient index.
- people may change their names over time. The relationship between these two names may be stored in the master patient index.
- additional related data queries may also be run (block 451 ).
- Blocks 450 and 451 may incorporate access control for queries.
- the access control may be such that only particular users are allowed access to particular types of data. As such, data and related data may not be retrieved in blocks 450 and 451 unless there are proper access rights, or data may not be retrieved and not sent to the requestor unless there are access rights (e.g., in block 470 ). Additionally, there may be classes or sets of users, for example, doctors may be allowed access to certain types of data, patients only to data about themselves, and administrators may have access to all data.
- block 440 may include access control ( 460 ) and may not perform a query if the requester does not have proper access to data or information that would be returned. Further (not depicted in FIG.
- HIPAA provides requirements on data access control and data encryption for some entities. In embodiments herein, these requirements are implemented as part of block 450 , 451 , 460 , or as part of other blocks in FIG. 4 .
- the shared archive module 133 and/or the shared archive CAS module 143 may provide access control. The access control may be such that it corresponds to HIPAA's requirements for data security and integrity or any other appropriate access control in which only certain users or classes of users have access to certain types of data.
- block 470 may include returning those results to the requester (e.g., the person or system that sent the query). Returning the results to the requester may include returning GUIDs to the data files stored in the CAS cloud that match the query. The results may also be returned as a report or list of metadata or the files associated with the matching metadata may be returned. For example, if a requester requests X-ray files from Jan. 1, 2009 to Jan. 12, 2009 for a particular patient, and three X-rays are found, then the shared archive module may return GUIDs associated with those three X-rays or may return files containing the three X-rays, such as DICOM files (e.g., via a DICOM Store command).
- an application may perform a DICOM Query/Retrieve using embodiments of the shared archive.
- the application may perform a DICOM Query to the shared archive requesting data for a patient name, patient ID, accession number, physician, etc.
- the shared archive may receive the DICOM Query (block 440 ) and perform a search for the patient name, patient ID, accession number, physician, etc. (block 450 ).
- the shared archive may also query for related data (block 451 ).
- the shared archive may then return the results of the query (block 470 ).
- the requesting application may then perform a DICOM Retrieve for the studies or other data that were returned as part of the DICOM Query.
- This DICOM Retrieve may be performed as part of block 440 or may be executed by a block not shown in FIG. 4 .
- the shared archive may then retrieve the data requested in the DICOM Retrieve and may return the data to the requester as part of a DICOM Storage command.
- the DICOM Retrieve may be sent to a server other than the shared archive.
- the DICOM Retrieve could be sent to a CAS server and the CAS server could look up the GUID for the requested file and retrieve and send the file (e.g., via a DICOM Storage message) to the requesting application.
- a report stored in the CAS cloud may contain metadata and not have a separate header. That report may be parsed and may be made searchable in a shared archive using method 400 .
- files containing test results may also be storable, parsable, and later searchable.
- the shared archive module may provide homogeneous access to data that has been stored in a heterogeneous manner in the CAS cloud 110 .
- Such homogeneous access is particularly beneficial considering that embodiments of the CAS cloud allow legacy systems to store to the CAS cloud (e.g., though mirroring or network interfaces to the CAS) in addition to newly developed systems to store to the CAS cloud. In this way, various applications as well as multiple types of data can be stored in the CAS cloud and accessed jointly and efficiently in a shared manner from the shared archive module.
- Document sharing can be an important part of management and communication of information.
- various embodiments provide a document sharing protocols (such as XDS and XDS-I) and, in some cases, integrated shared archives.
- IHE Integrating the Healthcare Enterprise's
- XDS cross-enterprise Document Sharing
- IRE has created a follow-on standardization effort known as the cross-enterprise Document Sharing for Imaging (XDS-I).
- XDS-I extends XDS by enabling the sharing, locating, and accessing of DICOM images and other documents that may be received from or accessed by, e.g., radiology centers, hospitals, doctors' offices, or any other applicable source or consumer.
- XDS-I may be useful for sharing X-rays, MRIs, and other health records, such as cardiology documents.
- XDS and XDS-I implementations may be built on the principle that one is able to query a single source in order to obtain access to stored documents from any of multiple repositories. As such, various embodiments herein may provide an XDS-I storage, searching, and retrieval interface that provides access to underlying documents stored in a CAS or CAS cloud.
- XDS-I module 531 can address cross-enterprise EHR communication needs. Some scenarios may require the use of other IRE integration profiles, such as Patient Identifier Cross-Referencing (PIX), Audit Trail and Node Authentication (ATNA), Enterprise User Authentication (EUA), Cross-enterprise User Authentication (XUA) and retrieve Information for Display (RID), not depicted in FIG. 5 .
- PIX Patient Identifier Cross-Referencing
- ATNA Audit Trail and Node Authentication
- EUA Enterprise User Authentication
- XUA Cross-enterprise User Authentication
- RID Retrieve Information for Display
- cloud 510 includes multiple content-addressable storage servers 520 - 522 .
- a device manager module 541 may be in communication with cloud 510 .
- Device manager module 541 may have associated with it a GUID/object database 551 and may be coupled to an XDS-I module 531 .
- XDS-I module 531 may communicate with various XDS-I actors, such as an XDS-I source module 570 and an XDS-I consumer module 560 .
- the XDS-I module 531 may also communicate with other XDS-I actors and/or other XDS-I modules, not pictured.
- the XDS-I source module 570 may be coupled to an image source, such as a CT scanner or X-ray machine.
- the XDS-I consumer module 560 may be coupled to a doctor's workstation or a PACS station, not pictured.
- Various embodiments of system 500 may allow a doctor to access the previously stored medical image, or any other document, regardless of its source, using XDS-I.
- an XDS-I source module 570 may receive images from an imaging source, such as an MM, X-ray, CT scan, or other imaging device.
- the XDS-I source module 570 may then store the received image in the cloud 510 by sending the image, using the XDS-I protocol, to the XDS-I module 531 (e.g., as a DICOM image encapsulated in an XDS-I message).
- the XDS-I module 531 may then send the image to the device manager module 541 which will then store it to the cloud 510 via the content-addressable storage server module 521 , which will in turn return a GUID that corresponds to the stored image to the device manager module 541 .
- the device manager module 541 can store the relationship between the stored image, its metadata, and the corresponding GUID in the GUID/object database 551 .
- XDS-I module 531 may store metadata related to the stored image in addition to or instead of device manager module 541 . Subsequently, when an XDS-I consumer module 560 sends a request to the XDS-I module 531 for that object, the XDS-I module 531 can request that object from the device manager module 541 , which will then retrieve it from cloud 510 , and send it to the requestor, possibly with additional related data.
- the described storage, searching, and retrieval of documents may apply, as noted above, to documents other than images, such as electronic health records and the like.
- an XDS-I consumer module 560 when an XDS-I consumer module 560 searches for a document or image, more than one document may match the request. For example, if an XDS-I consumer module 560 requests documents related to a certain patient, then the XDS-I module 531 may determine that multiple patient records and images are related to that patient. The XDS-I module 531 may then present to the XDS-I consumer module 560 a list of all of the matching documents. The XDS-I consumer module 560 may provide the list of matching documents to a user, not pictured, that will allow the user to select one or more of the matching documents for retrieval.
- the XDS-I consumer module 560 may then request retrieval of all of the selected documents from device manager module 541 , which may then look up the GUIDs for those objects in its database 551 and request those objects from the cloud 510 .
- the XDS-I consumer module 560 may also perform other actions, such as (i) retrieve presentation states, which requests and retrieves the Grayscale Softcopy Presentation State (GSPS) information for a particular image or image set; (ii) retrieve reports, which may retrieve a diagnostic report, for example; (iii) retrieve key image notes; and (iv) retrieve evidence documents. More embodiments and examples of various requests are described in the appendices attached to parent U.S. Provisional Application No. 61/327,556, which are hereby incorporated by reference for all purposes.
- GSPS Grayscale Softcopy Presentation State
- the XDS-I module 531 may include or be attached to a metadata database or server, such as shared archive module 133 , shared archive CAS module 143 , or database 153 .
- the XDS-I module 531 may store therein metadata related to documents that it receives from XDS-I sources and relate them to the GUID that it receives from the device manager module 541 when the XDS-I module 531 stores documents to the cloud 510 .
- XDS-I module 531 when XDS-I module 531 receives an XDS-I message to store an X-ray from XDS-I source module 570 , it may store metadata related to the X-ray (e.g., received as part of a header from the XDS-I source module 570 ) in the metadata database along with the GUID corresponding to the stored X-ray image, received from device manager module 541 .
- device manager module 541 may store the metadata related to stored images in addition to or instead of XDS-I module 531 storing that data. Further, the device manager module 541 may associate the metadata for those images with the GUIDs for the image in the database 551 .
- XDS-I module 531 may serve as a shared archive module and perform related functions, such as those described herein.
- the XDS-I module 531 may retrieve the requested document and other related documents and send them to XDS-I consumer module 560 in a single response message. For example, if the XDS-I consumer module 560 requests an X-ray for a patient, then the XDS-I module 531 may retrieve that X-ray as well as related medical data and return the X-ray and the related medical data as a single XDS-I response. This may take the form of storing related medical data, such as lab results, patient name, etc., in an XDS-I header and the image in the XDS-I message.
- related medical data such as lab results, patient name, etc.
- each module in system 500 may run on a separate processor or as part of a separate process. Two or more of the modules may be implemented together or may be run as part of the same process, on the same processor, on the same machine, as part of the same application, and the like.
- XDS-I module 531 and device manager module 541 may run as part of separate processes or applications or may be part of the same application or process.
- XDS-I module 531 may also include as part of the same process, or application, either or both of XDS-I source module 570 and XDS-I consumer module 560 .
- FIG. 6 depicts a method 600 of providing XDS-I support.
- An XDS-I source may receive a file to store from a user or machine, such as receiving an X-ray from an X-ray machine in block 610 .
- an XDS-I source module 570 may receive an X-ray image to store.
- the XDS-I source requests storage of the file in the XDS-I repository.
- the XDS-I source module 570 may encapsulate the X-ray image data file in an XDS-I message and send the message to XDS-I module 531 for storage (possibly using encryption for transmission and/or storage).
- an XDS-I repository may receive a request to store a document.
- XDS-I module 531 may receive the request to store the X-ray image data file encapsulated in the XDS-I message from XDS-I source module 570 .
- an acknowledgment of storage may be sent back to the XDS-I source, not pictured.
- XDS-I consumer When an XDS-I consumer later requests documents, in block 640 , that request is sent to an XDS-I repository and matching documents, possibly including related data and related documents, are determined as part of block 650 .
- the XDS-I repository may then send a list of matching documents to the XDS-I consumer, which will receive them in block 660 .
- XDS-I consumer module 560 may send the request for documents related to a particular patient to XDS-I module 531 .
- XDS-I module 531 may then search for relevant documents and send the list of those documents to the XDS-I consumer module 560 .
- the XDS-I consumer in block 660 , may request certain files that were found.
- an XDS-I repository may send the requested files to the XDS-I consumer, who may receive them in block 680 .
- XDS-I consumer module 560 may request certain files of those that were previously found in block 650 from the XDS-I module 531 .
- the XDS-I module 531 may retrieve those files from the cloud 510 via the device manager module 541 and send those files to the XDS-I consumer module 560 .
- a search requested in block 640 may include a request to immediately retrieve all documents matching the search, and block 650 may include retrieving those documents and sending them to the consumer who will receive them in block 660 .
- system 500 and method 600 may also include a security model that may be associated with an XDS-I Clinical Affinity Domain.
- a security model may be associated with an XDS-I Clinical Affinity Domain.
- embodiments may group XDS-I Actors with actors from the IHE Audit Trail and Node Authentication (described elsewhere) and may include access control capabilities that operate in cross-enterprise environments.
- Example embodiments include Public Key Infrastructure, and those related to ATNA, etc.
- XDS-I modules may also be joined together or federated and thereby provide access to patient records as patients move from region to region, or country to country.
- a content-addressable storage server cloud 510 and/or interconnected set of content-addressable storage servers 520 - 522 may serve the function or provide storage for more general XDS systems.
- XDS-I emphasized support for images, and in particular medical images, the XDS protocol applies broadly to document storage, querying, and retrieval.
- an XDS Document Source may provide and register documents to an XDS Document Repository.
- the document repository may register stored documents in an XDS Document Registry.
- An XDS Document Consumer may query the XDS Document Registry in order to determine the locations of or references to documents.
- XDS Document Consumer may retrieve the documents from the XDS Document Repository. Queries from the XDS Document Consumer to the XDS Document Registry may include patient identification as part of the query.
- An XDS Patient Identity Source may provide normalizing information for patient identity to be used in queries on the XDS Document Registry.
- the XDS Patient Identity Source may provide a normalized identifier for a single person or patient across multiple hospitals, multiple systems, and the like. This is discussed more below.
- device manager module 541 since it may provide the functions of searching for documents and retrieving documents, may act as both an XDS Document Registry and an XDS Document Repository. For example, in XDS Document Consumer may query device manager module 541 , acting as an XDS Document Registry, for the location of the document, not pictured in FIG. 5 . The device manager module 541 may then return a list of relevant documents stored in the cloud 510 to the XDS Document Consumer. The XDS Document Consumer may then request some or all of the matching documents from the device manager module 541 , which would then be acting as the XDS Document Repository. The device manager module 541 could then retrieve the documents from the cloud 510 .
- device manager module 541 may serve as an XDS Document Registry in cloud 510 and/or a single content-addressable storage server 520 - 522 or the cloud 510 may serve as the XDS document repository. If an XDS Document Consumer requested the location of an XDS document from the device manager module 541 , acting as an XDS Document Registry, may return the location of the requested document. The XDS Document Consumer may then request the document from the cloud 510 , or an individual content-addressable storage server 520 - 522 , acting as an XDS Document Repository.
- an XDS Patient Identity Source may be implemented as part of any appropriate module or system, such as device manager module 541 or a combination of multiple device manager modules 541 .
- the XDS Patient Identity Source is implemented as part of cloud 510 .
- an XDS Patient Identity Source may provide a master patient index among numerous hospitals, doctors' offices, and the like.
- the XDS Patient Identity Source may include a database, data structure, or other data storage, with a unique identifier for each patient, and association from that unique identifier to the identifiers from multiple independent hospital information systems and/or other systems.
- one hospital information system may identify patients by Social Security number. Another hospital may identify patients by name. Yet other hospitals may identify patients by an identifier generated at the hospital.
- the master patient index running as part of device manager module 541 , cloud 510 , etc. in FIG. 1 (or as part of any other application, device manager module, CAS server, CAS cloud, or as a separate application), may store a single unique identifier for the patient and associations from that single unique identifier to each of the identifiers from the various hospital information systems. Therefore, for example, a single patient John Smith may have a single unique identifier in system 500 .
- This single unique identifier may be associated with his Social Security number at a first hospital information system, his name for a second hospital information system, and the hospital—generated identifier for a third hospital information system. Therefore, when a request is received for information related to John Smith, that request can be associated with his single unique identifier and his single unique identifier can be used, in conjunction with its relationship with the other you identifiers, to query for and retrieve data related to John Smith from the multiple hospital information systems, each of which may have data stored in the cloud 510 (or elsewhere).
- Traditionally PACS machines or other devices that manage medical images allow users to select files to write to a CD or DVD. Embodiments herein provide this functionality. In addition, certain embodiments herein will also allow a user to produce a virtual package (or “virtual disk,” “virtual DVD,” “virtual file grouping,” etc.).
- the term “virtual package” as used herein is a broad term encompassing its plain and ordinary meaning including, but not limited to, a grouping or set of files, pointers to files, or other indicators of files.
- a virtual package may also refer to a single file including two or more subsections containing images, reports, or other medical data.
- Various embodiments herein allow a user to select a set of files to store in a virtual package.
- the system finds those files, and any related data, and subsequently stores them in a CAS server or cloud.
- the system then provides the user with an indication of the virtual package or the files in the virtual package (e.g., a GUID, set of GUIDs, etc.).
- access control may also be included in the original request for the virtual package. That is, the user may be able to specify what users or groups of users are allowed to access all files within the virtual package (or perhaps a subset of files in the virtual package) and the content-addressable storage server or CAS cloud will then control access based on that information.
- FIG. 7 illustrates an exemplary process for creating and managing virtual packages.
- an instruction is received to produce a virtual package.
- This instruction may be received at a computer or server via a programmatic interface, for example, as an XML or other structured file received via a web service.
- the instruction to produce a virtual package may also be received via a web page or other interface where a user can select files via drop down boxes, radio boxes, selection boxes, or other mechanisms.
- a user at a PACS machine running an embodiment would be able to select files to include in a virtual package (via a web-based selection menu, e.g.).
- a shared archive module or other program may allow a user to select files in the shared archive to include in a virtual package as part of block 710 .
- Shared archives are discussed elsewhere herein.
- the files selected may be images, reports, or any other type of data.
- a user may select all of the reports related to a particular patient or a particular study, series, or SOP.
- the user may also select all of the files related to a particular accession number.
- SOP as used herein is a broad term, encompassing its plain and ordinary meaning, including, but not limited to a “service object pair” in DICOM.
- the files indicated by the user for inclusion in the virtual package are obtained.
- these files may be stored locally to the PACS machine or other software that received the instruction to produce the virtual package in block 710 .
- a subset of the files may be stored locally.
- a request may be sent to a different computer or server to obtain one or more of the files to be included in the virtual package. This request may be sent to a different PACS machine, a CAS server or cloud, a database, or any other appropriate storage location.
- Obtaining the files may include reading the files from a global storage system, such as CAS server or cloud.
- obtaining these files may include obtaining the files from the original request to produce a virtual package.
- one or more of the files may be attached to the request to produce the virtual package received in block 710 . More specifically, if a user at an application were to select a number of images and reports related to an accession number and attached a few of those files to the request that is received in block 710 , then obtaining the one or more files may include retrieving those files attached to the original request in addition to obtaining some of the files locally and/or from a global storage system, such as a CAS cloud.
- the files to include in the virtual package may also come from other locations as noted herein.
- the user may also request inclusion of related data the virtual package.
- the related data is requested in block 730 .
- the user may also request that any data related to that accession number be included in the virtual package. This may be useful, for example, in cases in which a user wants to include all available data related to an accession number, patient, study, or other grouping, in one virtual package so that subsequent users of the virtual package may have easy access to all of the related files. Requesting related data can be very complex, as discussed elsewhere herein.
- communicating to another system to find related data may also require translating an identifier using a master patient index.
- the master patient index may provide a single identifier for each patient across multiple systems.
- Using the master patient index to query for related data may include sending the master patient index along with the request for related data or it may include translating to the destination system's patient index via the master patient index. For example, if a master patient index is being used and system A is requesting from system B related data for a patient, then system A may have to convert its patient identifier into the master patient index and from there obtain the patient index used in system B. Similar structures and techniques may be used for other unique identifiers or other identifiers such as accession number, study number, series number, and SOP number.
- requesting related data may include requesting data related to information that was received in the instruction in block 710 , such as accession number or patient number, or it may include retrieving data from one or more of the files to be included in the package and using that data to request related data. For example, if a package is being created for a patient that should include all of the files related to that patient, then the original request received in block 710 may be used in order to identify the patient. Additionally, once files are obtained for that patient, accession numbers, study numbers, series numbers, SOP numbers, and the like may be extracted from one or more of those files and requests may be made for the data related to those accession numbers, series numbers, study numbers, and/or SOP numbers.
- receiving the related data may include receiving an HL7 broadcast message.
- the HL7 messages may include patient related information and that patient related information may be matched to local patient information.
- a PACS machine may have studies or X-rays related to a patient.
- An HL7 message may be broadcast by another system that has related reports, other images, follow on images, etc. That incoming message may be matched by the patient-related information, as discussed elsewhere herein.
- the related data is included in the HL7 message itself.
- the HL7 message may not include the related data but may indicate the source from which related data can be received.
- the related data may be requested from the machine or system that broadcast the HL7 message. After that data is requested, it may be received by the requestor.
- the related data may be retrieved using DICOM query and retrieve based on accession number as part of block 740 and/or block 730 .
- the system may send a DICOM query/retrieve based on the accession number.
- the system may send the DICOM server a request for a modality worklist and match to that modality worklist and from there a query based on the matches in the modality worklist.
- Receiving the data may also include receiving and reading a DICOM Structured Report that came with various images. This DICOM Structured Report may be broadcast or otherwise sent to the receiving system with or without first querying for it.
- a DICOM Structured Report may be requested based on accession number, patient number, study number, series number or SOP number.
- an HTTP request may be sent to a PACS server or other source and a web page, structured document, or the like may be received in response.
- This web page or structured document may be parsed to extract related data to be used in subsequent blocks of method 700 .
- Related data may also be retrieved from a database using stored procedures and/or SQL queries.
- the format to which the related data or obtained files are converted may be DICOM or some other format such as a human readable format that is either standard, indicated in a configuration file, or chosen by the user as part of the instructions to produce the virtual package.
- the files and the related data are stored as a virtual package.
- a virtual package may take many forms.
- the files and related data obtained in earlier blocks may be stored individually in a content-addressable storage server.
- a GUID or other identifier may be returned.
- These GUIDs may then be used as identifiers inside the virtual package.
- a user of the virtual package may be able to retrieve the files in the virtual package based on the GUIDs.
- all of the files may be stored locally grouped together as a single file (for example, as a tar ball or other grouping). This single file may be stored in the CAS server or cloud, at which time a single GUID may be returned.
- the single stored file may also include metadata indicating the location identification and other pertinent information related to each of the individual files stored therein.
- each individual file is stored in the CAS server or cloud as described above and subsequently a merge is requested in which all of the individual CAS files are merged together as a single CAS file and, optionally, the individual files are deleted from the CAS.
- the CAS server or cloud provides a GUID for the combination of all of the files together.
- This procedure may also include creating and/or maintaining the metadata as described above for the stored virtual package. Storing the individual files and/or the single file in the CAS may also be accompanied by keeping history data, auditing, and other information.
- a file may be created, or a log stored that indicates who created the virtual package, when they created it, its size, its contents, etc. This may be the case whether each file is stored separately, and those individual files are used as the package, a single file is stored after being grouped together, or whether the files are merged in the CAS.
- access control information is also provided to the CAS.
- the access control information may include email addresses, user names, or other identifiers to indicate what individuals, what login accounts, what groups of people, or other groupings or individuals (for example, such as systems) should have access to either individual files in the virtual package or to the virtual package itself.
- access control information may be included for a virtual package, then a user who has access to that package may receive an email indicating that the package has been stored in the CAS server or cloud and that that user may have access to it at that point.
- the user may have to subscribe to an event notification in order to receive that email, as described elsewhere herein.
- That user may be able to log into or otherwise authenticate to the CAS server or cloud in order to access the virtual package.
- the access control of that user may be checked and only when that user has appropriate permissions may the user access, modify, delete, or perform other actions on either the individual files in the individual package or the virtual package as a whole.
- other types of access control can also be provided by a CAS server, a CAS cloud, or other global storage system.
- access to a particular patient, series, study, or accession number may be turned off for all users. This may be useful, for example, if there is an issue with a patient, such as pending malpractice litigation for that patient.
- an individual user's access may be denied for all data in the global storage system. For example, if an administrator or other employee was fired then one precaution for the data in the CAS cloud may be to deny that person's account access to any data in the CAS regardless of previous permission. Controlling access in this way may be performed as part of a CAS server, CAS cloud, a separate application, or in any other appropriate manner.
- an application 132 may receive a request to produce a virtual package in block 710 . Some of the files in the request may be attached to the request, other files may be stored locally in application 132 , and additional files for the virtual package may be stored elsewhere. Application 132 may obtain those locally stored files and other files either from the local disk, from the CAS cloud 110 , or from the other sources (not pictured). The application may then send a request for related data to the CAS cloud 110 , a PACS application 131 , and/or to a shared archive module 133 . Each of those systems or devices may respond with related data in various formats.
- the application 132 may then store the related data as a virtual package in the CAS cloud 110 , using the various techniques and embodiments described above.
- the user of the application may have also provided access control information for the virtual package.
- the CAS cloud 110 may control access to the virtual package requested and produced previously as part of block 760 .
- embodiments herein provide for the creation and accessing of virtual packages.
- a user would like to create a collection of data that might traditionally be put on the disk, the user may not necessarily want to actually produce a physical disk. Therefore, embodiments herein allow the user to create a virtual package (perhaps called a “virtual disk”).
- the virtual package may be more easily distributed because it is not limited to physical disks.
- access can be finely controlled with a virtual package and updated over time in ways that are difficult or impossible with physical disks.
- the contents of the virtual package could be, for example, from the CAS cloud 110 .
- the user may be able to create a virtual package.
- the virtual package may include a number of objects, such as X-rays or MRIs, associated with a particular patient or group of patients.
- the PACS server 131 may communicate with the device manager module 141 and request the GUIDs for the objects in the virtual package.
- the device manager module 141 may then look in the GUM/object database 151 in order to determine the objects' associated GUIDs.
- the virtual package may simply be a collection of GUIDs.
- the PACS server 131 may communicate with the device manager module 141 in order to retrieve all of the objects associated with the GUIDs that are associated with the virtual package.
- An abstract representation of the virtual package is given in FIG. 10 .
- a virtual package 1010 is associated with multiple GUIDs 1021 - 1029 .
- the PACS server 131 will access the stored representation of the virtual package 1010 in order to obtain an indication of which GUIDs are associated with virtual package 1010 .
- the PACS server 131 will then retrieve the objects associated with each GUID. Together, these objects make up the content of the virtual package.
- the user will then be able to view, modify, or perform any other action on the virtual package, including, if appropriate, burning a physical disk based on the virtual package.
- virtual packages will include references to objects instead of GUIDs.
- a virtual package 1030 maintains references to various included objects references 1041 - 1049 .
- the application module will ask for the various objects from the underlying filesystem, such as the device manager module 141 in FIG. 1 .
- the device manager module 141 may then look in its own database 151 in order to determine what GUIDs are associated with each of the object references. Once the device manager module 141 has the GUIDs for the object references 1041 - 1049 , it can request the objects associated with the determined GUIDs from the content-addressable storage cloud 110 .
- the content-addressable storage cloud 110 may then return the objects associated with the GUIDs to the device manager module 141 .
- the device manager module 141 may then return the objects associated with the GUIDs, which are in turn associated with the object references 1041 - 1049 , to the requesting application module.
- the requesting application module would then have access to the contents of the virtual package.
- FIG. 9 is a block diagram illustrating a method 900 for creating and accessing virtual packages.
- the virtual package may be created and associated with numerous files in the content-addressable storage system. After the disk is created, access to that disk may be provided only to those who are allowed access. Further, physical disks may be burned based on virtual packages.
- a request for virtual package may be received.
- the request for the virtual package may come from a user using an application module, such as an application module 131 or 132 , as depicted in FIG. 1 .
- the request to create the virtual package may be received at the device manager module 141 or 142 , as depicted in FIG. 1 .
- a content-addressable storage server 121 - 125 in the cloud 110 may be responsible for creating virtual packages.
- the request to create a virtual package may also include, depicted as block 920 , a selection of files to be placed on the virtual package.
- the selection of files may be stored locally at the receiver, such as device manager module 141 or 142 , or they may be stored on the content-addressable storage servers in the cloud 110 .
- the selection of files may also include related data, as discussed elsewhere herein.
- the selections of files are associated with virtual package.
- the virtual package may be associated with an identification number, which may be stored in a database or other file, such as database 151 or 152 in FIG. 1 .
- Associating the files with the virtual package may include associating identifiers associated with each of the files to the identification number associated with the virtual package.
- a virtual package 1010 may be associated with identifiers 1021 - 1029 , and the identifiers for the files, when the files are stored in the content-addressable storage cloud 110 , may be GUIDs 1021 - 1029 .
- the application managing virtual packages may receive a request for a particular virtual package, in block 940 .
- the request to access a particular virtual package may be a request that identifies the virtual package by an identification number.
- the application may determine in block 950 whether the requester is allowed to access the virtual package. If access is not allowed, then in block 955 , access is denied to the requester. If access is allowed, as determined in block 950 , then the requester is given access to the virtual package and may access files in the virtual package as part of block 960 , burn a physical disk related to the virtual package in block 965 , or perform any other appropriate action.
- a device manager module 141 when someone using application module 131 requests the virtual package, assuming that the requester is allowed access, the device manager module 141 may look up that virtual package and its associated objects in the database 151 .
- the virtual package may be associated with a number of GUIDs, which represent the objects or data files in the virtual package.
- the device manager module 141 may request those files using the GUIDs from content-addressable storage server 121 .
- the content-addressable storage server 121 does not have the data files stored locally, then it may request those data files from other CAS servers in the cloud 110 .
- access control may also be provided by the content-addressable storage servers in the cloud 110 .
- Access control may fall into various categories, such as role-based access control and user-based access control.
- role-based access control will require a user to login and that user will be associated with the role.
- the access that the user has to the data may be defined by a role.
- User-based access control is similar in that a user must login and that user will have access to the data based on his or her specific access profile.
- the access control mechanisms may control reading data, writing data, modifying data, deleting data, etc.
- Access control may be defined for individual objects, such as X-rays for particular patients, or for types of objects or groups of objects.
- a given user may have access to all of the medical images for a particular hospital and may not have access to medical images for any other hospital (even if the other hospitals also have data stored in the cloud).
- a clinical research organization's analyst may have access to diagnostic results for a number of different hospitals but may not have access to any information that personally identifies any of the patients with whom the results are associated.
- authentication information may be required.
- authentication information may be a username and password, an identifier, an RFID chip read by a device coupled to the system, or any other authentication mechanism or technique known to those skilled in the art.
- a username and password may provide authentication to access the cloud 110 . If the username and password do not match or otherwise fail, then access to the cloud 110 may be denied.
- GUIDs associated with objects stored in the cloud 110 may also be associated with a group number.
- particular usernames and passwords may be associated with one or more group numbers.
- GUIDs associated with objects stored in the cloud 110 may also be associated with a group number.
- particular usernames and passwords may be associated with one or more group numbers.
- a particular user logs in using a username and password that particular user may have access to only the objects associated with the group numbers to which it has access.
- Each hospital may be associated with the group number.
- Each hospital may also have a username and password that users or computer systems associated with that hospital may use in order to access data.
- the content-addressable storage system may effectively isolate the patient files for one hospital from those of another hospital. Such an arrangement may provide certain benefits.
- each hospital may not necessarily have to build or support the physical computing and communication infrastructure needed to support the cloud.
- the infrastructure may be provided by one of the hospitals or it may be provided by a third-party. Either way, economies of scale may apply and the storage of data on this cloud from multiple hospitals may provide monetary and other benefits.
- FIG. 11 depicts a process for providing access control in a cloud of interconnected content-addressable storage servers.
- user authentication information is received.
- the user authentication information may be a username and password or other identifying or authenticating information.
- a check is made to determine whether the user authentication information is valid. This can include determining whether the username and password received from a user is valid or checking authentication with any other known method. If the user is not authenticated, then access to the system is denied in block 1130 . If the user is authenticated, as determined in block 1120 , then thereafter the system may receive a request from the user for stored data in block 1140 . That request may come in the form of a request for a particular GUID.
- a check is made to determine whether the user has permission to access the requested data.
- Checking whether the user has access to the requested data may take a number of forms. For example, in role-based access control, a determination may be made to see whether a role associated with the user, such as the role of analyst or administrator, provides that user with access to the requested data. Access control may also be finer grained. For example, access to files may be determined on a per user basis. As such, a check may be made to determine whether the user is allowed to access the particular file. If the user does not have permission to access the requested data, then access will be denied in block 1160 . If the user does have permission to access the data, then in block 1170 access is provided.
- the shared archive module 133 will request that file from the shared archive CAS module 143 .
- the shared archive CAS module 143 will attempt to retrieve the file from the cloud 110 .
- the device manager module will check the access control information for the user.
- the shared archive CAS module 143 will provide authentication information for the user to the cloud 110 , and a content-addressable storage server 123 will check to see whether the user has proper authentication to access the requested file. If the user does have access to the requested file, then the cloud 110 will return the file to the shared archive CAS module 143 , and the shared archive CAS module 143 will send the file to the shared archive module 133 .
- content-addressable storage servers in the cloud 110 provide entities communicating with content-addressable storage servers interfaces that are similar to those normally associated with file systems.
- a CIFS interface is provided by the content-addressable storage servers in the cloud 110 . Therefore, a program that is written to communicate with the familiar CIFS interface will be able to access the content-addressable storage servers.
- other interfaces are provided, such as WFC interfaces.
- IHE Cross Enterprise Document Sharing (XDS) interfaces are provided in some embodiments. Additionally, some embodiments herein may be used as an XDS Document Repository, document registry, document source, or document consumer.
- the interface may act as a filter on requests for stored files.
- the file system manager When a request for a file is sent to the file system manager, the file system manager will check to see whether the file is stored locally in whole or in part, and if it is not, then it will be requested via a CIFS call. The requested file will then be retrieved from a remote location and sent to the requester.
- a file request is received in block 1210 .
- a check is made to determine whether the file is stored locally, in whole or in part in block 1220 . If the file is stored locally, then in block 1230 the locally stored file is retrieved. Subsequently, the retrieved file is sent to the requester in block 1250 . If, however, it is determined in block 1220 that the file is not stored locally, then the file is retrieved from the content-addressable storage server in block 1240 . Examples of retrieving files from a content-addressable storage server are presented elsewhere herein. The retrieved file is then sent to the requester as part of block 1250 .
- the management of the stored data is independent of the representation shown to the end-user.
- the end-user such as an application module 131
- the content-addressable storage system as a whole may be modified or updated without requiring any modifications or updates to an application module 131 that may rely on the storage capabilities of the content-addressable storage system.
- the encryption protection provided in various embodiments may be manyfold. Data may be encrypted as it is sent from one content-addressable storage server to another. It may also be encrypted while it is stored in the content-addressable storage server. Each of these provides a different kind of protection. Encryption during transmission of data will help protect the data from being “snooped” on the transmission line or read by programs or individuals. Encryption during storage, on the other hand, will protect against the data being readily readable in the case that someone is attempting to read what is stored on the content-addressable storage server. Each of these two types of data protection is important for HIPAA.
- Various embodiments herein provide for encrypted transmission between both an application, such as an application module 131 , and a content-addressable CAS server, such as content-addressable CAS server 121 , as well as among various content-addressable CAS servers, such as those in the cloud 110 .
- Encryption works, generally, by taking unencrypted data and combining it with or modifying it based on a cipher. The encrypted data can then only be read by decrypting the data using a key corresponding to the cipher.
- Various embodiments of encryption are known to those skilled in the art.
- the system 100 of FIG. 1 may use encryption over one or more of the communication paths within the system 100 .
- data transferred between or among content-addressable storage servers in the cloud 110 may be encrypted.
- the encryption may be transmission encryption, such as that supported by secure socket layers (SSL) and secure hypertext transfer protocol (HTTPS).
- SSL secure socket layers
- HTTPS secure hypertext transfer protocol
- Such encrypted transmission will allow a transmitting entity to send unencrypted data to another entity without separately encrypting the data before the transmission.
- the encryption is handled by the transmission protocol in these cases.
- data can be encrypted before it is sent.
- the receiving entity may have the key or token associated with the cipher that was used to encrypt the data on the sender's side.
- a data object such as an X-ray
- the application module 131 may send the data object to the device manager module 141 , possibly using encryption.
- the device manager module may then send, possibly using encryption, the object into the content-addressable storage cloud 110 .
- the content-addressable storage cloud 110 will return a GUID associated with the object.
- the device manager module will then store the GUID in its GUID/object database 151 .
- the device manager module 141 when the device manager module 141 first send the object, possibly using encryption, in the content-addressable storage cloud 110 it will first go to a particular content-addressable storage server 121 .
- Content-addressable storage server 121 will at first store the object locally in its own storage. After some predetermined amount of time or once its data storage capacity is reaching a certain predefined threshold, such as 50%, 80%, or 90%, certain amounts of data will be offloaded and sent to other content-addressable storage servers in the cloud 110 , such as content-addressable storage server 123 .
- certain embodiments herein will first encrypt the object.
- encryption may be performed using data encryption standard (DES) or advanced encryption standard (AES) algorithms. Encryption may be performed by the content-addressable storage server 121 or by any other appropriate computing device.
- the content-addressable storage server 121 may also determine certain file trailer or other metadata, such as a checksum or a digest, such as an MD5 digest. This file trailer or other metadata may be then sent to the same content-addressable storage server to which the object is being offloaded.
- the receiving content-addressable storage server 123 may then use the file trailer or other metadata in order to determine whether the received object has been received correctly.
- acknowledgments of this fact may be sent back to be sending content-addressable storage server 121 . If, however, the received object has not been received correctly then, in some embodiments, a request may be sent back to the sending content-addressable storage server 121 to resend the object.
- the encryption of the objects when data is sent from one content-addressable storage server 121 to another 123 may help provide safety and security of patient data as it is in transit.
- objects and other data are encrypted when sent between any two entities, such as between the content-addressable storage server 121 and the device manager module 141 , and/or between a device manager module 141 and an application module 131 .
- FIG. 13 depicts an example process for transmitting data using encryption.
- a request is received to transfer a file.
- the file may be encrypted in block 1320 , and the encrypted file may be transferred in block 1330 .
- Encryption and transfer of data are described elsewhere herein.
- the receiver may receive the file in block 1340 and decrypt the file in block 1350 . Decryption of data is described elsewhere herein.
- a checksum or other data check may also be applied to the data to ensure the integrity of the received data.
- an unencrypted file may be received at a receiver, without that file ever being in transit in an unencrypted state.
- a computer device or system may include a bus or other communication mechanism for communicating information, and a processor coupled with the bus for processing information.
- the computer devices or systems may have a main memory, such as a random access memory or other dynamic storage device, coupled to the bus. The main memory may be used to store instructions and temporary variables.
- the computing devices or systems may also include a read-only memory or other static storage device coupled to the bus for storing static information and instructions.
- the computer systems may also be coupled to a display, such as a CRT or LCD monitor.
- Input devices may also be coupled to the computer system. These input devices may include a mouse, a trackball, or cursor direction keys.
- Each computing device may be implemented using one or more physical computers, processors, embedded devices, field programmable gate arrays (FPGAs) or computer systems or a combination or portions thereof.
- the instructions executed by the computing device may also be read in from a computer-readable medium.
- the computer-readable medium may be non-transitory, such as a CD, DVD, optical or magnetic disk, flash memory, laserdisc, carrier wave, or any other medium that is readable by the computing device.
- hardwired circuitry may be used in place of or in combination with software instructions executed by the processor. Communication among modules, systems, devices, and elements may be over a direct or switched connections, and wired or wireless networks or connections, via directly connected wires, or any other appropriate communication mechanism.
- Transmission of information may be performed on the hardware layer using any appropriate system, device, or protocol, including those related to or utilizing Firewire, PCI, PCI express, CardBus, USB, CAN, SCSI, IDA, RS232, RS422, RS485, 802.11, etc.
- the communication among modules, systems, devices, and elements may include handshaking, notifications, coordination, encapsulation, encryption, headers, such as routing or error detecting headers, or any other appropriate communication protocol or attribute.
- Communication may also messages related to HTTP, HTTPS, FTP, TCP, IP, ebMS OASIS/ebXML, DICOM, DICOS, secure sockets, VPN, encrypted or unencrypted pipes, MIME, SMTP, MIME Multipart/Related Content-type, SQL, HL7 Version 2.5, HL7 Version 2.3.1, etc.
- All of the methods and processes described above may be embodied in, and fully automated via, software code modules executed by one or more general purpose computers or processors, such as those computer systems described above.
- the code modules may be stored in any type of computer-readable medium or other computer storage device. Some or all of the methods may alternatively be embodied in specialized computer hardware.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Public Health (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Primary Health Care (AREA)
- Epidemiology (AREA)
- Computing Systems (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Software Systems (AREA)
- Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
- Radiology & Medical Imaging (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Pathology (AREA)
- Biomedical Technology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Medical Treatment And Welfare Office Work (AREA)
Abstract
Some of the embodiments herein provide a seamless cloud of storage. This storage may be content-addressable storage. An end application may or may not be exposed to the fact that content-addressable storage is used. Various embodiments herein provide event notification, which may allow applications or users to subscribe to particular events (such as storage of an X-ray by a particular entity). Some embodiments provide for a shared archive. A shared archive may provide homogeneous access to medical data, etc. that was previously stored into the CAS cloud by heterogeneous applications, varied data types, etc. Additionally, embodiments herein allow for the creation and distribution of virtual packages. For example, a user may create a virtual package for all images related to a patient so that she may have a virtual package of all of her medical data to present to a referring physician.
Description
- This application is a continuation of U.S. patent application Ser. No. 15/879,325, filed Jan. 24, 2018, which is a continuation of U.S. patent application Ser. No. 15/438,581, filed Feb. 21, 2017, which is a continuation of U.S. patent application Ser. No. 14/877,693, filed Oct. 7, 2015, which is a continuation of U.S. patent application Ser. No. 14/586,597, filed Dec. 30, 2014, which is a continuation of U.S. patent application Ser. No. 13/092,229, filed Apr. 22, 2011, now U.S. Pat. No. 8,930,470, which claims priority to U.S. Provisional Application No. 61/327,556, filed Apr. 23, 2010. The entire disclosures of these priority applications are hereby incorporated by reference herein in their entireties for all purposes.
- This disclosure relates to content-addressable storage (CAS) for handling, storing, and distributing medical imaging information and, more specifically, to event notification in interconnected content-addressable storage systems.
- Many files stored in computer systems contain data that is not expected to change over time. In some systems, the percentage of files that are expected to remain unchanged can range up to 90% of all of the stored files. Examples of data and files that are expected to remain unchanged include medical images, images of cancelled bank checks, images collected by oil and gas exploration, surveillance videos, files containing television news clips, and many types of archival and historical data. Other files are expected to change regularly, such as a database file, a word processing document that is being edited, and any type of file that represents current state, such as a file holding cumulative email messages as they arrive.
- Stored files must be accessible. Further, they must be accessible whether it's the kind of data that changes quickly, such as a file storing current email, or whether it is the kind of data that will not change much over time, such as medical images. CAS technology can be used to store different types of data including, by way of example, data that does not change over time. Generally, a “handle” (not necessarily the location of the file in a directory) or a GUID (globally unique identifier) is created for each stored object. This handle can be created based on known techniques, such as hashing.
- Current storage systems have a number of issues. The options for production of groupings of files may be limited. Another issue with current systems is that the heterogeneous storage of data (e.g., but a number of different medical imagers and reporting systems), can make accessing stored data difficult—both because of the distributed nature of the storage and because of the heterogeneous nature of the storage of the data.
- These and other issues are addressed by the embodiments described herein. Some embodiments address one or more of these issues, while others address a different subset of issues.
- Embodiments of the systems, methods, and devices described herein overcome problems of the prior art and enable management of interconnected content-addressable storage systems.
- In some embodiments, event notification in an interconnected content-addressable storage system is provided. Embodiments may include receiving a request for event notification of a particular type of event at a first content-addressable storage server (implemented on one or more computing devices) from a first application. Receiving a request to perform an action associated with an event of the particular event type at a second content-addressable storage server, where the first and second content-addressable storage servers are distinct and where the first and second content-addressable storage servers are both part of a content-addressable storage cloud. The embodiments may also include performing the action associated with the event of the particular event type at the second content-addressable storage server, and, upon performance of the action associated with the event of the particular event type at the second content-addressable storage server, propagating an event notification through the content-addressable storage cloud. Upon receipt of the event notification at the first content-addressable storage server, the first content-addressable storage server may provide for notification to the first application of the event of the particular event type. In some embodiments, notifications may be sent through the cloud using broadcasts or other methods. In various embodiments, events notifications may be for storage, alteration, deletion, and/or reading of data in the content-addressable storage cloud or any other appropriate event or action. Numerous other embodiments are described herein.
- These and other features and advantages of embodiments will become apparent from the following description of embodiments. Neither this summary nor the following detailed description purports to define the invention.
- These and other features will now be described with reference to the drawings summarized below. These drawings and the associated description are provided to illustrate specific embodiments, and not to limit the scope of the invention.
-
FIG. 1 illustrates a block diagram of an exemplary embodiment of a system for management of interconnected content-addressable storage systems. -
FIG. 2 is a block diagram representing an exemplary process for event notification in a system of interconnected content-addressable storage systems. -
FIG. 3 is a block diagram representing a second exemplary process for event notification in a system of interconnected content-addressable storage systems. -
FIG. 4 is a block diagram representing an exemplary process for providing a shared archive in a system of interconnected content-addressable storage systems. -
FIG. 5 illustrates a second block diagram of an exemplary embodiment of a system for content sharing with interconnected content-addressable storage systems. -
FIG. 6 is a block diagram representing an exemplary process for content sharing in a system of interconnected content-addressable storage systems. -
FIG. 7 is a block diagram representing an exemplary process for creating and managing virtual packages. -
FIG. 8 is a block diagram representing an exemplary data structure and data in a system of interconnected content-addressable storage systems. -
FIG. 9 is a block diagram representing an exemplary process for virtual package management in a system of interconnected content-addressable storage systems. -
FIG. 10 illustrates abstract representations of virtual packages. -
FIG. 11 is a block diagram representing an exemplary process for access control in a system of interconnected content-addressable storage systems. -
FIG. 12 is a block diagram representing an exemplary process for providing a file system interface in a system of interconnected content-addressable storage systems. -
FIG. 13 is a block diagram representing an exemplary process for encryption in a system of interconnected content-addressable storage systems. - In the following detailed description, references are made to the accompanying drawings that illustrate specific embodiments in which embodiments may be practiced. Electrical, mechanical, programmatic, and structural changes may be made to the embodiments without departing from the spirit and scope of the disclosure. The following detailed description is, therefore, not to be taken in a limiting sense and the scope of the disclosure is defined by the appended claims and their equivalents.
- Various embodiments overcome one or more issues with the prior art. Other embodiments may overcome different issues with the prior art. For example, some embodiments overcome issues related to event notification, others: virtual packages, yet others: shared archives. Some embodiments overcome more than one issue.
- Some of the embodiments allow applications to subscribe to “events” that correspond to actions in the CAS cloud. The actions that may take place in the CAS cloud include, but are not limited to, the deposition, reading, alteration, or deletion of data. An application (or user) may subscribe for all such actions, or for only those related to a particular group, application, or individual performing the related action. DICOM provides no such event notification. Providing this event notification can simplify the process for an entity to become aware, for example, of new file about which it is interested, regardless of where they are deposited in the CAS cloud. In systems that did not take advantage of event notifications embodiments herein, learning of new files in which the application is interested can be complicated. If a radiology department in Virginia wanted to know if there were new X-rays to analyze from hospitals around the country, then they (e.g., the IT department in Virginia) might set up polling programs that would check specific directories at each hospital (and possibly more than one directory at each hospital). Even in a static national network environment without technical issues, this would be a cumbersome task—and would likely have many technical challenges related to communicating through firewalls, mixed authentication standards, varieties of network and communications capabilities, and ensuring compliance to various standards (e.g., HIPAA or “Health Insurance Portability and Accountability Act”). In a more realistic network environment, all of those problems would exist, and would be exacerbated by the ever-changing network topologies, upgrading of software, storage, and computers, reconfiguration of computers, applications, and the like. In addition, it may be difficult or impossible for the hospital in Virginia to obtain access control information from the various hospitals across the country from which it is polling data. As an example of something that would almost certainly happen without the hospital in Virginia's knowledge: a software administrator at one of the target hospitals changing the directory to which a PACS machine was storing X-rays (possibly to provide more storage). As a result, the polling software in Virginia might either stop working (e.g., if the previous directory disappeared) or not have visibility into updates (e.g., because the new X-rays were being stored elsewhere).
- These issues are overcome by some of the embodiments of event notification in a CAS cloud discussed herein. For example, a radiology department's application may subscribe to the deposition of medical images by PACS machines into a particular file directory (perhaps mirrored to the CAS cloud as a bitfile)—or deposited directly into the CAS cloud. Those events may signal that the medical images should be analyzed by the team in Virginia. The team in Virginia receives those notifications without needing to perform the technical connection to the computer or server that deposited the files—and without checking any directories. Further, the hospital in Virginia would receive event notification based on any events in that group (or any group to which subscribes). Further, as discussed with respect to embodiments herein, the CAS cloud can even provide the necessary access control. Related examples are discussed more below with respect to
FIG. 4 . - Systems that do not provide a shared archive with searching, and automatic related data searching, are inefficient and may be difficult and time consuming to use. Consider a network of DICOM servers that are all running independent of each other and store their files separately. Since DICOM does not provide a shared archive among DICOM servers, when a doctor wanted to find all of the medical images and reports related to a particular patent, particular examination, etc., the doctor would log into a DICOM server and search for files. Certain files would be returned, but the doctor would have no way of knowing if there were additional files to be found on other DICOM servers, some of which the doctor may not even know about. Additionally, the separate DICOM (or other types of) servers may each have their own identifiers for patients that the doctor may not be aware of Each server may also have separate access control (e.g., username and password)—and the doctor may not have log-in or other access information for each server. It would be difficult, extremely time consuming, and in many instances, impossible for the doctor to obtain patient data from all of these servers.
- Some embodiments herein provide parsing and archiving of data stored in the CAS cloud, and later search and retrieval of that data, the underlying files, and related data. The data may be stored to, for example, a network-attached storage (NAS) or other computer hard drive by a PACS machine, and simultaneously or subsequently copied to the CAS cloud. PACS machines may write data to drives as single files, often called “blobs.” The CAS cloud, regardless of make or model of the PACS machine, will parse the information newly-written to the CAS cloud and add the information for the written data to the archive. For example, consider a PACS machine that writes a blob to its NAS drive that contains two X-rays and an MRI image with corresponding DICOM headers. An application connected to the CAS cloud, upon copying the file from the NAS drive, will parse the DICOM headers and store reference to that file and metadata (from the DICOM headers) in an archive. Embodiments of metadata management for metadata management are given in U.S. patent application Ser. No. 12/605,036, which is hereby incorporated by reference in its entirety for all purposes.
- Often image and other medical files have metadata associated therewith, which may be termed “related metadata.” The term “metadata” as used herein is a broad term encompassing its plain and ordinary meaning, including but not limited to “data or a set of data that provides information about the data with which it is associated.” For example, an X-ray or ultrasound file may have metadata attached thereto (e.g., as a DICOM header or XDS-I header) that describes the X-ray. The metadata may be stored in a structured header, as plain text, etc. Further, some files may contain metadata. For example, an analysis or report may contain metadata as part of the analysis or report (e.g., patient name, data, patient identifier, etc.).
- A user with appropriate permissions could search the archive and find (and retrieve) the X-rays and/or the MRI. The user could also search for and retrieve data that had been stored by other PACS machines, ultrasound machines, etc. Additionally, the shared archive can look for related data. For example, if the doctor input a patient identifier for the search, the shared archive may look up that patient identifier in a master patient index to find equivalent entries. The shared archive could then look up related data based on the other patient identifiers from the master patient index. Further, the shared archive may look up related data that is obtained based on data that is retrieved as part of the search. For example, if a query was for ‘all data on a patient’ (and assuming proper privileges for all data), the first response may be for a particular study. The study will have a unique identifier. The shared archive could then automatically query for all data related to that study number. One of the results of for the study number query may indicate that the patient previously had a different patient identifier. The shared archive could then look up all data for that previous identifier. This process may continue until all appropriate related data is found. In this way, a shared archive with related data search not only collects all of the related data in a way that it may be homogeneously searched, but also provides a way to find related data for queries.
- As used herein, the term “patient identifier” is a broad term, encompassing its plain and ordinary meaning, including, but not limited to, “a number, reference, or code that represents a patient in a data system, such as a database, PACS, DICOM message, etc.” For example, patient identifiers may include name, social security number, system-specific patient number, Unique Patient Identifier, patient account number, etc. Patient identifiers may also be a combination of one or more of these. For example, a patient identifier may be a combination of patient name and social security number. Patient identifiers may also be unique to a patient across an organization, enterprise, nation, or all system (universal or global).
- Grouping data can be difficult in medical systems, yet it is very important. If a doctor would like to group all of the data related to a particular patient, study, series, etc., that doctor would have to find all of the files and burn them to a CD, DVD, or, more likely, numerous CDs or DVDs. In current systems, all of this data may be stored on separate PACS systems, DICOM servers, etc. As noted above and elsewhere herein, merely finding the data that the doctor would like to store package together is difficult or impossible in most systems. Finding the data may require translating patient identifiers from those used in one system to those used in another, mapping accession numbers, manipulating the use of certain data records, etc. Further, these difficulties may be encountered for each server (e.g., a DICOM server or PACS server). For example, a doctor may not even know on which PACS, DICOM, or other server data resides. Even if the doctor knew on which server data resides, the doctor may not be able to find data related to a particular patient, study, series, etc. Further, even if the doctor could find all of this data, she may not be able to store the data to a single CD or DVD. Further, CDs and DVDs can get destroyed, lost, or, worse, fall into the wrong hands. Additionally, the person distributing the package of files may not be able to control the access to the files in the virtual package over time. For example, once a CD or DVD is distributed, even if it has embedded access control, that embedded access control would be static and could not change over time.
- Embodiments of virtual packages herein overcome one or more these issues. In creating a virtual package, a doctor may choose to include related data, and, as described elsewhere herein, related data may be automatically discovered and retrieved in a manner that, in many cases, might not be possible for the doctor to do alone. Further, after the virtual package is made and stored in the virtual archive, the doctor can distribute the virtual package without concern for the size of the underlying files. Instead, the virtual package provides a smaller and much more manageable set of data than the underlying files. Additionally, the doctor need not be as concerned with ensuring proper access control. The CAS system provides access control for the files therein, including those in the virtual package. Further, the CAS system can provide access control that varies over time. As discussed in more detail below, access control is being implemented by the CAS system at the time that the files are being accessed. As such, if the access control needs to change over time (e.g., if a malpractice suit was brought, access to data related to that suite may be restricted, monitored, etc.), the CAS can provide that changing access control.
- Some embodiments herein cover new approaches for the creation of and access to virtual packages in an interconnected content-addressable storage system. Other embodiments herein provide new and novel techniques for controlling access to data in a content-addressable storage system. Additionally, various embodiments herein provide interfaces for different filesystems heretofore unavailable in the context of content-addressable storage. For example, some of the embodiments herein provide a Common Internet File System (“CIFS”) interface. In addition, in some embodiments, data is protected (e.g., by encryption) as it is moved around the cloud, replicated, stored, and/or sent to applications using the cloud.
- Details regarding several illustrative preferred embodiments for implementing the system and method described herein are described below with reference to the figures. At times, features of certain embodiments are described below in accordance with that which will be understood or appreciated by a person of ordinary skill in the art to which the system and method described herein pertain. For conciseness and readability, such a “person of ordinary skill in the art” is often referred to as a “skilled artisan.”
- It will be apparent to a skilled artisan, in light of this disclosure, that the system and method described herein can advantageously be implemented using computer software, hardware, firmware, or any combination of software, hardware, and firmware. In one embodiment, the system is implemented as a number of software modules that comprise computer executable code for performing the functions described herein. In one embodiment, the computer-executable code is executed on one or more general purpose computers. However, a skilled artisan will appreciate, in light of this disclosure, that any module that can be implemented using software to be executed on a general purpose computer can also be implemented using a different combination of hardware, software, or firmware. For example, such a module can be implemented completely in hardware using a combination of integrated circuits. Alternatively or additionally, such a module can be implemented completely or partially using specialized computers designed to perform the particular functions described herein rather than by general purpose computers.
- It will also be apparent to a skilled artisan, in light of this disclosure, that the modules described herein can be combined or divided. For example, a skilled artisan will appreciate, in light of this disclosure, that any two or more modules can be combined into one module. Thus, referring to
FIG. 1 , theCAS server 121 anddevice manager module 141 may be combined into a single module that performs the functions of both modules. Conversely, any one module can be divided into multiple modules. For example, theCAS server 121 can be divided into multiple modules such that each individual module performs part of the functions of theCAS server 121 and all of the modules collectively perform all such functions. - Similarly, a number of databases are described herein. A skilled artisan will appreciate, in light of this disclosure, that any two or more databases can be combined into one database and that any one database can be divided into multiple databases. A skilled artisan will also appreciate, in light of this disclosure, that multiple distributed computing devices can be substituted for anyone computing device illustrated herein. In such distributed embodiments, the functions of the one computing device are distributed such that some functions are performed on each of the distributed computing devices.
- The foregoing and other variations understood by a skilled artisan can be made to the embodiments described herein without departing from the spirit of that which is disclosed herein. With the understanding therefore, that the described embodiments are illustrative and that the invention is not limited to the described embodiments, certain embodiments are described below with reference to the drawings.
- “Content-addressed storage,” or CAS, as used herein is a broad term, encompassing its plain and ordinary meaning, and includes techniques by which a unit of data stored on a storage system is accessed using an address that is derived from the content of the unit of data. The term “storage identifier” is a broad term, encompassing its plain and ordinary meaning, including, but not limited to a number, reference, pointer, or object that references a memory location, location in a CAS or CAS cloud, or other storage location. One type of storage identifier is a “GUID” or “globally unique identifier.” A GUID may be a globally unique identifier that is made sequentially, based on a timestamp, etc. In some embodiments, notwithstanding the potential for collisions, a GUID may be created based on a hash (MD5, SHA, etc.). As an example, the unit of data may be provided as an input to a hashing function which generates a GUID that is used as the content address for the unit of data. When a host computer sends a request to a content-addressable storage server to retrieve a unit of data, the host provides the content address of the unit of data (e.g., a GUID). The storage server then determines, based on the content address, the physical location of the unit of data in the storage server, retrieves the unit of data from that location, and returns the unit of data to the host computer. As used herein, the term “cloud” is a broad term, encompassing its plain and ordinary meaning, including, but not limited to “a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.”
- As depicted in
FIG. 1 , which shows asystem 100 for content-addressable storage, acloud 110 of content-addressable storage servers 121-125, may comprise numerous content-addressable storage servers, and these content-addressable storage servers may be connected in any number of ways. In some embodiments, each content-addressable storage server may be connected to every other content-addressable storage server (not depicted inFIG. 1 ). In other embodiments, each content-addressable storage server may be connected to one or more of the other content-addressable storage servers in the cloud. Therefore, any communication between two content-addressable storage servers may be over a direct connection, over a single path via one or more of the other content-addressable storage service, or over one or more of multiple paths via one or more of the other content-addressable storage servers. Various direct connections, single path connections, and multipath connections, are depicted inFIG. 1 . - The
system 100 may include one or more CAS servers 121-125. Each of these CAS servers may include or have thereto attached one or more storage servers (not pictured). The CAS servers may include one or more RAID storage systems, cloud storage, tape storage, optical disks, magnetic disks, and/or any other appropriate type of storage. There may be any number of CAS servers and each may have any number of storage systems. Two or more storage systems may reside on the same physical disk or storage, or each storage system may reside on one or more disks or other storage separate from all of the other storage systems. In some embodiments, content stored in a CAS server 121-125 may be retrieved based on a GUID and/or based on a search, as discussed herein. - As noted herein, when a CAS server 121-125 receives content to store, it may store the content and metadata to the storage system. The content may be stored in the same format in which it is received on an attached memory. In some embodiments, other storage devices or methods may be used, such as flat files, directories, databases, or the like. The metadata may be stored in any fashion, including in a database, flat file, directory of files, or the like. In some embodiments, the metadata may be stored in XML or other structured file as plain text and this plain text may be searchable. In some embodiments, the metadata is stored in a database, and this database may be searchable.
- Also depicted in
FIG. 1 are three application modules 131-133. The application modules 131-133 can be any type of applications that need storage of data, particularly long-term storage of data that is not going to change quickly. The application modules 131-133, as discussed above, may be medical application modules, and these medical application modules may need access to medical images, such as X-rays, CT scans, Mills, etc. that have been stored over a period of time. The application modules 131-133 may communicate directly with thecloud 110. In some embodiments, as depicted inFIG. 1 , application modules 131-133 may communicate with a device manager module 141-143, respectively. In some embodiments, device manager module 141-143 may provide an interface between an application module 131-133 and the content-addressable storage cloud 110, thereby providing application modules 131-133 with a more traditional data interface than they would have if they were directly coupled to theCAS cloud 110. For example, application modules 131-133 may be able to request or search for data through the device manager module 141-143. Device manager modules 141-143, on the other hand, may act on that request for that search by looking for a global unique identifier, or GUID, that corresponds to the data (perhaps by querying a GUID/Object database 151-153). Once the device manager modules 141-143 have the GUID, they will be able to request the data associated with the GUID either from an attached database (not pictured), or from the content-addressable storage cloud 110. - For example, if a
PACS system 131 requests a particular X-ray fromdevice manager module 141, then thedevice manager module 141 may look up the GUID for that X-ray in its GUID/object database 151. Once thedevice manager module 141 has the GUID corresponding to the X-ray, it may request the object associated with the GUID from the content-addressable storage server 121. If the content-addressable storage server 121 has the object associated with the GUID, then it will return it to thedevice manager module 141. If, however, content-addressable storage server 121 does not have the object associated with the GUID stored locally, then it may forward the request for the GUID to one or more other content-addressable storage servers in thecloud 110. Each of the content-addressable storage servers to which the request for the file associated with the GUID was sent will check to see if the object associated with the GUID is stored locally to it. As was the case for content-addressable storage server 121, these content-addressable storage servers to which the request was forwarded will return the object associated with the GUID to content-addressable storage server 121, if it is stored locally. If the content-addressable storage servers to which the request was forwarded do not have the object associated with the GUID stored locally, then they will each forward the request to one or more other content-addressable storage servers in thecloud 110. This process will continue until one of the content-addressable storage servers in thecloud 110 has the object associated with the GUID. Once the object associated with the GUID has been located, it will be returned to content-addressable storage server 121. Content-addressable storage server 121 will then return the object to thedevice manager module 141, which will in turn provide the object, in this case a file containing an X-ray, to thePACS application module 131. - In various embodiments, after the request for the object associated with the GUID has been satisfied, the object associated with the GUID is cached or stored locally at the content-addressable storage server. Considering the example above, once the content-
addressable storage server 121 receives the object associated with the GUID, it may store that object locally (e.g., at CAS server 121). As such any subsequent request for that GUID made to content-addressable storage server 121 may proceed more quickly because the object associated with the GUID is already stored locally at content-addressable storage server 121. - Given that storage is finite, a content-addressable storage server, such as content-
addressable storage server 121, may not be able to store objects associated with GUIDs indefinitely. Therefore, various techniques for offloading locally-stored objects to other content-addressable storage servers in thecloud 110 may be used. For example, in some embodiments, after a predetermined amount of time, for example one day, one week, or one month, has passed, an object may be “timed out” and offloaded to another content-addressable storage system in thecloud 110. This timeout technique may be used alone or in conjunction with other techniques. Another technique may be to monitor the quantity or percentage of the storage capacity of the content-addressable storage server 121 that is currently in use. If a certain threshold amount of the storage capacity of the content-addressable storage server 121 is in use, then one or more objects may be offloaded to other content-addressable storage systems in thecloud 110. The choice of which objects to offload may be based on any number of factors, such as the age of the object, the size of the object, or some combination of the two. Many techniques are known to those skilled in the art, including those that may predict which objects are likely to be used in future. In some embodiments, the less likely an object is to be used in the future, the more likely it should be an object chosen to offload onto another content-addressable storage system in thecloud 110. - A user, such as a doctor, may use the shared
archive module 133 to query for particular studies (e.g., all X-rays for a particular patient taken in the previous 5 years). The sharedarchive module 133 may forward the request to thedata manager module 143. Thedata manager module 143 may look up the GUIDs for the X-rays and request that data from theCAS cloud 110. TheCAS server 123 may then look locally for the data associated with the GUIDs. If the data associated with the GUIDs are not there, then the request for the GUIDs may be sent into theCAS cloud 110 to obtain the data associated with the GUIDs, as above. Once theCAS server 123 has the data associated with the requested GUIDs, it will send that data to thedata manager module 143, which will return it to the requesting application, sharedarchive module 133. The user will then have local access to the data in theCAS cloud 110. -
FIG. 1 depicts a sharedarchive module 133 that has a sharedarchive CAS module 143 and adatabase 153.FIG. 1 depicts thedatabase 153 being connected to the sharedarchive CAS module 143, but thedatabase 153 may also be directly connected to the sharedarchive module 133 or connected to both the sharedarchive CAS module 143 and the sharedarchive module 133. Further, in some embodiments, two or more of the sharedarchive module 133, sharedarchive CAS module 143, anddatabase 153 may be combined as a single unit or module or may run on a single computer (not pictured). - The high-level overview illustrated in
FIG. 1 partitions the functionality of the overall system into modules for ease of explanation. It is to be understood, however, that one or more modules may operate as a single unit. Conversely, a single module may comprise one or more subcomponents that are distributed throughout one or more locations. Further, the communication between the modules may occur in a variety of ways, such as hardware implementations (e.g., over a network, serial interface, parallel interface, or internal bus), software implementations (e.g., database, DDE, passing variables), or a combination of hardware and software. - Some embodiments allow users or applications to subscribe to particular event notifications. As noted herein, DICOM does not provide event notification. Nevertheless, users of DICOM and similar protocols and systems may desire or need event notification. Using embodiments herein, users or applications can subscribe to receive event notifications from the CAS cloud. The event notifications may correspond to or be triggered by, events or actions taking place in the CAS cloud. For example, turning to
FIG. 1 , when aPACS application 131 stores an X-ray, MRI, or other medical image in the content-addressable storage cloud 110, via thedata manager module 141, that storage action may be associated with an event. Other applications, such asapplication 132 may subscribe to events of a particular event type, such as the storage of X-ray images by thePACS application 131. When thePACS application 131 stores the X-ray image to theCAS cloud 110, an associated event notification is propagated through theCAS cloud 110, as represented by the arrows in theCAS cloud 110. For example, thePACS application 131 may store data in thecloud 110 via itslocal CAS server 121. Itslocal CAS server 121 may forward a related event notification to the other CASs in thecloud 110, such asCAS server 124.CAS server 124 may in turn forward the event notification toCAS server 125 and, subsequently,CAS server 125 may forward that event notification toCAS server 122. Thedevice manager module 142 or theapplication 132 may then receive the event notification fromCAS server 122. In order to receive the notification, theapplication 132 may communicate directly withCAS server 122 or todevice manager module 142 which may in turn speak toCAS server 122. Various other embodiments of event notification automation are described herein. - As used herein, the term “event notification” is a broad term, encompassing its plain and ordinary meaning, including, but not limited a notification that a particular event has taken place. The types of notifications and their delivery are discussed herein. The term “event” as used herein is a broad term, encompassing its plain and ordinary meaning, including, but not limited to, execution or performance of a particular action with respect to data in a CAS cloud or with respect to the CAS cloud itself. Particular examples of events are described herein.
-
FIG. 2 is a flow diagram depicting amethod 200 for event notification automation. Inblock 210, a first system subscribes to an event notification for an event group “G.” Returning again toFIG. 1 , the first system may be, for example,application 132. The group G may represent any type of group for whichapplication 132 may want to receive event notifications. For example, the group G may correspond to all events for a particular department in a hospital, for a particular hospital, for a particular doctor for all medical images of a certain type, such as X-rays, MRIs, etc. —or any other appropriate grouping. The group G may be defined by any combination of one or more of patient identity, doctor identity, hospital department, hospital, timing, or any other appropriate aspect. The types of events in group G may also be limited to data being written to theCAS cloud 110, data being modified in theCAS cloud 110, and/or data being deleted from theCAS cloud 110. Additional grouping characteristics for event types for a group may also include, for example, storage, retrieval, migration, reloading, deleting, getting properties, changing groups, duplicating bit file, burning a volume, any check or analysis on the CAS cloud, any synchronization or action such as a shutdown initialization, purging in the CAS cloud, etc. In addition,application 132 may subscribe to events associated with all actions in theCAS cloud 110. Turning to specific examples of notifications, in some embodiments, all event notifications have a Group ID (e.g., event group “G” discussed above) and GUID in the body of the notification. An application or server may check all newly-arrived event notifications and find those to which it is subscribed by matching or filtering for the Group IDs in which it is interested. -
Method 200 depicts only a single event notification subscription. Nonetheless, systems may subscribe to event notifications for additional actions and/or for different groups other than group G. Various embodiments will allow the first subscriber system to subscribe to event notifications for multiple groups and for multiple event types and perform the subsequent blocks 220-240 and optionally 250 for those other event notifications. For example,application 132 may subscribe to events related to all deletions of X-ray files from a particular hospital, all additions of X-ray files from a particular hospital, and/or all maintenance issues with the CAS cloud. - After the first system subscribes to event notifications for group G in
block 210, a second system performs an event that triggers an event notification for group G inblock 220. For example, ifapplication 132 subscribed to events for X-rays being written to the CAS cloud at a particular hospital inblock 210, andPACS application 131 triggers an event in that group by writing an X-ray to the CAS cloud from that particular hospital inblock 220. That event notification would get propagated through theCAS cloud 110 toCAS server 122 as part ofblock 230. - The forwarding of event notifications in the CAS cloud in
block 230 can take many forms in various embodiments. For example, turning toFIG. 1 , each CAS server 121-125 may forward the event notifications to every CAS server 121-125 to which it is connected unless it is the CAS server 121-125 from which it received the event notification. In this way,CAS server 121 would forward the event notification toCAS server 124 as well as any other CAS servers to which it is attached.CAS server 124 would then forward the event notification to allCAS servers CAS server 121, from which it received the event notification originally. Subsequently, each receiving CAS server will forward it to its other neighbors until all CAS servers in the cloud have received the event notification. In other embodiments, the CAS servers may form a tree or hierarchy which defines to which neighboring CAS servers each CAS server should forward the message, thereby eliminating some or all duplicate event notifications being received at CAS servers in theCAS cloud 110. - In some embodiments, each event notification has associated with it an identifier or signature. That identifier or signature may allow a CAS server 121-125 in
cloud 110 to identify if the CAS server 121-125 has received a duplicate event notification. Where appropriate, embodiments ignore duplicate event notifications and provide only the first of duplicate event notifications to subscribers. The CAS servers 121-125 may also forward only the first event notification received and, upon checking the unique identified with subsequent event notifications, not forward any duplicate event notifications to its neighboring CAS servers in thecloud 110. An event notification may include a reference (e.g., a GUID) to the data associated with the action that was performed as well as a group ID, timing, identity, and/or the type of event. - After the event notification is forwarded to the CAS cloud in
block 230, the first system will receive the event notification for the event inblock 240. The first system may receive the event notification by performing a polling action, such as running a recurrent script or a program that monitors events in the CAS cloud. For example, anapplication 132 may run a program that continually monitors a location associated with storing new event notifications inCAS server 122. When a new notification arrives, theapplication 132 or the event monitoring program may compare the incoming notification's group ID with the group IDs for whichapplication 132 has subscriptions. If a matching group ID is found, then theapplication 132 is then aware of the new event notification. In some embodiments, theCAS server 122 and/or another application in theCAS cloud 110 may have a subscription manager (not depicted inFIG. 1 ), which will push events to adevice manager module 142 or anapplication 132 in order to provideapplication 132 with updates on events for which it has subscriptions. In such an embodiment, the subscription manager will check on newly arrived events in theCAS cloud 110 and check the group IDs against the subscriptions ofapplication 132 and/ordevice manager module 142. If a matching group ID is found, the subscription manager will send the event toapplication 132 and/ordevice manager module 142. - After the first system receives event notification for the event related to the action performed by the second system in
block 240, the first system may, optionally, retrieve data effected by or associated with the event from theCAS cloud 110. For example, ifapplication 132 has subscribed to a group of events associated with thePACS application 131 writing X-rays to thecloud 110, then upon the PACS application writing an X-ray to thecloud 110,application 132 should receive a notice (blocks 210-240).Application 132 may then retrieve the GUID from the event notification and retrieve the data associated with the event from the CAS using the GUID.Application 132 can then retrieve the X-ray inblock 250. A subscription module may also automatically retrieve the data associated with the event and send it toapplication 132 and/ordevice manager module 142. As noted above, retrieving data from aCAS cloud 110 may involve querying thedevice manager module 142 or theapplication 132 may be able to request the file corresponding to the GUID directly from theCAS cloud 110. - Event notification embodiments herein may be implemented as a parallel to or as part of an implementation of the HL-7 standard. For example, event notification may be implemented to represent Instance Availability Notifications to the systems using IHE/HL-7. The HL-7 Instance Availability Notification may be implemented, for instance, using the event notification in the CAS as described herein. The storage of a file in the CAS cloud may trigger an event notification, sent as an Instance Availability Notification. The event notification may notify interested workflow actors (such as an IHE Department System Scheduler/Order Filler, Post-Processing Manager and Report Manager, etc.) about the availability status of data in the CAS. The messages may be sent using an HL-7 Observation Results Unsolicited message, Medical Document Management message, or any other appropriate message type.
-
FIG. 3 illustrates an abstract representation of an example workflow for two medical service providers connected to a content-addressable storage server cloud. The first hospital is in California and the second is associated with a radiology department in Virginia, both of which may be connected to thesame CAS cloud 110 inFIG. 1 . The hospital in California subscribes to receive event Group “VA” event notifications inblock 310. The Group VA event notifications may be, for example, when the group in Virginia has stored reports on analysis of medical imagery in the content-addressable storage cloud. The radiology department in Virginia, on the other hand, may subscribe to receive event Group “CA” event notifications in block 311. The Group CA may correspond to X-rays being deposited or stored in the CAS cloud. After the two medical service providers have subscribed to events, they may later receive event notifications, as represented by the two dashed arrows inFIG. 3 . In the example below, the California hospital performs an X-ray, the Radiology Department in Virginia analyzes the X-ray, and the California hospital receives a notification of that analysis. Many other workflows are also possible with embodiments herein. Different imagery may be used (MM, ultrasound, etc.) or no imagery may be used at all. For example, the events and workflows may be related to analysis of written reports, proofreading transcription, or any other appropriate workflow or analysis. - In
block 320, an X-ray is performed at the hospital in California. The X-ray may be performed using any known means, technique, or method. Inblock 330, the X-ray is stored in the content-addressable storage server cloud thereby triggering a Group CA event notification. Storing the X-ray to a CAS server or cloud may include writing it to a CAS server or cloud directly using a CAS interface, writing to a directory that is mirrored to a CAS server or cloud, writing to a file system interface that interfaces with the CAS server or cloud, or any other appropriate method, system, or technique. For example, referring toFIG. 1 , aPACS application 131 or adevice manager module 141 may write the X-ray to a NAS or other directory, which may then mirror the X-ray to the CAS server or cloud (possibly with header or other files or information as part of the same file). “Mirroring” a folder or directory to theCAS cloud 110 may take many forms, including replicating the folder as a single bit file in theCAS cloud 110 or individual files in the directory may be stored in theCAS cloud 110 and the structure of the folder (e.g., mapping of GUIDs for particular files to corresponding directories) may be stored separately (e.g., also in theCAS cloud 110 or atPACS application 131 or device manager module 141). - Triggering the Group CA event may include content-addressable storage systems that are interconnected in a
CAS cloud 110 forwarding the events until each content-addressable storage system in theCAS cloud 110 has received the event notification or at the very least until a CAS server connected to the radiology department in Virginia receives the event notification. Numerous examples of generating or triggering event notifications are described in detail elsewhere herein. - In
block 340, the radiology department in Virginia receives the Group CA event notification. Receiving that notification may spawn under number of workflows including emailing a radiologist, populating a database or to-do list at a radiologist's workstation, inserting an X-ray into a radiology workflow or queue, etc. In this way, a radiologist may be able notified that a new X-ray, is available and needs analysis. - In some embodiments, block 350 may include manually or automatically retrieving the X-ray from the CAS server or cloud after the event notification is received.
Block 350 may also include the radiologist performing analysis of the X-ray. After analyzing the received X-ray, the radiologist may store a report on that analysis into the content-addressable storage system or cloud, thereby triggering a Group VA event notification inblock 360. The report may include the radiologist's opinion, analysis, annotations, or any other information or work product that has been made by the radiologist. As described elsewhere herein, storing to a CAS server or cloud may include writing the report to a directory and that directory being copied to the content-addressable storage server; writing to a network attached storage system, where that network attached storage system operating as an interface for the content-addressable storage system; storing the report directly to a CAS server via a CAS interface or to the cloud; or any other appropriate writing means or technique. Referring toFIG. 1 , either anapplication 132 or adevice manager module 142 may control the writing of the report to theCAS server 122 orCAS cloud 110. - The Group VA event notification generated by the radiologist's report being stored on the content-addressable storage server or cloud (block 360) is propagated through the content-addressable storage server cloud and received at the hospital in California in
block 370. Receiving the Group VA event notification inblock 370 may spawn another workflow or actions, such as sending an email to an appropriate doctor, team of doctors, administrators, or other practitioners, etc. Receiving the Group VA event notification inblock 370 may be followed by storing an indication of the event in a database, file, or queue. Any other appropriate notifications or actions may be taken based on the receipt of the Group VA event notification. - Once the event notification is received in
block 370, the report or analysis may be retrieved inblock 380. The report may be retrieved in any appropriate manner, including those techniques discussed herein. For example, a doctor may retrieve the report from theCAS cloud 110 based on the GUM in the Group VA event notification using an application 131-133. The application may, in turn, use the data manager module 141-143 to retrieve the report stored from theCAS cloud 110. Regardless of which way the report or analysis is retrieved, the doctor may then review the analysis and continue patient care. From there the doctor may be able to review that analysis and discuss it with a patient as appropriate. For example, using the techniques ofFIG. 3 , the doctor who originally performed the X-ray in California may later receive an email that the radiology department in Virginia analyzed the X-ray and can now retrieve and review the report with the patient. - Numerous other workflows or methods may be performed using various embodiments herein. Those embodiments may incorporate complex workflows and notifications associated with each block in the workflow in order to trigger further action, such as depicted in
method 300 ofFIG. 3 . For example, a technician may perform an ultrasound and store the ultrasound data in the content-addressable storage server cloud. Storage of that ultrasound data may generate an event for a radiology department to analyze it. The analysis may then be performed, and a report on the analysis stored in the content-addressable storage server cloud, thereby generating its own event notification. A doctor may then be notified of that the report on the ultrasound is ready for review. The doctor may retrieve the ultrasound data and related report from the content-addressable storage server cloud and perform further review on the ultrasound and the report. The doctor may then discuss the report or findings with the patient and possibly perform another ultrasound. This further ultrasound may again be deposited in the CAS, which will again trigger the radiology department to perform analysis. And the workflow may be extended and/or repeated. - Embodiments herein provide a shared archive in an interconnected content-addressable storage system. For example, looking at
FIG. 1 , anapplication 132 and aPACS application 131 may each store information in a content-addressablestorage server cloud 110. Upon storage of information in the content-addressablestorage server cloud 110, an application, such as sharedarchive module 133 or sharedarchive CAS module 143, may parse the incoming files being stored in the content-addressablestorage server cloud 110. Upon parsing these incoming files, the shared archive may extract information from the metadata in those files and store the information (perhaps database 153). As used herein and in this context, the term “information” is a broad term, encompassing its plain and ordinary meaning, including, but not limited to “data or metadata in a parsed or otherwise accessible form.” For example, when metadata is parsed, the information from the metadata may be accessible, for example, in RAM in a data structure, as entries in a database, etc. - At a later time, a user (not pictured in
FIG. 1 ) may access the sharedarchive module 133 and query for files stored in theCAS cloud 110. The query may be for a particular type of image, such as an MRI image, a particular patient, a particular doctor, or a particular hospital. Upon receiving the query, the shared archive may search thedatabase 153 for records that match the query and related data. The sharedarchive module 133 may then return results to the requester (e.g., the one that sent the query) in the form of GUIDs for the files that correspond to the metadata. The response to the query may be the metadata itself, a report on the metadata, or any other appropriate information related to the metadata. In some embodiments, the shared archive may return all or a part of the file(s) matching the query. - Turning now to
FIG. 4 , a flow diagram depicts amethod 400 for providing a shared archive. Inblock 410, a PACS machine stores a file containing medical data (such as imaging data) and related metadata to a disk drive, such as a network-attached storage drive. In this particular embodiment, the network-attached storage drive is mirrored to the CAS cloud as part ofblock 410. This is represented with themirroring interface 471 depicted inFIG. 4 . Mirroring a directory or drive may include copying all files from one or more directories onto other drives (or into other directories). Redundant Array of Independent Disks (RAID) is one example of using mirroring techniques. If a local or networked drive (or directory) is mirrored to the CAS, then as files are copied to that drive (or directory) are copied to the CAS. For example, turning toFIG. 1 , if aPACS application 131 stores a file to a mirrored directory, thedata manager module 141 may then copy that file from the mirrored directory toCAS server 121, which will return a GUID for the file. The GUID may be stored in the GUID/OBJ database 151 along with information about the stored file. As used herein, the term “medical data” is a broad term, encompassing its plain and ordinary meaning, including but not limited to images, videos, reports, and other medical-related data associated with one or more patients, accession numbers, study numbers, series numbers, etc. Medical data may include or have associated with it, related metadata. Examples of medical data include, but are not limited to DICOM images, DICOM reports, files in a proprietary format that have header data or metadata, XDS-I-encapsulated files or reports, or any other appropriate data image or metadata. - Various embodiments provide for other sources of files for inclusion in the shared archive. For example, block 411 depicts an application storing a file, which contains a report and metadata, directly into the CAS cloud via a
CAS interface 472. TheCAS interface 472 is described extensively above with respect toFIG. 1 and elsewhere herein. Another source of data is depicted inblock 412. Inblock 412, an application writes a file containing imaging data and metadata to a CAS cloud via a file system (e.g., CIFS)interface 473. A CIFS interface may be particularly useful for legacy applications that communicate directly to a CIFS drive. That is, the application may be able to believe that it is writing to a network-based CIFS drive and, in fact, the application is instead writing to the CAS cloud. Implementations of network interfaces, such as CIFS interfaces, are described elsewhere herein and various embodiments herein include other files system interfaces, such as NFS, FAT, SAMBA, etc. There may be additional ways to store files and data into the content-addressable storage cloud and these are considered within the scope of embodiments herein. - After a file is stored in the CAS, then, in block 420, the metadata of the stored file is parsed. In some embodiments, the stored files may have a single header containing metadata related to a report, image, or other documents stored therein. For example, an XDS-I file has a header and an encapsulated file portion, and the XDS-I header may have parsable metadata which is parsed and used in the subsequent blocks of
method 400. As another example, a DICOM header may include a preamble and a prefix followed by numerous data elements. The header may contain data describing the data elements stored in the file. This header information is parsed in order to extract information about the subsequent data elements in the DICOM file. Some files stored in the CAS cloud are files known as “blobs.” Blobs may contain multiple DICOM files and/or other format files. For example, if a blob contains multiple DICOM files, then each header may be separately parsed, and information extracted about the data elements following each header. A similar process occurs regardless of the type of file stored in the CAS cloud. - Headers can be parsed based on the format of the file and header. Some headers are in a mark-up language format and can be parsed based on that mark-up language. For example, XDS-I headers are typically in XML or a related mark-up language. Other headers, such as DICOM headers, may have fields that identify and define where and what type of information is in the header. Other formats and methods of parsing them are also encompassed by the embodiments herein.
- Once the metadata of the stored file is parsed in block 420, the information extracted from the parsed metadata is stored in the shared archive with a reference (e.g., a GUID) to the file itself. For example, if a DICOM image containing an X-ray is parsed in block 420 and patient name, doctor, time of performance of the X-ray, and hospital is extracted from the DICOM header in block 420, then in
block 430 this information is stored in the shared archive and associated with the GUID of the stored DICOM file. - When information is stored in the shared archive in
block 430 ofFIG. 4 , the sharedarchive module 133 may take the information obtained from parsing the file stored in the CAS and store it indatabase 153 along with the GUID or other identifier that is associated with the metadata. In this way, a user may later be able to search the information in thedatabase 153 to find matching files and retrieve the GUIDs and/or the files. - Returning again to
FIG. 4 , there is a dotted line fromblock 430 back toblocks blocks - In
block 440, a query is received on the shared archive. The query may be of any appropriate type (Boolean, SQL, natural language, DICOM Query/Retrieve, etc.). The query may be for X-rays for a particular patient, all images for a particular patient, all files (e.g., reports, images, etc.) for a particular patient, all files or a subset of files for a particular doctor, all files or a subset of files for a particular department in a hospital or a particular hospital, etc. Additionally, the queries may be for particular periods of time, for example, all X-rays stored with relation to a particular patient between Jan. 1, 2009 and Jan. 12, 2009. - Once the query is received in
block 440, the query is run on the shared archive inblock 450. Running the query may simply comprise running a query ondatabase 153. There may also be interpretation of the received query in order to run the query ondatabase 153. For example, the query may request results related to a particular patient. Those results may then be the basis of more queries for related data inblock 451. From the first results received, one or more queryable data items may be extracted. As used herein, the term “queryable data item” is a broad term encompassing its plain and ordinary meaning, including, but not limited to, a data item for which a search may be performed. In this context, the queryable data item may be one or more data items, obtained from the search results, for which subsequent queries or searches may be run. For example, a query for an X-ray could return an X-ray that is associated with a particular accession number. The shared archive, inblock 451, may then perform another query, on the accession number, to find related data. An “accession number” as used herein is a broad term that encompasses its plain and ordinary meaning, including, but not limited to, a number or identifier that identifies a particular object or collection of objects (such as a particular lab results or set of lab results). - Requesting related data can be a very complex undertaking. In an interconnected system in which all of the interconnected systems and servers are using a shared identifier, requesting related data may simply include sending requests to those connected servers and systems for all data related to that identifier. In many modern hospitals and healthcare systems, however, different identifiers are used by different systems within the same interconnected medical environment. For example, one imaging server may identify patients by social security number. Another may identify patients by a patient identifier generated by that system or some other centralized system. In addition, even if the multiple systems start with the same identifier, they may prepend or append information such as time stamps or locations onto the identifier in order to identify that patient study or accession uniquely.
- In addition to the difficulty related to the use of different identifiers, systems may codify or place identifiers in different or inconsistent locations. For example, consider a PACS system or other imaging system in which there is only a single field for the patient identifier. Some hospital systems may also use hierarchies of patient identifiers in order to identify the patient correctly across a broad range of systems. An imaging system that only has a single location to store a patient identifier with a record may then have to be modified or treated differently. For example, one of the two patient identifiers needed may be stored in the space provided on that system for the single patient identifier. The other patient identifier on the other hand, may be stored in another field, such as an accession field, middle name field, or comment field. Further, because that other field is used for a secondary purpose, the information that would have originally gone into that field may have to be placed in another location. This process may continue, and numerous fields may be used inconsistently or in a nonstandard way in the system. For example, turning to
FIG. 8 , there is adata structure 800 that contains apatient identifier field 810, astudy number field 820, and ahospital number field 830. As indicated by the three dots, there may be numerous other fields. If a system needs to store two patient indices, thendata structure 800 may not provide sufficient fields. Theprimary patient index 811 may have to be stored in thepatient identifier field 810. Thesecondary patient index 812 may be stored in thestudy number field 820, and thestudy number 821 may be stored in thehospital number field 830. Other changes may have to be propagated through the rest ofdata structure 800. As a result of inconsistent use of the field in the data structure, requesting related data from a system may require knowing how the data structures or other pertinent identifiers are used within that system. A system wishing to talk to a PACS that uses thedata structure 800 inFIG. 8 would have to know to send its primary patient index in thedata structures field 810, its secondary patient index in thestudy number field 820, the study number in thehospital number field 830, etc. Additional embodiments of searching for related data are discussed elsewhere herein. - As another example, a query for all data on a patient identifier (block 450) may result in results associated with numerous accession numbers, study numbers, serried numbers, etc. In
block 451, queries may be run on the returned accession numbers, study numbers, series numbers, etc. Those queries may, in turn, results in other identifiers being discovered (related to other accession numbers, series numbers, study numbers, and possibly other patient or data indices). Each of those new identifiers may also be searched and return results. In addition, the query may be translated using a master patient index to run the query on other identities associated with the patient (e.g., other patient identifiers, social security numbers, etc.). Master patient indexes are described elsewhere herein. As an example, however, a patient may be assigned an index upon a first visit to the hospital, and, years later, be assigned another. This relationship may be stored in the master patient index. As another example, people may change their names over time. The relationship between these two names may be stored in the master patient index. For each of the queries for the identities found in the master patient index, additional related data queries may also be run (block 451). -
Blocks blocks FIG. 4 ), a user may not even be able to log into or present a query to a shared archive (which in some embodiments requires users to log in) if that user does not have proper access. HIPAA provides requirements on data access control and data encryption for some entities. In embodiments herein, these requirements are implemented as part ofblock FIG. 4 . Turning toFIG. 1 , the sharedarchive module 133 and/or the sharedarchive CAS module 143 may provide access control. The access control may be such that it corresponds to HIPAA's requirements for data security and integrity or any other appropriate access control in which only certain users or classes of users have access to certain types of data. - Once the query is run and results are received, block 470 may include returning those results to the requester (e.g., the person or system that sent the query). Returning the results to the requester may include returning GUIDs to the data files stored in the CAS cloud that match the query. The results may also be returned as a report or list of metadata or the files associated with the matching metadata may be returned. For example, if a requester requests X-ray files from Jan. 1, 2009 to Jan. 12, 2009 for a particular patient, and three X-rays are found, then the shared archive module may return GUIDs associated with those three X-rays or may return files containing the three X-rays, such as DICOM files (e.g., via a DICOM Store command).
- As another example, an application may perform a DICOM Query/Retrieve using embodiments of the shared archive. For example, the application may perform a DICOM Query to the shared archive requesting data for a patient name, patient ID, accession number, physician, etc. The shared archive may receive the DICOM Query (block 440) and perform a search for the patient name, patient ID, accession number, physician, etc. (block 450). The shared archive may also query for related data (block 451). The shared archive may then return the results of the query (block 470). The requesting application may then perform a DICOM Retrieve for the studies or other data that were returned as part of the DICOM Query. This DICOM Retrieve may be performed as part of
block 440 or may be executed by a block not shown inFIG. 4 . The shared archive may then retrieve the data requested in the DICOM Retrieve and may return the data to the requester as part of a DICOM Storage command. In some embodiments, the DICOM Retrieve may be sent to a server other than the shared archive. For example, the DICOM Retrieve could be sent to a CAS server and the CAS server could look up the GUID for the requested file and retrieve and send the file (e.g., via a DICOM Storage message) to the requesting application. - The discussion with respect to
FIG. 4 andmethod 400 is primarily focused on files that contain medical data (e.g., reports or imaging data) and metadata. Any other appropriate file may also be used. For example, a report stored in the CAS cloud may contain metadata and not have a separate header. That report may be parsed and may be made searchable in a sharedarchive using method 400. In addition, files containing test results may also be storable, parsable, and later searchable. In this way, the shared archive module may provide homogeneous access to data that has been stored in a heterogeneous manner in theCAS cloud 110. Such homogeneous access is particularly beneficial considering that embodiments of the CAS cloud allow legacy systems to store to the CAS cloud (e.g., though mirroring or network interfaces to the CAS) in addition to newly developed systems to store to the CAS cloud. In this way, various applications as well as multiple types of data can be stored in the CAS cloud and accessed jointly and efficiently in a shared manner from the shared archive module. - Document sharing can be an important part of management and communication of information. In addition to the shared archive embodiments described herein, various embodiments provide a document sharing protocols (such as XDS and XDS-I) and, in some cases, integrated shared archives. There are many efforts to standardize the management and sharing of documents. One such project is the organization Integrating the Healthcare Enterprise's (IHE) effort known as cross-enterprise Document Sharing (XDS). IRE has created a follow-on standardization effort known as the cross-enterprise Document Sharing for Imaging (XDS-I). XDS-I extends XDS by enabling the sharing, locating, and accessing of DICOM images and other documents that may be received from or accessed by, e.g., radiology centers, hospitals, doctors' offices, or any other applicable source or consumer. XDS-I may be useful for sharing X-rays, MRIs, and other health records, such as cardiology documents. XDS and XDS-I implementations may be built on the principle that one is able to query a single source in order to obtain access to stored documents from any of multiple repositories. As such, various embodiments herein may provide an XDS-I storage, searching, and retrieval interface that provides access to underlying documents stored in a CAS or CAS cloud.
- As depicted in
FIG. 5 , various embodiments herein provide document sharing by providing modules, such as XDS-I module 531. In some embodiments, XDS-I module 531 can address cross-enterprise EHR communication needs. Some scenarios may require the use of other IRE integration profiles, such as Patient Identifier Cross-Referencing (PIX), Audit Trail and Node Authentication (ATNA), Enterprise User Authentication (EUA), Cross-enterprise User Authentication (XUA) and Retrieve Information for Display (RID), not depicted inFIG. 5 . - As depicted in
FIG. 5 ,cloud 510 includes multiple content-addressable storage servers 520-522. Adevice manager module 541 may be in communication withcloud 510.Device manager module 541 may have associated with it a GUID/object database 551 and may be coupled to an XDS-I module 531. Various embodiments of communication among clouds, device manager modules, GUID/object databases, and applications are described with respect toFIG. 1 . XDS-I module 531 may communicate with various XDS-I actors, such as an XDS-I source module 570 and an XDS-I consumer module 560. The XDS-I module 531 may also communicate with other XDS-I actors and/or other XDS-I modules, not pictured. In some embodiments, the XDS-I source module 570 may be coupled to an image source, such as a CT scanner or X-ray machine. In some embodiments, the XDS-I consumer module 560 may be coupled to a doctor's workstation or a PACS station, not pictured. Various embodiments ofsystem 500 may allow a doctor to access the previously stored medical image, or any other document, regardless of its source, using XDS-I. - Generally, in some embodiments, an XDS-
I source module 570 may receive images from an imaging source, such as an MM, X-ray, CT scan, or other imaging device. The XDS-I source module 570 may then store the received image in thecloud 510 by sending the image, using the XDS-I protocol, to the XDS-I module 531 (e.g., as a DICOM image encapsulated in an XDS-I message). The XDS-I module 531 may then send the image to thedevice manager module 541 which will then store it to thecloud 510 via the content-addressablestorage server module 521, which will in turn return a GUID that corresponds to the stored image to thedevice manager module 541. Thedevice manager module 541 can store the relationship between the stored image, its metadata, and the corresponding GUID in the GUID/object database 551. In some embodiments, XDS-I module 531 may store metadata related to the stored image in addition to or instead ofdevice manager module 541. Subsequently, when an XDS-I consumer module 560 sends a request to the XDS-I module 531 for that object, the XDS-I module 531 can request that object from thedevice manager module 541, which will then retrieve it fromcloud 510, and send it to the requestor, possibly with additional related data. The described storage, searching, and retrieval of documents may apply, as noted above, to documents other than images, such as electronic health records and the like. - When the XDS-
I source module 570 receives an image that it wants to store, e.g., to cloud 510, it may encapsulate the image and add a header containing metadata about the image. The XDS-I source module 570 may also request any of a number of other transactions from the XDS-I module 531. The transaction may include storing a document, altering a stored document, replacing a stored document, etc. Other example transactions and embodiments of transactions are described in the appendices attached to parent U.S. Provisional Application No. 61/327,556, which are hereby incorporated by reference for all purposes. - In some embodiments, when an XDS-
I consumer module 560 searches for a document or image, more than one document may match the request. For example, if an XDS-I consumer module 560 requests documents related to a certain patient, then the XDS-I module 531 may determine that multiple patient records and images are related to that patient. The XDS-I module 531 may then present to the XDS-I consumer module 560 a list of all of the matching documents. The XDS-I consumer module 560 may provide the list of matching documents to a user, not pictured, that will allow the user to select one or more of the matching documents for retrieval. The XDS-I consumer module 560 may then request retrieval of all of the selected documents fromdevice manager module 541, which may then look up the GUIDs for those objects in itsdatabase 551 and request those objects from thecloud 510. The XDS-I consumer module 560 may also perform other actions, such as (i) retrieve presentation states, which requests and retrieves the Grayscale Softcopy Presentation State (GSPS) information for a particular image or image set; (ii) retrieve reports, which may retrieve a diagnostic report, for example; (iii) retrieve key image notes; and (iv) retrieve evidence documents. More embodiments and examples of various requests are described in the appendices attached to parent U.S. Provisional Application No. 61/327,556, which are hereby incorporated by reference for all purposes. - In some embodiments, the XDS-
I module 531 may include or be attached to a metadata database or server, such as sharedarchive module 133, sharedarchive CAS module 143, ordatabase 153. The XDS-I module 531 may store therein metadata related to documents that it receives from XDS-I sources and relate them to the GUID that it receives from thedevice manager module 541 when the XDS-I module 531 stores documents to thecloud 510. For example, when XDS-I module 531 receives an XDS-I message to store an X-ray from XDS-I source module 570, it may store metadata related to the X-ray (e.g., received as part of a header from the XDS-I source module 570) in the metadata database along with the GUID corresponding to the stored X-ray image, received fromdevice manager module 541. In other embodiments,device manager module 541 may store the metadata related to stored images in addition to or instead of XDS-I module 531 storing that data. Further, thedevice manager module 541 may associate the metadata for those images with the GUIDs for the image in thedatabase 551. In other embodiments, XDS-I module 531 may serve as a shared archive module and perform related functions, such as those described herein. - In some embodiments, when the XDS-
I consumer module 560 requests a document, the XDS-I module 531 may retrieve the requested document and other related documents and send them to XDS-I consumer module 560 in a single response message. For example, if the XDS-I consumer module 560 requests an X-ray for a patient, then the XDS-I module 531 may retrieve that X-ray as well as related medical data and return the X-ray and the related medical data as a single XDS-I response. This may take the form of storing related medical data, such as lab results, patient name, etc., in an XDS-I header and the image in the XDS-I message. - In various embodiments, each module in
system 500 may run on a separate processor or as part of a separate process. Two or more of the modules may be implemented together or may be run as part of the same process, on the same processor, on the same machine, as part of the same application, and the like. For example, XDS-I module 531 anddevice manager module 541 may run as part of separate processes or applications or may be part of the same application or process. As another example, in some embodiments, XDS-I module 531 may also include as part of the same process, or application, either or both of XDS-I source module 570 and XDS-I consumer module 560. -
FIG. 6 depicts amethod 600 of providing XDS-I support. An XDS-I source may receive a file to store from a user or machine, such as receiving an X-ray from an X-ray machine inblock 610. For example, an XDS-I source module 570 may receive an X-ray image to store. Inblock 620, the XDS-I source requests storage of the file in the XDS-I repository. For example, the XDS-I source module 570 may encapsulate the X-ray image data file in an XDS-I message and send the message to XDS-I module 531 for storage (possibly using encryption for transmission and/or storage). Inblock 630, an XDS-I repository may receive a request to store a document. For example, XDS-I module 531 may receive the request to store the X-ray image data file encapsulated in the XDS-I message from XDS-I source module 570. In some embodiments, an acknowledgment of storage may be sent back to the XDS-I source, not pictured. - When an XDS-I consumer later requests documents, in
block 640, that request is sent to an XDS-I repository and matching documents, possibly including related data and related documents, are determined as part of block 650. The XDS-I repository may then send a list of matching documents to the XDS-I consumer, which will receive them inblock 660. For example, XDS-I consumer module 560 may send the request for documents related to a particular patient to XDS-I module 531. XDS-I module 531 may then search for relevant documents and send the list of those documents to the XDS-I consumer module 560. Returning again toFIG. 5 , the XDS-I consumer, inblock 660, may request certain files that were found. Inblock 670, an XDS-I repository may send the requested files to the XDS-I consumer, who may receive them inblock 680. For example, XDS-I consumer module 560 may request certain files of those that were previously found in block 650 from the XDS-I module 531. The XDS-I module 531 may retrieve those files from thecloud 510 via thedevice manager module 541 and send those files to the XDS-I consumer module 560. - In some embodiments, a search requested in
block 640 may include a request to immediately retrieve all documents matching the search, and block 650 may include retrieving those documents and sending them to the consumer who will receive them inblock 660. - In some embodiments,
system 500 andmethod 600 may also include a security model that may be associated with an XDS-I Clinical Affinity Domain. For example, embodiments may group XDS-I Actors with actors from the IHE Audit Trail and Node Authentication (described elsewhere) and may include access control capabilities that operate in cross-enterprise environments. Example embodiments include Public Key Infrastructure, and those related to ATNA, etc. In some embodiments, XDS-I modules may also be joined together or federated and thereby provide access to patient records as patients move from region to region, or country to country. - In addition to being able to provide functionality and support related to XDS-I, in some embodiments, a content-addressable
storage server cloud 510 and/or interconnected set of content-addressable storage servers 520-522 may serve the function or provide storage for more general XDS systems. Whereas XDS-I emphasized support for images, and in particular medical images, the XDS protocol applies broadly to document storage, querying, and retrieval. Generally, an XDS Document Source may provide and register documents to an XDS Document Repository. The document repository may register stored documents in an XDS Document Registry. An XDS Document Consumer may query the XDS Document Registry in order to determine the locations of or references to documents. Once the XDS Document Consumer has received a response regarding location from the XDS Document Registry, it may retrieve the documents from the XDS Document Repository. Queries from the XDS Document Consumer to the XDS Document Registry may include patient identification as part of the query. An XDS Patient Identity Source may provide normalizing information for patient identity to be used in queries on the XDS Document Registry. The XDS Patient Identity Source may provide a normalized identifier for a single person or patient across multiple hospitals, multiple systems, and the like. This is discussed more below. - Building on the discussion above of
FIG. 5 , in some embodiments,device manager module 541, since it may provide the functions of searching for documents and retrieving documents, may act as both an XDS Document Registry and an XDS Document Repository. For example, in XDS Document Consumer may querydevice manager module 541, acting as an XDS Document Registry, for the location of the document, not pictured inFIG. 5 . Thedevice manager module 541 may then return a list of relevant documents stored in thecloud 510 to the XDS Document Consumer. The XDS Document Consumer may then request some or all of the matching documents from thedevice manager module 541, which would then be acting as the XDS Document Repository. Thedevice manager module 541 could then retrieve the documents from thecloud 510. - In some embodiments,
device manager module 541 may serve as an XDS Document Registry incloud 510 and/or a single content-addressable storage server 520-522 or thecloud 510 may serve as the XDS document repository. If an XDS Document Consumer requested the location of an XDS document from thedevice manager module 541, acting as an XDS Document Registry, may return the location of the requested document. The XDS Document Consumer may then request the document from thecloud 510, or an individual content-addressable storage server 520-522, acting as an XDS Document Repository. - In any of these embodiments, an XDS Patient Identity Source may be implemented as part of any appropriate module or system, such as
device manager module 541 or a combination of multipledevice manager modules 541. In some embodiments, the XDS Patient Identity Source is implemented as part ofcloud 510. Wherever it is implemented, in various embodiments, an XDS Patient Identity Source may provide a master patient index among numerous hospitals, doctors' offices, and the like. The XDS Patient Identity Source may include a database, data structure, or other data storage, with a unique identifier for each patient, and association from that unique identifier to the identifiers from multiple independent hospital information systems and/or other systems. - For example, one hospital information system may identify patients by Social Security number. Another hospital may identify patients by name. Yet other hospitals may identify patients by an identifier generated at the hospital. The master patient index, running as part of
device manager module 541,cloud 510, etc. inFIG. 1 (or as part of any other application, device manager module, CAS server, CAS cloud, or as a separate application), may store a single unique identifier for the patient and associations from that single unique identifier to each of the identifiers from the various hospital information systems. Therefore, for example, a single patient John Smith may have a single unique identifier insystem 500. This single unique identifier may be associated with his Social Security number at a first hospital information system, his name for a second hospital information system, and the hospital—generated identifier for a third hospital information system. Therefore, when a request is received for information related to John Smith, that request can be associated with his single unique identifier and his single unique identifier can be used, in conjunction with its relationship with the other you identifiers, to query for and retrieve data related to John Smith from the multiple hospital information systems, each of which may have data stored in the cloud 510 (or elsewhere). - Traditionally PACS machines or other devices that manage medical images allow users to select files to write to a CD or DVD. Embodiments herein provide this functionality. In addition, certain embodiments herein will also allow a user to produce a virtual package (or “virtual disk,” “virtual DVD,” “virtual file grouping,” etc.). The term “virtual package” as used herein is a broad term encompassing its plain and ordinary meaning including, but not limited to, a grouping or set of files, pointers to files, or other indicators of files. A virtual package may also refer to a single file including two or more subsections containing images, reports, or other medical data. Various embodiments herein allow a user to select a set of files to store in a virtual package. The system finds those files, and any related data, and subsequently stores them in a CAS server or cloud. The system then provides the user with an indication of the virtual package or the files in the virtual package (e.g., a GUID, set of GUIDs, etc.). Optionally, access control may also be included in the original request for the virtual package. That is, the user may be able to specify what users or groups of users are allowed to access all files within the virtual package (or perhaps a subset of files in the virtual package) and the content-addressable storage server or CAS cloud will then control access based on that information.
-
FIG. 7 illustrates an exemplary process for creating and managing virtual packages. Inblock 710, an instruction is received to produce a virtual package. This instruction may be received at a computer or server via a programmatic interface, for example, as an XML or other structured file received via a web service. The instruction to produce a virtual package may also be received via a web page or other interface where a user can select files via drop down boxes, radio boxes, selection boxes, or other mechanisms. For example, a user at a PACS machine running an embodiment would be able to select files to include in a virtual package (via a web-based selection menu, e.g.). - In some embodiments, a shared archive module or other program may allow a user to select files in the shared archive to include in a virtual package as part of
block 710. Shared archives are discussed elsewhere herein. The files selected may be images, reports, or any other type of data. For example, a user may select all of the reports related to a particular patient or a particular study, series, or SOP. The user may also select all of the files related to a particular accession number. The term “SOP,” as used herein is a broad term, encompassing its plain and ordinary meaning, including, but not limited to a “service object pair” in DICOM. - In
block 720, the files indicated by the user for inclusion in the virtual package are obtained. In some cases, these files may be stored locally to the PACS machine or other software that received the instruction to produce the virtual package inblock 710. In other embodiments, a subset of the files may be stored locally. As such, a request may be sent to a different computer or server to obtain one or more of the files to be included in the virtual package. This request may be sent to a different PACS machine, a CAS server or cloud, a database, or any other appropriate storage location. Obtaining the files may include reading the files from a global storage system, such as CAS server or cloud. In yet other embodiments, obtaining these files may include obtaining the files from the original request to produce a virtual package. For example, one or more of the files may be attached to the request to produce the virtual package received inblock 710. More specifically, if a user at an application were to select a number of images and reports related to an accession number and attached a few of those files to the request that is received inblock 710, then obtaining the one or more files may include retrieving those files attached to the original request in addition to obtaining some of the files locally and/or from a global storage system, such as a CAS cloud. The files to include in the virtual package may also come from other locations as noted herein. - In various embodiments, the user may also request inclusion of related data the virtual package. The related data is requested in
block 730. For example, if a user were to select files related to an accession number, the user may also request that any data related to that accession number be included in the virtual package. This may be useful, for example, in cases in which a user wants to include all available data related to an accession number, patient, study, or other grouping, in one virtual package so that subsequent users of the virtual package may have easy access to all of the related files. Requesting related data can be very complex, as discussed elsewhere herein. - As noted elsewhere herein, communicating to another system to find related data may also require translating an identifier using a master patient index. The master patient index may provide a single identifier for each patient across multiple systems. Using the master patient index to query for related data may include sending the master patient index along with the request for related data or it may include translating to the destination system's patient index via the master patient index. For example, if a master patient index is being used and system A is requesting from system B related data for a patient, then system A may have to convert its patient identifier into the master patient index and from there obtain the patient index used in system B. Similar structures and techniques may be used for other unique identifiers or other identifiers such as accession number, study number, series number, and SOP number.
- In some embodiments, requesting related data may include requesting data related to information that was received in the instruction in
block 710, such as accession number or patient number, or it may include retrieving data from one or more of the files to be included in the package and using that data to request related data. For example, if a package is being created for a patient that should include all of the files related to that patient, then the original request received inblock 710 may be used in order to identify the patient. Additionally, once files are obtained for that patient, accession numbers, study numbers, series numbers, SOP numbers, and the like may be extracted from one or more of those files and requests may be made for the data related to those accession numbers, series numbers, study numbers, and/or SOP numbers. - In
block 740, the requested related data is received. In addition, inblock 740 other related data may also be received even if it was not specifically requested. For example, receiving the related data may include receiving an HL7 broadcast message. The HL7 messages may include patient related information and that patient related information may be matched to local patient information. For example, a PACS machine may have studies or X-rays related to a patient. An HL7 message may be broadcast by another system that has related reports, other images, follow on images, etc. That incoming message may be matched by the patient-related information, as discussed elsewhere herein. In some embodiments, the related data is included in the HL7 message itself. In other embodiments, the HL7 message may not include the related data but may indicate the source from which related data can be received. In such embodiments, the related data may be requested from the machine or system that broadcast the HL7 message. After that data is requested, it may be received by the requestor. - In some embodiments, the related data may be retrieved using DICOM query and retrieve based on accession number as part of
block 740 and/or block 730. For example, if there is a DICOM server that has related data and a system would like to request and receive that related data, the system may send a DICOM query/retrieve based on the accession number. In other embodiments, the system may send the DICOM server a request for a modality worklist and match to that modality worklist and from there a query based on the matches in the modality worklist. Receiving the data may also include receiving and reading a DICOM Structured Report that came with various images. This DICOM Structured Report may be broadcast or otherwise sent to the receiving system with or without first querying for it. A DICOM Structured Report may be requested based on accession number, patient number, study number, series number or SOP number. In yet other embodiments, an HTTP request may be sent to a PACS server or other source and a web page, structured document, or the like may be received in response. This web page or structured document may be parsed to extract related data to be used in subsequent blocks ofmethod 700. Related data may also be retrieved from a database using stored procedures and/or SQL queries. - In some embodiments, when files and related data are received in
block 740, then that data is parsed and put in a canonical format so that it may be stored in a coherent fashion in the virtual package. For example, receiving a DICOM Structured Report may be followed by parsing the DICOM Structured Report and storing the data in the database. Similarly, if a plain text file is received after a query for related data, then that plain text file may be parsed and stored in a database. Subsequently, all of the related data stored in the database may be output in XML or another format in order to store it as part of the virtual package. In various embodiments, the format to which the related data or obtained files are converted may be DICOM or some other format such as a human readable format that is either standard, indicated in a configuration file, or chosen by the user as part of the instructions to produce the virtual package. - In
block 750, the files and the related data are stored as a virtual package. A virtual package may take many forms. For example, the files and related data obtained in earlier blocks may be stored individually in a content-addressable storage server. Upon storage of each of these files, a GUID or other identifier may be returned. These GUIDs may then be used as identifiers inside the virtual package. A user of the virtual package may be able to retrieve the files in the virtual package based on the GUIDs. In other embodiments, all of the files may be stored locally grouped together as a single file (for example, as a tar ball or other grouping). This single file may be stored in the CAS server or cloud, at which time a single GUID may be returned. The single stored file may also include metadata indicating the location identification and other pertinent information related to each of the individual files stored therein. In some embodiments, each individual file is stored in the CAS server or cloud as described above and subsequently a merge is requested in which all of the individual CAS files are merged together as a single CAS file and, optionally, the individual files are deleted from the CAS. In this way, the CAS server or cloud provides a GUID for the combination of all of the files together. This procedure may also include creating and/or maintaining the metadata as described above for the stored virtual package. Storing the individual files and/or the single file in the CAS may also be accompanied by keeping history data, auditing, and other information. For example, a file may be created, or a log stored that indicates who created the virtual package, when they created it, its size, its contents, etc. This may be the case whether each file is stored separately, and those individual files are used as the package, a single file is stored after being grouped together, or whether the files are merged in the CAS. - In some embodiments, access control information is also provided to the CAS. The access control information may include email addresses, user names, or other identifiers to indicate what individuals, what login accounts, what groups of people, or other groupings or individuals (for example, such as systems) should have access to either individual files in the virtual package or to the virtual package itself. As such, when access is provided in
block 760 to the virtual package the access to that package may be controlled. For example, if access control information is included for a virtual package, then a user who has access to that package may receive an email indicating that the package has been stored in the CAS server or cloud and that that user may have access to it at that point. In other embodiments, the user may have to subscribe to an event notification in order to receive that email, as described elsewhere herein. That user may be able to log into or otherwise authenticate to the CAS server or cloud in order to access the virtual package. When attempting to access the virtual package, the access control of that user may be checked and only when that user has appropriate permissions may the user access, modify, delete, or perform other actions on either the individual files in the individual package or the virtual package as a whole. - In some embodiments, other types of access control can also be provided by a CAS server, a CAS cloud, or other global storage system. For example, access to a particular patient, series, study, or accession number may be turned off for all users. This may be useful, for example, if there is an issue with a patient, such as pending malpractice litigation for that patient. In other embodiments, an individual user's access may be denied for all data in the global storage system. For example, if an administrator or other employee was fired then one precaution for the data in the CAS cloud may be to deny that person's account access to any data in the CAS regardless of previous permission. Controlling access in this way may be performed as part of a CAS server, CAS cloud, a separate application, or in any other appropriate manner.
- Turning to
FIGS. 1 and 7 , anapplication 132 may receive a request to produce a virtual package inblock 710. Some of the files in the request may be attached to the request, other files may be stored locally inapplication 132, and additional files for the virtual package may be stored elsewhere.Application 132 may obtain those locally stored files and other files either from the local disk, from theCAS cloud 110, or from the other sources (not pictured). The application may then send a request for related data to theCAS cloud 110, aPACS application 131, and/or to a sharedarchive module 133. Each of those systems or devices may respond with related data in various formats. Theapplication 132 may then store the related data as a virtual package in theCAS cloud 110, using the various techniques and embodiments described above. The user of the application may have also provided access control information for the virtual package. Thereafter, theCAS cloud 110 may control access to the virtual package requested and produced previously as part ofblock 760. - Various embodiments herein provide for the creation and accessing of virtual packages. When a user would like to create a collection of data that might traditionally be put on the disk, the user may not necessarily want to actually produce a physical disk. Therefore, embodiments herein allow the user to create a virtual package (perhaps called a “virtual disk”). The virtual package may be more easily distributed because it is not limited to physical disks. Further, as discussed herein, access can be finely controlled with a virtual package and updated over time in ways that are difficult or impossible with physical disks.
- This section provides more examples of virtual packages, their creation, and access. The contents of the virtual package could be, for example, from the
CAS cloud 110. If a user is working at aPACS server 131, the user may be able to create a virtual package. The virtual package may include a number of objects, such as X-rays or MRIs, associated with a particular patient or group of patients. ThePACS server 131 may communicate with thedevice manager module 141 and request the GUIDs for the objects in the virtual package. Thedevice manager module 141 may then look in the GUM/object database 151 in order to determine the objects' associated GUIDs. The virtual package may simply be a collection of GUIDs. - When that same user or another user accesses the
PACS server 131, or perhaps a different PACS server, in order to retrieve the virtual package, thePACS server 131 may communicate with thedevice manager module 141 in order to retrieve all of the objects associated with the GUIDs that are associated with the virtual package. An abstract representation of the virtual package is given inFIG. 10 . InFIG. 10 , avirtual package 1010 is associated with multiple GUIDs 1021-1029. When a user later attempts to accessvirtual package 1010 from thePACS server 131, thePACS server 131 will access the stored representation of thevirtual package 1010 in order to obtain an indication of which GUIDs are associated withvirtual package 1010. ThePACS server 131 will then retrieve the objects associated with each GUID. Together, these objects make up the content of the virtual package. The user will then be able to view, modify, or perform any other action on the virtual package, including, if appropriate, burning a physical disk based on the virtual package. - In some embodiments, virtual packages will include references to objects instead of GUIDs. Referring again to
FIG. 10 , avirtual package 1030 maintains references to various included objects references 1041-1049. When a user later attempts to retrievevirtual packages 1030, the application module will ask for the various objects from the underlying filesystem, such as thedevice manager module 141 inFIG. 1 . Thedevice manager module 141 may then look in its own database 151 in order to determine what GUIDs are associated with each of the object references. Once thedevice manager module 141 has the GUIDs for the object references 1041-1049, it can request the objects associated with the determined GUIDs from the content-addressable storage cloud 110. The content-addressable storage cloud 110 may then return the objects associated with the GUIDs to thedevice manager module 141. Thedevice manager module 141 may then return the objects associated with the GUIDs, which are in turn associated with the object references 1041-1049, to the requesting application module. The requesting application module would then have access to the contents of the virtual package. - Accessing a Virtual Package after Creation
-
FIG. 9 is a block diagram illustrating amethod 900 for creating and accessing virtual packages. Generally, in some embodiments, the virtual package may be created and associated with numerous files in the content-addressable storage system. After the disk is created, access to that disk may be provided only to those who are allowed access. Further, physical disks may be burned based on virtual packages. - In
block 910, a request for virtual package may be received. The request for the virtual package may come from a user using an application module, such as anapplication module FIG. 1 . The request to create the virtual package may be received at thedevice manager module FIG. 1 . In some embodiments, a content-addressable storage server 121-125 in thecloud 110 may be responsible for creating virtual packages. The request to create a virtual package may also include, depicted asblock 920, a selection of files to be placed on the virtual package. The selection of files may be stored locally at the receiver, such asdevice manager module cloud 110. The selection of files may also include related data, as discussed elsewhere herein. - In
block 930, the selections of files are associated with virtual package. The virtual package may be associated with an identification number, which may be stored in a database or other file, such asdatabase 151 or 152 inFIG. 1 . Associating the files with the virtual package may include associating identifiers associated with each of the files to the identification number associated with the virtual package. As depicted inFIG. 10 , avirtual package 1010 may be associated with identifiers 1021-1029, and the identifiers for the files, when the files are stored in the content-addressable storage cloud 110, may be GUIDs 1021-1029. - At some point after the creation of one or more virtual packages, the application managing virtual packages may receive a request for a particular virtual package, in
block 940. The request to access a particular virtual package may be a request that identifies the virtual package by an identification number. In some embodiments, such as that depicted inFIG. 9 , when a request for virtual package is received, the application may determine inblock 950 whether the requester is allowed to access the virtual package. If access is not allowed, then inblock 955, access is denied to the requester. If access is allowed, as determined inblock 950, then the requester is given access to the virtual package and may access files in the virtual package as part ofblock 960, burn a physical disk related to the virtual package inblock 965, or perform any other appropriate action. - Looking to the example of
FIG. 1 , if adevice manager module 141 is managing virtual packages, then when someone usingapplication module 131 requests the virtual package, assuming that the requester is allowed access, thedevice manager module 141 may look up that virtual package and its associated objects in the database 151. The virtual package may be associated with a number of GUIDs, which represent the objects or data files in the virtual package. When the requester attempts to access the files in the virtual package, thedevice manager module 141 may request those files using the GUIDs from content-addressable storage server 121. As described herein, if the content-addressable storage server 121 does not have the data files stored locally, then it may request those data files from other CAS servers in thecloud 110. - In various embodiments, access control may also be provided by the content-addressable storage servers in the
cloud 110. Access control may fall into various categories, such as role-based access control and user-based access control. Typically, role-based access control will require a user to login and that user will be associated with the role. The access that the user has to the data may be defined by a role. User-based access control is similar in that a user must login and that user will have access to the data based on his or her specific access profile. In various embodiments, the access control mechanisms may control reading data, writing data, modifying data, deleting data, etc. Access control may be defined for individual objects, such as X-rays for particular patients, or for types of objects or groups of objects. For example, a given user may have access to all of the medical images for a particular hospital and may not have access to medical images for any other hospital (even if the other hospitals also have data stored in the cloud). On the other hand, a clinical research organization's analyst may have access to diagnostic results for a number of different hospitals but may not have access to any information that personally identifies any of the patients with whom the results are associated. - In some embodiments, when either a user or a computer system attempts to access something in the content-
addressable storage cloud 110, authentication information may be required. As used herein, authentication information may be a username and password, an identifier, an RFID chip read by a device coupled to the system, or any other authentication mechanism or technique known to those skilled in the art. For example, a username and password may provide authentication to access thecloud 110. If the username and password do not match or otherwise fail, then access to thecloud 110 may be denied. - In some embodiments, GUIDs associated with objects stored in the
cloud 110 may also be associated with a group number. Additionally, particular usernames and passwords may be associated with one or more group numbers. As such, when a particular user logs in using a username and password that particular user may have access to only the objects associated with the group numbers to which it has access. For example, consider a scenario in which multiple hospitals are all using thesame cloud 110 to store their patient data. Each hospital may be associated with the group number. Each hospital may also have a username and password that users or computer systems associated with that hospital may use in order to access data. By providing this kind of differentiated access control, the content-addressable storage system may effectively isolate the patient files for one hospital from those of another hospital. Such an arrangement may provide certain benefits. By allowing multiple hospitals to store a patient data on the same cloud, each hospital may not necessarily have to build or support the physical computing and communication infrastructure needed to support the cloud. The infrastructure may be provided by one of the hospitals or it may be provided by a third-party. Either way, economies of scale may apply and the storage of data on this cloud from multiple hospitals may provide monetary and other benefits. -
FIG. 11 depicts a process for providing access control in a cloud of interconnected content-addressable storage servers. Inblock 1110, user authentication information is received. The user authentication information may be a username and password or other identifying or authenticating information. Inblock 1120, a check is made to determine whether the user authentication information is valid. This can include determining whether the username and password received from a user is valid or checking authentication with any other known method. If the user is not authenticated, then access to the system is denied inblock 1130. If the user is authenticated, as determined inblock 1120, then thereafter the system may receive a request from the user for stored data inblock 1140. That request may come in the form of a request for a particular GUID. Even though the user has already been authenticated, the user may not have access to all of the data stored in the content-addressable storage cloud, such ascloud 110. As such, inblock 1150, a check is made to determine whether the user has permission to access the requested data. Checking whether the user has access to the requested data may take a number of forms. For example, in role-based access control, a determination may be made to see whether a role associated with the user, such as the role of analyst or administrator, provides that user with access to the requested data. Access control may also be finer grained. For example, access to files may be determined on a per user basis. As such, a check may be made to determine whether the user is allowed to access the particular file. If the user does not have permission to access the requested data, then access will be denied inblock 1160. If the user does have permission to access the data, then inblock 1170 access is provided. - Returning to
FIG. 1 , if a user is using a sharedarchive module 133 and attempts to access a file, such as an X-ray, that is stored in thecloud 110, then the sharedarchive module 133 will request that file from the sharedarchive CAS module 143. The sharedarchive CAS module 143 will attempt to retrieve the file from thecloud 110. In some embodiments, the device manager module will check the access control information for the user. In other embodiments, the sharedarchive CAS module 143 will provide authentication information for the user to thecloud 110, and a content-addressable storage server 123 will check to see whether the user has proper authentication to access the requested file. If the user does have access to the requested file, then thecloud 110 will return the file to the sharedarchive CAS module 143, and the sharedarchive CAS module 143 will send the file to the sharedarchive module 133. - In some embodiments, content-addressable storage servers in the
cloud 110 provide entities communicating with content-addressable storage servers interfaces that are similar to those normally associated with file systems. For example, in some embodiments, a CIFS interface is provided by the content-addressable storage servers in thecloud 110. Therefore, a program that is written to communicate with the familiar CIFS interface will be able to access the content-addressable storage servers. In other embodiments, other interfaces are provided, such as WFC interfaces. IHE Cross Enterprise Document Sharing (XDS) interfaces are provided in some embodiments. Additionally, some embodiments herein may be used as an XDS Document Repository, document registry, document source, or document consumer. One of the advantages of providing a familiar interface is that it will allow a program written to work with the familiar interface, even if the underlying storage is different, to work with little or no modification. - Returning again to the CIFS interface, the interface may act as a filter on requests for stored files. When a request for a file is sent to the file system manager, the file system manager will check to see whether the file is stored locally in whole or in part, and if it is not, then it will be requested via a CIFS call. The requested file will then be retrieved from a remote location and sent to the requester.
- As another example, consider the method depicted in
FIG. 12 . A file request is received inblock 1210. A check is made to determine whether the file is stored locally, in whole or in part inblock 1220. If the file is stored locally, then inblock 1230 the locally stored file is retrieved. Subsequently, the retrieved file is sent to the requester inblock 1250. If, however, it is determined inblock 1220 that the file is not stored locally, then the file is retrieved from the content-addressable storage server inblock 1240. Examples of retrieving files from a content-addressable storage server are presented elsewhere herein. The retrieved file is then sent to the requester as part ofblock 1250. - There may be advantages to embodiments such as those depicted in
FIG. 12 . For example, systems requesting files do not need to know whether the file is stored locally or stored remotely in the content-addressable storage server. As such, in some embodiments, the management of the stored data is independent of the representation shown to the end-user. As such, the end-user, such as anapplication module 131, can operate independently of the CAS mechanisms and independent of any changes to the underlying file storage system. Therefore, in some embodiments, the content-addressable storage system as a whole may be modified or updated without requiring any modifications or updates to anapplication module 131 that may rely on the storage capabilities of the content-addressable storage system. - The encryption protection provided in various embodiments may be manyfold. Data may be encrypted as it is sent from one content-addressable storage server to another. It may also be encrypted while it is stored in the content-addressable storage server. Each of these provides a different kind of protection. Encryption during transmission of data will help protect the data from being “snooped” on the transmission line or read by programs or individuals. Encryption during storage, on the other hand, will protect against the data being readily readable in the case that someone is attempting to read what is stored on the content-addressable storage server. Each of these two types of data protection is important for HIPAA.
- Various embodiments herein provide for encrypted transmission between both an application, such as an
application module 131, and a content-addressable CAS server, such as content-addressable CAS server 121, as well as among various content-addressable CAS servers, such as those in thecloud 110. Encryption works, generally, by taking unencrypted data and combining it with or modifying it based on a cipher. The encrypted data can then only be read by decrypting the data using a key corresponding to the cipher. Various embodiments of encryption are known to those skilled in the art. - The
system 100 ofFIG. 1 may use encryption over one or more of the communication paths within thesystem 100. For example, data transferred between or among content-addressable storage servers in thecloud 110 may be encrypted. The encryption may be transmission encryption, such as that supported by secure socket layers (SSL) and secure hypertext transfer protocol (HTTPS). Such encrypted transmission will allow a transmitting entity to send unencrypted data to another entity without separately encrypting the data before the transmission. The encryption is handled by the transmission protocol in these cases. On the other hand, and possibly in combination with encrypted transmission, data can be encrypted before it is sent. In such a case, the receiving entity may have the key or token associated with the cipher that was used to encrypt the data on the sender's side. - As another example, consider embodiments in which a data object, such as an X-ray, is being stored to the
cloud 110 by anapplication module 131. Theapplication module 131 may send the data object to thedevice manager module 141, possibly using encryption. The device manager module may then send, possibly using encryption, the object into the content-addressable storage cloud 110. In doing so, the content-addressable storage cloud 110 will return a GUID associated with the object. The device manager module will then store the GUID in its GUID/object database 151. - Considering the example system shown in
FIG. 1 , when thedevice manager module 141 first send the object, possibly using encryption, in the content-addressable storage cloud 110 it will first go to a particular content-addressable storage server 121. Content-addressable storage server 121 will at first store the object locally in its own storage. After some predetermined amount of time or once its data storage capacity is reaching a certain predefined threshold, such as 50%, 80%, or 90%, certain amounts of data will be offloaded and sent to other content-addressable storage servers in thecloud 110, such as content-addressable storage server 123. In order to send the object from one content-addressable storage server to another, certain embodiments herein will first encrypt the object. - In some embodiments, encryption may be performed using data encryption standard (DES) or advanced encryption standard (AES) algorithms. Encryption may be performed by the content-
addressable storage server 121 or by any other appropriate computing device. The content-addressable storage server 121 may also determine certain file trailer or other metadata, such as a checksum or a digest, such as an MD5 digest. This file trailer or other metadata may be then sent to the same content-addressable storage server to which the object is being offloaded. The receiving content-addressable storage server 123 may then use the file trailer or other metadata in order to determine whether the received object has been received correctly. If the received object has been received correctly, then, in some embodiments, acknowledgments of this fact may be sent back to be sending content-addressable storage server 121. If, however, the received object has not been received correctly then, in some embodiments, a request may be sent back to the sending content-addressable storage server 121 to resend the object. The encryption of the objects when data is sent from one content-addressable storage server 121 to another 123 may help provide safety and security of patient data as it is in transit. - In some embodiments, objects and other data are encrypted when sent between any two entities, such as between the content-
addressable storage server 121 and thedevice manager module 141, and/or between adevice manager module 141 and anapplication module 131. -
FIG. 13 depicts an example process for transmitting data using encryption. Inblock 1310, a request is received to transfer a file. The file may be encrypted inblock 1320, and the encrypted file may be transferred inblock 1330. Encryption and transfer of data are described elsewhere herein. The receiver may receive the file inblock 1340 and decrypt the file inblock 1350. Decryption of data is described elsewhere herein. As described above, a checksum or other data check may also be applied to the data to ensure the integrity of the received data. In performing a process such as that depicted inFIG. 13 , an unencrypted file may be received at a receiver, without that file ever being in transit in an unencrypted state. - The processes and systems described herein may be performed on or encompass various types of hardware, such as computer devices, such as computer systems. In some embodiments, application modules 131-133, XDS-
I modules I modules clouds - Each computing device may be implemented using one or more physical computers, processors, embedded devices, field programmable gate arrays (FPGAs) or computer systems or a combination or portions thereof. The instructions executed by the computing device may also be read in from a computer-readable medium. The computer-readable medium may be non-transitory, such as a CD, DVD, optical or magnetic disk, flash memory, laserdisc, carrier wave, or any other medium that is readable by the computing device. In some embodiments, hardwired circuitry may be used in place of or in combination with software instructions executed by the processor. Communication among modules, systems, devices, and elements may be over a direct or switched connections, and wired or wireless networks or connections, via directly connected wires, or any other appropriate communication mechanism. Transmission of information may be performed on the hardware layer using any appropriate system, device, or protocol, including those related to or utilizing Firewire, PCI, PCI express, CardBus, USB, CAN, SCSI, IDA, RS232, RS422, RS485, 802.11, etc. The communication among modules, systems, devices, and elements may include handshaking, notifications, coordination, encapsulation, encryption, headers, such as routing or error detecting headers, or any other appropriate communication protocol or attribute. Communication may also messages related to HTTP, HTTPS, FTP, TCP, IP, ebMS OASIS/ebXML, DICOM, DICOS, secure sockets, VPN, encrypted or unencrypted pipes, MIME, SMTP, MIME Multipart/Related Content-type, SQL, HL7 Version 2.5, HL7 Version 2.3.1, etc.
- As will be apparent, the features and attributes of the specific embodiments disclosed above may be combined in different ways to form additional embodiments, all of which fall within the scope of the present disclosure.
- Conditional language used herein, such as, among others, “can,” “could,” “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.
- Any process descriptions, elements, or blocks in the flow diagrams described herein and/or depicted in the attached figures should be understood as potentially representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process. Alternate implementations are included within the scope of the embodiments described herein in which elements or functions may be deleted, executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those skilled in the art.
- All of the methods and processes described above may be embodied in, and fully automated via, software code modules executed by one or more general purpose computers or processors, such as those computer systems described above. The code modules may be stored in any type of computer-readable medium or other computer storage device. Some or all of the methods may alternatively be embodied in specialized computer hardware.
- It should be emphasized that many variations and modifications may be made to the above-described embodiments, the elements of which are to be understood as being among other acceptable examples. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.
- Following this document are a number of other documents, appendices, figures, diagrams, and publications. Each of these is incorporated herein by this reference in its entirety and made a part of this specification.
Claims (20)
1. A method for event notification in an interconnected content-addressable storage system, said method executing on one or more computing devices, said method comprising:
receiving a request for event notification of a particular type of event at a first content-addressable storage server from a first application, said first content-addressable storage server being implemented on one or more computing devices;
receiving a request to perform an action associated with an event of the particular event type at a second content-addressable storage server, wherein the first and second content-addressable storage servers are distinct and wherein the first and second content-addressable storage servers are both part of a content-addressable storage cloud;
performing the action associated with the event of the particular event type at the second content-addressable storage server;
upon performance of the action associated with the event of the particular event type at the second content-addressable storage server, propagating an event notification through the content-addressable storage cloud; and
upon receipt of the event notification at the first content-addressable storage server, providing for notification to the first application of the event of the particular event type.
2. The method of claim 1 , wherein the method further comprises, upon performance of the action associated with the event of the particular event type, propagating data related to the action through the content-addressable storage cloud.
3. The method of claim 1 , wherein the method further comprises, upon notification to the first application of the event of the particular event type, retrieving data related to the event notification at the first content-addressable storage server.
4. The method of claim 1 , wherein providing for notification to the first application of the event of the particular event type comprises pushing a message related to the event of the particular event type to the first application.
5. The method of claim 1 , wherein providing for notification to the first application of the event of the particular event type comprises the first application polling for the event of the particular event type.
6. The method of claim 1 , wherein providing for notification to the first application of the event of the particular event type comprises the first application filtering arriving event notification for the event of the particular event type.
7. The method of claim 1 , wherein propagating an event notification through the content-addressable storage cloud comprises broadcasting the event notification to one or more neighboring content-addressable storage servers.
8. The method of claim 1 , wherein receiving the request for event notification of the particular event type of event comprises receiving a request for event notification of storage of data.
9. The method of claim 1 , wherein receiving the request for event notification of the particular event type of event comprises receiving a request for event notification of alteration of data.
10. The method of claim 1 , wherein receiving the request for event notification of the particular event type of event comprises receiving a request for event notification of deletion of data.
11. A system for event notification in an interconnected content-addressable storage system, said system comprising:
a first content-addressable storage server comprising one or more computing devices configured to:
receive a request for event notification of a particular type of event; and
upon receipt of an event notification of the particular type of event, providing for notification to the first application of the event of the particular event type,
wherein the event notification was received from a second content-addressable storage server, wherein the second content-addressable storage server:
received a request to perform an action associated with an event of the particular event type;
performed the action associated with the event of the particular event type; and
upon performance of the action associated with the event of the particular event type at the second content-addressable storage server, sent the event notification to the first content-addressable storage server.
12. The system of claim 11 , wherein the first content-addressable storage server is further configured to, upon notification to the first application of the event of the particular event type, retrieve data related to the event notification.
13. The system of claim 11 , wherein providing for notification to the first application of the event of the particular event type comprises pushing a message related to the event of the particular event type to the first application.
14. The system of claim 11 , wherein providing for notification to the first application of the event of the particular event type comprises the first application polling for the event of the particular event type.
15. The system of claim 11 , wherein the event notification received at the first content-addressable storage server is received from the second content-addressable storage server through a content-addressable storage cloud that comprises the first and second content-addressable storage servers.
16. The system of claim 11 , wherein receiving the request for event notification of the particular event type of event comprises receiving a request for event notification of storage of data.
17. A non-transient computer-readable medium comprising computer-executable instructions for event notification in an interconnected content-addressable storage system, said computer-executable instructions, when running on one or more computers, performing a method comprising:
receiving a request for event notification of a particular type of event at a first content-addressable storage server from a first application, said content-addressable storage server being implemented on one or more computing devices;
receiving a request to perform an action associated with an event of the particular event type at a second content-addressable storage server, wherein the first and second content-addressable storage servers are distinct and wherein the first and second content-addressable storage servers are both part of a content-addressable storage cloud;
performing the action associated with the event of the particular event type at the second content-addressable storage server;
upon performance of the action associated with the event of the particular event type at the second content-addressable storage server, propagating an event notification through the content-addressable storage cloud; and
upon receipt of the event notification at the first content-addressable storage server, providing for notification to the first application of the event of the particular event type.
18. The non-transient computer-readable medium of claim 17 , wherein said method further comprises, upon performance of the action associated with the event of the particular event type, propagating data related to the action through the content-addressable storage cloud.
19. The non-transient computer-readable medium of claim 17 , wherein said method further comprises, upon notification to the first application of the event of the particular event type, retrieving data related to the event notification at the first content-addressable storage server.
20. The non-transient computer-readable medium of claim 17 , wherein receiving the request for event notification of the particular event type of event comprises receiving a request for event notification of storage of data.
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/550,127 US20200092163A1 (en) | 2010-04-23 | 2019-08-23 | Event notification in interconnected content-addressable storage systems |
US16/992,973 US20210042346A1 (en) | 2010-04-23 | 2020-08-13 | Event notification in interconnected content-addressable storage systems |
US17/179,400 US20210279272A1 (en) | 2010-04-23 | 2021-02-19 | Event notification in interconnected content-addressable storage systems |
US17/553,531 US20220179898A1 (en) | 2010-04-23 | 2021-12-16 | Event notification in interconnected content-addressable storage systems |
US17/954,228 US20230091925A1 (en) | 2010-04-23 | 2022-09-27 | Event notification in interconnected content-addressable storage systems |
US18/134,465 US20230376523A1 (en) | 2010-04-23 | 2023-04-13 | Event notification in interconnected content-addressable storage systems |
US18/426,017 US20240311420A1 (en) | 2010-04-23 | 2024-01-29 | Event notification in interconnected content-addressable storage systems |
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US32755610P | 2010-04-23 | 2010-04-23 | |
US13/092,229 US8930470B2 (en) | 2010-04-23 | 2011-04-22 | Event notification in interconnected content-addressable storage systems |
US14/586,597 US20150180707A1 (en) | 2010-04-23 | 2014-12-30 | Event notification in interconnected content-addressable storage systems |
US14/877,693 US20160036627A1 (en) | 2010-04-23 | 2015-10-07 | Event notification in interconnected content-addressable storage systems |
US15/438,581 US20170237606A1 (en) | 2010-04-23 | 2017-02-21 | Event notification in interconnected content-addressable storage systems |
US15/879,325 US20190036764A1 (en) | 2010-04-23 | 2018-01-24 | Event notification in interconnected content-addressable storage systems |
US16/550,127 US20200092163A1 (en) | 2010-04-23 | 2019-08-23 | Event notification in interconnected content-addressable storage systems |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/879,325 Continuation US20190036764A1 (en) | 2010-04-23 | 2018-01-24 | Event notification in interconnected content-addressable storage systems |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/992,973 Continuation US20210042346A1 (en) | 2010-04-23 | 2020-08-13 | Event notification in interconnected content-addressable storage systems |
Publications (1)
Publication Number | Publication Date |
---|---|
US20200092163A1 true US20200092163A1 (en) | 2020-03-19 |
Family
ID=44834840
Family Applications (14)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/092,243 Active US8799221B2 (en) | 2010-04-23 | 2011-04-22 | Shared archives in interconnected content-addressable storage systems |
US13/092,253 Active US8407244B2 (en) | 2010-04-23 | 2011-04-22 | Management of virtual packages of medical data in interconnected content-addressable storage systems |
US13/092,229 Active 2032-12-28 US8930470B2 (en) | 2010-04-23 | 2011-04-22 | Event notification in interconnected content-addressable storage systems |
US14/586,597 Abandoned US20150180707A1 (en) | 2010-04-23 | 2014-12-30 | Event notification in interconnected content-addressable storage systems |
US14/877,693 Abandoned US20160036627A1 (en) | 2010-04-23 | 2015-10-07 | Event notification in interconnected content-addressable storage systems |
US15/438,581 Abandoned US20170237606A1 (en) | 2010-04-23 | 2017-02-21 | Event notification in interconnected content-addressable storage systems |
US15/879,325 Abandoned US20190036764A1 (en) | 2010-04-23 | 2018-01-24 | Event notification in interconnected content-addressable storage systems |
US16/550,127 Abandoned US20200092163A1 (en) | 2010-04-23 | 2019-08-23 | Event notification in interconnected content-addressable storage systems |
US16/992,973 Abandoned US20210042346A1 (en) | 2010-04-23 | 2020-08-13 | Event notification in interconnected content-addressable storage systems |
US17/179,400 Abandoned US20210279272A1 (en) | 2010-04-23 | 2021-02-19 | Event notification in interconnected content-addressable storage systems |
US17/553,531 Abandoned US20220179898A1 (en) | 2010-04-23 | 2021-12-16 | Event notification in interconnected content-addressable storage systems |
US17/954,228 Abandoned US20230091925A1 (en) | 2010-04-23 | 2022-09-27 | Event notification in interconnected content-addressable storage systems |
US18/134,465 Abandoned US20230376523A1 (en) | 2010-04-23 | 2023-04-13 | Event notification in interconnected content-addressable storage systems |
US18/426,017 Pending US20240311420A1 (en) | 2010-04-23 | 2024-01-29 | Event notification in interconnected content-addressable storage systems |
Family Applications Before (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/092,243 Active US8799221B2 (en) | 2010-04-23 | 2011-04-22 | Shared archives in interconnected content-addressable storage systems |
US13/092,253 Active US8407244B2 (en) | 2010-04-23 | 2011-04-22 | Management of virtual packages of medical data in interconnected content-addressable storage systems |
US13/092,229 Active 2032-12-28 US8930470B2 (en) | 2010-04-23 | 2011-04-22 | Event notification in interconnected content-addressable storage systems |
US14/586,597 Abandoned US20150180707A1 (en) | 2010-04-23 | 2014-12-30 | Event notification in interconnected content-addressable storage systems |
US14/877,693 Abandoned US20160036627A1 (en) | 2010-04-23 | 2015-10-07 | Event notification in interconnected content-addressable storage systems |
US15/438,581 Abandoned US20170237606A1 (en) | 2010-04-23 | 2017-02-21 | Event notification in interconnected content-addressable storage systems |
US15/879,325 Abandoned US20190036764A1 (en) | 2010-04-23 | 2018-01-24 | Event notification in interconnected content-addressable storage systems |
Family Applications After (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/992,973 Abandoned US20210042346A1 (en) | 2010-04-23 | 2020-08-13 | Event notification in interconnected content-addressable storage systems |
US17/179,400 Abandoned US20210279272A1 (en) | 2010-04-23 | 2021-02-19 | Event notification in interconnected content-addressable storage systems |
US17/553,531 Abandoned US20220179898A1 (en) | 2010-04-23 | 2021-12-16 | Event notification in interconnected content-addressable storage systems |
US17/954,228 Abandoned US20230091925A1 (en) | 2010-04-23 | 2022-09-27 | Event notification in interconnected content-addressable storage systems |
US18/134,465 Abandoned US20230376523A1 (en) | 2010-04-23 | 2023-04-13 | Event notification in interconnected content-addressable storage systems |
US18/426,017 Pending US20240311420A1 (en) | 2010-04-23 | 2024-01-29 | Event notification in interconnected content-addressable storage systems |
Country Status (2)
Country | Link |
---|---|
US (14) | US8799221B2 (en) |
WO (1) | WO2011133917A2 (en) |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160004766A1 (en) * | 2006-10-10 | 2016-01-07 | Abbyy Infopoisk Llc | Search technology using synonims and paraphrasing |
US9215264B1 (en) * | 2010-08-20 | 2015-12-15 | Symantec Corporation | Techniques for monitoring secure cloud based content |
US9239690B2 (en) * | 2010-08-31 | 2016-01-19 | Bruce R. Backa | System and method for in-place data migration |
US20160358278A1 (en) * | 2010-09-29 | 2016-12-08 | Certify Data Systems, Inc. | Electronic medical record exchange system |
WO2012167108A1 (en) * | 2011-06-03 | 2012-12-06 | Apple Inc. | Cloud storage |
US9213718B1 (en) | 2011-06-22 | 2015-12-15 | Emc Corporation | Synchronized file management across multiple disparate endpoints |
US8850516B1 (en) | 2011-06-22 | 2014-09-30 | Emc Corporation | Virtual private cloud that provides enterprise grade functionality and compliance |
US20130185331A1 (en) * | 2011-09-19 | 2013-07-18 | Christopher Conemac | Medical Imaging Management System |
US20130110537A1 (en) * | 2012-01-19 | 2013-05-02 | Douglas K. Smith | Cloud-based Medical Imaging Viewer and Methods for Establishing A Cloud-based Medical Consultation Session |
US8744999B2 (en) * | 2012-01-30 | 2014-06-03 | Microsoft Corporation | Identifier compression for file synchronization via soap over HTTP |
US9542466B2 (en) * | 2012-05-10 | 2017-01-10 | Aetherstore Inc. | Systems and methods for distributed storage |
US20130325805A1 (en) * | 2012-06-02 | 2013-12-05 | Dmitriy Tochilnik | System and method for tagging and securely archiving patient radiological information |
EP2704398A1 (en) * | 2012-08-27 | 2014-03-05 | Awingu Nv | A method for content change notification in a cloud storage system, a corresponding cloud broker and cloud agent |
US9158887B2 (en) * | 2012-09-07 | 2015-10-13 | Agfa Healthcare | System and method for retrieving and processing metadata |
KR101630761B1 (en) | 2012-09-24 | 2016-06-15 | 삼성전자주식회사 | Ultrasound apparatus and method for providing information using the ultrasound apparatus |
US9185081B2 (en) * | 2012-10-22 | 2015-11-10 | Symantec Corporation | Format friendly encryption |
US20140115664A1 (en) * | 2012-10-22 | 2014-04-24 | Martin Boliek | Instruction-based web service routing system that enables devices to control the flow of content |
US9122688B1 (en) * | 2012-11-20 | 2015-09-01 | Emc Corporation | Naming scheme for different computer systems |
US20140142984A1 (en) * | 2012-11-21 | 2014-05-22 | Datcard Systems, Inc. | Cloud based viewing, transfer and storage of medical data |
US20140188510A1 (en) * | 2012-11-27 | 2014-07-03 | Sorna Corporation | Apparatus and method for retreiving information from a computer system for storage in a cloud environment |
US9069879B2 (en) | 2012-12-27 | 2015-06-30 | Dropbox, Inc. | Globally unique identifiers in an online content management system |
US20140188729A1 (en) * | 2013-01-02 | 2014-07-03 | Ricoh Company, Ltd. | Remote notification and action system with event generating |
US20140214901A1 (en) * | 2013-01-28 | 2014-07-31 | Digitalmailer, Inc. | Virtual storage system and file storing method |
TWI502384B (en) * | 2013-02-19 | 2015-10-01 | Acer Inc | File tracking methods and network communication devices using the same |
US11114194B2 (en) | 2015-10-01 | 2021-09-07 | Audacious Inquiry | Network-based systems and methods for providing readmission notifications |
US9734195B1 (en) * | 2013-05-16 | 2017-08-15 | Veritas Technologies Llc | Automated data flow tracking |
WO2015065434A1 (en) * | 2013-10-31 | 2015-05-07 | Hewlett-Packard Development Company, L.P. | Trusted function based data access security control |
US9465820B2 (en) * | 2013-11-13 | 2016-10-11 | Cellco Partnership | Method and system for unified technological stack management for relational databases |
WO2015078955A1 (en) * | 2013-11-28 | 2015-06-04 | Agfa Healthcare | A method and computer program product for management of the distribution of medical reports in clinical applications |
US10331852B2 (en) | 2014-01-17 | 2019-06-25 | Arterys Inc. | Medical imaging and efficient sharing of medical imaging information |
US9489152B2 (en) | 2014-02-24 | 2016-11-08 | Ricoh Company, Ltd. | Object distribution in advanced function presentation environments |
US10447573B2 (en) * | 2014-07-17 | 2019-10-15 | Sysmex Corporation | Method and system for aggregating diagnostic analyzer related information |
CN104331640B (en) * | 2014-10-17 | 2018-04-17 | 北京百迈客生物科技有限公司 | Project concluding report analysis system and method based on biological cloud platform |
US9514274B2 (en) * | 2014-11-29 | 2016-12-06 | Infinitt Healthcare Co., Ltd. | Layered medical image forming, receiving, and transmitting methods |
US9679157B2 (en) | 2015-01-07 | 2017-06-13 | International Business Machines Corporation | Limiting exposure to compliance and risk in a cloud environment |
US20160246995A1 (en) * | 2015-02-25 | 2016-08-25 | Barracuda Networks, Inc. | Method and apparatus for authorized access to local files on a copy appliance |
JP6828034B2 (en) | 2015-11-29 | 2021-02-10 | アーテリーズ インコーポレイテッド | Efficient sharing of medical imaging and medical imaging information |
US10074066B2 (en) * | 2016-01-16 | 2018-09-11 | International Business Machines Corporation | Two phase predictive approach for supply network optimization |
US10257174B2 (en) * | 2016-01-20 | 2019-04-09 | Medicom Technologies, Inc. | Methods and systems for providing secure and auditable transfer of encrypted data between remote locations |
US11831492B2 (en) * | 2016-08-16 | 2023-11-28 | Nicira, Inc. | Group-based network event notification |
US9798725B1 (en) * | 2016-08-19 | 2017-10-24 | eAffirm LLC | Variance detection between heterogeneous multimedia files from heterogeneous computer systems |
CN106131225A (en) * | 2016-08-30 | 2016-11-16 | 孟玲 | The security system accessed for medical treatment case information |
US11693945B2 (en) * | 2016-11-18 | 2023-07-04 | Sap Se | Secure calls between applications |
WO2018204698A1 (en) | 2017-05-04 | 2018-11-08 | Arterys Inc. | Medical imaging, efficient sharing and secure handling of medical imaging information |
TWI634773B (en) * | 2017-05-31 | 2018-09-01 | 關貿網路股份有限公司 | High efficient message transmission method |
US10938950B2 (en) * | 2017-11-14 | 2021-03-02 | General Electric Company | Hierarchical data exchange management system |
CN107911379B (en) * | 2017-11-29 | 2020-02-21 | 贝壳找房(北京)科技有限公司 | CAS server |
CN108389129B (en) | 2018-02-27 | 2020-12-04 | 创新先进技术有限公司 | Transaction execution method and device based on block chain and electronic equipment |
US11113263B2 (en) * | 2018-03-20 | 2021-09-07 | eAffirm LLC | Variations recognition between heterogeneous computer systems |
US10796794B2 (en) * | 2018-03-28 | 2020-10-06 | Konica Minolta Healthcare Americas, Inc. | Deletion of medical images in cloud-based storage |
US11328826B2 (en) * | 2018-06-12 | 2022-05-10 | Clarius Mobile Health Corp. | System architecture for improved storage of electronic health information, and related methods |
US10986173B1 (en) | 2019-04-25 | 2021-04-20 | Edjx, Inc. | Systems and methods for locating server nodes for edge devices using latency-based georouting |
EP3799056A1 (en) * | 2019-09-24 | 2021-03-31 | Siemens Healthcare GmbH | Cloud-based patient data exchange |
US11513817B2 (en) | 2020-03-04 | 2022-11-29 | Kyndryl, Inc. | Preventing disruption within information technology environments |
US11532384B2 (en) | 2020-04-02 | 2022-12-20 | International Business Machines Corporation | Personalized offline retrieval of data |
US11145404B1 (en) | 2020-06-12 | 2021-10-12 | Omniscient Neurotechnology Pty Limited | Face reattachment to brain imaging data |
CN111885166B (en) * | 2020-07-24 | 2023-09-05 | 西门子(中国)有限公司 | Method, device and system for acquiring DICOM file |
US12101332B1 (en) | 2020-10-09 | 2024-09-24 | Edjx, Inc. | Systems and methods for a federated tactical edge cloud |
US11922074B1 (en) | 2020-10-11 | 2024-03-05 | Edjx, Inc. | Systems and methods for a content-addressable peer-to-peer storage network |
US12056263B2 (en) | 2021-04-13 | 2024-08-06 | SanDisk Technologies, Inc. | Data storage device and method of access |
CN115220642A (en) * | 2021-04-16 | 2022-10-21 | 戴尔产品有限公司 | Predicting storage array capacity |
Citations (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875108A (en) * | 1991-12-23 | 1999-02-23 | Hoffberg; Steven M. | Ergonomic man-machine interface incorporating adaptive pattern recognition based control system |
US20030041155A1 (en) * | 1999-05-14 | 2003-02-27 | Nelson Eric A. | Aircraft data communications services for users |
US6584502B1 (en) * | 1999-06-29 | 2003-06-24 | Cisco Technology, Inc. | Technique for providing automatic event notification of changing network conditions to network elements in an adaptive, feedback-based data network |
US6769024B1 (en) * | 1999-06-29 | 2004-07-27 | Cisco Technology, Inc. | Dynamically adaptive network element in a feedback-based data network |
US20040148611A1 (en) * | 2003-01-27 | 2004-07-29 | Microsoft Corporation | Peer-to-peer networking framework application programming interfaces |
US20050021733A1 (en) * | 2003-07-01 | 2005-01-27 | Microsoft Corporation | Monitoring/maintaining health status of a computer system |
US20050052284A1 (en) * | 2003-09-05 | 2005-03-10 | Sensitech Inc. | Automatic conditioning of data accumulated by sensors monitoring supply chain processes |
US20050071194A1 (en) * | 2003-09-30 | 2005-03-31 | Bormann Daniel S. | System and method for providing patient record synchronization in a healthcare setting |
US6973477B1 (en) * | 1995-05-19 | 2005-12-06 | Cyberfone Technologies, Inc. | System for securely communicating amongst client computer systems |
US6973034B1 (en) * | 1999-06-29 | 2005-12-06 | Cisco Technology, Inc. | Technique for collecting operating information from network elements, and for controlling network element behavior in a feedback-based, adaptive data network |
US20060089824A1 (en) * | 2002-05-30 | 2006-04-27 | Peter Siekmeier | Methods and systems for drug screening and computational modeling |
US7127455B2 (en) * | 2002-11-12 | 2006-10-24 | Hewlett-Packard Development Company, L.P. | Taxonomy for mobile e-services |
US20070260619A1 (en) * | 2004-04-29 | 2007-11-08 | Filenet Corporation | Enterprise content management network-attached system |
US20080189268A1 (en) * | 2006-10-03 | 2008-08-07 | Lawrence Au | Mechanism for automatic matching of host to guest content via categorization |
US20080244038A1 (en) * | 2007-03-30 | 2008-10-02 | Yahoo! Inc. | Point of Presence Distribution Mechanism for Digital Content Objects |
US20090113008A1 (en) * | 2007-04-05 | 2009-04-30 | Marcos Lara Gonzalez | Systems and Methods to Exchange Patient Information and to Set Up and Trigger Healthcare Alerts |
US20100049678A1 (en) * | 2008-08-25 | 2010-02-25 | Alcatel-Lucent | System and method of prefetching and caching web services requests |
US20100088150A1 (en) * | 2008-10-08 | 2010-04-08 | Jamal Mazhar | Cloud computing lifecycle management for n-tier applications |
US20100117799A1 (en) * | 2008-05-14 | 2010-05-13 | Douglas Eugene Dormer | Secure personal information and notification network for electronic health records systems |
US20100268764A1 (en) * | 2009-04-15 | 2010-10-21 | Wee Sewook | Method and system for client-side scaling of web server farm architectures in a cloud data center |
US20110077965A1 (en) * | 2009-09-25 | 2011-03-31 | Cerner Innovation, Inc. | Processing event information of various sources |
US20110246307A1 (en) * | 2010-03-31 | 2011-10-06 | Martin Zinkevich | Mass-Based Approach for Serving Impressions in Guaranteed Delivery Advertising |
US20120022443A1 (en) * | 2009-03-25 | 2012-01-26 | Timothy Robertson | Probablistic Pharmacokinetic and Pharmacodynamic Modeling |
US8266192B2 (en) * | 2010-03-19 | 2012-09-11 | Hitachi, Ltd. | File-sharing system and method for processing files, and program |
US8353012B2 (en) * | 2008-02-26 | 2013-01-08 | Alejandro Emilio Del Real | Internet-based group website technology for content management and exchange (system and methods) |
Family Cites Families (199)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4055851A (en) | 1976-02-13 | 1977-10-25 | Digital Equipment Corporation | Memory module with means for generating a control signal that inhibits a subsequent overlapped memory cycle during a reading operation portion of a reading memory cycle |
NL8101667A (en) | 1981-04-03 | 1982-11-01 | Philips Nv | RADIATION EXAMINATION DEVICE WITH FILM MEMORY. |
US4491725A (en) | 1982-09-29 | 1985-01-01 | Pritchard Lawrence E | Medical insurance verification and processing system |
US4860112A (en) | 1984-06-07 | 1989-08-22 | Raytel Systems Corporation | Teleradiology system having multiple compressor/expanders |
US4874935A (en) | 1986-03-10 | 1989-10-17 | Data Card Coprporation | Smart card apparatus and method of programming same |
DE3722075A1 (en) | 1986-07-02 | 1988-03-17 | Toshiba Kawasaki Kk | Image diagnostics system |
US5019975A (en) | 1986-08-08 | 1991-05-28 | Fuji Photo Film Co., Ltd. | Method for constructing a data base in a medical image control system |
US4945410A (en) | 1987-02-09 | 1990-07-31 | Professional Satellite Imaging, Inc. | Satellite communications system for medical related images |
US5005126A (en) | 1987-04-09 | 1991-04-02 | Prevail, Inc. | System and method for remote presentation of diagnostic image information |
DE3823259C2 (en) | 1987-07-08 | 1994-09-01 | Toshiba Kawasaki Kk | Device for archiving and transmitting medical image data |
US5002062A (en) | 1988-05-31 | 1991-03-26 | Sharp Kabushiki Kaisha | Ambulatory electrocardiographic apparatus |
US5319629A (en) | 1988-08-25 | 1994-06-07 | Sparta, Inc. | Content addressable optical data storage system |
US4852570A (en) | 1989-02-09 | 1989-08-01 | Levine Alfred B | Comparative medical-physical analysis |
JPH02132366U (en) | 1989-04-03 | 1990-11-02 | ||
JPH03149614A (en) | 1989-08-31 | 1991-06-26 | Univ California | Information processing system and memory processing |
US5272625A (en) | 1990-05-17 | 1993-12-21 | Kabushiki Kaisha Toshiba | Medical image data managing system |
US5822544A (en) | 1990-07-27 | 1998-10-13 | Executone Information Systems, Inc. | Patient care and communication system |
US5291399A (en) | 1990-07-27 | 1994-03-01 | Executone Information Systems, Inc. | Method and apparatus for accessing a portable personal database as for a hospital environment |
EP0481735A3 (en) | 1990-10-19 | 1993-01-13 | Array Technology Corporation | Address protection circuit |
US5321681A (en) | 1990-11-21 | 1994-06-14 | Image Premastering Services, Ltd. | Apparatus for recording, storing and electronically accessing images |
EP0487110B1 (en) | 1990-11-22 | 1999-10-06 | Kabushiki Kaisha Toshiba | Computer-aided diagnosis system for medical use |
US5544649A (en) | 1992-03-25 | 1996-08-13 | Cardiomedix, Inc. | Ambulatory patient health monitoring techniques utilizing interactive visual communication |
US5319543A (en) | 1992-06-19 | 1994-06-07 | First Data Health Services Corporation | Workflow server for medical records imaging and tracking system |
JP3237900B2 (en) | 1992-06-19 | 2001-12-10 | 株式会社東芝 | Image display system |
US5321520A (en) | 1992-07-20 | 1994-06-14 | Automated Medical Access Corporation | Automated high definition/resolution image storage, retrieval and transmission system |
US6283761B1 (en) | 1992-09-08 | 2001-09-04 | Raymond Anthony Joao | Apparatus and method for processing and/or for providing healthcare information and/or healthcare-related information |
US5734915A (en) | 1992-11-25 | 1998-03-31 | Eastman Kodak Company | Method and apparatus for composing digital medical imagery |
US5848198A (en) | 1993-10-08 | 1998-12-08 | Penn; Alan Irvin | Method of and apparatus for analyzing images and deriving binary image representations |
US5469353A (en) | 1993-11-26 | 1995-11-21 | Access Radiology Corp. | Radiological image interpretation apparatus and method |
US6022315A (en) | 1993-12-29 | 2000-02-08 | First Opinion Corporation | Computerized medical diagnostic and treatment advice system including network access |
WO1995019030A1 (en) | 1994-01-05 | 1995-07-13 | Pois, Inc. | Apparatus and method for a personal onboard information system |
US5531227A (en) | 1994-01-28 | 1996-07-02 | Schneider Medical Technologies, Inc. | Imaging device and method |
CA2125300C (en) | 1994-05-11 | 1999-10-12 | Douglas J. Ballantyne | Method and apparatus for the electronic distribution of medical information and patient services |
US5724582A (en) | 1994-05-27 | 1998-03-03 | Eastman Kodak Company | Medical image archiving with lossy images on two or more recordable CDs |
EP0684565A1 (en) | 1994-05-27 | 1995-11-29 | Eastman Kodak Company | Medical image archiving of lossy and lossless images on a recordable CD |
US5590038A (en) | 1994-06-20 | 1996-12-31 | Pitroda; Satyan G. | Universal electronic transaction card including receipt storage and system and methods of conducting electronic transactions |
US5451763A (en) | 1994-07-05 | 1995-09-19 | Alto Corporation | Personal medical IC card and read/write unit |
US5995077A (en) | 1994-07-20 | 1999-11-30 | The United States Of America As Represented By The Secretary Of The Navy | Portable, wearable read/write data device |
US5579296A (en) | 1995-01-18 | 1996-11-26 | Cyberwerks Interactive, L.L.C. | Optically readable thin film digital data storage medium |
US5499293A (en) | 1995-01-24 | 1996-03-12 | University Of Maryland | Privacy protected information medium using a data compression method |
US5542768A (en) | 1995-02-03 | 1996-08-06 | Rimage Corporation | Apparatus for printing on plastic disk |
US5740428A (en) | 1995-02-07 | 1998-04-14 | Merge Technologies, Inc. | Computer based multimedia medical database management system and user interface |
US5659741A (en) | 1995-03-29 | 1997-08-19 | Stuart S. Bowie | Computer system and method for storing medical histories using a carrying size card |
US6035280A (en) | 1995-06-16 | 2000-03-07 | Christensen; Scott N. | Electronic discount couponing method and apparatus for generating an electronic list of coupons |
JP3455790B2 (en) * | 1995-06-30 | 2003-10-14 | 富士通株式会社 | Know-how management device used for information retrieval |
JPH09128408A (en) | 1995-08-25 | 1997-05-16 | Hitachi Ltd | Media for interactive recording and reproducing and reproducing device |
US5899998A (en) | 1995-08-31 | 1999-05-04 | Medcard Systems, Inc. | Method and system for maintaining and updating computerized medical records |
US5597182A (en) | 1995-09-26 | 1997-01-28 | Motorola, Inc. | Personal human anatomy card and methods and systems for producing same |
US5597995A (en) | 1995-11-08 | 1997-01-28 | Automated Prescription Systems, Inc. | Automated medical prescription fulfillment system having work stations for imaging, filling, and checking the dispensed drug product |
JP3493847B2 (en) | 1995-11-15 | 2004-02-03 | 株式会社日立製作所 | Wide-area medical information system |
AU5134796A (en) | 1995-11-22 | 1997-06-11 | Discart Llc | Method and apparatus for manufacturing compact discs having a non-round outer profile |
US6067075A (en) | 1995-12-21 | 2000-05-23 | Eastman Kodak Company | Controller for medical image review station |
US5734629A (en) | 1995-12-28 | 1998-03-31 | Rimage Corporation | CD transporter |
US5809243A (en) | 1995-12-29 | 1998-09-15 | Lsi Logi Corporation | Personal interface system for wireless and wired communications |
US5671353A (en) | 1996-02-16 | 1997-09-23 | Eastman Kodak Company | Method for validating a digital imaging communication standard message |
US5721825A (en) | 1996-03-15 | 1998-02-24 | Netvision, Inc. | System and method for global event notification and delivery in a distributed computing environment |
US6006191A (en) | 1996-05-13 | 1999-12-21 | Dirienzo; Andrew L. | Remote access medical image exchange system and methods of operation therefor |
US5763862A (en) | 1996-06-24 | 1998-06-09 | Motorola, Inc. | Dual card smart card reader |
US5823948A (en) | 1996-07-08 | 1998-10-20 | Rlis, Inc. | Medical records, documentation, tracking and order entry system |
US5687717A (en) | 1996-08-06 | 1997-11-18 | Tremont Medical, Inc. | Patient monitoring system with chassis mounted or remotely operable modules and portable computer |
US5796862A (en) | 1996-08-16 | 1998-08-18 | Eastman Kodak Company | Apparatus and method for identification of tissue regions in digital mammographic images |
US5867795A (en) | 1996-08-23 | 1999-02-02 | Motorola, Inc. | Portable electronic device with transceiver and visual image display |
JP3688822B2 (en) | 1996-09-03 | 2005-08-31 | 株式会社東芝 | Electronic medical record system |
US5924074A (en) | 1996-09-27 | 1999-07-13 | Azron Incorporated | Electronic medical records system |
US5946276A (en) | 1996-11-15 | 1999-08-31 | Rimage Corporation | Data flow management system for recordable media |
US5995965A (en) | 1996-11-18 | 1999-11-30 | Humetrix, Inc. | System and method for remotely accessing user data records |
US5873824A (en) | 1996-11-29 | 1999-02-23 | Arch Development Corporation | Apparatus and method for computerized analysis of interstitial infiltrates in chest images using artificial neural networks |
US6131090A (en) | 1997-03-04 | 2000-10-10 | Pitney Bowes Inc. | Method and system for providing controlled access to information stored on a portable recording medium |
US6148331A (en) | 1997-04-25 | 2000-11-14 | Parry; Rhys Evan | Destination website access and information gathering system |
US6082776A (en) | 1997-05-07 | 2000-07-04 | Feinberg; Lawrence E. | Storing personal medical information |
US5982736A (en) | 1997-05-15 | 1999-11-09 | Pierson; Gerald A. | Trading card optical compact disc and methods of using and forming same |
US6021404A (en) | 1997-08-18 | 2000-02-01 | Moukheibir; Nabil W. | Universal computer assisted diagnosis |
US5995345A (en) | 1997-11-18 | 1999-11-30 | Overbo; David M. | Data storage cartridge and adapter |
US6032120A (en) | 1997-12-16 | 2000-02-29 | Acuson Corporation | Accessing stored ultrasound images and other digital medical images |
US6014629A (en) | 1998-01-13 | 2000-01-11 | Moore U.S.A. Inc. | Personalized health care provider directory |
US6807632B1 (en) | 1999-01-21 | 2004-10-19 | Emc Corporation | Content addressable information encapsulation, representation, and transfer |
DE19802572A1 (en) | 1998-01-23 | 1999-08-05 | Siemens Health Service Gmbh & | Medical system architecture |
US6421650B1 (en) | 1998-03-04 | 2002-07-16 | Goetech Llc | Medication monitoring system and apparatus |
US6564256B1 (en) | 1998-03-31 | 2003-05-13 | Fuji Photo Film Co., Ltd. | Image transfer system |
EP1031071A2 (en) | 1998-04-15 | 2000-08-30 | Cyberhealth, Inc. | Visit verification method and system |
DE69815814T2 (en) | 1998-04-24 | 2004-05-06 | Eastman Kodak Co. | Method and system for assigning exposed X-ray films to associated patient information |
US6278999B1 (en) | 1998-06-12 | 2001-08-21 | Terry R. Knapp | Information management system for personal health digitizers |
US6260021B1 (en) | 1998-06-12 | 2001-07-10 | Philips Electronics North America Corporation | Computer-based medical image distribution system and method |
US6149440A (en) | 1998-09-18 | 2000-11-21 | Wyngate, Inc. | Methods and apparatus for authenticating informed consent |
US6954802B2 (en) | 1998-09-29 | 2005-10-11 | Tdk Electronics Corporation | Removable media recording station for the medical industry |
US6363392B1 (en) | 1998-10-16 | 2002-03-26 | Vicinity Corporation | Method and system for providing a web-sharable personal database |
US5942165A (en) | 1998-10-20 | 1999-08-24 | Soundshape, Inc. | Method for making irregular shaped CD's and other playing discs |
US6466949B2 (en) * | 1998-11-23 | 2002-10-15 | Myway.Com Corporation | Performing event notification in a database having a distributed web cluster |
US7283857B1 (en) * | 1998-11-30 | 2007-10-16 | Hologic, Inc. | DICOM compliant file communication including quantitative and image data |
US20050086082A1 (en) | 1999-01-21 | 2005-04-21 | Patient Care Technologies | Portable health assistant |
US6976165B1 (en) * | 1999-09-07 | 2005-12-13 | Emc Corporation | System and method for secure storage, transfer and retrieval of content addressable information |
US7010701B1 (en) | 1999-10-19 | 2006-03-07 | Sbc Properties, L.P. | Network arrangement for smart card applications |
US20040078236A1 (en) | 1999-10-30 | 2004-04-22 | Medtamic Holdings | Storage and access of aggregate patient data for analysis |
US6155409A (en) | 1999-11-19 | 2000-12-05 | Hettinger; Gary F. | Personal emergency information and medication holder |
US6671714B1 (en) | 1999-11-23 | 2003-12-30 | Frank Michael Weyer | Method, apparatus and business system for online communications with online and offline recipients |
US20020103675A1 (en) | 1999-11-29 | 2002-08-01 | John Vanelli | Apparatus and method for providing consolidated medical information |
US20020082877A1 (en) * | 1999-12-03 | 2002-06-27 | Schiff Martin R. | Systems and methods of matching customer preferences with available options |
US6397224B1 (en) | 1999-12-10 | 2002-05-28 | Gordon W. Romney | Anonymously linking a plurality of data records |
US7302164B2 (en) | 2000-02-11 | 2007-11-27 | Datcard Systems, Inc. | System and method for producing medical image data onto portable digital recording media |
US20010027402A1 (en) | 2000-02-14 | 2001-10-04 | Ramsaroop Peter R. | Method and apparatus for effectuating bilateral, consumer-driven healthcare commerce |
EP1297478A2 (en) | 2000-03-15 | 2003-04-02 | Emedicalfiles, Inc. | Web-hosted healthcare medical information management system |
US7965408B2 (en) | 2000-05-19 | 2011-06-21 | Cyrus Kurosh Samari | Medical data recording system |
US7587368B2 (en) | 2000-07-06 | 2009-09-08 | David Paul Felsher | Information record infrastructure, system and method |
US6934698B2 (en) | 2000-12-20 | 2005-08-23 | Heart Imaging Technologies Llc | Medical image management system |
US7266556B1 (en) | 2000-12-29 | 2007-09-04 | Intel Corporation | Failover architecture for a distributed storage system |
US6938206B2 (en) | 2001-01-19 | 2005-08-30 | Transolutions, Inc. | System and method for creating a clinical resume |
US20020103811A1 (en) | 2001-01-26 | 2002-08-01 | Fankhauser Karl Erich | Method and apparatus for locating and exchanging clinical information |
KR100392331B1 (en) | 2001-02-02 | 2003-07-22 | 서오텔레콤(주) | System for managing medical insurance using information communication network and method therefore |
AU2002259081A1 (en) | 2001-05-01 | 2002-11-11 | Amicas, Inc. | System and method for repository storage of private data on a network for direct client access |
DE10140729A1 (en) | 2001-08-27 | 2002-07-25 | Christian Nehammer | Individual health ID card system based on CD-RW data medium on which patient records are stored together with computer programs to connect to a central computer for data exchange and updating |
AU2002365480A1 (en) | 2001-11-22 | 2003-06-10 | Liberate Software Limited | Portable storage device for storing and accessing personal data |
JP2003202929A (en) | 2002-01-08 | 2003-07-18 | Ntt Docomo Inc | Distribution method and distribution system |
JP2003224674A (en) | 2002-01-30 | 2003-08-08 | Nec Infrontia Corp | Health management service system by portable telephone terminal |
US20100174750A1 (en) | 2002-03-19 | 2010-07-08 | Donovan Mark C | System and method for storing information for a wireless device |
US20030220822A1 (en) | 2002-05-22 | 2003-11-27 | Barry Fiala Enterprises I, Llc | Medical information registration and retrieval apparatus and method regular |
TW588243B (en) | 2002-07-31 | 2004-05-21 | Trek 2000 Int Ltd | System and method for authentication |
US7298836B2 (en) | 2002-09-24 | 2007-11-20 | At&T Bls Intellectual Property, Inc. | Network-based healthcare information systems |
US7047235B2 (en) | 2002-11-29 | 2006-05-16 | Agency For Science, Technology And Research | Method and apparatus for creating medical teaching files from image archives |
US20040146272A1 (en) * | 2003-01-09 | 2004-07-29 | Kessel Kurt A. | System and method for managing video evidence |
US7802087B2 (en) | 2003-03-10 | 2010-09-21 | Igt | Universal method for submitting gaming machine source code software to a game certification laboratory |
US7089425B2 (en) | 2003-03-18 | 2006-08-08 | Ci4 Technologies, Inc. | Remote access authorization of local content |
US7596703B2 (en) | 2003-03-21 | 2009-09-29 | Hitachi, Ltd. | Hidden data backup and retrieval for a secure device |
US8819419B2 (en) | 2003-04-03 | 2014-08-26 | International Business Machines Corporation | Method and system for dynamic encryption of a URL |
JP2006523070A (en) | 2003-04-10 | 2006-10-05 | エスケーテレコム カンパニー リミテッド | Method and apparatus for providing multimedia service in portable terminal |
US8010717B2 (en) | 2003-04-17 | 2011-08-30 | Imetribus, Inc. | Method and system for communication and collaboration between a patient and healthcare professional |
US7836493B2 (en) | 2003-04-24 | 2010-11-16 | Attachmate Corporation | Proxy server security token authorization |
US7379605B1 (en) | 2003-09-09 | 2008-05-27 | Stelian Doru Ticsa | Method for the integration of medical imaging data and content for wireless transmission and remote viewing |
US20050075909A1 (en) | 2003-10-06 | 2005-04-07 | Geoffrey Flagstad | Medical record cards and storage systems |
US20050125254A1 (en) | 2003-12-03 | 2005-06-09 | Roy Schoenberg | Key maintenance method and system |
US8457981B2 (en) | 2003-12-03 | 2013-06-04 | The Trizetto Group, Inc. | Bridged patient / provider centric method and system |
US7162571B2 (en) | 2003-12-09 | 2007-01-09 | Emc Corporation | Methods and apparatus for parsing a content address to facilitate selection of a physical storage location in a data storage system |
US7444389B2 (en) | 2003-12-09 | 2008-10-28 | Emc Corporation | Methods and apparatus for generating a content address to indicate data units written to a storage system proximate in time |
US20060155584A1 (en) | 2003-12-12 | 2006-07-13 | Abhinav Aggarwal | System and Method for Patient Identification, Monitoring, Tracking, and Rescue |
US20050197859A1 (en) | 2004-01-16 | 2005-09-08 | Wilson James C. | Portable electronic data storage and retreival system for group data |
US20050192837A1 (en) | 2004-02-27 | 2005-09-01 | Cardiac Pacemakers, Inc. | Systems and methods for uploading and distributing medical data sets |
US7039628B2 (en) | 2004-04-21 | 2006-05-02 | Logan Jr Carmen | Portable health care history information system |
US7428611B1 (en) | 2004-04-30 | 2008-09-23 | Emc Corporation | Methods and apparatus for forwarding access requests in a content addressable computer system |
US7240150B1 (en) | 2004-04-30 | 2007-07-03 | Emc Corporation | Methods and apparatus for processing access requests in a content addressable computer system |
US7552356B1 (en) | 2004-06-30 | 2009-06-23 | Sun Microsystems, Inc. | Distributed data storage system for fixed content |
EP1775726A4 (en) | 2004-07-22 | 2009-05-27 | Panasonic Corp | Reproduction device, reproduction method, program, and computer-readable recording medium |
CN101814310B (en) | 2004-07-22 | 2012-11-28 | 松下电器产业株式会社 | Playback apparatus and playback method |
US7657581B2 (en) | 2004-07-29 | 2010-02-02 | Archivas, Inc. | Metadata management for fixed content distributed data storage |
US7539813B1 (en) | 2004-08-04 | 2009-05-26 | Emc Corporation | Methods and apparatus for segregating a content addressable computer system |
US20060064328A1 (en) | 2004-08-30 | 2006-03-23 | Debarshi Datta | System and method for utilizing a DICOM structured report for workflow optimization |
US20060085226A1 (en) | 2004-10-14 | 2006-04-20 | Kamber Deirdre J | Emergency identification, medical treatment and records access authorization media |
US7366836B1 (en) | 2004-12-23 | 2008-04-29 | Emc Corporation | Software system for providing storage system functionality |
KR20060081323A (en) | 2005-01-07 | 2006-07-12 | 엘지전자 주식회사 | Method and apparatus for reproducing a data recorded in recording medium using a local storage |
US20060155680A1 (en) | 2005-01-10 | 2006-07-13 | Peng Wu | Search file indicating languages associated with scenes |
KR101147763B1 (en) | 2005-01-19 | 2012-05-25 | 엘지전자 주식회사 | Data decryption method and apparatus, recoding medium comprising encrypted data |
US7434057B2 (en) | 2005-01-27 | 2008-10-07 | Hitachi, Ltd. | System and method for watermarking in accessed data in a storage system |
US20060242144A1 (en) | 2005-03-24 | 2006-10-26 | Esham Matthew P | Medical image data processing system |
US7694331B2 (en) | 2005-04-01 | 2010-04-06 | Nokia Corporation | Phone with secure element and critical data |
US20070027715A1 (en) | 2005-06-13 | 2007-02-01 | Medcommons, Inc. | Private health information interchange and related systems, methods, and devices |
US8117045B2 (en) | 2005-09-12 | 2012-02-14 | Mymedicalrecords.Com, Inc. | Method and system for providing online medical records |
WO2007035637A2 (en) | 2005-09-19 | 2007-03-29 | Industrial Color, Inc. | Digital file management |
US7860897B2 (en) * | 2005-09-30 | 2010-12-28 | International Business Machines Corporation | Optimized method of locating complete aggregation of patient health records in a global domain |
US20070180509A1 (en) | 2005-12-07 | 2007-08-02 | Swartz Alon R | Practical platform for high risk applications |
US7734603B1 (en) | 2006-01-26 | 2010-06-08 | Netapp, Inc. | Content addressable storage array element |
US7747831B2 (en) | 2006-03-20 | 2010-06-29 | Emc Corporation | High efficiency portable archive and data protection using a virtualization layer |
US9137480B2 (en) | 2006-06-30 | 2015-09-15 | Cisco Technology, Inc. | Secure escrow and recovery of media device content keys |
US8381287B2 (en) | 2006-07-19 | 2013-02-19 | Secure Exchange Solutions, Llc | Trusted records using secure exchange |
US7546486B2 (en) | 2006-08-28 | 2009-06-09 | Bycast Inc. | Scalable distributed object management in a distributed fixed content storage system |
US20080065718A1 (en) | 2006-09-12 | 2008-03-13 | Emc Corporation | Configuring a cache prefetch policy that is controllable based on individual requests |
US7621445B2 (en) | 2006-09-12 | 2009-11-24 | International Business Machines Corporation | Method and apparatus for access to health data with portable media |
US20080071577A1 (en) | 2006-09-14 | 2008-03-20 | Highley Robert D | Dual-access security system for medical records |
US20080104099A1 (en) | 2006-10-31 | 2008-05-01 | Motorola, Inc. | Use of information correlation for relevant information |
US20080109250A1 (en) * | 2006-11-03 | 2008-05-08 | Craig Allan Walker | System and method for creating and rendering DICOM structured clinical reporting via the internet |
US20080126729A1 (en) * | 2006-11-28 | 2008-05-29 | Yigang Cai | Systems and methods for controlling access by a third party to a patient's medical records on a medical information card |
US7590672B2 (en) | 2006-12-11 | 2009-09-15 | Bycast Inc. | Identification of fixed content objects in a distributed fixed content storage system |
US8255382B2 (en) * | 2007-06-20 | 2012-08-28 | Boopsie, Inc. | Dynamic menus for multi-prefix interactive mobile searches |
JP5145719B2 (en) | 2007-01-30 | 2013-02-20 | ソニー株式会社 | Metadata collection system, content management server, metadata collection apparatus, metadata collection method and program |
WO2008099647A1 (en) | 2007-02-16 | 2008-08-21 | Panasonic Corporation | Reproducing apparatus |
US8131670B2 (en) | 2007-02-22 | 2012-03-06 | Microsoft Corporation | Techniques to cross-synchronize data |
US8793704B2 (en) | 2007-03-09 | 2014-07-29 | Microsoft Corporation | Techniques to manage event notifications |
US7877556B2 (en) | 2007-03-30 | 2011-01-25 | Hitachi, Ltd. | Method and apparatus for a unified storage system |
US20080274687A1 (en) | 2007-05-02 | 2008-11-06 | Roberts Dale T | Dynamic mixed media package |
JP5210376B2 (en) | 2007-05-07 | 2013-06-12 | ヒタチデータ・システムズ・コーポレイション | Data confidentiality preservation method in fixed content distributed data storage system |
US8626741B2 (en) | 2007-06-15 | 2014-01-07 | Emc Corporation | Process for cataloging data objects backed up from a content addressed storage system |
US20080319798A1 (en) | 2007-06-20 | 2008-12-25 | Kelley James M | Personalized medical information card and method for managing same |
US7783608B2 (en) | 2007-08-09 | 2010-08-24 | Hitachi, Ltd. | Method and apparatus for NAS/CAS integrated storage system |
US9154846B2 (en) | 2007-09-10 | 2015-10-06 | Verizon Patent And Licensing Inc. | Coordinated multi-media playback |
US7870154B2 (en) | 2007-09-28 | 2011-01-11 | Hitachi, Ltd. | Method and apparatus for NAS/CAS unified storage system |
US8881254B2 (en) | 2007-11-02 | 2014-11-04 | Magtek, Inc. | Method and system for managing virtual objects in a network |
US8635611B2 (en) | 2007-11-16 | 2014-01-21 | Microsoft Corporation | Creating virtual applications |
US7861049B2 (en) | 2007-11-19 | 2010-12-28 | Hitachi, Ltd. | Methods and apparatus for archiving digital data |
US20090157987A1 (en) | 2007-12-14 | 2009-06-18 | Casdex, Inc. | System and Method for Creating Self-Authenticating Documents Including Unique Content Identifiers |
WO2009078157A1 (en) * | 2007-12-17 | 2009-06-25 | Panasonic Corporation | Individual sales oriented recording medium, recording device, reproducing device and method for them |
US20090198515A1 (en) | 2008-02-05 | 2009-08-06 | Sawhney Amrita G | Organization method and system for health information |
US20090204433A1 (en) | 2008-02-11 | 2009-08-13 | Darian Garo B | Method for writing medical prescriptions, storing, and accessing patient medical records with improved portability and improved patient data security using a USB dongle device |
US8427552B2 (en) | 2008-03-03 | 2013-04-23 | Videoiq, Inc. | Extending the operational lifetime of a hard-disk drive used in video data storage applications |
US8959199B2 (en) | 2008-03-18 | 2015-02-17 | Reduxio Systems Ltd. | Network storage system for a download intensive environment |
US20090319736A1 (en) | 2008-06-24 | 2009-12-24 | Hitachi, Ltd. | Method and apparatus for integrated nas and cas data backup |
WO2010048531A1 (en) | 2008-10-24 | 2010-04-29 | Datcard Systems, Inc. | System and methods for metadata management in content addressable storage |
US8412539B2 (en) | 2009-04-09 | 2013-04-02 | Rajagopal Srinivasan | Handheld medical information management device |
US20110004588A1 (en) | 2009-05-11 | 2011-01-06 | iMedix Inc. | Method for enhancing the performance of a medical search engine based on semantic analysis and user feedback |
US20100293524A1 (en) | 2009-05-12 | 2010-11-18 | International Business Machines, Corporation | Development environment for managing database aware software projects |
US8751495B2 (en) | 2009-09-29 | 2014-06-10 | Siemens Medical Solutions Usa, Inc. | Automated patient/document identification and categorization for medical data |
US20110112850A1 (en) * | 2009-11-09 | 2011-05-12 | Roberto Beraja | Medical decision system including medical observation locking and associated methods |
US10514940B2 (en) | 2010-03-17 | 2019-12-24 | Microsoft Technology Licensing, Llc | Virtual application package reconstruction |
-
2011
- 2011-04-22 US US13/092,243 patent/US8799221B2/en active Active
- 2011-04-22 US US13/092,253 patent/US8407244B2/en active Active
- 2011-04-22 WO PCT/US2011/033647 patent/WO2011133917A2/en active Application Filing
- 2011-04-22 US US13/092,229 patent/US8930470B2/en active Active
-
2014
- 2014-12-30 US US14/586,597 patent/US20150180707A1/en not_active Abandoned
-
2015
- 2015-10-07 US US14/877,693 patent/US20160036627A1/en not_active Abandoned
-
2017
- 2017-02-21 US US15/438,581 patent/US20170237606A1/en not_active Abandoned
-
2018
- 2018-01-24 US US15/879,325 patent/US20190036764A1/en not_active Abandoned
-
2019
- 2019-08-23 US US16/550,127 patent/US20200092163A1/en not_active Abandoned
-
2020
- 2020-08-13 US US16/992,973 patent/US20210042346A1/en not_active Abandoned
-
2021
- 2021-02-19 US US17/179,400 patent/US20210279272A1/en not_active Abandoned
- 2021-12-16 US US17/553,531 patent/US20220179898A1/en not_active Abandoned
-
2022
- 2022-09-27 US US17/954,228 patent/US20230091925A1/en not_active Abandoned
-
2023
- 2023-04-13 US US18/134,465 patent/US20230376523A1/en not_active Abandoned
-
2024
- 2024-01-29 US US18/426,017 patent/US20240311420A1/en active Pending
Patent Citations (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875108A (en) * | 1991-12-23 | 1999-02-23 | Hoffberg; Steven M. | Ergonomic man-machine interface incorporating adaptive pattern recognition based control system |
US6973477B1 (en) * | 1995-05-19 | 2005-12-06 | Cyberfone Technologies, Inc. | System for securely communicating amongst client computer systems |
US20030041155A1 (en) * | 1999-05-14 | 2003-02-27 | Nelson Eric A. | Aircraft data communications services for users |
US6584502B1 (en) * | 1999-06-29 | 2003-06-24 | Cisco Technology, Inc. | Technique for providing automatic event notification of changing network conditions to network elements in an adaptive, feedback-based data network |
US6769024B1 (en) * | 1999-06-29 | 2004-07-27 | Cisco Technology, Inc. | Dynamically adaptive network element in a feedback-based data network |
US6973034B1 (en) * | 1999-06-29 | 2005-12-06 | Cisco Technology, Inc. | Technique for collecting operating information from network elements, and for controlling network element behavior in a feedback-based, adaptive data network |
US20060089824A1 (en) * | 2002-05-30 | 2006-04-27 | Peter Siekmeier | Methods and systems for drug screening and computational modeling |
US7127455B2 (en) * | 2002-11-12 | 2006-10-24 | Hewlett-Packard Development Company, L.P. | Taxonomy for mobile e-services |
US20040148611A1 (en) * | 2003-01-27 | 2004-07-29 | Microsoft Corporation | Peer-to-peer networking framework application programming interfaces |
US20050021733A1 (en) * | 2003-07-01 | 2005-01-27 | Microsoft Corporation | Monitoring/maintaining health status of a computer system |
US20050052284A1 (en) * | 2003-09-05 | 2005-03-10 | Sensitech Inc. | Automatic conditioning of data accumulated by sensors monitoring supply chain processes |
US20050071194A1 (en) * | 2003-09-30 | 2005-03-31 | Bormann Daniel S. | System and method for providing patient record synchronization in a healthcare setting |
US20070260619A1 (en) * | 2004-04-29 | 2007-11-08 | Filenet Corporation | Enterprise content management network-attached system |
US20080189268A1 (en) * | 2006-10-03 | 2008-08-07 | Lawrence Au | Mechanism for automatic matching of host to guest content via categorization |
US20080244038A1 (en) * | 2007-03-30 | 2008-10-02 | Yahoo! Inc. | Point of Presence Distribution Mechanism for Digital Content Objects |
US20090113008A1 (en) * | 2007-04-05 | 2009-04-30 | Marcos Lara Gonzalez | Systems and Methods to Exchange Patient Information and to Set Up and Trigger Healthcare Alerts |
US8353012B2 (en) * | 2008-02-26 | 2013-01-08 | Alejandro Emilio Del Real | Internet-based group website technology for content management and exchange (system and methods) |
US20100117799A1 (en) * | 2008-05-14 | 2010-05-13 | Douglas Eugene Dormer | Secure personal information and notification network for electronic health records systems |
US20100049678A1 (en) * | 2008-08-25 | 2010-02-25 | Alcatel-Lucent | System and method of prefetching and caching web services requests |
US20100088150A1 (en) * | 2008-10-08 | 2010-04-08 | Jamal Mazhar | Cloud computing lifecycle management for n-tier applications |
US20120022443A1 (en) * | 2009-03-25 | 2012-01-26 | Timothy Robertson | Probablistic Pharmacokinetic and Pharmacodynamic Modeling |
US20100268764A1 (en) * | 2009-04-15 | 2010-10-21 | Wee Sewook | Method and system for client-side scaling of web server farm architectures in a cloud data center |
US20110077965A1 (en) * | 2009-09-25 | 2011-03-31 | Cerner Innovation, Inc. | Processing event information of various sources |
US8266192B2 (en) * | 2010-03-19 | 2012-09-11 | Hitachi, Ltd. | File-sharing system and method for processing files, and program |
US20110246307A1 (en) * | 2010-03-31 | 2011-10-06 | Martin Zinkevich | Mass-Based Approach for Serving Impressions in Guaranteed Delivery Advertising |
Also Published As
Publication number | Publication date |
---|---|
US20190036764A1 (en) | 2019-01-31 |
US20120005226A1 (en) | 2012-01-05 |
US20210042346A1 (en) | 2021-02-11 |
US20230376523A1 (en) | 2023-11-23 |
US20160036627A1 (en) | 2016-02-04 |
US20210279272A1 (en) | 2021-09-09 |
US20230091925A1 (en) | 2023-03-23 |
US8799221B2 (en) | 2014-08-05 |
US8407244B2 (en) | 2013-03-26 |
WO2011133917A2 (en) | 2011-10-27 |
US20170237606A1 (en) | 2017-08-17 |
US20240311420A1 (en) | 2024-09-19 |
WO2011133917A3 (en) | 2012-01-19 |
US20150180707A1 (en) | 2015-06-25 |
US20110320469A1 (en) | 2011-12-29 |
US8930470B2 (en) | 2015-01-06 |
US20220179898A1 (en) | 2022-06-09 |
US20120005252A1 (en) | 2012-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230376523A1 (en) | Event notification in interconnected content-addressable storage systems | |
US9961158B2 (en) | System and methods of managing content in one or more networked repositories during a network downtime condition | |
US20110153351A1 (en) | Collaborative medical imaging web application | |
EP3410338B1 (en) | Systems and methods for producing, displaying, and interacting with collaborative environments using classification-based access control | |
US20110110568A1 (en) | Web enabled medical image repository | |
US7813594B2 (en) | Ownership tagging and data assurance of image data system and method | |
US20100138446A1 (en) | System and methods for metadata management in content addressable storage | |
US20060047669A1 (en) | System and method for document and electronic file management | |
US10476668B2 (en) | Citation and attribution management methods and systems | |
EP3891690B1 (en) | Intelligent meta pacs system and server | |
US11630744B2 (en) | Methods and systems relating to network based storage retention | |
US9826054B2 (en) | System and methods of pre-fetching content in one or more repositories | |
JP2023101763A (en) | Data management system and data management method | |
Lebre et al. | Decentralizing the storage of a DICOM compliant PACS | |
Lebre et al. | An Efficient and Reliable Architecture for Distributing Medical Imaging Data | |
EP3011488B1 (en) | System and methods of managing content in one or more repositories | |
Lebre | Mecanismo de Gestão de Áreas de Utilizador para Repositórios de Imagem Médica | |
Lebre | Rui André |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |