IP Library Granted Patent US 10,360,218
Granted Patent B2
US 10,360,218 · App. 14/502,895 · Granted Jul 23, 2019

System and methods for caching and querying objects stored in multiple databases

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,360,218
App. No.
14/502,895
Granted
Jul 23, 2019
Kind
B2
Abstract

A method for organizing and searching objects from a plurality of databases includes querying an attribute of each entry stored in the plurality of databases; assigning a memory value for each of the attributes retrieved from each of the objects stored in the plurality of databases and storing the memory values for each of the attributes in a cache. At a client device, a search query is received and it is determined if the search query contains an attribute of the entry to be searched. Upon positive determination, a search is performed at the cache using the attribute contained in the search query; and upon negative determination, a search for the entry is performed at the plurality of databases.

Claims (93)

1. A system for organizing and searching objects from a plurality of databases, comprising:

a plurality of databases storing one or more objects, each object having at least one attribute comprising a SOPInstanceUID;

a computing device connected to the plurality of databases, the computing device having one or more instructions for:

retrieving at least one attribute for each of the one or more objects stored in the plurality of databases;

assigning a memory value for each retrieved attribute of the one or more objects;

storing the memory values in a cache; and

updating the cache by querying each of the plurality of databases for newly-added objects and assigning a corresponding memory value for each of the newly-added objects; and

a client imaging device connected to the plurality of databases for:

receiving a search query for a first object;

determining if the search query includes an attribute value for searching the first object;

upon positive determination that the search query includes the attribute value for searching the first object, perform a search for the first object on the cache using the attribute value contained in the search query; and

upon negative determination that the search query does not include the attribute value, perform a search for the first object on the plurality of databases;

wherein the newly-added objects in the plurality of databases have not been previously retrieved; and

wherein the newly-added objects in the plurality of databases do not have a corresponding memory value assigned prior to the querying;

wherein each of the newly-added objects from the plurality of databases is a DICOM database object;

wherein the attribute of each of the DICOM database objects is a DICOM level attribute;

wherein the querying is repeated according to a predefined polling interval;

wherein the search query is a Web Access to DICOM Persistent Objects (WADO) request;

wherein the search query is performed as a parallel query;

wherein the attribute of the first object to be searched comprises:

a StudyInstanceUID corresponding to the first object; and

a timestamp corresponding to a runtime of caching the first object;

wherein retrieving the at least one attribute for each of the one or more objects stored in the plurality of databases further comprises determining a most recently added one of the objects sharing the attribute and stored in the plurality of databases;

wherein the assigning the memory value for each of the attributes further includes pairing each of the attribute with the corresponding object in the plurality of databases;

wherein the pairing each of the attribute with the corresponding object in the plurality of the databases includes pairing each of the attribute with a storage location of the corresponding object;

wherein if performing the search at the cache using the attribute contained in the search query returns at least one attribute from the cache, retrieving the object using the storage location paired with the attribute;

wherein each attribute is associated with one of a plurality of specific levels within one or more of the plurality of databases;

wherein each attribute further comprises:

a unique StudyInstanceID corresponding to some or all of the objects stored in the plurality of databases;

a SeriesinstanceUID;

a SOPInstanceUID;

a unique identifier corresponding to one or more of the objects stored in the plurality of databases; and

a timestamp of a runtime of caching one or more of the objects stored in the plurality of databases.

2. A method for organizing and searching objects from a plurality of databases, comprising:

retrieving, by a server, entries from the plurality of databases by querying at least one attribute of each entry stored in the plurality of databases;

assigning, by the server, a memory value for each of the attributes retrieved from each of the entries stored in the plurality of databases;

storing the memory values for each of the attributes in a cache;

receiving at a client device a search query for a first entry stored in one of the plurality of databases;

determining at the client device if the search query contains an attribute of the first entry to be searched;

upon positive determination, performing a search at the cache using the attribute contained in the search query;

upon negative determination, performing a search for the first entry at the plurality of databases;

updating the cache by querying each of the plurality of databases for newly-added entries and assigning a corresponding memory value for each of the newly-added entries;

wherein the newly-added entries in the plurality of databases have not been previously retrieved; and

wherein the newly-added entries in the plurality of databases do not have a corresponding memory value assigned prior to the querying;

wherein each of the newly-added entries from the plurality of databases is a DICOM database entry;

wherein the attribute of each of the DICOM database entries is a DICOM level attribute;

wherein the querying is repeated according to a predefined polling interval;

wherein the search query is a Web Access to DICOM Persistent Objects (WADO) request;

wherein the search query is performed as a parallel query;

wherein the attribute of the first entry to be searched comprises:

a StudyInstanceUID corresponding to the first entry; and

a timestamp corresponding to a runtime of caching the first entry;

wherein querying the attribute of each entry stored in the plurality of databases further comprises determining a most recently added one of the entries sharing the attribute and stored in the plurality of databases

wherein the assigning the memory value for each of the attributes further includes pairing each of the attribute with the corresponding entry in the plurality of databases;

wherein the pairing each of the attribute with the corresponding entry in the plurality of the databases includes pairing each of the attribute with a storage location of the corresponding entry;

