Patent ID: 12254970

DETAILED DESCRIPTION

As set forth in detail below, the technology described herein provides an innovative approach to deliver improved customer satisfaction and operating efficiency by integrating a computing system into the dynamic management of physical waiting bins.

One identified solution to reduce transaction time is a numeric waiting bin, that is, waiting bins that are assigned serial identifiers to describe their physical position or location, generally using a sequential numeric identifier. Filled prescriptions that have yet to be sold are stored in the waiting bin prior to customers picking up and the waiting bin identifier is used to locate the bin containing the prescription.

Previously, waiting bins were typically sorted in alphabetical order and it was up to each individual store team to determine the alphabetical labelling and the organization. This has resulted in uneven distribution of prescription storage causing overflow in some slots, underutilization of others, and increasing the time required to retrieve a prescription as part of the Pick-Up process. In addition, prescriptions may be dispensed in vials or containers of different sizes, such as 13, 16 or 20 dram vials. The use of larger containers may increase the space occupied per prescription leading to increased risk of overflow.

In some pharmacies, there may be no procedures in place to effectively manage the waiting bin as a whole. In larger retail pharmacy chains, individual retail stores may be evaluated individually by the Pharmacy Managers and District Leaders resulting in potentially different waiting bin processes for each store.

A numeric waiting bin system may systematically assign prescriptions a slot number in the waiting bin and effectively manage the number of prescriptions in each slot. The number may display on the label and on point of sale (POS) register screen to increase retrieval efficiency. The logic behind waiting bin assignments may be standardized and maintained at a corporate level and administered through enterprise prescription and pharmacy management systems. However, because individual stores may not have standard physical waiting bin areas, the numeric waiting bin engine may be configured (and reconfigured for changes in physical waiting bin space) using a simple set of bin configuration parameters, such as the number and size of the physical bins being used.

With reference to the figures, reference numbers may be used to refer to components found in any of the figures, regardless whether those reference numbers are shown in the figure being described. Further, where a reference number includes a decimal referring to one of multiple similar components (e.g., component 000.1, 000.2, and 000.n), the reference number may be used without the decimal to refer to one or all of the similar components. Note that decimal reference numbers may also be used for functionally distinct subcomponents, as will be clear from the associated written description.

FIG.1is a block diagram of an example system100for medication prescription fulfillment. The illustrated system100may include a network102, a waiting bin104, a prescription and pharmacy management system106, an POS system108, a numeric waiting bin engine110, and a label printer112. Prescription and pharmacy management system106, point-of-sale (POS) system108, numeric waiting bin engine110, and label printer112are electronically communicatively coupled to each other by the network102for interaction, communication and cooperation. Prescription and pharmacy management system106, point-of-sale (POS) system108, numeric waiting bin engine110, and label printer112may each be independent computing systems in network communication over network102and/or may be components of a larger computing system, such as an enterprise pharmacy computing environment. In some embodiments, a single computing device may host or embody a user interface to prescription and pharmacy management system106, point-of-sale (POS) system108, numeric waiting bin engine110, and/or label printer112and a plurality of such devices may be provided for a retail pharmacy containing waiting bin104. It should be understood thatFIG.1is just one implementation, and there may be other system configurations are possible including connection, communication and cooperation with other devices, systems, and networks.

Network102may include any number of networks and/or network types. For example, network102may include, but is not limited to, one or more local area networks (LANs), wide area networks (WANs) (e.g., the Internet), virtual private networks (VPNs), wireless wide area network (WWANs), WiMAX® networks, personal area networks (PANs) (e.g., Bluetooth® communication networks), various combinations thereof, etc. These private and/or public networks may have any number of configurations and/or topologies, and data may be transmitted via the networks using a variety of different communication protocols including, for example, various Internet layer, transport layer, or application layer protocols. For example, data may be transmitted via the networks using TCP/IP, UDP, TCP, HTTP, HTTPS, DASH, RTSP, RTP, RTCP, VOIP, FTP, WS, WAP, SMS, MMS, XMS, IMAP, SMTP, POP, WebDAV, or other known protocols.

Waiting bin140may include any configuration of physical storage for containing and organizing prescriptions ready for pickup. For example, a pharmacy may have one or more shelves and/or counter space designated for prescription storage for pickup. In some embodiments, a plurality of physical bins114.1-114.nmay be arranged along one or more shelves or counters that include walls, dividers, or similar barriers for separating one bin from the adjacent bins. For example, physical bins114may each be a rectangular plastic bin or tray with dimensions sized for accommodating the most common prescription packaging. In some configurations, drawers or other opening and/or moving receptacles may be used. Each physical bin114may receive a corresponding bin identifier116.1-116.nfrom numeric waiting bin engine110. For example, each physical bin114may be assigned a serial bin identifier, such as a numeric series, that are printed, written, displayed, or otherwise associated with each physical bin114as bin identifier116.

Prescription and pharmacy management system106may include one or more computing devices having data processing and communication capabilities. For example, prescription and pharmacy management system106may include an enterprise pharmacy data system accessible through a plurality of computing terminals in the retail pharmacies. In some embodiments, prescription and pharmacy management system106may provide an interface and workflow for pharmacy staff to view and process prescriptions, such as within a retail pharmacy. Prescription and pharmacy management system106may receive prescriptions from prescribers electronically and may also allow prescriptions to be input manually by the pharmacist or pharmacy staff. Prescription and pharmacy management system106may also receive information from and send information to electronic medical records, insurance carriers and other systems. In some embodiments, prescription and pharmacy management system106may provide access to one or more pharmacy data warehouses and associated applications. For example, pharmacy users may access patient and prescription records for prescriptions being processed and/or fulfilled through their store. Prescription and pharmacy management system106may also track inventory, manager operations and tasks by the pharmacist or pharmacy staff, etc. As noted above, prescription and pharmacy management system106may be coupled for communication and cooperation with POS system108, numeric waiting bin engine110, and label printer112. The functionality, structure, and operation of the prescription and pharmacy management system106, particularly for cooperation with the waiting bin engine110, is described in more detail below.

POS system108includes one or more computing devices having data processing and communication capabilities. In some embodiments, POS system108authorizes payment for patient prescriptions and can provide prior authorization for a prescription. POS system108is used to determine the amount owed by a customer and may include additional devices such as barcode scanners and cash registers. POS system108may include additional functionality, such as inventory management, CRM, financials or warehousing, etc. POS system108may be coupled to the systems of insurance payors for customers and systems of different financial and payment card companies. In some embodiments, POS108may provide a graphical user interface for accessing one or more functions of prescription and pharmacy management system106. POS system108may be coupled for communication and cooperation with prescription and pharmacy management system106, numeric waiting bin engine110, and/or label printer112. The functionality, structure, and operation of the POS system108, particularly for cooperation with the waiting bin engine110, is described in more detail below.

Numeric waiting bin engine110includes one or more computing devices having data processing and communication capabilities. Numeric waiting bin engine110may include one or more functional modules accessible through or integrated with POS system108and prescription and pharmacy management system106. Numeric waiting bin engine110may integrate with one or more computerized workflows for managing prescription fulfillment and pickup using prescription and pharmacy management system106and the POS system108. Numeric waiting bin engine110may systematically assign prescriptions a slot number, or similar unique serial identifier, corresponding to a physical bin in waiting bin104and effectively manage the number of prescriptions in each slot. In some embodiments, numeric waiting bin engine110may enable the assigned slot number for a selected prescription to be stored in a prescription record in prescription and pharmacy management system106, printed by label printer112for attachment to the dispensed medication, and/or displayed on the graphical user interface of POS system108to increase retrieval efficiency. The functionality, structure, and operation of the numeric waiting bin engine110is described in more detail below.

FIG.2is a flowchart of an example method200for medication prescription fulfillment using the numeric waiting bin. For example, method200may be executed using system100inFIG.1. At202, the system100receives prescription information. For example, prescription and pharmacy management system106may receive electronic prescription information from a prescriber, e.g., a physician, via the network102.

