In various embodiments, the present invention generally relates to computer-based tools, devices, and processes for directing and managing various aspects of different three-dimensional printing processes. In certain embodiments, the invention relates to providing such tools, devices, and processes at different point-of-care manufacturing operations for medical and health care devices.
There has been a long felt need in the prior art to create a workflow management tool for three-dimensional printing processes, which can provide additive manufacturing operations with the capability to produce medical devices at the point of care under good manufacturing practices and HIPAA compliance. Teams of physicians, engineers, technicians, and other personnel have faced substantial challenges with understanding each phase of design or manufacturing in which every active printing job resides. Improved computer-based tools are needed that can aid in tracking and managing the development of devices, such as medical devices and healthcare related devices. Also, technological enhancements are needed with respect to printing jobs associated with mechanical or industrial design, research and development (R&D), prototyping, or jobs used in quality control.
In view of these issues with conventional three-dimensional printing processes, enhanced computer-based tools, devices, and processes are needed for more effectively and efficiently directing and managing various aspects of different three-dimensional printing processes. Such improved technology is especially needed for point-of-care manufacturing operations for development and production of medical devices and health care related devices.
In various embodiments of the invention, the inventors have designed and produced a workflow management process tailored to point-of-care additive manufacturing groups, servicing hospital and healthcare populations. The process was born from the necessity to create a workflow management tool which provides additive manufacturing operations, of any size, the capability to produce medical devices at the point of care under good manufacturing practices and HIPAA compliance. It allows teams of physicians, engineers, technicians, and other personnel, to easily visualize the Phase of design or manufacturing in which every active job resides.
Given the unique nature of point-of care manufacturing, a request scheme was developed so that a user can create a request for any type of device for any purpose. To accomplish this, three parameters (entry fields) were developed that define the request and generate the unique Model ID used for end-to-end traceability. The three parameters are Model Purpose, Imaging Type, and Model Definition. Model Purpose is used to specify the end-use of the device being produced: Clinical, Research, Education, Novel Medical Device/R&D, Quality Control, Veterinary, or Unknown. Imaging Type is used to specify if the requested device will be created from imaging and if so, from what source: PACS, Outside Imaging, 3D Surface Scan, or No Imaging. Model Definition is used to specify what category of device the request falls into: Anatomical Model, Part, Accessory, R&D, or Production. Together, these fields not only generate the unique Model ID, but determine the interface presented to users (via complex conditional logic), information tracked, and file structure generated on the back-end. Additionally, requests can be attributed to a project number, with all files and associated models being tracked, stored, and linked together to assist with project management.
The production Phases primarily reflect the steps required to produce any three-dimensional printed product from medical imaging studies (Request Queue 102, Anatomic Modeling 104, Build Queue 106, Printing 108, and Inspection/Delivery 110), and Phases may be denoted by Tabs in various user interface screens. Furthermore, the development of any device can be tracked and managed using this process through custom entry options (to be discussed in subsequent sections). Each Phase can be further divided into Stages that may be delineated by columns. In one aspect, the Anatomic Modeling Phase 104 may be subdivided into these Stages: Image Review 104A, Segmentation 104B, Physician Review 104C, CAD 104D, and Design Review 104E. In another aspect, the Printing Phase 108 may be subdivided into Print Preparation 108A, Printing 108B, and Post-Processing 108C. In another aspect, the Inspection/Delivery Phase 110 may be subdivided into Inspection 110A and Delivery 110B. The Stages and their respective purpose/functionality are described in more detail herein. Using this combination of Tabs, Phases, and Stages, the process can allow the user to adapt the visualized Phases and Stages to less-specific design and manufacturing workflows, enabling the user's ability to track a variety of job types. Jobs centered around mechanical or industrial design, research and development (R&D), prototyping, or jobs used in quality control.
As a job moves through its production cycle, the default overview of the process allows users to visualize what jobs are in each Phase by clicking through Tabs at the top of the screen. Once viewing a Phase, all jobs in that Phase are visible with an overview of the Stages needed to complete that Phase. The graphical user interface (GUI) denotes the state of a Stage as either “not needed”, “not started”, “in progress”, and “completed” through color coded cells and displays the name of the person who has taken ownership of each Stage; content can be displayed in either a grid view (see, e.g.,
Beyond allowing teams to easily visualize and track jobs throughout their given workflows, the process stores pertinent information related to each Phase and Stage of every job. Important to point-of-care additive manufacturing groups is the need to link devices to patient records and imaging studies. When an imaging study is exported from a picture archiving and communication system (PACS), the process automatically creates a generic record that can be tailored to fit its intended use and stores patient information within the job's record. The user may add more information to the job's record in its initial state before saving the record to better visualize it within the Phases of the ensuing workflow. Once saved, the job can be visualized by the entire team and its record can be edited by team members as it moves through each Phase and Stage of the workflow. Upon saving the initial record, the process also generates a file folder structure associated with the job on a network file share. The file folder structure corresponds with the workflow Phases and is meant to help organize all files supporting a job (design files, 3D part files, manufacturing files, drawings, work instructions, etc.) in a systematic fashion. A live link to a file folder path for a job can be displayed in its record to help improve the user's efficiency in navigating between records and supporting files.
As a job moves through each Phase and Stage of the workflow, the job's record can be updated to track metrics required for identification and traceability of product, production and process controls, acceptance activities, labeling and packaging controls, and distribution. The process incorporates unique and novel naming (labeling) conventions to help users identify each job and its associated components. Further, users can record their time spent on each Phase of design and production within the process, and reports can be generated to help managers understand resource allocation. During certain Stages, custom inspection checklists will be displayed. These can be defined per product type and/or linked to custom Work Instructions and Standard Operating Procedures. Similarly, staff performing certain Stages have the ability to add custom items to the checklist for review during future Stages.
Once a job has reached the Phase where it is ready to be manufactured, users can choose an additive manufacturing technology specific to their needs. The process can be customized to display the additive manufacturing technologies or specific-brand printers a user has available to produce product. The Phases associated with manufacturing can then be tailored to each specific type of printer, allowing users to track raw material consumption and other consumables related to their printing process, in addition to time spent preparing Builds, printing, and post-processing Builds, and equipment life-cycles. Users may also customize inspection workflows, acceptance activities, label templates, and packaging and delivery protocols that are loaded into the process to help streamline the inspection, packaging, labeling, and delivery of end-product. The process can also help teams to manage manufacturing consumable inventories, client lists, and preventative maintenance and manufacturing schedules. Further, the process allows users to group or allocate jobs to specific projects, calculate costs for single jobs or all jobs associated with a specific project, and generate reports on production volumes, resource allocation, etc. The process houses a searchable archive of all past and current job records and their associated metrics.
With the creation of each record, the user is presented with the option to generate a file structure on a local network file share. Detailed in a subsequent section, the file structure is an all-encompassing storage tool for files generated throughout the production cycle: Imaging, Segmentation, CAD, 3D Files, Build Files, and Photos. The Request Creation and Model Identification conventions outlined above work to provide traceability, while the File Structure serves as a uniform and organized way to physically connect all files associated with a request.
To remove options from dropdown lists within the workflow, the administrator can navigate to the appropriate link in the Admin Tab, identify the record they would like to remove, click the “Edit” button in the first column of the entry's row.
It is important to note that the information entered in this Stage (and all other Stages) is available to the user for reference throughout the production cycle. Examples of fields which can be presented on a given user interface include: Imaging Directory-shows the user where the request's files will be generated locally; Imaging Holding-if there is an imaging study, this field will appear and is used to show the user where the file structure will be located while waiting for images to be received, once received the file will be sent to the Imaging Directory Location; Model Identity-a unique identifier which conveys purpose, imaging type, and definition, can be used for the name of all associated files within the generated file structure; Due Date—the date by which the device is needed/required (e.g., surgery date); First Name-either the patient's first name or the first part of the Category; Last Name-either the patient's last name or the second part of the Category; MRN-Medical Record Number associated with a patient for whom the model is being requested; DOB-either the patient's date of birth or the date on which a job was requested; Image Date-if applicable, the date the medical imaging was acquired; Site—identifier for the destination of the Object (delivery site); Project Name (Number)-managed in an Administrative capacity, unique identifier (name/number) for an ongoing project; QC Test Name—managed in an Administrative capacity, special Project Number for quality control operations; Device/Object Description-text that describes the requested device/Object; Object Number—unique number given to each Object that is part of a project; Object Revision—number assigned to each revision of the same part; Animal Type—defines the animal for which an Object is being made; Anatomy—text that defines the anatomy for which an anatomic model is being made; Pathology—name of the medical condition which precipitated the anatomic model request; Requesting Client—name of the person who made the request for an Object; Specialty—name of the surgical subspecialty requesting an anatomic model, or specialty of the person or persons making the request for any Object; Primary Segmentation—name of the primary anatomy to be included in an anatomic model; Secondary Segmentation—name of all other anatomy to be included in an anatomic model; Notes—a field for free text entry, used to communicate other relevant information not captured in other sections—available to be viewed and augmented throughout the production cycle; Create Directories on File Share—check box that, upon selection, creates the folder structure on the local network; sterilizability check—check box that, upon selection, indicates the Object being requested is to be manufactured in a clean environment and sterilized before delivery; and/or, Send to Anatomic—check box that, upon selection, moves a record from the Request Queue to the Anatomic Phase (assuming all required fields are completed).
As described above, the Request Queue is where a request is created, updated, and completed (unique because records here have not yet begun the manufacturing process). The Anatomic Phase is where medical imaging is turned into a 3D Object; can be comprised of Order Entry, Image Review, Segmentation, Physician Review, CAD, Design Review, and/or Print Queue Stages. The Build Phase is where digital 3D Objects are manufactured into physical 3D Objects; comprised of Print Preparation (Print Prep), Printing, and Post-Processing Stages. The Inspection/Delivery Phase is where Objects and their associated parts are inspected and delivered to the Requesting Client; can comprise Inspection and Delivery Stages.
During future processing, an individual file within the Build ID or the entire Build ID may need to be reprinted. In subsequent Stages and Phases, the option exists to revert an entire Build or individual file back to the Build Queue. The file name(s) will also be appended with an “REPRINT” to denote the failure and subsequent reprint of the file to the user. This can occur if the file was reverted after the Printing Stage (i.e., during the Inspection/Delivery Phase). An overview of the computer architecture and process flow for one example of this record reverting process can be seen in
Requests can begin as one Model ID and through the CAD process can comprise any number of individual components. Some components benefit from one printing technology more than others, so this update allows a user to add individual components to a queue of components that are designated to be printed with a specific technology (e.g., SLA, MJF, SLS, and others). Once there are enough parts accumulated under that technology to make printing them feasible, the user can create a Build ID which contains numerous components from many different Model Ids and is assigned to a specific printer, material, etc. After the parts have been printed, the records are transferred to an Inspection queue as individual parts and subsequently to a delivery queue (assuming they pass inspection) as a fully assembled model or package. In various embodiments, tools are provided for use in connection with records flowing throughout the process, including instances in which a part of a model or device would have to be reprinted, redesigned, etc. The process is designed to limit or eliminate situations in which models are delivered with less than all of their required components.
In certain aspects, two buttons may be displayed in the calendar view window, one which allows users to add a new Build record, and another which allows users to add a new preventative maintenance record. Clicking either button expands a menu which allows users to enter information regarding the Build and its schedule. Once the record has been saved, the Build's icon will appear on the calendar, but it will remain editable until the Build has been executed. Once the Build has been executed, the record can be viewed as read-only. If a Build has been scheduled to run on a particular printer on a particular date/time, and a user attempts to create another Build or preventative maintenance record which overlaps a previously scheduled Build or preventative maintenance record, the user will be alerted by the process and will not be able to save the record until a new start date/time is selected. The calendar view populates with reminders alerting users to schedule consumables. Those with administrative privileges can adjust process settings so that these reminders appear with enough lead-time to allow for order-processing and shipping of materials. The reminders are driven by consumable levels that are tracked by the process inventory functions. Reminders may also be configured to email or text users, directly alerting the necessary party when a task requires their attention. The calendar view may be configured, per user, to display assigned or unassigned tasks and/or records associated with any Stage of the Anatomic or Print Phases. For example, a user may want to view all anatomic models in the queue, by their respective due dates, in the calendar view, in addition to all Builds and preventative maintenance icons.) In various embodiments, integrated notification features can be included with processes monitored by the process to enable the user to set custom notifications for any Stage in the process. This idea extends to Object creation, QA/QC/PM actions, and ordering consumables. It will be completely modular and can give the user the option to opt into text messages, emails, and app-based alerts.
In other embodiments,
The examples presented herein can be intended to illustrate potential and specific implementations of the present invention. It can be appreciated that the examples can be intended primarily for purposes of illustration of the invention for those skilled in the art. No particular aspect or aspects of the examples can be necessarily intended to limit the scope of the present invention. For example, no particular aspect or aspects of the examples of system architectures, user interface layouts, or screen displays described herein can be necessarily intended to limit the scope of the invention.
It is to be understood that the figures and descriptions of the present invention have been simplified to illustrate elements that can be relevant for a clear understanding of the present invention, while eliminating, for purposes of clarity, other elements. Those of ordinary skill in the art will recognize, however, that a sufficient understanding of the present invention can be gained by the present disclosure, and therefore, a more detailed description of such elements is not provided herein.
Any element expressed herein as a means for performing a specified function is intended to encompass any way of performing that function including, for example, a combination of elements that performs that function. Furthermore, the invention as may be defined by such means-plus-function claims, resides in the fact that the functionalities provided by the various recited means can be combined and brought together in a manner as defined by the appended claims. Therefore, any means that can provide such functionalities may be considered equivalents to the means shown herein.
In various embodiments, modules or software can be used to practice certain aspects of the invention. For example, software-as-a-service (SaaS) models or application service provider (ASP) models may be employed as software application delivery models to communicate software applications to clients or other users. Such software applications can be downloaded through an Internet connection, for example, and operated either independently (e.g., downloaded to a laptop or desktop computer system) or through a third-party service provider (e.g., accessed through a third-party web site). In addition, cloud computing techniques may be employed in connection with various embodiments of the invention.
Moreover, the processes associated with the present embodiments may be executed by programmable equipment, such as computers. Software or other sets of instructions that may be employed to cause programmable equipment to execute the processes may be stored in any storage device, such as a computer system (non-volatile) memory. Furthermore, some of the processes may be programmed when the computer system is manufactured or via a computer-readable memory storage medium.
It can also be appreciated that certain process aspects described herein may be performed using instructions stored on a computer-readable memory medium or media that direct a computer or computer system to perform process steps. A computer-readable medium may include, for example, memory devices such as diskettes, compact discs of both read-only and read/write varieties, optical disk drives, and hard disk drives. A computer-readable medium may also include memory storage that may be physical, virtual, permanent, temporary, semi-permanent and/or semi-temporary. Memory and/or storage components may be implemented using any computer-readable media capable of storing data such as volatile or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writeable or re-writeable memory, and so forth.
Examples of computer-readable storage media may include, without limitation, RAM, dynamic RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), read-only memory (ROM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory (e.g., NOR or NAND flash memory), content addressable memory (CAM), polymer memory (e.g., ferroelectric polymer memory), phase-change memory, ovonic memory, ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, or any other type of media suitable for storing information.
A “computer,” “computer system,” “computing apparatus,” “component,” or “computer processor” may be, for example and without limitation, a processor, microcomputer, minicomputer, server, mainframe, laptop, personal data assistant (PDA), wireless e-mail device, smart phone, mobile phone, electronic tablet, cellular phone, pager, processor, fax machine, scanner, or any other programmable device or computer apparatus configured to transmit, process, and/or receive data. Computer systems and computer-based devices disclosed herein may include memory and/or storage components for storing certain software applications used in obtaining, processing, and communicating information. It can be appreciated that such memory may be internal or external with respect to operation of the disclosed embodiments. In various embodiments, a “host,” “engine,” “loader,” “filter,” “platform,” or “component” may include various computers or computer systems, or may include a reasonable combination of software, firmware, and/or hardware. In certain embodiments, a “module” may include software, firmware, hardware, or any reasonable combination thereof.
In various embodiments of the present invention, a single component may be replaced by multiple components, and multiple components may be replaced by a single component, to perform a given function or functions. Except where such substitution would not be operative to practice embodiments of the present invention, such substitution is within the scope of the present invention. Any of the servers described herein, for example, may be replaced by a “server farm” or other grouping of networked servers (e.g., a group of server blades) that can be located and configured for cooperative functions. It can be appreciated that a server farm may serve to distribute workload between/among individual components of the farm and may expedite computing processes by harnessing the collective and cooperative power of multiple servers. Such server farms may employ load-balancing software that accomplishes tasks such as, for example, tracking demand for processing power from different machines, prioritizing and scheduling tasks based on network demand, and/or providing backup contingency in the event of component failure or reduction in operability.
In general, it will be apparent to one of ordinary skill in the art that various embodiments described herein, or components or parts thereof, may be implemented in many different embodiments of software, firmware, and/or hardware, or modules thereof. The software code or specialized control hardware used to implement some of the present embodiments is not limiting of the present invention. For example, the embodiments described hereinabove may be implemented in computer software using any suitable computer programming language such as .NET or HTML using, for example, conventional or object-oriented techniques. Programming languages for computer software and other computer-implemented instructions may be translated into machine language by a compiler or an assembler before execution and/or may be translated directly at run time by an interpreter. Examples of assembly languages include ARM, MIPS, and x86; examples of high-level languages include Ada, BASIC, C, C++, C#, COBOL, Fortran, Java, Lisp, Pascal, Object Pascal; and examples of scripting languages include Bourne script, JavaScript, Python, Ruby, PHP, and Perl. Various embodiments may be employed in a Lotus Notes environment, for example. Such software may be stored on any type of suitable computer-readable medium or media such as, for example, a magnetic or optical storage medium.
Thus, the operation and behavior of the embodiments can be described without specific reference to the actual software code. The absence of such specific references is feasible because it is clearly understood that artisans of ordinary skill would be able to design software and control hardware to implement the embodiments of the present invention based on the description herein with only a reasonable effort and without undue experimentation.
Various embodiments of the systems and methods described herein may employ one or more electronic computer networks to promote communication among different components, transfer data, or to share resources and information. Such computer networks can be classified according to the hardware and software technology that is used to interconnect the devices in the network, such as optical fiber, Ethernet, wireless LAN, HomePNA, power line communication or G.hn. The computer networks may also be embodied as one or more of the following types of networks: local area network (LAN); metropolitan area network (MAN); wide area network (WAN); virtual private network (VPN); storage area network (SAN); or global area network (GAN), among other network varieties.
For example, a WAN computer network may cover a broad area by linking communications across metropolitan, regional, or national boundaries. The network may use routers and/or public communication links. One type of data communication network may cover a relatively broad geographic area (e.g., city-to-city or country-to-country) which uses transmission facilities provided by common carriers, such as telephone service providers. In another example, a GAN computer network may support mobile communications across multiple wireless LANs or satellite networks. In another example, a VPN computer network may include links between nodes carried by open connections or virtual circuits in another network (e.g., the Internet) instead of by physical wires. The link-layer protocols of the VPN can be tunneled through the other network. One VPN application can promote secure communications through the Internet. The VPN can also be used to separately and securely conduct the traffic of different user communities over an underlying network. The VPN may provide users with the virtual experience of accessing the network through an IP address location other than the actual IP address which connects the access device to the network.
The computer network may be characterized based on functional relationships among the elements or components of the network, such as active networking, client-server, or peer-to-peer functional architecture. The computer network may be classified according to network topology, such as bus network, star network, ring network, mesh network, star-bus network, or hierarchical topology network, for example. The computer network may also be classified based on the method employed for data communication, such as digital and analog networks.
Embodiments of the methods and systems described herein may employ internetworking for connecting two or more distinct electronic computer networks or network segments through a common routing technology. The type of internetwork employed may depend on administration and/or participation in the internetwork. Non-limiting examples of internetworks include intranet, extranet, and Internet. Intranets and extranets may or may not have connections to the Internet. If connected to the Internet, the intranet or extranet may be protected with appropriate authentication technology or other security measures. As applied herein, an intranet can be a group of networks which employ Internet Protocol, web browsers and/or file transfer applications, under common control by an administrative entity. Such an administrative entity could restrict access to the intranet to only authorized users, for example, or another internal network of an organization or commercial entity. As applied herein, an extranet may include a network or internetwork generally limited to a primary organization or entity, but which also has limited connections to the networks of one or more other trusted organizations or entities (e.g., customers of an entity may be given access an intranet of the entity thereby creating an extranet).
Computer networks may include hardware elements to interconnect network nodes, such as network interface cards (NICs) or Ethernet cards, repeaters, bridges, hubs, switches, routers, and other like components. Such elements may be physically wired for communication and/or data connections may be provided with microwave links (e.g., IEEE 802.12) or fiber optics, for example. A network card, network adapter or NIC can be designed to allow computers to communicate over the computer network by providing physical access to a network and an addressing system through the use of MAC addresses, for example. A repeater can be embodied as an electronic device that receives and retransmits a communicated signal at a boosted power level to allow the signal to cover a telecommunication distance with reduced degradation. A network bridge can be configured to connect multiple network segments at the data link layer of a computer network while learning which addresses can be reached through which specific ports of the network. In the network, the bridge may associate a port with an address and then send traffic for that address only to that port. In various embodiments, local bridges may be employed to directly connect local area networks (LANs) remote bridges can be used to create a wide area network (WAN) link between LANs; and/or, wireless bridges can be used to connect LANs and/or to connect remote stations to LANs.
In various embodiments, a hub may be employed which contains multiple ports. For example, when a data packet arrives at one port of a hub, the packet can be copied unmodified to all ports of the hub for transmission. A network switch or other devices that forward and filter OSI layer 2 datagrams between ports based on MAC addresses in data packets can also be used. A switch can possess multiple ports, such that most of the network is connected directly to the switch, or another switch that is in turn connected to a switch. The term “switch” can also include routers and bridges, as well as other devices that distribute data traffic by application content (e.g., a Web URL identifier). Switches may operate at one or more OSI model layers, including physical, data link, network, or transport (i.e., end-to-end). A device that operates simultaneously at more than one of these layers can be considered a multilayer switch. In certain embodiments, routers or other like networking devices may be used to forward data packets between networks using headers and forwarding tables to determine an optimum path through which to transmit the packets.
As employed herein, an application server may be a server that hosts an API to expose business logic and business processes for use by other applications. Examples of application servers include J2EE or Java EE 5 application servers including WebSphere Application Server. Other examples include WebSphere Application Server Community Edition (IBM), Sybase Enterprise Application Server (Sybase Inc), WebLogic Server (BEA), JBoss (Red Hat), JRun (Adobe Systems), Apache Geronimo (Apache Software Foundation), Oracle OC4J (Oracle Corporation), Sun Java System Application Server (Sun Microsystems), and SAP Netweaver AS (ABAP/Java). Also, application servers may be provided in accordance with the .NET framework, including the Windows Communication Foundation, .NET Remoting, ADO.NET, and ASP.NET among several other components. For example, a Java Server Page (JSP) is a servlet that executes in a web container which is functionally equivalent to CGI scripts. JSPs can be used to create HTML pages by embedding references to the server logic within the page. The application servers may mainly serve web-based applications, while other servers can perform as session initiation protocol servers, for instance, or work with telephony networks. Specifications for enterprise application integration and service-oriented architecture can be designed to connect many different computer network elements. Such specifications include Business Application Programming Interface, Web Services Interoperability, and Java EE Connector Architecture.
Embodiments of the methods and systems described herein may divide functions between separate CPUs, creating a multiprocessing configuration. For example, multiprocessor and multi-core (multiple CPUs on a single integrated circuit) computer systems with co-processing capabilities may be employed. Also, multitasking may be employed as a computer processing technique to handle simultaneous execution of multiple computer programs.
In various embodiments, the computer systems, data storage media, or modules described herein may be configured and/or programmed to include one or more of the above-described electronic, computer-based elements and components, or computer architecture. In addition, these elements and components may be particularly configured to execute the various rules, algorithms, programs, processes, and method steps described herein.
Various embodiments may be described herein in the general context of computer executable instructions, such as software, program modules, and/or engines being executed by a computer. Generally, software, program modules, and/or engines include any software element arranged to perform particular operations or implement particular abstract data types. Software, program modules, and/or engines can include routines, programs, objects, components, data structures and the like that perform particular tasks or implement particular abstract data types. An implementation of the software, program modules, and/or engines components and techniques may be stored on and/or transmitted across some form of computer-readable media. In this regard, computer-readable media can be any available medium or media useable to store information and accessible by a computing device. Some embodiments also may be practiced in distributed computing environments where operations can be performed by one or more remote processing devices that can be linked through a communications network. In a distributed computing environment, software, program modules, and/or engines may be located in both local and remote computer storage media including memory storage devices.
Although some embodiments may be illustrated and described as comprising functional components, software, engines, and/or modules performing various operations, it can be appreciated that such components or modules may be implemented by one or more hardware components, software components, and/or combination thereof. The functional components, software, engines, and/or modules may be implemented, for example, by logic (e.g., instructions, data, and/or code) to be executed by a logic device (e.g., processor). Such logic may be stored internally or externally to a logic device on one or more types of computer-readable storage media. In other embodiments, the functional components such as software, engines, and/or modules may be implemented by hardware elements that may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth.
Examples of software, engines, and/or modules may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof.
Determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints.
In some cases, various embodiments may be implemented as an article of manufacture. The article of manufacture may include a computer readable storage medium arranged to store logic, instructions and/or data for performing various operations of one or more embodiments. In various embodiments, for example, the article of manufacture may comprise a magnetic disk, optical disk, flash memory or firmware containing computer program instructions suitable for execution by an application specific processor.
Additionally, it is to be appreciated that the embodiments described herein illustrate example implementations, and that the functional elements, logical blocks, modules, and circuits elements may be implemented in various other ways which can be consistent with the described embodiments. Furthermore, the operations performed by such functional elements, logical blocks, modules, and circuits elements may be combined and/or separated for a given implementation and may be performed by a greater number or fewer number of components or modules. As will be apparent to those of skill in the art upon reading the present disclosure, each of the individual embodiments described and illustrated herein has discrete components and features which may be readily separated from or combined with the features of any of the other several aspects without departing from the scope of the present disclosure. Any recited method can be carried out in the order of events recited or in any other order which is logically possible.
Reference to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is comprised in at least one embodiment. The appearances of the phrase “in one embodiment” or “in one aspect” in the specification can be not necessarily all referring to the same embodiment.
Unless specifically stated otherwise, it may be appreciated that terms such as “processing,” “computing,” “calculating,” “determining,” or the like, refer to the action and/or processes of a computer or computing system, or similar electronic computing device, such as a general purpose processor, a DSP, ASIC, FPGA or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein that manipulates and/or transforms data represented as physical quantities (e.g., electronic) within registers and/or memories into other data similarly represented as physical quantities within the memories, registers or other such information storage, transmission or display devices.
Certain embodiments may be described using the expression “coupled” and “connected” along with their derivatives. These terms can be not necessarily intended as synonyms for each other. For example, some embodiments may be described using the terms “comlected” and/or “coupled” to indicate that two or more elements can be in direct physical or electrical contact with each other. The term “coupled,” however, also may mean that two or more elements can be not in direct contact with each other, but yet still co-operate or interact with each other. With respect to software elements, for example, the term “coupled” may refer to interfaces, message interfaces, application program interface (API), exchanging messages, and so forth.
It will be appreciated that those skilled in the art will be able to devise various arrangements which, although not explicitly described or shown herein, embody the principles of the present disclosure and can be comprised within the scope thereof. Furthermore, all examples and conditional language recited herein can be principally intended to aid the reader in understanding the principles described in the present disclosure and the concepts contributed to furthering the art, and can be to be construed as being without limitation to such specifically recited examples and conditions. Moreover, all statements herein reciting principles, aspects, and embodiments as well as specific examples thereof, can be intended to encompass both structural and functional equivalents thereof. Additionally, it is intended that such equivalents comprise both currently known equivalents and equivalents developed in the future, i.e., any elements developed that perform the same function, regardless of structure. The scope of the present disclosure, therefore, is not intended to be limited to the exemplary aspects and aspects shown and described herein
Although various systems described herein may be embodied in software or code executed by general purpose hardware as discussed above, as an alternative the same may also be embodied in dedicated hardware or a combination of software, hardware and/or dedicated hardware. If embodied in dedicated hardware, each can be implemented as a circuit or state machine that employs any one of or a combination of a number of technologies. These technologies may include, but can be not limited to, discrete logic circuits having logic gates for implementing various logic functions upon an application of one or more data signals, application specific integrated circuits having appropriate logic gates, or other components, etc. Such technologies can be generally well known by those of ordinary skill in the art and, consequently, can be not described in detail herein.
The flow charts and methods described herein show the functionality and operation of various implementations. If embodied in software, each block, step, or action may represent a module, segment, or portion of code that comprises program instructions to implement the specified logical function(s). The program instructions may be embodied in the form of source code that comprises human-readable statements written in a programming language or machine code that comprises numerical instructions recognizable by a suitable execution system such as a processing component in a computer system. If embodied in hardware, each block may represent a circuit or a number of interconnected circuits to implement the specified logical function(s). Although the flow charts and methods described herein may describe a specific order of execution, it is understood that the order of execution may differ from that which is described. For example, the order of execution of two or more blocks or steps may be scrambled relative to the order described. Also, two or more blocks or steps may be executed concurrently or with partial concurrence. Further, in some embodiments, one or more of the blocks or steps may be skipped or omitted. It is understood that all such variations can be within the scope of the present disclosure.
The terms “a” and “an” and “the” and similar referents used in the context of the present disclosure (especially in the context of the following claims) can be to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. Recitation of ranges of values herein is merely intended to serve as a shorthand method of referring individually to each separate value falling within the range. Unless otherwise indicated herein, each individual value is incorporated into the specification as though it were individually recited herein. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g., “such as,” “in the case,” “by way of example”) provided herein is intended merely to better illuminate the disclosed embodiments and does not pose a limitation on the scope otherwise claimed. No language in the specification should be construed as indicating any non-claimed element essential to the practice of the claimed subject matter. It is further noted that the claims may be drafted to exclude any optional element. As such, this statement is intended to serve as antecedent basis for use of such exclusive terminology as solely, only and the like in connection with the recitation of claim elements, or use of a negative limitation.
Groupings of alternative elements or embodiments disclosed herein can be not to be construed as limitations. Each group member may be referred to and claimed individually or in any combination with other members of the group or other elements found herein. It is anticipated that one or more members of a group may be comprised in, or deleted from, a group for reasons of convenience and/or patentability.
While various embodiments of the invention have been described herein, it should be apparent, however, that various modifications, alterations, and adaptations to those embodiments may occur to persons skilled in the art with the attainment of some or all of the advantages of the present invention. The disclosed embodiments can be therefore intended to include all such modifications, alterations, and adaptations without departing from the scope and spirit of the present invention as claimed herein.
The present non-provisional patent application claims priority to U.S. Provisional Patent Application Ser. No. 63/197,640, filed on Jun. 7, 2021, the entirety of which is incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
20040190057 | Takahashi | Sep 2004 | A1 |
20170148159 | Kreeger | May 2017 | A1 |
20170372155 | Odry | Dec 2017 | A1 |
20190122073 | Ozdemir | Apr 2019 | A1 |
Number | Date | Country | |
---|---|---|---|
63197640 | Jun 2021 | US |