wherein if the performing the search at the cache using the attribute contained in the search query returns at least one attribute from the cache, the method further includes retrieving the entry using the storage location paired with the attribute;

wherein each attribute is associated with one of a plurality of specific levels within one or more of the plurality of databases;

wherein each attribute comprises:

a unique StudyInstanceID corresponding to some or all of the entries stored in the plurality of databases;

a SeriesinstanceUID;

a SOPInstanceUID;

a unique identifier corresponding to one or more of the entries stored in the plurality of databases; and

a timestamp of a runtime of caching one or more of the entries stored in the plurality of databases.

3. A computer program product comprising a non-transitory computer readable medium having computer program instructions stored thereon, the computer program instructions configured to cause a server, upon execution thereof, to perform a method for organizing and searching objects from a plurality of databases, the method comprising:

retrieving, by a server, entries from the plurality of databases by querying at least one attribute of each entry stored in the plurality of databases;

assigning, by the server, a memory value for each of the attributes retrieved from each of the entries stored in the plurality of databases;

storing the memory values for each of the attributes in a cache;

receiving at a client device a search query for a first entry stored in one of the plurality of databases;

determining at the client device if the search query contains an attribute of the first entry to be searched;

upon positive determination, performing a search at the cache using the attribute contained in the search query;

upon negative determination, performing a search for the first entry at the plurality of databases;

updating the cache by querying each of the plurality of databases for newly-added entries and assigning a corresponding memory value for each of the newly-added entries;

wherein the newly-added entries in the plurality of databases have not been previously retrieved; and

wherein the newly-added entries in the plurality of databases do not have a corresponding memory value assigned prior to the querying;

wherein each of the newly-added entries from the plurality of databases is a DICOM database entry;

wherein the attribute of each of the DICOM database entries is a DICOM level attribute;

wherein the querying is repeated according to a predefined polling interval;

wherein the search query is a Web Access to DICOM Persistent Objects (WADO) request;

wherein the search query is performed as a parallel query;

wherein the attribute of the first entry to be searched comprises:

a StudyInstanceUID corresponding to the first entry; and

a timestamp corresponding to a runtime of caching the first entry;

wherein querying the attribute of each entry stored in the plurality of databases further comprises determining a most recently added one of the entries sharing the attribute and stored in the plurality of databases

wherein the assigning the memory value for each of the attributes further includes pairing each of the attribute with the corresponding entry in the plurality of databases;

wherein the pairing each of the attribute with the corresponding entry in the plurality of the databases includes pairing each of the attribute with a storage location of the corresponding entry;

wherein if the performing the search at the cache using the attribute contained in the search query returns at least one attribute from the cache, the method further includes retrieving the entry using the storage location paired with the attribute;

wherein each attribute is associated with one of a plurality of specific levels within one or more of the plurality of databases;

wherein each attribute further comprises:

a unique StudyInstanceID corresponding to some or all of the entries stored in the plurality of databases;

a SeriesinstanceUID;

a SOPInstanceUID;

a unique identifier corresponding to one or more of the entries stored in the plurality of databases; and

a timestamp of a runtime of caching one or more of the entries stored in the plurality of databases.

Assignments (9)
SECURITY INTEREST Recorded Jan 17, 2024
From: HYLAND SWITZERLAND SARL
To: GOLUB CAPITAL MARKETS LLC, AS COLLATERAL AGENT
Reel/Frame 066339/0304 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 045430/0405 Recorded Sep 24, 2023
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT, A BRANCH OF CREDIT SUISSE
To: KOFAX INTERNATIONAL SWITZERLAND SARL
Reel/Frame 065018/0421 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 045430/0593 Recorded Sep 24, 2023
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT, A BRANCH OF CREDIT SUISSE
To: KOFAX INTERNATIONAL SWITZERLAND SARL
Reel/Frame 065020/0806 →
CHANGE OF NAME Recorded Feb 20, 2019
From: KOFAX INTERNATIONAL SWITZERLAND SÀRL
To: HYLAND SWITZERLAND SÀRL
Reel/Frame 048389/0380 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT SUPPLEMENT (FIRST LIEN) Recorded Feb 23, 2018
From: KOFAX INTERNATIONAL SWITZERLAND SARL
To: CREDIT SUISSE
Reel/Frame 045430/0405 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT SUPPLEMENT (SECOND LIEN) Recorded Feb 23, 2018
From: KOFAX INTERNATIONAL SWITZERLAND SARL
To: CREDIT SUISSE
Reel/Frame 045430/0593 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2017
From: LEXMARK INTERNATIONAL TECHNOLOGY SARL
To: KOFAX INTERNATIONAL SWITZERLAND SARL
Reel/Frame 042919/0841 →
ENTITY CONVERSION Recorded Feb 11, 2016
From: LEXMARK INTERNATIONAL TECHNOLOGY S.A.
To: LEXMARK INTERNATIONAL TECHNOLOGY SARL
Reel/Frame 037793/0300 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2015
From: ATANASIU, RAZVAN
To: LEXMARK INTERNATIONAL TECHNOLOGY SA
Reel/Frame 035265/0418 →