At204, prescription and pharmacy management system106controls filling the prescription and cooperates with the numeric waiting bin engine110to assign a slot for the prescription once the prescription is filled. For example, prescription and pharmacy management system106may provide a workflow to one or more pharmacists and/or pharmacy technicians for verifying the prescription and dispensing the medication into an appropriately labeled prescription container, including printing the label on label printer112. Numeric waiting bin engine110may execute assignment of the slot and adding the slot serial identifier to the prescription information stored in prescription and pharmacy management system106and printed by label printer112as part of the workflow without otherwise requiring intervention by the user. At206, the pharmacy staff then places the prescription in waiting bin104in the number slot assigned by numeric waiting bin engine110. For example, using the slot number printed on the prescription label, the staff person matches the printed slot number to the slot number assigned to the physical bin and places the prescription in the physical bin for later pickup by the patient.

At a later time, the patient may request her prescription when she arrives at the pharmacy. At208, POS system108may receive patient and/or prescription identifying information in a request for the prescription. For example, the pharmacy staff may interface with POS system108to retrieve the prescription record and pay for the prescription. At210, numeric waiting bin engine110cooperates with POS system108to retrieve the slot number that indicates the physical bin location of the prescription. For example, this information may be displayed by POS system108for the pharmacy staff. At212, the pharmacy staff retrieves the prescription from the indicated slot in waiting bin104and delivers it to the customer/patient.

In some embodiments, one or more actions in the pickup process may be integrated into one or more mobile applications available to a patient. For example, the patient may be able to use a mobile application to indicate that they are requesting the prescription and send the request received at208. In some embodiments, a location-based service in the mobile device may indicate or prompt a pickup request automatically based on proximity to a pharmacy location. In some embodiments, at212, the prescription may be retrieved and placed in a pickup location for delivery to the patient, such as a delivery areas adjacent a POS system or a self-service delivery unit. For example, a waiting bin engine may enable reassignment to such pickup areas in response to mobile/handheld technology providing a specific request type or following preconfigured pickup options for a particular patient, patient group, and/or prescription(s).

FIG.3is a block diagram of an example computing device300, which may represent a computing device configured to implement modules depicted inFIG.1, depending on the implementation. In some embodiments, a plurality of computing devices300may contribute to an aggregate computing system that includes the components of computing device300.

As depicted, the computing device300may include a processor308, a memory310, a communication unit304, an output device314, an input device312, and a data store320, which may be communicatively coupled by a communication bus302. Computing device300depicted inFIG.3is provided by way of example and it should be understood that it may take other forms and include additional or fewer components without departing from the scope of the present disclosure. For instance, various components of the computing device may be coupled for communication using a variety of communication protocols and/or technologies including, for instance, communication buses, software communication mechanisms, computer networks, etc. While not shown, computing device300may include various operating systems, sensors, additional processors, peripheral devices (e.g. label printer112), and other physical configurations. Processor308, memory310, communication unit304, etc., are representative of one or more of these components. In some embodiments, one or more components of computing device300may be accessible to computing device300via communication unit304and one or more network interfaces, such as network communication via network102.

Processor308may execute software instructions by performing various input, logical, and/or mathematical operations. Processor308may have various computing architectures to manipulate data signals (e.g., CISC, RISC, etc.). Processor308may be physical and/or virtual, and may include a single core or plurality of processing units and/or cores. In some implementations, processor308may be coupled to memory310via bus302to access data and instructions therefrom and store data therein. Bus302may couple processor308to the other components of the computing device300including, for example, memory310, communication unit304, input device312, output device314, and data store320.

Memory310may store and provide data access to the other components of computing device300. Memory310may be included in a single memory device or a plurality of memory devices. In some implementations, memory310may store instructions and/or data that may be executed by the processor308. For example, memory310may store instructions and data, including, for example, an operating system, hardware drivers, other software applications, databases, etc. which may implement the techniques described herein. Memory310may be coupled to bus302for communication with processor308and the other components of computing device300.

Memory310may include a non-transitory computer-usable (e.g., readable, writeable, etc.) medium, which can be any non-transitory apparatus or device that can contain, store, communicate, propagate or transport instructions, data, computer programs, software, code, routines, etc., for processing by or in connection with processor308. In some implementations, memory310may include one or more of volatile memory and non-volatile memory (e.g., RAM, ROM, hard disk, optical disk, etc.). It should be understood that memory310may be a single device or may include multiple types of devices and configurations.

Bus302can include a communication bus for transferring data between components of a computing device or between computing devices, a network bus system including network102or portions thereof, a processor mesh, a combination thereof, etc. In some implementations, various components operating on the computing device300(operating systems, device drivers, etc.) may cooperate and communicate via a communication mechanism included in or implemented in association with bus302. The software communication mechanism can include and/or facilitate, for example, inter-method communication, local function or procedure calls, remote procedure calls, an object broker (e.g., CORBA), direct socket communication (e.g., TCP/IP sockets) among software modules, UDP broadcasts and receipts, HTTP connections, etc. Further, any or all of the communication could be secure (e.g., SSH, HTTPS, etc.).

Communication unit304may include one or more interface devices (I/F) for wired and wireless connectivity among the components of the system100. For instance, the communication unit304may include, but is not limited to, various types of known connectivity and interface options. In some embodiments, communication unit304may include a network interface, such as a network adapter, for communicating via a wired and/or wireless network102with other computing resources, devices, or systems. Communication unit304may be coupled to the other components of computing device300via bus302. Communication unit304can provide other connections to the network102and to other entities of system100using various standard communication protocols.

Input device312may include any device for inputting information into computing device300. In some implementations, input device312may include one or more peripheral devices. For example, input device312may include a keyboard, a pointing device, microphone, an image/video capture device (e.g., camera), a touch-screen display integrated with the output device314, etc. Output device314may be any device capable of outputting information from the computing device300. The output device314may include one or more of a display (LCD, OLED, etc.), a printer, a haptic device, audio reproduction device, touch-screen display, a remote computing device, etc. In some implementations, output device314may include a display which may display electronic images and data output by a processor of the computing device300for presentation to a user, such as the processor308or another dedicated processor. For example, output device314may include a monitor or other display to provide a graphical user interface between a user, such as pharmacy staff, and computing device300.

Data store320may include information sources for storing and providing access to data. In some implementations, data store320may store data associated with a database management system (DBMS) operable on the computing device300. For example, the DBMS could include a structured query language (SQL) DBMS, a NoSQL DMBS, various combinations thereof, etc. In some instances, the DBMS may store data in multi-dimensional tables comprised of rows and columns, and manipulate, e.g., insert, query, update and/or delete, rows of data using programmatic operations.

The data stored by data store320may be organized and queried using various criteria including any type of data stored by them. Data store320may include data tables, databases, data files, data objects, or other organized collections of data.

Data store320may be included in computing device300or in another computing system and/or storage system distinct from but coupled to or accessible by computing device300. Data stores320can include one or more non-transitory computer-readable mediums for storing the data. In some implementations, data stores320may be incorporated with memory310or may be distinct therefrom.

Components304,308,310,312, and/or314may be communicatively coupled by bus302and/or processor308to one another and/or the other components of computing device300. In some implementations, components304,308,310,312, and/or314may include computer logic (e.g., software logic, hardware logic, etc.) executable by processor308to provide their acts and/or functionality. In any of the foregoing implementations, these components304,308,310,312, and/or314may be adapted for cooperation and communication with processor308and the other components of the computing device300.

In the embodiment shown, memory310may instantiate and/or store numeric waiting bin engine330and prescription management interface340for execution by processor308. For example, waiting bin engine330may manage: the configuration of a data structure, such as bin log326, to organize serial identifiers and associated prescriptions for waiting bin104; selection, assignment, and storage of slot serial identifiers for selected prescriptions; and the generation and recovery of available slots. Prescription management interface340may integrate the operation of waiting bin engine330into the prescription management process of a retail pharmacy and/or enterprise pharmacy computing system, such as prescription and pharmacy management system106. For example, prescription management interface340may include interfaces to patient and prescription records, prescription fulfillment workflow and label printing, and pickup workflow, such as the pickup workflow of a retail pharmacy POS system for waiting bin104. In some embodiments, prescription management interface340may be integrated into waiting bin engine330and/or they may be managed as separate libraries and/or background processes (e.g. daemon) through an API or other interface.

