Abstract:
With the onset of BSE or Bovine Spongiform Encephalopathy in Great Britain, and subsequent infections here in the U.S., there has been an increased push to monitor and track movements of animals on ranches and farms. In fact, the U.S. Department of Agriculture is in the process of implementing a National Animal Identification System or NAIS to track animal movements. Conventional systems that comply with the NAIS, though, have been very expensive and cumbersome for the average farmer who cannot afford the expense involved. However, now there is a system, which complies with the NAIS, that is easy to operate for the average farmer or rancher and is inexpensive. Thus, the present system allows the average farmer or rancher to remain in business and comply with national requirements.

Description:
TECHNICAL FIELD  
       [0001]     The invention relates generally to software for management and tracking of livestock and, more particularly, to software for managing and tracking livestock that is compliant with the U.S. National Animal Identification System (NAIS).  
       BACKGROUND  
       [0002]     Since the outbreak of Bovine Spongiform Encephalopathy (BSE), what is commonly referred to as “Mad Cow Disease,” in Great Britain and elsewhere there has been an increased focus on tracing the location of cattle. Specifically, tracing of cattle to specific locations and/or tracing the comingling of cattle enables governmental agencies to establish the root of diseases like BSE or hoof-and-mouth disease. The systems that have been in place in the United States have been mostly voluntary and are woefully inadequate to trace cattle histories. However, because each species carries different diseases, there is not just a need to track cattle, but other livestock including poultry, swine, and so forth.  
         [0003]     As a result of this increased push for identification and tracking systems, the livestock industry in cooperation with the U.S. Department of Agriculture (USDA) have developed the NAIS. The NAIS is a nationwide tracking system that requires anyone who owns or possess livestock must report locations and movements of the cattle and other livestock. To comply with the NAIS, each location where livestock may be present must have a premise identification number (PID), which is obtained through registration with a local, state, or federal governmental body. Additionally, each animal must have a unique identification number or electronic identification number (EID) associated with it. Each movement of an animal to a different premise must then be promptly (now, 48 hours) reported to a central database.  
         [0004]     This type of tracking system can be very difficult and expensive to implement. Most notably, the cost and infrastructure requirements for the local component of this system could be prohibitive for most farmers, ranchers, or livestock managers. In Texas alone, 80% of the cattle are owned by ranchers or farmers who have less than 10 head. These types of farmers, ranchers, or livestock managers simply do not have the income or technical inclination to implement an expensive and complex system, forcing the smaller operations to go out of business or non-compliance.  
         [0005]     To date, though, there have been relatively few tracking systems that are NAIS compliant. In particular, these systems add other functionality unnecessary for NAIS compliance and, thus, are extremely expensive, costing hundreds or thousands of dollars. The high costs of these NAIS compliant systems makes them preclusive for smaller farmers, ranchers, or livestock managers, who may only have a few animals.  
         [0006]     Therefore, there is a need for a method and/or system which is inexpensive and allows small, as well as large, farmers, ranchers, or livestock managers to comply with NAIS regulations.  
       SUMMARY  
       [0007]     The present invention, accordingly, provides a method in an electronic data processing system for maintaining licensure of livestock tracking software. The livestock management software is initiated or run on a local computer. The user of the local computer is requested to synchronize with a remote computer over a computer network if the livestock management software has expired. If synchronization is requested, a new key is calculated at least from indicia of livestock stored by the livestock management software and an identification number of the local computer.  
         [0008]     In another preferred embodiment of the present invention, the date on the local computer date is compared to at least one predetermined lock condition, and access is denied to the livestock management software if the livestock management software has expired.  
         [0009]     In an alternative embodiment of the present invention, the predetermined lock condition is an expiration date.  
         [0010]     In another preferred embodiment of the present invention, the user is requested to enter initial livestock data, and the initial livestock data is stored. An expiration date is generated, and an initial key is calculated from at least from indicia of initial livestock and the identification number of the local computer.  
         [0011]     In an alternative embodiment of the present invention, a determination of a media access control (MAC) address for the local computer is made. Additionally, an initial key is calculated at least from the MAC address.  
         [0012]     The present invention also provides in another preferred embodiment of the present invention a method in an electronic data processing system for maintaining licensure of software. The software is initiated on a local computer, and user of the local computer is requested to synchronize with a host server over a computer network if the software has expired. A new key is calculated at least from indicia of data stored by the software and an identification number of the local computer, if synchronization is requested.  
         [0013]     Additionally, the present invention provides a system for tracking and managing livestock. Specifically, the present invention includes a local computer and a remote computer. The local computer includes a local database that contains at least livestock data, a local interface adapted to communicate with at least one computer network, and a local controller which provides control instructions to the local database and the local interface, wherein the local controller includes a lock detector which prevents user access to the local database if a predetermined lock condition is met. The remote computer is connected to the computer network includes a remote database that at least contains the livestock state, a key generator which generates a key at least from indicia of livestock data, wherein the key provides at least one of an indication of the predetermined lock condition, a set of the predetermined lock condition, or a reset of the predetermined lock condition, and a remote controller which provides control instructions to the remote database, the key generator, and the local controller.  
         [0014]     In another preferred embodiment of the present invention, the remote controller provides at least one control instruction to the local controller through an intervention by at least one human operator.  
         [0015]     In an alternative embodiment of the present invention, the remote controller provides at least one control instruction to the local controller over the computer network.  
         [0016]     In another preferred embodiment of the present invention, the local database contains at least livestock data and user data.  
         [0017]     In an alternative embodiment of the present invention, the system further comprises a second local database that contains at least user data.  
         [0018]     In another preferred embodiment of the present invention, the lock condition is a use period.  
         [0019]     In an alternative embodiment of the present invention, the livestock are cattle.  
         [0020]     The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention. It should be appreciated by those skilled in the art that the conception and the specific embodiment disclosed may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present invention. It should also be realized by those skilled in the art that such equivalent constructions do not depart from the spirit and scope of the invention as set forth in the appended claims. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0021]     For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:  
         [0022]      FIG. 1A-1C  is a block diagram depicting a livestock management and tracking system in accordance with a preferred embodiment of the present invention;  
         [0023]      FIG. 2  is a flow chart depicting the initial installation process of the tracking software on a local computer;  
         [0024]      FIG. 3  is a flow chart depicting the synchronization process between the local computer and remote computer;  
         [0025]      FIG. 4  is a menu depicting entry of animal information into the system;  
         [0026]      FIG. 5  is a menu depicting entry of breeding information into the system;  
         [0027]      FIG. 6  is a menu depicting entry of calving history into the system;  
         [0028]      FIG. 7  is a menu depicting entry of carcass measurements into the system;  
         [0029]      FIG. 8  is a menu depicting entry of movement information into the system;  
         [0030]      FIG. 9  is a menu depicting entry of palpation information into the system;  
         [0031]      FIG. 10  is a menu depicting entry of sales information into the system;  
         [0032]      FIG. 11  is a menu depicting entry of termination information into the system;  
         [0033]      FIG. 12  is a menu depicting entry of medical treatment information into the system;  
         [0034]      FIG. 13  is a menu depicting entry of weight information into the system;  
         [0035]      FIG. 14  is a menu depicting entry of weaning information into the system;  
         [0036]      FIG. 15  is menu depicting entry of yearling information into the system;  
         [0037]      FIG. 16  is a menu for adding identification and birth information for an additional animal;  
         [0038]      FIG. 17  is a menu for batch movements of livestock;  
         [0039]      FIGS. 18A and 18B  are menus for adding new locations;  
         [0040]      FIGS. 19A and 19B  are menus for editing current locations;  
         [0041]      FIG. 20  is a menu for deleting a location;  
         [0042]      FIG. 21  is a menu for generating a report; and  
         [0043]      FIG. 22  is a working menu for a touch sensitive screen. 
     
    
     DETAILED DESCRIPTION  
       [0044]     In the discussion of the FIGURES, the same reference numerals will be used throughout to refer to the same or similar components. In the following discussion, numerous specific details are set forth to provide a thorough understanding of the present invention. In other instances, well-known elements have been illustrated in schematic or block diagram form in order not to obscure the present invention in unnecessary detail. Additionally, for the most part, details concerning timing considerations and the like have been omitted inasmuch as such details are not considered necessary to obtain a complete understanding of the present invention, and are considered to be within the skills of persons of ordinary skill in the relevant art.  
         [0045]     A. System Overview and Operation  
         [0046]     Referring to  FIG. 1A  of the drawings, the reference numeral  100  generally designates an animal tracking and management system. System  100  comprises a local computer  102 , an input device or wand  104 , a tag  106 , a computer network  108 , and a remote computer  112 . The system  100  is also then designed to be compliant with the NAIS system  110 .  
         [0047]     Preferably, this system  100  enables a user to install a small and relatively unobtrusive program or software package on the local computer  102 , leaving the heavy processing to the remote computer  112 . Employing this configuration, it allows smaller and more undercapitalized livestock managers to utilize the system, meaning, for example, that obsolete PCs or inexpensive computers can run the software easily due to the low overhead requirements of the locally installed component.  
         [0048]     To perform this task, a small program or software package is installed on the local computer  102 . The installation process onto the local computer  102  is detailed below. Once installed, the software creates three distinct modules within the local computer  102 : the local database (DB)  114 , the local interface  116 , and the local controller  118 .  
         [0049]     The local DB  114 , preferably, is used to locally store and manage the data generated by the user or livestock manager. Specifically, the local DB  114  stores information relating to the animals. The local DB  114  can also include user information; however, an entirely different or separate DB can be employed. Control and entry of data into the local DB  114  are detailed below.  
         [0050]     As can be seen in  FIG. 1B , the local DB  114  is designed so as to easily track, update, and maintain events. Local DB  114  employs a number of interrelated arrays to maintain the accounting of data and comprises an animal identifier array  150  and an event array  152 . With the animal identifier array  150 , the characteristic data of livestock can be isolated from events that take place in the life of an animal. The animal identifier array contained an animal ID column  154  and an animal characteristic column  156 . Thus, the characteristics of each animal can be maintained an updated in array  150 .  
         [0051]     Each animal tracked in the local DB  114  is given a unique identifier that remains with the animal for the duration of its tracking or life. Some of the characteristics of animals stored in the animal characteristic column  156  include an NAIS mandated Electronic Identifier (EID) and Visual Identifier (VID). The EID and VID are commonly associated with ear tags or other Radio Frequency Identification (RFID) tags. These tags, and identifiers, however, may not remain with an animal for the duration of its life, but instead may change, necessitated by the loss or destruction of tags and identifiers.  
         [0052]     Thus, because the EID and VID are subject to change, neither the EID nor VID are useful as key fields. If either the EID or VID is used as a key or reference field, a change to the EID or VID can cause a corruption of data. Therefore, an internal and unalterable identifier is better suited to operate as a key field. These internal identifiers populate the animal ID column  154 .  
         [0053]     The internal identifiers are each generated when an animal is initially entered into the system  100 . Preferably, the internal identifier is comprised of a 32-character string, but can be any number of characters long. The internal identifier is preferably generated by the use of a globally unique identifier (GUID) algorithm that uses four randomizers, such as the Media Access Control (MAC) address, Internet Protocol (IP) Address, time of day, date, and so forth.  
         [0054]     Association between the array  150  and array  152  is accomplished through the internal identifiers that populate the animal ID column  162 . Typically, for each event that takes place in the life of an animal, the event is recorded. Time stamps for each event are stored in the time stamp column  158  and the events are stored in event column  160 . Additionally, a batch ID (not shown) can also be included in array  152 , so that when multiple events occur together an association can be maintained.  
         [0055]     The events that can take place are also enumerated. In other words, there is a set list (which can be lengthened or shortened) which are identified in column  160 . As an example, Table 1 below details a list of events.  
                   TABLE 1                       Number   Event                   1   Dehorn       2   Castration       3   Palpation       4   Branding                  
 
         [0056]     As noted, events, such as the above, are recorded (input) into the animal event array  152 . Now turning back to  FIG. 1A , the local interface  116  is a module that controls the interaction between the local computer  112  and external devices or networks. Specifically, the local interface  116  is able to communicate with the computer network  108 . Typically, the network  108  is a packet switching network, which can include a variety of computer networks including, but not limited to, the Internet. Specifically, the connection that the local interface  116  establishes with the network  108  is a high-speed connection, such as a digital subscriber liner, a dial-up connection, or wireless connection. Specifically, the data transfer requirements are also generally low; thus, an expensive or high-speed network connection is not necessary. Furthermore, to maintain the lower costs, a dedicated Internet Service Provider (ISP) can be contracted to enable users to dial-up for the purpose of synchronizing with the remote computer  112 ; thus, the user need not even be a regular Internet user with an ISP account. Additionally, the local interface  116  is able to communicate with other external devices, namely wand  104 .  
         [0057]     The local interface  116  also performs a key role in increasing the efficiency of the local component of the system  100 . Typically, objects that are operating as part of the local component of the system  100  compete for the use of port  164 . Thus, in many conventional systems, data is not broadcast to more than one object, and object use of port  164  must be negotiated among the different objects. One particular case where competition would occur is for an EID broadcast.  
         [0058]     Local interface  116 , though, employs a notifier  166  and serial I/O  168  that effectively eliminates competition among objects. Preferably, the serial I/O  168  registers and tracks objects that would normally be in competition for port  164 . When an I/O event occurs, such as an EID broadcast, the notifier  166  alerts the serial I/O  168 , which then communicates certain data, such as an EID, to registered objects  170 . Thus, competition for use of port  164  can be reduced.  
         [0059]     Again, turning back to  FIG. 1A , when data or information is communicated from the local computer  102  to the remote computer  112  over the computer network  108 , the size of the data packets or data stream is very small. Typically, the amount of data transmitted is less than one megabyte (&lt;1 Mb), even with a very large data file. However, data transmission can vary and can be greater than one terabyte (&gt;1 Tb). With the small amount of data transmitted over the computer network  108 , even the slowest network connections available are able to easily support the system  100 . Additionally, the data transmitted over the computer network  100  can be encrypted using a variety of techniques, including but not limited to symmetric-key and antisymmetric-key cryptosystems. Some examples are Rivest-Shamir-Adleman (RSA) and a Hypertext Transfer Protocol (HTTP) Secure Socket Layer (SSL).  
         [0060]     The wand  104  is an optional input device, but can be particularly useful for high-volume circumstances where cattle are being tracked and managed in larger numbers. Each cow or bull is equipped with a tag  106 . This tag  106  can include a representation of a unique identifier associated with an animal, such as a VID, a bar code, an EID, or any combination thereof. Specifically, when the tag  106  operates as an RFID tag or includes a bar code, the wand  104  is able to interact with the tag  106 . When the wand  104  interacts with tag  106 , the data for the animal is associated with the representation of the unique identifier. As an alternative to the wand  104 , data from the tag can be simply read and keyed into the software of the present invention.  
         [0061]     To provide control, the local DB  114  and/or the local interface  116 , the local controller  118  provides control instructions. Preferably, the local controller  118  controls access and information or data changes to the local DB  114 . Additionally, the local controller  118  includes a lock detector  120 . Preferably, the lock detector  120  sets and monitors predetermined lock condition(s). For example, an expiration period or date can be set, allowing the user to utilize the system  100  for a predetermined period of time, such as 60 or 90 days. Additionally, the lock detector  120  is equipped to monitor the Media Access Control (MAC) address, Internet Protocol (IP) address, or other unique identifier associated with a specific computer, so that the system  100  can be limited to a set of registered computers. In other words, if a lock condition is satisfied, the software is rendered inoperable until the user takes the steps necessary to remove the lock condition(s).  
         [0062]     The lock condition(s) that are detected and monitored by the lock detector  120  are changed and/or modified through the use of a registration number or key. Specifically, this key is an alpha-numeric string and is obtained through synchronization with the remote computer  112 . Synchronization is illustrated in  FIG. 3  and is described in detail below. Additionally, the generation of the key is performed remotely so as to maintain the integrity of the system  100 .  
         [0063]     During operation, the remote computer  112  is also connected to the computer network  108 . This connection with the computer network  108  allows the remote computer  112  to communicate with the local computer  102  (if connected). Typically, the remote computer  112  is a server which performs tracking on a large scale and maintains a large DB of multiple users or livestock managers. Installed on the remote computer  112  are several software modules, subroutines, or files, namely a remote DB  122 , a remote controller  124 , and a key generator  126 . The remote DB  122 , typically, stores information to a variety of different local DB, such as local DB  114 . The remote controller  124  provides control instructions to the remote DB  122  and the key generator  126 .  
         [0064]     The key generator  126 , typically, generates the lock/unlock condition(s) for lock detector  120 . At the system login, the local computer  102 , operating as a client, transmits an alpha-numeric login password to the verification module  128 , where the verification module reads and identifies the login password. Identification of the login password allows the key generator  126  to access the sync history table  132  and keys table  134  associated with the alpha-numeric login password. Specifically, this alpha-numeric password is a hardcoded password that is unique to each copy of the software package and, typically, is a string of approximately twenty-two characters.  
         [0065]     Once the login password is transmitted to the verification module  128 , a key is transmitted to a CheckActivate sequence, sub-module, or subroutine, which validates the user&#39;s account on the system, returning a Boolean value. If a failure value is returned, the user is advised to update the paid subscription, and the system  100  will not continue with any key generation. In addition to both timing and lock condition(s) that can suspend operation of the software, an inactive account can suspend operation of the software as well. Alternatively, if a success value is returned, the user&#39;s key is updated.  
         [0066]     Specifically, there are several ways to update the key. One example is to have an alpha-numeric string from which a date can be parsed. The renew module  130  parses the expiration date information from the key, and calculates a new key where the previous expiration date is extended by 90 days. This new key will reset the lock detector  120  so that the lock condition(s) are satisfied in 90 days. This new key can also be added to the keys table  134  associated with the login password. Another example of a way to update the key is to have an alpha-numeric string generated from data stored in the local DB  114  and/or the remote DB  122 , such as the number of animals.  
         [0067]     In addition to the remote computer  112 , the system  100  is compliant with the NAIS system  110 , which includes a national database that tracks animals nationwide. In particular, the remote computer  112  operates as an intermediate server for the local computer  102 . As it is well known, standards and system configurations are not uncommon. In fact, change in the operation of the NAIS system  110  can almost be expected. However, because most of the users of the system  100  are not sufficiently sophisticated and/or capitalized to keep up with changes in the NAIS system  110 , the system  100  allows experts to continually parse and update information sent by the individual users to the remote computer  112  to ensure that records are compliant with the NAIS system  110 .  
         [0068]     As shown in  FIG. 2 , the flow chart  200  depicts the activation on the local computer. Initially in step  202 , the program installs itself onto the local computer  102 , commonly referred to as the local component. During installation, the registry is updated, and executable files, libraries, and so forth are stored locally. Once installed, the user is permitted in step  204  to enter user data, for example name, address, phone number, and so forth. The user would then be permitted to enter the number of animals that the system  100  would be tracking and/or managing in step  206 .  
         [0069]     Because the level of technical sophistication of some of the livestock managers or users is expected to be relatively low, a determination in step  208  would then be made as to whether there is access to the computer network  108 . If no network access exists, the user would be permitted to call the operator of the system in step  210 . In fact, a user can have the option of personally calling a call center instead of simply gaining access to the system  100  through computer network  108 . In these circumstances, the operator would enter information into the system  100  on the server or remote computer  112  side in step  212 . Alternatively, if there is network access (e.g. DSL), information can be reported to the remote computer  112  in step  212 .  
         [0070]     Based on the information communicated to the remote computer  112 , a key is generated in step  214 . This key sets/resets the lock condition(s) for the local computer  102  and is generated remotely so as to maintain the integrity of the system. The process for generating the key is detailed above. Once generated, the key is communicated to the local computer  102 , either by the operator or over the computer network  108 , in step  216 . Once the key is entered into the local computer  102 , the key enables the lock detector  120  to set/reset the lock condition(s) for the software installed on the local computer  102  in step  218 . The process for setting or resetting after the lock condition(s) have been set or reset, the user is permitted to enter animal data in step  220 .  
         [0071]     In addition to installing software locally, the lock condition(s) established by the system  100 , which permit authorized users to use the system, must be periodically reset. Referring to  FIG. 3  of the drawings the reference numeral  300  generally designates the synchronization process between the local computer  102  and remote computer  108 . In step  302 , the software is initiated locally, and each time the software is locally initiated, the synchronization process  300  is executed.  
         [0072]     In step  304 , a determination is made whether specific lock condition(s) have been met. One example of a lock condition is a predetermined date, allowing for expiration after a predetermined period of time, such as 60 or 90 days. If the lock condition(s) have been satisfied (and the software is inoperable), the user is prompted to synchronize in step  306 . At this point, the user is requested to either call or access the remote computer  112  over the computer network  108  in step  308 . If the user chooses to call, a call is directed to an operator in step  310 , who enters data from the user into the remote computer  112  in step  312 . Otherwise, in step  314 , data is communicated from the local computer  102  to the remote computer  112  over computer network  108 .  
         [0073]     If either the data is communicated through an operator or over the computer network  108 , access by the key generator  126  to user data is provided in step  316 , and access by the key generator  126  to animal data is provided in step  318 . Once access is granted, the key is generated in step  320 . The process for generating the key is described above. The key then can be entered into the local computer  102 , either manually by the user or over the computer network  108  in step  322 . The lock detector  120  reads this key, decodes it, and resets the lock condition(s), such as the predetermined expiration date, in step  324 . The process for decoding and resetting or setting the lock condition(s) is described above.  
         [0074]     After the system  100  has been unlocked in step  324  or, alternatively, if the lock conditions have not been met in step  304 , the system  100  is at the user&#39;s disposal. The user can update/synchronize the local DB  114  from data in the remote DB  122  in steps  326  and  328 . Preferably, performance of steps  326  and  328  are server controlled, but system  100  can be configured to allow the client to push/pull data. When client controlled, the user may decide to update the local DB  114  from the remote DB  122  in cases of disaster recovery, and when server controlled, the system  100  automatically updates/synchronizes the local DB  114  with the remote DB  122 . Thus, the system  100 , provides inherent disaster recovery of data in cases where the local computer  102  is damaged or destroyed or where data has been corrupted. During the data synchronization, an Extended Markup Language (XML) document is transmitted to the remote computer  112 ; additional, a similar XML document can be transmitted from the remote computer  112  to the local computer  102  during disaster recovery or otherwise similar situations. Preferably, the XML file is passed to a Structured Query Language (SQL) server running on the remote computer  112 , where the XML file can be parsed.  
         [0075]     When parsing the XML file, each record of an animal or movement can be categorized as follows: unchanged, new, updated, and deleted. To determine the status of each record, a comparison is made between each record and the XML file records. Based on any changes, deletions, updates, and additions, the dates for changes are recorded as well. Once record synchronization is complete, the date and whether the synchronization was successful or failed is recorded into the sync history table  132 .  
         [0076]     The XML file used for system  100  is a basic or terse XML format that does not require any specific parsers or any other third party interpretation or manipulation software. Essentially, the XML file contains attributes and values. This raw XML format allows for easier cross-platform integration and for less data to be transmitted over computer network  108 . Additionally, to maintain data integrity, each piece of editable information or data has three associated time stamps: CDATE, MDATE, and DDATE. The CDATE indicates the date/time of creation. The MDATE indicates the most recent date/time of modification, and the DDATE is the date/time of deletion. The use of these three time stamps helps to prevent data loss.  
         [0077]     The XML file has two main sections: the header and the body. The header is located at the beginning of the XML file. An example of the XML file header is as follows:  
                                   &lt;RH Version=“4.0”&gt;&lt;CustomerInfo&gt;       &lt;CustomerID&gt;43&lt;/CustomerID&gt;       &lt;WGUID&gt;{74039930-1011-4E8C-855D-9157F0527049}&lt;/WGUID&gt;       &lt;MacAddress&gt;00:0E:35:CE:94:F3&lt;/MacAddress&gt;       &lt;RKey&gt;179465209K&lt;/RKey&gt;       &lt;AnimalCount&gt;413&lt;/AnimalCount&gt;       &lt;Events&gt;5326&lt;/Events&gt;       &lt;/CustomerInfo&gt;                  
 
 As can be seen, the header indicates a number of customer specific or local computer  102  specific pieced of information, namely, the version of the local component of the system  100 , an internally generated customer ID number the 32-character alpha numeric password, the MAC address of the computer which generates the XML file, the key, the animal count, and the number of events that have taken place. This data allows the remote computer  112  to perform the necessary checks on the account of the user who is transmitting the XML file. 
 
         [0078]     The body comprises the remainder of the XML file and can be further subdivided into several subcomponents, namely, an animal section(s) and an event type section. The animal section(s) contain information regarding each animal contained within the local computer  102  or remote computer  112 , and the event type section details the specific events that can occur in the animal&#39;s life.  
         [0079]     Turning to the animal section(s) of the body of the XML file, an example of the nested format is as follows:  
                                                                                                                                                                                                                                                           &lt;Animals&gt;                &lt;Animal_ID&gt;1&lt;/Animal_ID&gt;                &lt;Species_Details&gt;                &lt;Breed_Details&gt;                &lt;Events&gt;                &lt;Event_ID&gt;1&lt;/Event_ID&gt;           . . .                &lt;Contact&gt;                &lt;Contact_ID&gt;1&lt;/Contact_ID&gt;           . . .                &lt;Locations&gt;                &lt;Location_ID&gt;1&lt;/Locaiton_ID&gt;           . . .                &lt;Animal_ID&gt;1&lt;/Animal_ID&gt;           &lt;STATUS&gt;N&lt;/STATUS&gt;           &lt;Animal_ID&gt;2&lt;/Animal_ID&gt;                &lt;Species_Details&gt;                &lt;Breed_Details&gt;                &lt;Events&gt;                &lt;Event_ID&gt;1&lt;/Event_ID&gt;           . . .                &lt;Contact&gt;                &lt;Contact_ID&gt;1&lt;/Contact_ID&gt;           . . .                &lt;Locations&gt;                &lt;Location_ID&gt;1&lt;/Locaiton_ID&gt;           . . .                &lt;Animal_ID&gt;2&lt;/Animal_ID&gt;           . . .                &lt;/Animals&gt;                      
 
         [0080]     The first subsection relates to animals&#39; species and breed. Details regarding the species, such as bovine, and breed, such as heifer, including GUIDs, are stored. All of the data contained in the animal section(s) is discuss in further detail in section B below. An example of the species and breed subsections are as follows:  
                                                                                           &lt;Species_Details&gt;       &lt;Species_ID&gt;3&lt;/Species_ID&gt;       &lt;SpeciesType&gt;Bovine&lt;/SpeciesType&gt;       &lt;Species_GUID&gt;{6FB40A72-85C4-F5D392FE}&lt;/Species_GUID&gt;       &lt;Breed_Details&gt;                &lt;Breed_ID&gt;1&lt;/Breed_ID&gt;           &lt;BovineType&gt;3&lt;BovineType&gt;           &lt;CDATE&gt;2006-03-14 17:31:38&lt;/CDATE&gt;           &lt;MDATE&gt;2006-03-14 17:31:38&lt;/MDATE&gt;           &lt;DDATE&gt;2006-03-14 17:31:38&lt;/DDATE&gt;           &lt;Breed_GUID&gt;{C1154BE3-4F1C-45E7-8585-                CDD8C80FC3EC}&lt;/Breed_GUID&gt;                &lt;BreedName&gt;Angus&lt;/BreedName&gt;           &lt;BirthWeight&gt;0&lt;/BirthWeight&gt;           &lt;BirthWeightAcc&gt;0&lt;/BirthWeightAcc&gt;           &lt;WeaningWeight&gt;0&lt;/WeaningWeight&gt;           &lt;WeaningWeightAcc&gt;0&lt;/WeaningWeightAcc&gt;           &lt;YearlingWeight&gt;0&lt;/YearlingWeight&gt;           &lt;YearlingWeightAcc&gt;0&lt;/YearlingWeightAcc&gt;           &lt;TotalMaternal&gt;0&lt;/TotalMaternal&gt;           &lt;Milk&gt;0&lt;/Milk&gt;           &lt;MilkAcc&gt;0&lt;/MilkAcc&gt;           &lt;ScrotalCircumference&gt;0&lt;/ScrotalCircumference&gt;           &lt;ScrotalCircumferenceAcc&gt;0&lt;/ScrotalCircumferenceAcc&gt;           &lt;TreeDepth&gt;0&lt;/TreeDepth&gt;           &lt;CDATE&gt;2005-11-15 18:35:00&lt;/CDATE&gt;           &lt;MDATE&gt;2005-11-15 18:35:00&lt;/MDATE&gt;           &lt;DDATE&gt;2005-11-15 18:35:00&lt;/DDATE&gt;           &lt;Ranch_ID&gt;0&lt;/Ranch_ID&gt;           &lt;Comments&gt;&lt;/Comments&gt;           &lt;BirthHeight&gt;0&lt;/BirthHeight&gt;           &lt;BirthPremise_ID&gt;1&lt;/BirthPremise_ID&gt;           &lt;BirthType_ID&gt;0&lt;/BirthType_ID&gt;           &lt;BirthVigor_ID&gt;0&lt;/BirthVigor_ID&gt;           &lt;BirthPerformedBy_ID&gt;0&lt;/BirthPerformedBy_ID&gt;           &lt;Tattoo&gt;&lt;/Tattoo&gt;           &lt;Brand&gt;&lt;/Brand&gt;           &lt;Color&gt;&lt;/Color&gt;           &lt;RanchID&gt;1&lt;/RanchID&gt;           &lt;Grafted&gt;false&lt;/Grafted&gt;           &lt;Weaned&gt;false&lt;/Weaned&gt;           &lt;Raised&gt;true&lt;/Raised&gt;           &lt;Breeder_ID&gt;0&lt;/Breeder_ID&gt;           &lt;Owner_ID&gt;0&lt;/Owner_ID&gt;           &lt;Comment&gt;&lt;/Comment&gt;           &lt;Picture&gt;&lt;/Picture&gt;                &lt;/Breed_Details&gt;                &lt;Species_Details&gt;            &lt;STATUS&gt;N&lt;/STATUS&gt;                  
 
         [0081]     In the event subsection, the events that have happened for each animal are described. This subsection details the time, place, etc. of events, which were created and stored in the event table, as shown above. Maintaining the list of events allows the animal&#39;s life to be monitored in great detail from birth to death. An example of the events subsection is as follows:  
                                                                                                                                   &lt;Events&gt;                &lt;Event_ID&gt;1&lt;/Event_ID&gt;                &lt;Event_GUID&gt;{15CB5133-7AE3-403E-A4C1-                36EF20651AAF}&lt;/Event_GUID&gt;                &lt;Event_Batch&gt;1&lt;/Event_Batch&gt;           &lt;CDATE&gt;2006-03-14 17:31:38&lt;/CDATE&gt;           &lt;MDATE&gt;2006-03-14 17:31:38&lt;/MDATE&gt;           &lt;DDATE&gt;2006-03-14 17:31:38&lt;/DDATE&gt;           &lt;EventDate&gt;2006-03-14 17:31:38&lt;/EventDate&gt;           &lt;EventType_ID&gt;9&lt;/EventType_ID&gt;           &lt;Animal_ID&gt;1&lt;/Animal_ID&gt;           &lt;PremiseID&gt;1&lt;/PremiseID&gt;           &lt;RanchHand&gt;0&lt;/RanchHand&gt;           &lt;Events_Description&gt;2006-03-14                17:31:38&lt;/Events_Description&gt;                &lt;Comments&gt;&lt;/Comments&gt;           &lt;FTABLE&gt;Bovine&lt;/FTABLE&gt;           &lt;FKID&gt;1&lt;/FKID&gt;           &lt;Ranch_ID&gt;1&lt;/Ranch_ID&gt;                &lt;Event_ID&gt;1&lt;/Event_ID&gt;           &lt;STATUS&gt;N&lt;/STATUS&gt;                &lt;/Events&gt;                      
 
         [0082]     In the contact subsection, the list of owner contact information associated with each animal is described. Maintaining the contact information list allows the animal&#39;s ownership to be tracked from birth to death. An example of the contact subsection is as follows:  
                                                                                           &lt;Contacts&gt;                &lt;Contact_ID&gt;1&lt;/Contact_ID&gt;                &lt;Contact_GUID&gt;{52C1001B-7568-4E17-BEC6-                57C8570E50AF}&lt;/Contact_GUID&gt;                &lt;CDATE&gt;2006-03-14 17:30:11&lt;/CDATE&gt;           &lt;MDATE&gt;2006-03-14 17:30:11&lt;/MDATE&gt;           &lt;DDATE&gt;2006-03-14 17:30:11&lt;/DDATE&gt;           &lt;FirstName&gt;John&lt;/FirstName&gt;           &lt;MiddleName&gt;&lt;/MiddleName&gt;           &lt;LastName&gt;Patti&lt;/LastName&gt;           &lt;Ranch_ID&gt;1&lt;/Ranch_ID&gt;           &lt;ContactRole&gt;0&lt;/ContactRole&gt;           &lt;Email&gt;&lt;/Email&gt;           &lt;Cell&gt;&lt;/Cell&gt;           &lt;Breeder&gt;true&lt;/Breeder&gt;           &lt;Owner&gt;true&lt;/Owner&gt;           &lt;Seller&gt;true&lt;/Seller&gt;           &lt;Customer&gt;false&lt;/Customer&gt;           &lt;Vendor&gt;false&lt;/Vendor&gt;           &lt;ServiceProvider&gt;false&lt;/ServiceProvider&gt;           &lt;Vet&gt;false&lt;/Vet&gt;           &lt;Employee&gt;true&lt;/Employee&gt;           &lt;HomePhone&gt;&lt;/HomePhone&gt;           &lt;OfficePhone&gt;&lt;/OfficePhone&gt;           &lt;FaxPhone&gt;&lt;/FaxPhone&gt;           &lt;PriStreetAddress&gt;901 Main St, Ste 7100&lt;/PriStreetAddress&gt;           &lt;PriCity&gt;Dallas&lt;PriCity&gt;           &lt;PriState&gt;TX&lt;/PriState&gt;           &lt;PriZip&gt;75202&lt;/PriZip&gt;           &lt;SecStreetAddress&gt;&lt;/SecStreetAddress&gt;           &lt;SecCity&gt;&lt;/SecCity&gt;           &lt;SecState&gt;&lt;/SecState&gt;           &lt;SecZip&gt;&lt;/SecZip&gt;           &lt;Website&gt;&lt;/Website&gt;                &lt;Contact_ID&gt;1&lt;/Contact_ID&gt;           &lt;STATUS&gt;N&lt;/STATUS&gt;           . . .            &lt;/Contacts&gt;                  
 
         [0083]     In the location subsection, the list of locations or premises where the animal has been located throughout its life is described. Maintaining the location information list allows the animal&#39;s location from birth to death to be tracked to maintain compliance with the NAIS. An example of the location subsection is as follows:  
                                                                                                               &lt;Locations&gt;                &lt;Location_ID&gt;1&lt;/Location_ID&gt;                &lt;Location_GUID&gt;{56DB4AA8-8457-4489-9F89-                6FB71FAF0BED}&lt;/Location_GUID&gt;                &lt;LocationName&gt;Barn&lt;/LocationName&gt;           &lt;LocationDesc&gt;Barn&lt;/LocationDesc&gt;           &lt;Ranch_ID&gt;1&lt;/Ranch_ID&gt;           &lt;CDATE&gt;2006-03-14 17:30:11&lt;/CDATE&gt;           &lt;MDATE&gt;2006-03-14 17:30:11&lt;/MDATE&gt;           &lt;DDATE&gt;2006-03-14 17:30:11&lt;/DDATE&gt;           &lt;Comments&gt;Created at startup.&lt;/Comments&gt;                &lt;Location_ID&gt;1&lt;/Location_ID&gt;           &lt;STATUS&gt;N&lt;/STATUS&gt;           . . .                &lt;/Locations&gt;                      
 
         [0084]     Now turning to the event type section of the body, an example is as follows:  
                                                                                           &lt;Events&gt;                &lt;Event_ID&gt;1&lt;Event_ID&gt;                &lt;EventType_ID&gt;1&lt;EventType_ID&gt;           &lt;EventType_GUID&gt;{EF5FB5AF-FEE6-4185-82A7-           05E63AAA6EED}&lt;/EventType_GUID&gt;           &lt;CDATE&gt;2005-11-15 18:34:33&lt;/CDATE&gt;           &lt;MDATE&gt;2005-11-15 18:34:33&lt;/MDATE&gt;           &lt;DDATE&gt;2005-11-15 18:34:33&lt;/DDATE&gt;                &lt;STATUS&gt;N&lt;/STATUS&gt;           . . .                &lt;/Events&gt;                      
 
 The Events section contains the user created events. The data contained within the event section correlates to the events table described above, where the user is able to generate different events that can happen in the life of an animal. Each time synchronization occurs, these events are transmitted with the XML file so that the most recent table of events is maintained. 
 
         [0085]     Now turning back to  FIG. 3 , if desired, new data can be entered into the system  100  in step  332 . Specifically, a determination is made by the user if new data is to be entered in step  332 , and if the user desires to enter data, then data is entered in step  334 . Otherwise, operation of the system is terminated.  
         [0086]     B. Managing Animal Information  
         [0087]     Referring to  FIGS. 4-15  of the drawings, reference numerals  400 - 1500  generally depict different menus that a user can access that show the fields available in the local DB  114  (and in the remote DB  122 ), which include the NAIS required fields. Specifically, located at the top of each menu are some of the NAIS required fields, namely, animal identification and location identification fields. The fields that can be associated with the animal identification are the EID field  402 , Visual Identification Number (VID) field  403 , registration number field  404 , and other identification field  406 . The field associated with the location is the location field  408 .  
         [0088]     Each of the EID field  402 , VID field  403 , registration number field  406 , and other identification field  406  can be individually or alternatively associated with an NAIS-compliant identifier. Specifically, the remote DB  122  can cross reference any combination of these fields with an NAIS compliant identifier so that the movements and/or health of the animal associated with a particular identifier can be easily tracked.  
         [0089]     With respect to the location field  408 , users typically do not remember the different PIDs that have been assigned to different locations where animals are stored or reside. As shown in  FIGS. 4-15 , “North Field” is the information contained within the location identifier. Location field  408 , thus, allows the user to enter a location of an animal on either a specific premise, a ranch, or other location with a PID.  
         [0090]     Also included with menus  400 - 1500  are other fields containing animal information, which may not be necessary for NAIS compliance but may instead be useful to the user. Generally, these fields contain physical characteristics for a given animal. Specifically, in the example depicted in  FIGS. 4-15 , an animal type field  410 , a birth date field  412 , a last weight field  414 , a current age field  416 , and an Average Daily Gain (ADG) field  418  are located at the top of menus  400 - 1500 . Other fields, such as sex, can also be included.  
         [0091]     Turning to  FIG. 4 , menu  400  generally depicts a general animal information menu. This menu is chosen when the user selects the animal info tab  420 . Additionally, as shown in  FIG. 16 , information for a new animal corresponding to the data contained in menu  400  can be entered in menu  1600 . However, menu  1600  also includes an array  1602  that contains a list of animals contained in local DB  114  and/or remote DB  122 .  
         [0092]     A variety of pieces of information that are associated with a specific animal are entered and/or modified on menu  400 . As shown, menu  400  is composed of five blocks that each have one or more changeable fields: identification block  422 , breed and sex block  424 , change EID/VID block  426 , birth info block  428 , and appearance block  430 .  
         [0093]     Generally, information contained within the identification block  422  includes easily changeable reference information. As can be seen in  FIG. 4 , the identification block  422  includes a changeable registration number field  404 , a changeable other identification field  406 , and a name field  432 .  
         [0094]     The breed and sex block  424  includes information regarding the animal&#39;s breed and gender. Knowledge regarding these specific characteristics allow for both categorizing as well as determining genetic predispositions. Block  424  includes a breed field  434 , type field  436 , and a sex indicator  438 . The breed field  434  employs a pull-down menu for the user to select a specific breed from a particular list so as to avoid errors in referencing the correct breed. An example of a breed is Charolais, which is a breed of cattle. The type field  436  also includes a pull-down menu and allows the user to choose specific type, such as a heifer calf. Finally, the sex indicator  438  allows the user to select the animal&#39;s gender.  
         [0095]     The birth info block  428  allows the user to track birthing characteristics of a particular animal. Block  428  includes a birth date field  440 , a birth location field  442 , an ease of birth field  444 , a type of birth field  446 , a vigor field  448 , a weight field  450 , a height field  452 , a dam field  454 , and a sire field  456 . The birth date field  440  has a pull-down menu, which allows the user to select a day of birth of an animal. The birth location field  442 , which is also chosen from a pull-down menu, allows the user to select an area having an associated PID from a list that is more easily remembered than a PID number. Additionally, ease of birth field  444 , which is also chosen from a pull-down menu, describes the type of assistance needed during the animal&#39;s birth, for example “no assistance.” The type of birth field  446  indicates the method of conception or the technique for carrying the animal to term, which is chosen from a pull-down menu. For example, as shown in menu  400 , the type of birth field indicates an “embryo transfer.” The vigor field  448  is chosen from a pull-down menu and indicates the animal&#39;s condition or vigor during its early development, for example menu  400  indicates “nursed with assistance.” The weight field  450  and height field  452  maintain the current height and weight of the animal in whatever units that the user chooses, such as pounds and feet/inches. Finally, the dam field  454  and a sire field  456  indicate the mother and father, respectively, and can reference a number of indicators associated with the animal&#39;s dam and sire.  
         [0096]     The appearance block  430  includes a variety of other physical characteristics of the animal. As shown, block  430  has a tattoo field  458 , a brand field  460 , and a color field  462 . The tattoo field  458  includes a description of an identification tattoo located on the body of the animal. The brand field  460  includes a description of a brand located on the body of the animal, and the color field  462  includes a description of the color of the animal, such as spotted or white.  
         [0097]     Finally, in the unusual circumstances, such as the destruction or loss of an animal&#39;s EID tag, the change EID/VID block  426  allows the user to change the EID or VID of the animal. It is currently believed that in the event of such loss or destruction, a new EID would be assigned to the animal (as opposed to creating a new tag with the same EID) with proper documentation of the loss or destruction of the tag. Because EID number is needed for compliance with the NAIS and a change in an animal&#39;s EID would be the exception rather than the norm, an ability to change this number should include a protective measure to prevent inadvertent changes. Therefore, the new EID field  464  has a button  466  associated with it that must be activated to allow the user to manually enter in a new EID. The new VID field  468 , on the other hand, allows the user to enter in another VID.  
         [0098]     Once all of the changes have been made, the system  100  does not necessarily automatically save the entered information. The user, to save these changes, should activate the save button  470 . By activating the save button  470 , the user-made changes are reflected in the local DB  114 .  
         [0099]     Turning to  FIG. 5 , menu  500  generally depicts an animal breeding information menu. Menu  500  is chosen when the user selects the breeding tab  520 . Typically, menu  500  is used to cross-reference or otherwise determine or track offspring of the selected animal. Specifically, the menu depicted in  FIG. 5  shows breeding for a female, but if a male&#39;s information is accessed, the format would change. However, the information for a male would indicate the females which the male has bred with, and similar information to what is seen in  FIG. 5  is accessed.  
         [0100]     Two key pieces of information that are helpful in livestock management are the type of breeding and the breeding bull. The type of breeding is reflected in field  522 , which is a selector button that allows the user to select between artificial insemination, embryo transfer, and pasture exposure. In each case the bull or father is indicated in field  524 , in which the bull is selected from a pull-down menu. Both artificial insemination and embryonic transfer are invasive techniques in which the user can precisely document the events. However, during pasture exposure, precise details about conception may not be available. Thus, if conception occurs during pasture exposure, the exposure end and beginning dates are reflected in fields  526  and  528 , which are each selected from pull-down menus. In cases where breeding was directly observed, the user can check the box marked observed breeding  530 . Additionally, the breeding location can be stored in field  532 .  
         [0101]     In addition to entering information regarding a specific breeding event, information regarding offspring and other breeding events can also be entered and stored. Specifically, array  534  is included. Array  534  allows the dates of conception, the bull, the type, description, embryo name, and end date (birth date or miscarriage date). Thus, the user is able to easily access the data for breeding events of a given animal by selecting the breeding tab  520 .  
         [0102]     Turning to  FIG. 6 , menu  600  generally depicts an offspring or calving menu. This menu is chosen when the user selects the calving history tab  620 . Specifically, tab  620  includes an array  622  that indicates the offspring of a given animal. The array  622  has an EID field  624 , a VID field  626 , a birth date field  628 , a registration number field  630 , a sex field  632 , a birth weight field  634 , and a sire field  636 . Thus, the data for the offspring of a given animal can be easily determined and/or cross-referenced.  
         [0103]     Turning to  FIG. 7 , menu  700  generally depicts a physical measurements menu. This menu is chosen when the user selects the measurement tab  720 . Specifically, the tab  720  includes a carcass measurement block  722 .  
         [0104]     Once the animal has been slaughtered, measurements associated with the carcass may help indicate potential problems in a specific line of animals or within the process of growing the livestock. In other words, carcass data from a variety of slaughtered animals can help improve the overall yield of livestock crops. Within block  722  are a variety of physical measurements that can be added and stored in the local DB  114  and/or the remote DB  122 , which are reflected by different fields. Specifically, the fields utilized in the carcass measurement block are the carcass pelvic horizontal field  726 , the pelvic vertical field  728 , the pelvic area field  730 , the gestation length field  734 , the frame score field  736 , the tenderness field  738 , the carcass value field  740 , the retail cuts field  742 , the retail cuts acc field  744 , the carcass weight field  746 , the carcass weight acc field  748 , the intermuscular fat field  752 , and the intermuscular fat acc field  754 . Each of these measurements is common when measuring the carcass of a slaughtered animal. Additionally, all information can be saved by activating the save button  750 .  
         [0105]     Turning to  FIG. 8 , menu  800  generally depicts and maintains animal location information. This menu is chosen when the user selects the movement tab  820 . For a rancher, farmer, or livestock manager to be compliant with the NAIS, animal movements between different specified locations must be maintained. Movements of a given animal can be monitored and or modified through the use of tab  820 . Specifically, tab  820  includes a movement block  822  and a movement history array  824 .  
         [0106]     When an animal is moved from one location to another the user can simple enter the new location into the system  100 . Entry of data into the system  100  is accomplished through entering the movement date in date field  826 , which is chosen from a pull-down menu. The location, which is the simple name associated with a registered PID or section of an area within a registered PID, is in a field  828 , which is chosen from a pull-down menu. In addition to selecting the date of movement and the location of movement to, the user can enter in a comment in field  830 . Once the data is entered into block  822 , the user can save the information by activating the move animal button  832 .  
         [0107]     Upon entry of information in block  822 , changes in animal movement are reflected in the array  824 . The global changes in movement of a particular animal can be easily seen in array  824 . As an example, which is shown in  FIG. 8 , the date of movement for a particular animal is Jan. 30, 2006 and the location of movement of the animal is North Field. This specific data can be stored in local DB  114  and/or the remote DB  122  for future delivery to the NAIS, thus, allowing the user to be compliant with the NAIS.  
         [0108]     Turning to  FIG. 9 , menu  900  generally depicts a palpation menu. This menu is chosen when the user selects the palpation tab  920 . In addition to physical locations and physical characteristics of an animal, the medical information can also be important. In particular, menu  900  allows a user to document palpation. Specifically, menu  900  includes a palpation block  922  and an array  924 .  
         [0109]     When palpation occurs, the user can precisely document the procedure. In particular the user can document the date in date field  926 , who performed the palpation in the performed by field  928 , the status in the palpation status field  930 , and the location in the palpation location field  932 . In addition to all of this information, a user can include any desired comments in the comment field  934 . Once all of the desired data is entered into block  922 , the user can save the information to array  924 .  
         [0110]     Array  924  allows for information regarding an animal&#39;s palpations to be recorded so as to monitor the health and any changes therein. These palpations can be stored in the local DB  114  and/or the remote DB  122 .  
         [0111]     Turning to  FIG. 10 , menu  1000  generally depicts a sales menu. This menu is chosen when the user selects the sell tab  1020 . Specifically, menu  1000  allows the user to document the sale of a particular animal. Within menu  1000 , the user can enter the date of sale in the date sold field  1022 , the party to whom the animal was sold in the sold to field  1024 , the invoice in the invoice number field  1026 , the gross price in the gross price field  1030 , the marketing method (such as an auction) in the marketing method field  1032 , and a marketing cost in the marketing cost field  1034 .  
         [0112]     Turning to  FIG. 11 , menu  1100  generally depicts a termination information menu. This menu is chosen when the user selects the termination tab  1120 . Specifically, menu  1100  allows the user to document the termination data of an animal. Within menu  1100 , the user can enter the termination date in the date of death field  1122 , the person who slaughtered the animal in the “performed by” field  1124 , the reason for the termination in the “reason” field  1126 , the calf death loss in the calf death loss field  1128 , and the death weight in the death weight field  1130 .  
         [0113]     Turning to  FIG. 12 , menu  1200  generally depicts a treatment information menu. This menu is chosen when the user selects the treatment tab  1220 . In addition to palpation, other detailed medical treatment information is also generally available on the system  100  through menu  1200 . Menu  1200  includes a treatment block  1222  and a treatment array  1224 .  
         [0114]     Each time an animal is medically treated, the user can document the treatment by entering data into block  1222 . Specifically, the user can enter the date of treatment in the date field  1226 , the physical location of the treatment in the treatment location field  1228 , the person who performed the treatment in the “performed by” field  1230 , the temperature at the time of treatment in the treatment temperature field  1232 , the dosage of the treatment in the dosage field  1234 , the treatment route (such as oral or intravenous) in the route field  1236 , the manufacturer of the treatment in the manufacturer field  1238 , the treatment medication type in medication field  1240 , diagnosis in the diagnosis field  1242 , withdrawal date in the withdrawal date field  1244 , and a booster in the booster date field  1246 . Comments can also be entered by the user in the comment field  1248 . Once entered, the user can save the information into array  1224  by activating the save button  1252  and can add a new treatment by activating the new treatment button  1250 .  
         [0115]     Turning to  FIG. 13 , menu  1300  generally depicts a weight menu. This menu is chosen when the user selects the weight tab  1320 . Over the lifetime of an animal the weight can vary quite drastically, and it can be an indicator of the type of meat (i.e. amount of marbling, etc.). Thus, the weight of the animal can be a very good indicator of the potential yield of a carcass.  
         [0116]     When entering and monitoring the weight of an animal, the user employs weight block  1322  and array  1324 . Block  1322  allows the user to enter period weight data by providing a date field  1326 , a weight field  1328 , and a comment field  1330 . Once the data is entered into the fields of block  1322 , the user can save the data to array  1324  by activating the save button  1333 . Thus, the array  1324  allows the user to monitor animal weight as a function of time.  
         [0117]     Turning to  FIGS. 14 and 15 , menus  1400  and  1500  generally depict a weaning menu and a yearling menu, respectively. These menus are chosen when the user selects the weaning tab  1420  or yearling tab  1520 , respectively. Each of these two menus allows for measurements at particular times during the development of an animal, namely at weaning and when it reaches its first birthday.  
         [0118]     For each of the weaning menu  1400  and yearling menu  1500 , the measurements taken are similar. Dates for each are recorded in date fields  1422  and  1522 . Weight at each event are recorded in the weight fields  1424  and  1524 . The adjusted weights are recorded in the adjusted weight fields  1426  and  1526 . The person who performed the measurements is recorded in the performed by fields  1428  and  1528 . The hip, navel, and scrotal measurements are recorded in fields  1430 ,  1432 ,  1434 ,  1530 ,  1532 , and  1534 . Additionally, comments are recorded in the comments fields  1436  and  1536 . Once the data is entered, the user can save the respective data by activating a save button  1438  and  1538 .  
         [0119]     C. Managing Animals and Their Movements  
         [0120]     Referring to  FIGS. 17 and 8  of the drawings the reference numerals  1700  and  800  generally refer to menus for movements of livestock. In particular, menu  1700  details batch movements of livestock, whereas menu  800 , which is described above, detailed movements of individual animals.  
         [0121]     As noted above, one particular requirement for compliance with the NAIS is reporting animal movements within a specified time period (presently 48 hours). Thus, easy notation and updates of animal movements can be important to system  100 . If an entire herd or group of animals is being moved to a different location (which has a different PID), it would be time-consuming to transfer each individual animal. Therefore, menu  1700  allows for batch movements of animals.  
         [0122]     Upon a change in status, of an animal a user can choose whether an animal is to be or has been moved or sold by activating selector  1708 . Information pertaining the sale or movement of animals contained within the movement block  1702 , array  1704 , and array  1706 . Specifically, movement block  1702  allows that user to enter the date of movement in date field  1710 , the location to which animals have been moved in movement field  1712 , and any comments in the comment field  1714 .  
         [0123]     Changes to the movement are reflected in arrays  1704  and  1706 . Array  1704  denotes the location from which the animals are moving and includes an expandable location field  1716  that is associated with the moved animals that are indicated in the EID field  1718  and VID field  1720 . Array  1706  denotes the location to which the animals are moving and includes an expandable location field  1722  that is associated with the moved animals that are indicated in the EID field  1724  and VID field  1726 .  
         [0124]     D. Managing Locations  
         [0125]     Referring to  FIGS. 18A, 18B ,  19 A,  19 B, and  20  of the drawings, reference numeral  1800  depicts the location menu. The location menu  1800  allows the user to enter or edit locations/pastures where animals may be present. Because the NAIS requires that each location have a PID, users are responsible for maintaining records of what livestock have been present at different locations, which each have a PID.  
         [0126]     Remembering lengthy PID numbers, though, can be very difficult, especially if a user is maintaining records for multiple locations that each individually have a PID. Additionally, each of the PIDs may be further subdivided, and thus, the user can give each location, subdivision, or area with a PID a simple and more easily remembered name by using menu  1800 . The local DB  114  and remote DB  122  of system  100 , to make tracking simpler, have created fields for ranches and other areas that may be further subdivided, so that large ranchers/farmers can employ the system  100  as well as the smaller rancher/farmer.  
         [0127]     In editing, adding, or deleting locations, the user selects a ranch from a pull-down menu in the ranch field  1804 . The ranches listed in the pull-down menu are added to the system  100  (in local DB  114  and/or remote DB  122 ) prior to the addition of different locations. After selecting the ranch, the location array  1806  is able to recall all locations that have been saved in the system  100  corresponding to the PID for that ranch. As can be seen in  FIGS. 18A-20 , there are four locations listed, as an example: North Field, South Field, East Field, and West Field.  
         [0128]     To add a location for a selected ranch, a user would make a selection in the location information block. As shown in  FIGS. 18A and 18B , the user would activate the “Add New” button  1814 . By activating button  1814 , menu  1802  would come up on the screen. Menu  1802  allows the user to enter in the name of the location in field  1810  and enter a description, which would include a PID, in the description field  1812 . The system  100  would then be able to parse the description field  1812  and associate the PID with the name given by the user. Thus, the system  100  could then easily make electronic reports to the NAIS.  
         [0129]     To edit a location for a selected ranch, a user highlights and select the name of the location in array  1806 . This selection would bring up the location name and description saved in fields  1810  and  1812  in block  1808 , which would not be changeable. As shown in  FIGS. 19A and 19B , to make changes to the selected location, the user would activate the “Edit” button  1816 . Activation of button  1816  would bring up menu  1802 , which would allow the user to access and change the information stored in fields  1810  and  1812 .  
         [0130]     To delete a location for a selected ranch, a user highlights and select the name of the location in array  1806 . This selection would bring up the location name and description saved in fields  1810  and  1812  in block  1808 , which would not be changeable. As shown in  FIG. 20 , the user would then activate the “Delete” button  1818 . This deletion would then be reflected in local DB  114  and/or remote DB  122 . However, records regarding this change would not be permanently deleted, but instead, record of the date and time of the deletion would be recorded in case the deleted information would need to be recalled at a later time due to error or compliance with a regulatory regime, such as the NAIS. Once the user has completed changes to the location, the user can discontinue use of menu  1800  by activating the “Exit” button  1820 .  
         [0131]     E. Reports  
         [0132]     Referring to  FIG. 21  of the drawings, the reference numeral  2100  generally designates a reporting menu. When a user desires to generate a report from data stored in the local DB  114  and/or the remote DB  122 , menu  2100  allows the user to generate a variety of different reports.  
         [0133]     In particular, menu  2100  is subdivided into several blocks: report block  2102 , date block  2104 , and title block  2106 . In the report block  2102 , the user is able to select among various reports by use of a selection button  2110 . As shown in  FIG. 20 , there are eight reports from which the user can select, and, as an example, the report for “Worked Cattle” has been selected. Generally, the categories for which reports can be generated are predetermined; however, system  100  can be configured to have completely adjustable categories. Once a report has been selected, the user can select the dates from which data is to be compiled into the report by choosing a beginning date and an ending date in the date fields  2112  and  2108 . Additionally, the title block  2106  allows the user to enter titling information for the report. Preferably, the default settings for the title block information include the name of the report as it appears in the report block  2102  and the date on which the report is printed.  
         [0134]     The present invention as described above allows users to be able to easily and inexpensively use a computer system to track livestock in near real-time and maintain compliance with the NAIS. Thus, smaller farmers, ranchers, or livestock managers, who comprise 80% of the cattle produced in Texas, are able to comply with the NAIS without investment in the latest computing technology, broadband, etc. Additionally, larger organizations can also use the present invention as described above to remain in compliance with the NAIS with a fully-featured tracking program making efficient use of information technology.  
         [0135]     F. On-Site Data Entry  
         [0136]     In addition to allowing farmers, ranchers, or livestock managers to enter information in the system  100  after tasks have been performed or are being performed with a standard keyboard and mouse, the system  100  allows for on-site data entry by use of a touch-sensitive screen. Referring to  FIG. 22  of the drawings, the reference numeral  2200  generally refers to the working menu.  
         [0137]     When a person is working in the field with one or more animals, it may oftentimes be more convenient to have a screen in which data can be entered without the use of other extraneous input equipment, such as mice and keyboards, because of the environment in which the data entry is occurring. When working with cattle, the environment is oftentimes very dirty, dusty, or muddy, which can substantially affect the functionality of extraneous data entry equipment, whereas a screen can simply be wiped off. A touch-sensitive screen often can be manipulated more easily than a keyboard or mouse, for example while wearing gloves.  
         [0138]     To perform this task, a different menu is needed to enter data into the system  100 , namely menu  2200 . As detailed with  FIG. 4  above, the top of the menu includes specific characteristic and identification information associated with a particular animal. The fields that can be associated with the animal identification or characteristic information are the EID field  402 , VID field  403 , registration number field  404 , other identification field  406 , the location field  408 , the animal type field  410 , the birthdate field  412 , the last weight field  414 , the current age field  416 , and the ADG field  418 , which are located at the top of menus  2200 .  
         [0139]     Also included with menu  2200  are a number arrays  2202  and  2204 . Array  2202  is an array of cattle in a current batch. The batch is a selected number of animals where information (such as weight) regarding each of the animals is being updated. The batch stored in array  2202  is a subset of the total number of animals in system  100 . Array  2204  is the global array of animals, of which the user can select particular animals to be added to a batch, which is reflected in array  2202 .  
         [0140]     Some other important information also needs to be included, namely the person performing the tasks and the time/date. In field  2206 , the date (and time) of the event is recorded. In field  2208 , the person who performed the task is selected from a pull-down menu.  
         [0141]     The working portion of menu  2200 , however, are the information buttons: brand button  2210 , castrate button  2212 , dehorn button  2214 , move button  2216 , palpate button  2218 , treat button  2220 , wean button  2222 , weigh button  2224 , yearling button  2226 , All form button  2228 , and EID button  2230 . Each of these buttons is conspicuously located on the menu, allowing the user to easily identify the desired task to be performed on a specific animal. Additionally, each of these buttons can be configured to be accessed through a keyboard, mouse, or other input device in addition to being accessible through a touch sensitive screen.  
         [0142]     Each of these different buttons allows the user to enter/update the desired data in the system  100 . The brand button  2210  allows to the user to bring up a menu, such as menu  400 , that allows entry of brand information. The castrate button  2212  allows the user to record the time and date of a castration. The dehorn button  2214  allows the user to enter in the time and date of a dehorning. The move button allows the user to bring up a menu, such as menu  800 , to record animal movements. The palpate button  2218  allows the user to bring up a menu, such as menu  900 , to record palpation information. The treat button  2220  allows the user to bring up a menu, such as menu  1100 , to record treatment information. The wean button  2222  allows the user to bring up a menu, such as menu  1400 , to enter weaning information. The weigh button  2224  allows the user to bring up a menu, such as menu  700 , to record an updated weight. The yearling button  2226  allows the user to bring up a menu, such as menu  1500 , to record yearling information. The all forms button  2228  allows to user to access other buttons not available on menu  2200  by bringing up other menus, such as menu  400 . The EID button  2230  allows the user to bring up a menu, such as menu  400 , to change an EID if necessary.  
         [0143]     When an animal&#39;s information is brought up, either through manual entry or by electronic means, to be updated, the buttons which may be accessed are tailored specifically for the animal. For example, if a cow&#39;s information is to be updated, the castrate button  2212  will not be active. Thus, menu  2200  is dynamic and automatically updates when an animal is selected.  
         [0144]     By having menu  2200 , the flexibility of the system  100  is greatly increased. Specifically, menu  2200  enables the system  100  to operate on a palm computer or personal digital assistant (PDA). Another feature that allows for increased flexibility is the ability to have the system operate over different platforms, such as Windows® XP, Windows® CE, Linux®, MacOS®, and so forth. The menus can also include a multiple language feature to allow for persons who speak different languages, such as Spanish and English, to access and update data.  
         [0145]     Having thus described the present invention by reference to certain of its preferred embodiments, it is noted that the embodiments disclosed are illustrative rather than limiting in nature and that a wide range of variations, modifications, changes, and substitutions are contemplated in the foregoing disclosure and, in some instances, some features of the present invention may be employed without a corresponding use of the other features. Many such variations and modifications may be considered obvious and desirable by those skilled in the art based upon a review of the foregoing description of preferred embodiments. Accordingly, it is appropriate that the appended claims be construed broadly and in a manner consistent with the scope of the invention.