In the above description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. However, it should be understood that the technology described herein can be practiced without these specific details. Further, various systems, devices, and structures are shown in block diagram form in order to avoid obscuring the description. For instance, various implementations are described as having particular hardware, software, and user interfaces. However, the present disclosure applies to any type of computing device that can receive data and commands, and to any peripheral devices providing services.

Numeric waiting bin engine330may include an interface protocol or set of functions and parameters for configuring, assigning, and managing numeric waiting bin assignments for prescriptions awaiting pickup. In some embodiments, waiting bin engine330may include a plurality of hardware and/or software modules configured to use processor306and memory310to execute and manage defined operations of waiting bin engine330. For example, waiting bin engine330may include a bin configuration wizard332, a bin selector334, and a bin generate/recover module336. For any give pharmacy location and corresponding physical waiting bin configuration, waiting bin engine330may use bin configuration wizard332to receive bin configuration values, assign serial identifiers, and generate bin log326or a similar data structure for managing slot assignments. As prescriptions are fulfilled, waiting bin engine330may use bin selector334to select and assign slot serial identifiers to one or more prescriptions to be placed in those slots. As prescriptions are picked up, new prescriptions are fulfilled, and/or as a separate initialization and/or cleanup process, waiting bin engine330may use bin generate/recover module336to generate and/or identify available slots in waiting bin104.

Bin configuration wizard332may include an interface and/or communication event-based condition for receiving bin configuration values from a user or other system utility and using them to generate a serial identifier model, such as an ordered series of number values for the corresponding physical waiting bins, and corresponding data structure. For example, bin configuration wizard332may be initiated through a pharmacy computing device as an administrative function of a prescription management system. In some embodiments, bin configuration wizard332may be an application or application component launched from an icon or menu in a graphical user interface of the prescription management system. For example, a system administrator or pharmacy manager may initiate bin configuration wizard332when numeric waiting bin engine330is first installed or enabled for their store and/or any time the configuration of physical waiting bins changes. In some instances, bin configuration wizard332may also be launched in order to modify one or more bin configuration values, such as preferred capacity or stretch capacity, based on changes in user preferences and/or prescription packaging or sizes. In some embodiments, bin configuration wizard332may be comprised of a plurality of submodules, functions, or subroutines for executing specific aspects of bin configuration wizard332's functions. For example, bin configuration wizard332may include a configuration interface332.1, a file generator332.2, a bin serializer332.3, and a bin organizer332.4.

Configuration interface332.1may define a user interface and/or API for receiving bin configuration values, such as a set of bin configuration parameters used to model the physical waiting bins in a bin configuration data structure. For example, configuration interface332.1may define a graphical user interface comprised of one or more forms for receiving structured data from a user. In some embodiments, configuration interface332.1may include a plurality of fields for receiving bin configuration values and may generally correlate to the data structure of a bin configuration file322that may be used to store those values. For example, bin configuration wizard332may support bin configuration file322in data store320for storing bin configuration values in non-volatile storage. Configuration interface332.1may present one or more windows, pages, tabs, or similar graphical elements that contain labels and fields corresponding to number of bins322.1, preferred capacity322.2, and stretch capacity322.3. In some embodiments, configuration interface332.1may include further interface options for managing multiple bin configuration sets to support bins of different sizes in the same waiting bin and/or enable position information for two-dimensional arrays of bins and other spatial arrangements. Configuration interface332.1. may also provide options for loading, editing, saving, and resetting bin configuration values from an existing bin configuration file322. In some embodiments, an API for receiving and modifying bin configuration values without invoking a graphical user interface may be provided by configuration interface332.1. In some embodiments, the functions of bin configuration wizard332, including configuration interface332.1, may be executed through command line, general file or database editors, and/or similar general-purpose interfaces.

File generator332.2may include logic, interface protocols, and/or a set of functions and parameters for generating a file, database entry, or similar data structure for storing bin configuration values in non-volatile storage. For example, file generator332.2may use the bin configuration values received through configuration interface332.1to generate bin configuration file322in data store320. In some embodiments, bin configuration file322may refer to a subset of a larger group of configuration parameters for a pharmacy that are stored in a store configuration file or similar data structure. File generator332.1may include an interface to data store320that transmits the bin configuration values and/or the bin configuration data structure from memory310to data store320. In some embodiments, file generator332.1may further enable editing bin configuration file322responsive to additional bin configuration values received through configuration interface332.1and/or bin organizer332.4. In some embodiments, file generator332.2may support configuration bin values sets322.4in one or more bin configuration files and/or include position values322.5for numeric waiting bin engines that support bin position information.

Bin serializer332.3may include logic, interface protocols, and/or a set of function and parameters for assigning unique serial identifiers to each physical bin determined from the bin configuration values. For example, configuration interface332.1may receive a number of bins value322.1and bin serializer332.3may generate an ordered series of unique identifiers equal to number of bins value322.1. In some embodiments, bin serializer332.3may generate both a physical representation of the bin identifiers and a corresponding data structure or model of the bin identifiers. Each unique serial identifier may be placed on or otherwise associated with the physical bins in waiting bin104, generally by pharmacy staff. In some embodiments, bin serializer332.3may display the range of serial identifiers or a list of serial identifiers through configuration interface332.1. Bin serializer332.3may provide an interface for printing a plurality of bin identifier tags for attachment or display proximate the respective bins for reference by pharmacy staff when placing and picking up prescriptions. In some embodiments, bin serializer332.3may generate a data structure corresponding to the series of bin identifiers, such as bin log326instantiated in a bin log file stored in data store320, that may be used by numeric waiting bin engine330to manage active slots containing prescriptions and generation of available slots when a new bin needs to be activated. For example, bin serializer332.3may generate a table, array, or similar data structure including the series of bin identifiers and one or more fields for identifying prescriptions and data related thereto for each bin identifier. This data structure may be stored as bin log326in data store320.

Bin organizer332.4may include logic, interface protocols, and/or a set of functions and parameters for managing multiple sets of bin configurations and/or position information for more complex waiting bin models. For example, bin organizer332.4may enable configuration interface332.1to receive and organize multiple sets of bin configuration values and store them in bin sets322.4. As another example, bin organizer332.4may enable configuration interface332.1to receive position information for bins or groups of bins, such as placing the bins in a two-dimensional array or grouped in different areas, that may impact the bin assignment rules used by bin selector334. In some embodiments, bin organizer332.4may enable a user to customize the assignment of bin identifiers initially generated by bin serializer332.3. For example, once bin serializer332.3has generated the serial identifiers and assigned them to the sequence of bins (with or without position information), bin organizer332.4may display and enable one or more options for reconfiguring and/or customizing the serial identifiers assigned to each bin, such as a drag and drop GUI for moving the identifies among bins or fields for customizing selected serial identifiers or bin assignments.

Bin selector334may include an interface and/or communication event-based condition for determining the slot assignments of one or more prescriptions during fulfillment. For example, during a prescription fulfillment workflow using a prescription management system, a prescription may be selected for fulfillment based on a user selection or an automated task queue. Within the work flow, one or more steps may indicate that the prescription has been prepared and is ready to be labeled and placed in a waiting bin for pickup. In some embodiments, a prescription filled or ready to be filled may trigger a call to numeric waiting bin engine330to select a physical waiting bin slot to receive the completed prescription. For example, fulfillment workflow interface344may issue a call or similar message to an API for numeric waiting bin engine330requesting a waiting bin slot for the selected prescription. Numeric waiting bin engine330may identify the bin selection request from the received call and pass the relevant parameters to bin selector334. In some embodiments, bin selector334may be comprised of a plurality of submodules, functions, or subroutines for executing specific aspects of bin selector334's functions. For example, bin selector334may include bin configuration values334.1, prescription record values334.2, bin log manager334.3, assignment rules engine334.4, predetermined bins lookup334.5, availability checker334.6, capacity checker334.7, and/or grouping logic334.8.

In some embodiments, the output of bin selector334is one or more bin identifier assignments for selected prescription(s). For example, bin selector334may generate bin identifier for a selected prescription and return the bin identifier and prescription identifier to numeric waiting bin engine330. In some embodiments, bin selector334and/or numeric waiting bin engine330may store the selected bin identifier in bin identifier field324.5in prescription record324for the patient, prescription, and/or fill number. In some embodiments, assigned bin identifier may be displayed or printed on output device314, such as a computing system or POS system display or a label printer for reference by pharmacy staff.

Bin configuration values334.1may include logic, interface protocols, and/or a set of functions and parameters for accessing bin configuration values and/or a bin configuration model based on bin configuration values for use by bin selector334in selecting and assigning a bin slot to a selected prescription. For example, bin configuration values334.1may include an interface protocol for reading values from bin configuration file322and storing the relevant values in a data structure in memory310for use by bin selector334.

Prescription record values334.2may include logic, interface protocols, and/or a set of functions and parameters for accessing prescription record values, directly from prescription and/or related patient records and/or as parameters received by numeric waiting bin engine330as part of a bin selection request, for use by bin selector334in selecting and assigning a bin slot to a selected prescription. For example, prescription record values334.2may include an interface protocol for reading values from prescription record324and storing the relevant values in a data structure in memory310for use by bin selector334.

In some embodiments, bin selector334may receive or access a plurality of prescription data values, such as a prescription identifier and/or fill identifier324.1, a generic code number (GCN)324.2, a patient identifier324.3, and/or a prescription size value324.4. For example, a prescription manage system may use a unique prescription identifier to manage each prescription in the system and a fill identifier for each individual fill of that prescription, and these values may be stored in one or more fields for prescription identifier and/or fill identifier324.1. Each prescription may have GCN324.2that identifies the specific drug or pharmaceutical in the prescription and may designate associated dosing, form, and/or special handling relevant to that drug. While GCN refers to one drug classification system, other drug classification identifiers, such as generic product identifier (GPI) or American Hospital Formulary System (AHFS) identifiers may be used similarly, as could other drug classification systems, including proprietary systems. Each prescription may have an associated patient identifier324.3that designated the patient or customer the prescription is for. A patient identifier may include patient name, a unique combination of personally identifiable information, and/or a unique patient identifier assigned by the system or from another source, such as a social security number. In some embodiments, patient identifier324.3may enable access to patient records with additional information about the patient that may be relevant to prescription fulfillment and selecting and assigning bin slots. For example, patient identifier324.3may be used to access grouping information, such as multiple prescriptions for a household that are likely to be picked up together, or other pickup preferences. Prescription size value324.4may include one or more values describing the estimated size of the resulting prescription and related packaging. In some embodiments, prescription size value324.4may include specific pill size and count, volumes of fluid prescriptions, and/or specific package sizes, such as standard dram vials or prescription bottles, blister packs, etc. In some embodiments, sizes values may be standardized around a more general sizing approach, such as a standard size (that may have a null value for size) and oversize, or an abstract size range and increments (e.g. 1-5 based on how many physical bin slots the packaged prescription is expected to fill). In some embodiments, prescriptions that are not oversized may be given a standard size (1 unit) and a number of prescriptions or prescription count may be used for managing bin capacity and assignments.

Bin log manager334.3may include logic, interface protocols, and/or a set of functions and parameters for accessing and changing current bin slot assignment information, such as bin log326, for use by bin selector334in selecting and assigning a bin slot to a selected prescription. For example, bin log manager334.3may include an interface protocol for reading values from and/or writing values to bin log326and storing the relevant values in a data structure in memory310for use by bin selector334.

Assignment rules engine334.4may include logic, interface protocols, and/or a set of functions and parameters for determining bin slot assignments for each prescription processed and use by bin selector334in selecting and assigning a bin slot to a selected prescription. For example, assignment rules engine334.4may include a logic engine that processes a plurality of logical rules from one or more rules definitions to evaluate parameters of bin configuration values334.1, prescription record values334.2, bin log326, and/or other resources to determine bin slot assignments. In some embodiments, rules engine334.4may be implemented using a rules processor that steps through a plurality of logical evaluations to determine a bin slot, such as the process(es) described below with regard toFIGS.4-8. Example classes of assignment rules may include: evaluating a predetermined bin list, checking the availability of partially allocated bins in the bin log (based on preferred and/or stretch capacity), checking total bin capacity and whether any unused bins are available for allocation, and grouping logic used to group related prescriptions for pickup and/or otherwise group prescriptions to improve waiting bin maintenance and pickup processing. Examples of these assignment rules may be provided below with regard to predetermined bins lookup334.5(predetermined assignment rules), availability checker334.6(bin/slot availability rules), capacity checker334.7(capacity checking rules), and grouping logic334.8(grouping logic rules). In some embodiments, assignment rules engine334.4may also implement rules for bin generation and recovery, such as described below for bin generate/recovery module336.

Predetermined bins lookup334.5may include logic, interface protocols, and/or a set of functions and parameters for determining fixed bin slot assignments for defined types of prescriptions. For example, predetermined bins lookup334.5may include rules for evaluating one or more predetermined bin tables indexed by one or more prescription record values334.2, such as GCN324.2, patient ID324.3, and/or size324.4. In some embodiments, GCN324.2may be used as an index to various prescription classes that require special handling, categories such as refrigerate, reconstitute, immunization, controlled, and excluded. GCN324.2may enable a pharmacy to classify the type of prescription and determine whether the prescription can be allocated to the general waiting bins or needs to be directed to a special waiting bin or waiting area for a special handling category. For example, a GCN that corresponds to refrigerate would require that the bin slot assigned is within a refrigerator or a GCN that corresponds to controlled would require that the bin slot assigned is in a special handling area for highly controlled substances. Patient ID324.3may enable a pharmacy to capture special handling instructions on a per-patient basis. For example, a patient may be allowed to designate that specific types of prescriptions be placed in a special handling area or exempted from grouping rules. In some embodiments, the pharmacy may place patient specific assignments based on patterns of pickup behavior or known high-volume users. Size324.4and/or groupings of prescriptions may enable a pharmacy to identify oversized items that should not be allocated to the general pool of waiting bins and are instead placed in an oversized special handling area for pickup. For example, a bulk capacity value may set a threshold for allocating bins to an oversized area. In some embodiments, multiple size classes, including an oversized class, may be used to allocate prescriptions among differently sized bin sets. In some implementations, fixed bin slot assignments may use a special numeric or non-numeric identifier that corresponds to the special handing areas assigned, such as “OVERSIZED” or “REFRIGERATE”.

Availability checker334.6may include logic, interface protocols, and/or a set of functions and parameters for determining the availability of existing bins and bin slots for additional prescriptions. For example, predetermined bins lookup334.5may include rules for determining whether any given bin in the bin log has available slots based on a series of evaluations to optimally place the prescription for pickup. In some embodiments, the serial nature of the bin identifiers may locate one terminal identifier in the series nearest the pickup counter and associated POS system and the other terminal identifier furthest from the pickup counter. In such an arrangement, preferentially filling the lower numbered bin slots reduces the distance that staff will need to travel to retrieve the prescription from the waiting bins. In some embodiments, availability checker334.6may implement one or more rules for allocating bin slots based on preferred capacity versus stretch capacity. For example, the rules may allocate to preferred capacity until all bins are at preferred capacity and no unused bins remain to be allocated. More complex rules for managing preferred capacity may interact with grouping logic334.8, capacity checker334.7, and other factors for managing the use of stretch capacity. In some embodiments, availability checker334.6may support allocation among multiple bin sets with different capacities and rules for managing allocation across those bin sets may also be included. In some embodiments, availability checker334.6may process groups of prescriptions and use number of prescriptions or prescription count for evaluating availability for the prescription group or set.

Capacity checker334.7may include logic, interface protocols, and/or a set of functions and parameters for managing total capacity of the waiting bins and determining the allocation of additional bins for additional prescriptions as needed. For example, capacity checker334.5may include rules for determining whether unused bins are available within the bin configuration and make those bins available for allocation by availability checker334.6when needed. In some embodiments, capacity checker334.7may make a next serial bin identifier available in response to a series of logical evaluations by availability checker334.6determine that no availability or no preferred availability is currently available in the allocated bin slots. For example, capacity checker334.7may enforce concentration of prescriptions into a limited set of bins until additional capacity is required. In some embodiments, capacity checker334.7may also include rules based on positions322.5and/or in sets322.4for determining what next bin identifier should be allocated for use by bin selector334.

Grouping logic334.8may include logic, interface protocols, and/or a set of functions and parameters for grouping prescriptions in the waiting bins for easier location and pickup. For example, grouping logic334.8may include rules for determining whether multiple prescriptions belong to the same patient and/or a patient group that is generally picked up together (e.g. a family or other patient group). In some embodiments, grouping logic334.8may include rules for locating the bin assignments of related prescriptions, such as using patient ID or a related index of grouped patient IDs, determining whether a previously assigned bin slot for a related prescription has capacity for the new prescription, an adjacent slot has capacity for the new prescription, or both the new and prior prescriptions can be relocated to a bin slot that includes adequate capacity. For example, for each new prescription, grouping logic334.8may identify each related prescription (such as each prescription for the same patient) and process them as a batch for bin assignment or may include rules for selectively relocating one or more prescriptions. In some embodiments, grouping logic334.8may access all active prescriptions waiting to be filled in the system, not just those that have been fulfilled, for determining grouping assignments. In some embodiments, grouping logic334.8may pre-assign one or more slots to pending prescriptions and allocate them in bin log326, whereby the pending prescription will automatically be assigned the pre-assigned slot when the prescription is filled.

In some embodiments, bin selector334may enable a manual override of bin assignments. For example, assignment rules engine334.4may automatically generate a bin assignment for one or more prescriptions and display the assignment to a user, but provide an override option, such as a menu, button, or editable field to allow the user to input or otherwise manually identify an override bin assignment. Numeric waiting bin engine330may validate the selection to assure that it does not conflict with prior waiting bin assignments, then treat the manually entered bin identifier similarly to those automatically generated by bin selector334. In some embodiments, manually selected bin assignments may also generate a flag or other identifier that may be stored with bin identifier324.5to indicate that the bin assignment was manually selected rather than system generated. This may enable system administrators to monitor use of manual overrides.

Bin generate/recover module336may include logic, interface protocols, and/or a set of functions and parameters for generating and recovering empty waiting bins, bin slots, and/or bin identifiers. For example, bin generate/recover module336may include rules for bin generation and bin recovery. In some embodiments, bin generation rules and bun recovery rules may be executed by assignment rules engine334.4and/or a common rules engine accessible to both bin selector334and bin generate/recover module336. Bin generation rules may provide logic for identifying one or more available bins within capacity. In some embodiments, bin generation rules may interact with capacity checker334.7of bin selector334. In some embodiments, bin generate/recover module336may implement the process(es) ofFIG.5below. Bin recovery rules may provide logic for recovering bin slots after prescriptions have been picked up or otherwise removed from waiting bins. In some embodiments, bin recovery rules may interact with availability checker334.6for identifying available bin slots and bin identifiers. In some embodiments, bin generate/recover module336may operate in conjunction with pickup workflow interface348and bin log manager334.3to assure that capacity made available by picked up or otherwise disposed of prescriptions is reflected in bin log326and recovered for use by availability checker334.6.

Prescription management interface340may include an interface protocol or set of functions and parameters for accessing one or more prescription and pharmacy management systems in support of the functions of numeric waiting bin engine330. In some embodiments, prescription management interface340may include a plurality of hardware and/or software modules configured to use processor306and memory310to execute and manage defined operations of prescription management interface340. For example, prescription management interface340may include a prescription records interface342, a fulfillment workflow interface344, a label printing interface346, and a pickup workflow interface348. In some embodiments, each of these interfaces may include applications, APIs, and/or functions to access resources in an enterprise pharmacy computing environment comprised of one or more data systems or subsystems, such as those shown inFIG.1. In some embodiments, one or more of these prescription management functions may be directly integrated with numeric waiting bin engine330and/or data store320and the interfaces shown may include local function calls or similar interactions within an integrated application environment on one or more computing systems.

Prescription records interface342may include logic, interface protocols, and/or a set of functions and parameters for accessing prescription records324. For example, prescription records interface342may include an API and messaging protocol for querying prescription records324for prescription/fill identifiers324.1, GCN324.2, patient identifier324.3, size324.4, bin identifier324.5, and other prescription and patient record fields or related data structures. In some embodiments, prescription records interface342may include an API for writing one or more values related to numeric waiting bin engine330to patient and/or prescription records. For example, an assigned bin ID324.5may be stored in prescription records324and be accessible through one or more prescription and/or pharmacy management systems to allow pharmacy staff to access bin assignments outside of a specific workflow, such as a fulfillment workflow or pickup workflow. One or more pharmacy information systems may allow pharmacy staff to look up bin identifiers for active prescriptions from a patient information screen, through a bin assignment search function, and/or as part of backend inventory management, return-to-stock procedures, or other aggregate processes for managing waiting bin contents. In some embodiments, bin identifiers324.5may be accessed from prescription records324and/or maintained in a separate storage location for enabling aggregate workflows for managing the waiting bins. For example, a return-to-stock report, such as a day 14 report, may be sorted by bin identifier to enable pharmacy staff to move sequentially through the waiting bins to pull prescriptions to be returned to stock.

Fulfillment workflow interface344may include logic, interface protocols, and/or a set of functions and parameters for integrating a prescription fulfillment workflow with numeric waiting bin engine330. For example, fulfillment workflow interface344may include an API and messaging protocol for receiving requests for bin identifier assignments and providing response messages during execution of prescription fulfillment workflow on one or more pharmacy and/or enterprise computing systems. In some embodiments, one or more steps in a prescription fulfillment workflow may trigger a request to numeric waiting bin engine330through fulfillment workflow interface344. For example, when a prescription is verified for fill or a fill is complete, a new bin identifier may be requested in order to print the bin identifier on the prescription label, display the bin identifier to the staff for placing the prescription, and/or storing the bin identifier in the prescription records for later reference by other systems.

Label printing interface346may include logic, interface protocols, and/or a set of functions and parameters for integrating the label printing and/or document generation processes within a pharmacy with numeric waiting bin engine330. For example, when a prescription is filled, a label may printed for the container with the prescribed drugs and additional instructions, warnings, and other documentation are printed for use by the patient and pharmacy staff and label printing interface346may receive or retrieve a bin identifier for the prescription from numeric waiting bin engine330. In some embodiments, label printing interface346may be configured to communicate with numeric waiting bin engine330to receive the bin identifier for the selected prescription. In some embodiments, label printing interface346may receive the bin identifier from prescription records324or the prescription fulfillment workflow accessed by fulfillment workflow interface344. Label printing interface346may include location and formatting information defining how the bin identifier is configured on the printed label and/or other documentation.

Pickup workflow interface348may include logic, interface protocols, and/or a set of functions and parameters for integrating a prescription pickup workflow with numeric waiting bin engine330. For example, pickup workflow interface348may include an API and messaging protocol for receiving requests for bin identifier assignments and providing response messages during execution of prescription pickup workflow on one or more pharmacy computing systems, such as POS systems. In some embodiments, pickup workflow interface348may also communicate with numeric waiting bin engine330to update bin log326on prescriptions that have been picked up, thus freeing bin space. For example, when a pickup process is complete, the prescription identifier for the picked up prescription(s) may be communicated to numeric waiting bin engine330and bin log manager334.3may remove the prescription identifier and bin identifier assignment from bin log326. In some embodiments, the pickup workflow may directly remove the bin identifier assigned from prescription records324or the no longer valid bin identifier may remain as part of the fill and transaction record (but not otherwise apply to current or future fills of that prescription).

Note that the interfaces between numeric waiting bin engine330and the workflow processes and other systems may be highly dependent on the configuration of those systems. Each pharmacy may have different prescription record, prescription fulfillment, label printing, and pickup workflow configurations and prescription management interface340may be configured to interact with whatever systems are available without substantially changing the function of numeric waiting bin engine330.

In some embodiments, numeric waiting bin engine330and/or the related data in data store320may be used to further improve or automate pharmacy operations. For example, other waiting bin management tasks or workflows may be improved based on dynamic waiting bin assignments, such as enabling waiting bin inventory and/or revenue recognition to be performed automatically without manual scanning (or scanning only by exception). Individual pharmacy and/or enterprise-level analysis of waiting bin usage based on the data from numeric waiting bin engine330may enable assessment of physical layouts and space needs, including configuration of physical bins (number, size, and/or location) and special handling areas/bins, such as refrigerator space.

FIG.4, includingFIGS.4A,4B, and4C, describes an example method400of selecting a bin identifier for a prescription in a prescription request, such as the prescription requests processed through a prescription fulfillment workflow. In some embodiments, method400may be executed by a waiting bin engine, such as numeric waiting bin engine330inFIG.3. Computer-based method steps may be executed by one or more computing systems, such as computing device300and/or one or more of the components of system100. In some embodiments, the blocks of method400may correspond to assignment rules evaluated by a rules engine in the computing system. “RxC” in the figures may refer to an example proprietary prescription and pharmacy management system and embodiments may not be limited to that system.

Method400may start at402. At404, prescription information may be received by the system. For example, a waiting bin engine may receive a request message including a patient identifier, a prescription identifier, a fill identifier, a partial fill identifier, and/or a GCN for a selected prescription. At406, the number of prescriptions for each patient in the request may be counted. For example, the waiting bin engine may count the number of prescriptions by aggregating related fields for patients with one or more prescriptions in the request.

At408, whether the prescription fill already has a slot assigned may be evaluated. For example, a combination of the prescription identifier and fill identifier may be compared against a bin log or an associated bin identifier field may be checked. If yes, the prescription fill already has a slot assigned, method400may proceed to410and release the current slots assigned to the prescriptions in the request. If no, the prescriptions do not have slot assignments, method400may proceed to412. In some embodiments,404-408may be executed by

At412, whether the prescription fill has a GCN that correlates to a predetermined slot may be evaluated. For example, the GCN from the request may be used to index a table of predetermined waiting bin slots for special handling associated with the GCN. If yes, method400may proceed to424. If no, method400may proceed to414.

At414, whether the number of prescriptions and/or size of a prescription or group of prescriptions in the order indicates bulk item handling may be evaluated. For example, the waiting bin engine may evaluate whether the number of prescriptions in the order exceeds or equals a configurable bulk threshold value or bulk capacity value. In some embodiments, a bulk size threshold value may be compared to a size value for a prescription or aggregate size values for a group of prescriptions to see if the bulk size threshold value has been exceeded. If no, the prescription does not indicate bulk item handling and method400may proceed to430. If yes, method400may proceed to416. At416, a predetermined location configured for bulk items may be assigned to the prescription. For example, the waiting bin engine may assign a predetermined bin identifier associated with a bulk item storage location that may include one or more larger bins or similar holding area. Method400may proceed to418, which corresponds to continuing method400from420to422.

At422, a waiting bin slot assignment for each selected prescription may be delivered to the requesting system. For example, the waiting bin engine may return a bin slot serial identifier or predetermined slot identifier to the requesting system to be displayed to a user, stored in a prescription record, and/or printed on the label and/or other packaging of each prescription.422may be an endpoint for method400.

At424, predetermined bin identifiers may be assigned to prescriptions. For example, the waiting bin engine may use the GCN category corresponding to predetermined bin slot numbers to assign one or more bin identifiers based on the GCN. At426, the number of prescriptions in the request may be reduced by the number of prescriptions assigned at424. For example, a request may contain three prescriptions for a patient, one of which receives special handling based on GCN, so the number of prescriptions remaining in the request after the predetermined slot is assigned may be two. At428, the number of prescriptions in the request may be checked to determine whether additional prescriptions still need bin assignments. For example, in the example above, two prescriptions still remain after the predetermined bin assignment, so the number of prescriptions in the request is still greater than 0. If no, the number of prescriptions in request has reached zero and method400may proceed to422as described above. If yes, the number of prescriptions is greater than zero and method400may proceed to432.

At432, whether the remaining prescriptions in request exceed stretch capacity may be evaluated. For example, the waiting bin engine may compare the number of prescriptions in the request and their resultant size to the stretch capacity available in existing slots, such as slots that may contain another prescription for the same patient or group. If yes, the prescriptions are greater than the stretch capacity and method400may proceed to434. If no, the prescriptions are less than the stretch capacity and method400may proceed via446and448to450inFIG.4B.

At434, store capacity may be searched for an available bin slot. For example, the waiting bin engine may check a bin log to determine whether there are slots with no assignment that are still within store capacity, such as number of bins in the waiting bins. At436, the availability of unassigned slots may be evaluated. For example, a search at434may or may not yield an available slot within store capacity. If no, no slots are available and method400may proceed via446and448to450inFIG.4B. If yes, a slot is available and method400may proceed to438.

At438, bin identifiers for the available slot may be assigned to prescriptions and the prescriptions in the request may be reduced. For example, the waiting bin engine may assign a next available slot identified at434to one or more prescriptions and the number of prescriptions in the request may be reduced by the number of prescriptions assigned. At440, the number of prescriptions in the request may be checked to determine whether additional prescriptions still need bin assignments. If no, the number of prescriptions in request has reached zero and method400may proceed through442and420to422as described above. If yes, the number of prescriptions is greater than zero and method400may proceed through444and430to432.

At450inFIG.4B, whether the patient or other group has another prescription already assigned a waiting bin slot. For example, the patient identifier may be used by the waiting bin engine to search the bin log for other prescriptions awaiting pickup that have previously been assigned a slot serial identifier. If no, the patient or group does not have another prescription fill assigned and method400may proceed to470. If yes, there may be one or more prescriptions with assigned slots and method400may proceed to454.

At454, each previously assigned bin slot may be evaluated to determine whether the new prescriptions are within stretch capacity for the previously assigned bin slot. For example, starting with the highest slot space the waiting bin engine may evaluate whether space is available for the prescriptions in the request based on the stretch capacity of the possible slots. If yes, the prescriptions are within the stretch capacity of a previously assigned bin slot for the patient and method400may proceed through456and420to422as described above. If no, the prescriptions are not within the stretch capacity of the previously assigned bin slot and method400may proceed to458.454and resulting steps may be repeated for all slots with previously assigned prescriptions in the group. At452, other steps may access or initiate454.

At458, among the previously assigned bin slots the highest free capacity may be checked. For example, if a patient or group has three previously assigned prescriptions with slot serial identifiers, each of those prescriptions may be checked to determine how much free capacity or availability remains in terms of size or number of prescriptions by comparing the number of prescriptions or aggregate size of prescriptions in each assigned bin to a capacity value for the bin configuration. At460, the free capacity may be evaluated to determine whether it is zero. If yes, the highest free capacity is 0 and method400may proceed to470. If no, there is free capacity and method400may proceed to462.

At462, bin identifiers for the available slot may be assigned to prescriptions and the prescriptions in the request may be reduced. For example, the waiting bin engine may assign the bin with the highest free capacity identified at458to one or more prescriptions and the number of prescriptions in the request may be reduced by the number of prescriptions assigned. At464, the number of prescriptions in the request may be checked to determine whether additional prescriptions still need bin assignments. If no, the number of prescriptions in request has reached zero and method400may proceed through466and420to422as described above. If yes, the number of prescriptions is greater than zero and method400may proceed return to454to check the next highest slot with space available and a previously assigned prescription for the patient or group.

At470, a preferred or ideal capacity may be evaluated for bins within the configuration. For example, available preferred capacity may be checked for each serial identifier in the bin log from a start value (e.g. 1) to a maximum value for the configuration (e.g. number of bins value) against the size or number of prescriptions in the request. If yes, there are bins with availability at their preferred capacity value and method400may proceed through472and420to422as described above. If no, there are no active bins with availability at their preferred capacity value and method400may proceed to474.

At474, a stretch capacity may be evaluated for bins within the configuration. For example, available stretch capacity may be checked for each serial identifier in the bin log from a start value (e.g. 1) to a maximum value for the configuration (e.g. number of bins value) against the size or number of prescriptions in the request. If yes, there are bins with availability at their stretch capacity value and method400may proceed through472and420to422as described above. If not, there are no active bins with availability at their stretch capacity value and method400may proceed to476.

At476, an available capacity within the preferred capacity may be checked for all active bins. For example,474may not have identified a single bin with available capacity for the prescriptions in the request, but there may still be bins with availability that could receive a portion of the prescriptions in the request, so the highest available or free capacity may be identified. At478, the highest available or free capacity within the ideal or preferred capacity may be evaluated to determine whether it has reached zero (no remaining availability at the preferred capacity value). If no, free capacity is greater than 0 and method400may proceed to482. If yes, no free capacity is available at the preferred values and method400may proceed through480and490to491inFIG.4C.

At482, bin identifiers for the available slot may be assigned to prescriptions and the prescriptions in the request may be reduced. For example, the waiting bin engine may assign the bin with highest available free capacity (greater than 0) identified at476to one or more prescriptions and the number of prescriptions in the request may be reduced by the number of prescriptions assigned. At484, the number of prescriptions in the request may be checked to determine whether additional prescriptions still need bin assignments. If no, the number of prescriptions in request has reached zero and method400may proceed through486and420to422as described above. If yes, the number of prescriptions is greater than zero and method400may proceed through488and468to470.

At491inFIG.4C, an available capacity within the stretch capacity may be checked for all active bins. For example,474may not have identified a single bin with available capacity for the prescriptions in the request, but there may still be bins with availability that could receive a portion of the prescriptions in the request, so the highest available or free capacity may be identified. At492, the highest available or free capacity within the stretch capacity may be evaluated to determine whether it has reached zero (no remaining availability at the stretch capacity value). If no, free capacity is greater than 0 and method400may proceed to493. If yes, no free capacity is available at the stretch values and method400may proceed through590and504to method500inFIG.5.

At493, bin identifiers for the available slot may be assigned to prescriptions and the prescriptions in the request may be reduced. For example, the waiting bin engine may assign the bin with highest available free capacity (greater than 0) identified at491to one or more prescriptions and the number of prescriptions in the request may be reduced by the number of prescriptions assigned. At494, the number of prescriptions in the request may be checked to determine whether additional prescriptions still need bin assignments. If no, the number of prescriptions in request has reached zero and method400may proceed through496and420to422as described above. If yes, the number of prescriptions is greater than zero and method400may proceed through488and468to470.

FIG.5describes an example method500of generating bin slots for a prescription in a prescription request, such as the prescription requests processed through a prescription fulfillment workflow. In some embodiments, method500may be executed by a waiting bin engine, such as numeric waiting bin engine330inFIG.3. Computer-based method steps may be executed by one or more computing systems, such as computing device300and/or one or more of the components of system100. In some embodiments, the blocks of method500may correspond to capacity rules evaluated by a rules engine in the computing system. In some embodiments, method500may be responsive to an outcome of method400where additional waiting bin capacity needs to be allocated for an active group of prescriptions in a prescription request.

Method500may start at502. At506, a check may be performed to determine whether there are any generated slots. For example, method500may have previously generated slots by assigning serial identifiers that have not yet had prescriptions allocated to them or generates slots may have been recovered after all prescriptions in those slots were picked up or otherwise disposed of and the waiting bin engine may check the bin log to identify generated but inactive bins. If yes, there is one or more generated slots and method500may proceed to506. If no, there are no generated slots available and method500may proceed to522.

At506, the capacity of the generated slots may be compared to the prescription requests. For example, the waiting bin engine may evaluate whether the prescriptions in the request equal the capacity of any of the generated slots going from lowest to highest. If yes, a generated slot is available with capacity for the prescriptions and method500may proceed to508. If no, there is no slot equal to the prescriptions in request and method500may proceed to512.

At508, the generated slot number may be assigned. For example, the waiting bin engine may assign the generated slot number to the prescriptions in request. Through510and420, method500may proceed to422inFIG.4to send the slot serial identifier as described above.

At512, generated slots may be checked for the generated slot with the highest free capacity available. For example, the waiting bin engine may check each of the generated slots for highest available capacity for assigning prescriptions until the highest free capacity reaches 0. At514, highest free capacity is evaluated. For example, the waiting bin engine may determine whether the highest free capacity has reached zero. If no, capacity is available and method500may proceed to516. If yes, available capacity for the generated slots has reached 0 and method500may proceed to522.

At516, bin identifiers for the generated slot may be assigned to prescriptions and the prescriptions in the request may be reduced. For example, the waiting bin engine may assign the generated bin with highest available free capacity (greater than 0) identified at512to one or more prescriptions and the number of prescriptions in the request may be reduced by the number of prescriptions assigned, generally equal to the highest free capacity. At518, the number of prescriptions in the request may be checked to determine whether additional prescriptions still need bin assignments. If no, the number of prescriptions in request has reached zero and method500may proceed through520and420to422as described above. If yes, the number of prescriptions is greater than zero and method500may return to512.

At522, a new slot number may be generated. For example, the waiting bin engine may assign a next serial identifier up to the number of bins value in the waiting bin configuration for a next physical bin.

At524, bin identifiers for the generated slot may be assigned to prescriptions and the prescriptions in the request may be reduced. For example, the waiting bin engine may assign the newly generated bin from522to one or more prescriptions and the number of prescriptions in the request may be reduced by the number of prescriptions assigned. At526, the number of prescriptions in the request may be checked to determine whether additional prescriptions still need bin assignments. If no, the number of prescriptions in request has reached zero and method500may proceed through528and420to422as described above. If yes, the number of prescriptions is greater than zero and method500may return to522to generate additional serial identifiers for additional physical bins.

FIGS.6-8describe example methods600,700, and800of calculating free capacity for use in assigning new prescriptions to specific slots in the waiting bins. In some embodiments, methods600,700, and800may be executed by a waiting bin engine, such as numeric waiting bin engine330inFIG.3. Computer-based method steps may be executed by one or more computing systems, such as computing device300and/or one or more of the components of system100. In some embodiments, the blocks of methods600,700, and/or800may correspond to subroutines supporting assignment rules evaluated by a rules engine in the computing system. In some embodiments, methods600,700, and800may be executed as background processes, such as by a recovery module, to provide periodic or event-based recalculation of free capacity. For example, method600may be initiated by pickup events and current free capacity values may be calculated and stored in a bin log or another data structure for use in evaluating assignment rules.

Method600may start at602. In some embodiments, method600may be initiated during one or more checks for free capacity in method400. At604, free capacity may be set to zero. For example, one or more free capacity values may be requested by an available capacity check, such as a preferred capacity check and/or a stretch capacity check, and the free capacity value for the check may initially be set to equal zero.

In some embodiments, method600may execute subroutine610for checking available capacity using ideal or preferred capacity values from the bin configuration. For example, a capacity check may initially be made to attempt to place prescriptions in slots with available capacity under their preferred capacity. In some embodiments, subroutine610may be repeated for all slots or slot serial identifiers from a lowest value to a maximum number of active slots.

At612, whether a slot has free capacity under its preferred capacity value may be determined. For example, the aggregate number and/or size of prescriptions assigned to a particular slot serial identifier may be determined from the bin log and compared against the preferred capacity value for the bin configuration and a difference may indicate that the slot has free capacity. If yes, the free capacity of the slot is greater than zero and method600may proceed to614. If no, the free capacity of the slot is zero (or less if stretch capacity has been used) and method600may proceed to616.

At614, free capacity may be set to reflect the available capacity. For example, the free capacity value may be set to equal the free capacity value calculated from the comparison at612. In some embodiments,614may return only a single free capacity value, a highest free capacity value, an aggregate free capacity value, and/or an array of free capacity values.

At616, whether all slots have been checked may be evaluated. For example, the waiting bin engine may repeat612and614until the maximum serial identifier has been checked, up to store capacity reflected in the number of bins value in the bin configuration. If yes, all slots have been evaluated and method600may proceed to618. If no, slots remain to be evaluated and method600may return to612. At618, free capacity may be returned. For example, one or more free capacity values and corresponding slot serial numbers may be returned through620and690to478inFIG.4B.

In some embodiments, method600may execute subroutine630for checking available capacity using stretch capacity values from the bin configuration. For example, a capacity check may be made to attempt to place prescriptions in slots with available capacity under their stretch capacity after insufficient capacity is found within ideal or preferred capacities. In some embodiments, subroutine630may be repeated for all slots or slot serial identifiers from a lowest value to a maximum number of active slots or until free capacity equals or exceeds the number or size of the prescriptions in the request.

At632, whether a slot has free capacity under its stretch capacity value may be determined. For example, the aggregate number and/or size of prescriptions assigned to a particular slot serial identifier may be determined from the bin log and compared against the stretch capacity value for the bin configuration and a difference may indicate that the slot has free capacity. If yes, the free capacity of the slot is greater than zero and method600may proceed to634. If no, the free capacity of the slot is zero (or less if stretch capacity has been used) and method600may proceed to636.

At634, free capacity may be set to reflect the available capacity. For example, the free capacity value may be set to equal the free capacity value calculated from the comparison at632. In some embodiments,634may return only a single free capacity value, a highest free capacity value, an aggregate free capacity value, and/or an array of free capacity values.

At636, whether all slots have been checked may be evaluated. For example, the waiting bin engine may repeat632and634until the maximum serial identifier has been checked, up to store capacity reflected in the number of bins value in the bin configuration. If yes, all slots have been evaluated and method600may proceed to638. If no, slots remain to be evaluated and method600may return to632. At638, free capacity may be returned. For example, one or more free capacity values and corresponding slot serial numbers may be returned through640and692to492inFIG.4C.

Method700may start at702. In some embodiments, method700may be initiated during one or more checks for free capacity in method400. At704, free capacity may be set to zero. For example, one or more free capacity values may be requested by an available capacity check specific to slots with a previously assigned prescription for the same patient or group and the free capacity value for the check may initially be set to equal zero.

In some embodiments, method700may execute subroutine710for checking available capacity using stretch capacity values from the bin configuration for a subset of bins. For example, a subset of slot serial identifiers containing previously assigned prescriptions for the same patient or group of related prescriptions may be identified and checked. In some embodiments, subroutine710may be repeated for all slots or slot serial identifiers that contain prescriptions with the same patient identifier or another group identifier, starting at the highest slot and proceeding down.

At712, whether a slot has free capacity under its stretch capacity value may be determined. For example, the aggregate number and/or size of prescriptions assigned to a particular slot serial identifier may be determined from the bin log and compared against the stretch capacity value for the bin configuration and a difference may indicate that the slot has free capacity. If yes, the free capacity of the slot is greater than zero and method700may proceed to714. If no, the free capacity of the slot is zero (or less if stretch capacity has been used) and method700may proceed to716.

At714, free capacity may be set to reflect the available capacity. For example, the free capacity value may be set to equal the free capacity value calculated from the comparison at712. In some embodiments,714may return only a single free capacity value, a highest free capacity value, an aggregate free capacity value, and/or an array of free capacity values.

At716, whether all slots have been checked may be evaluated. For example, the waiting bin engine may repeat712and714until all slots containing prescriptions for that patient identifier or group have been checked. If yes, all slots have been evaluated and method700may proceed to718. If no, slots remain to be evaluated and method700may return to712. At718, free capacity may be returned. For example, one or more free capacity values and corresponding slot serial numbers may be returned through720and790to460inFIG.4B.

Method800may start at802. In some embodiments, method800may be initiated during one or more checks for free capacity in method500. At804, free capacity may be set to zero. For example, one or more free capacity values may be requested by an available capacity check for generated slots and the free capacity value for the check may initially be set to equal zero.

In some embodiments, method800may execute subroutine810for checking available capacity using preferred capacity values from the bin configuration for generated bin slots. For example, one or more newly generated bins with assigned slot serial identifiers may be identified and checked. In some embodiments, subroutine810may be repeated for all slots or slot serial identifiers generated by a slot generation method, such as method500, starting at the lowest generated slot and proceeding upward.

At812, whether a slot has free capacity under its preferred capacity value may be determined. For example, the aggregate number and/or size of prescriptions assigned to a particular slot serial identifier may be determined from the bin log and compared against the preferred capacity value for the bin configuration and a difference may indicate that the slot has free capacity. If yes, the free capacity of the slot is greater than zero and method800may proceed to814. If no, the free capacity of the slot is zero (or less if stretch capacity has been used) and method800may proceed to816.

At814, free capacity may be set to reflect the available capacity. For example, the free capacity value may be set to equal the free capacity value calculated from the comparison at812. In some embodiments,814may return only a single free capacity value, a highest free capacity value, an aggregate free capacity value, and/or an array of free capacity values.

At816, whether all slots have been checked may be evaluated. For example, the waiting bin engine may repeat812and814until all newly generated slots have been checked. If yes, all slots have been evaluated and method800may proceed to818. If no, slots remain to be evaluated and method800may return to812. At818, free capacity may be returned. For example, one or more free capacity values and corresponding slot serial numbers may be returned through820and890to514inFIG.5.

In some instances, various implementations may be presented herein in terms of algorithms and symbolic representations of operations on data bits within a computer memory. An algorithm is here, and generally, conceived to be a self-consistent set of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.

To ease description, some elements of the system and/or the methods are referred to using the labels first, second, third, etc. These labels are intended to help to distinguish the elements but do not necessarily imply any particular order or ranking unless indicated otherwise.

It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout this disclosure, discussions utilizing terms including “processing,” “computing,” “calculating,” “determining,” “displaying,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.

Various implementations described herein may relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, including, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, flash memories including USB keys with non-volatile memory or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.

The technology described herein can take the form of an entirely hardware implementation, an entirely software implementation, or implementations containing both hardware and software elements. For instance, the technology may be implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. Furthermore, the technology can take the form of a computer program object accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any non-transitory storage apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.

A data processing system suitable for storing and/or executing program code may include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Input or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers.

Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems, storage devices, remote printers, etc., through intervening private and/or public networks. Wireless (e.g., Wi-Fi™) transceivers, Ethernet adapters, and Modems, are just a few examples of network adapters. The private and public networks may have any number of configurations and/or topologies. Data may be transmitted between these devices via the networks using a variety of different communication protocols including, for example, various Internet layer, transport layer, or application layer protocols. For example, data may be transmitted via the networks using transmission control protocol/Internet protocol (TCP/IP), user datagram protocol (UDP), transmission control protocol (TCP), hypertext transfer protocol (HTTP), secure hypertext transfer protocol (HTTPS), dynamic adaptive streaming over HTTP (DASH), real-time streaming protocol (RTSP), real-time transport protocol (RTP) and the real-time transport control protocol (RTCP), voice over Internet protocol (VOIP), file transfer protocol (FTP), WebSocket (WS), wireless access protocol (WAP), various messaging protocols (SMS, MMS, XMS, IMAP, SMTP, POP, WebDAV, etc.), or other known protocols.

Finally, the structure, algorithms, and/or interfaces presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method blocks. The required structure for a variety of these systems will appear from the description above. In addition, the specification is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the specification as described herein.

The foregoing description has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the specification to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. As will be understood by those familiar with the art, the specification may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the modules, routines, features, attributes, methodologies and other aspects are not mandatory or significant, and the mechanisms that implement the specification or its features may have different names, divisions and/or formats.

Furthermore, the modules, routines, features, attributes, methodologies and other aspects of the disclosure can be implemented as software, hardware, firmware, or any combination of the foregoing. Also, wherever a component, an example of which is a module, of the specification is implemented as software, the component can be implemented as a standalone program, as part of a larger program, as a plurality of separate programs, as a statically or dynamically linked library, as a kernel loadable module, as a device driver, and/or in every and any other way known now or in the future. Additionally, the disclosure is in no way limited to implementation in any specific programming language, or for any specific operating system or environment.