DataMajor is a reporting database that can be used to generate ad-hoc and stored reports on your practice data. It is different to the existing reports in that it uses a standard 'SQL' query language allowing Premvet AND other applications to look at the data, the data is highly 'de-normalised' allowing for very fast reporting. An Excel Add-In is included.
DataMajor covers the following situations (or combination of):
DataMajor is designed as a management tool, it allows you to monitor key indexes to see how well you are doing and keep you updated on your real profitability or lack thereof - they include:
In addition, you can look at:
The database is restricted to 'recent' animals, that is animals/client seen in the last five full calendar years. See 'Generating the Snapshot' for details of changing these defaults.
/usr/local resides (Depends on database size).
The character-based interface to DataMajor will be found on the reports sub-menu and is protected via access permission 123. You have the options:
| Stored Reports | Run one of the stored reports on the system |
|---|---|
| Ad-Hoc Reports | Create a new report based on clinical work. |
| Management | Reports based on management record information |
| Custom | Reports that generate specific results |
| Utilities | Utilities |
The reports that can be run fall into three general categories:
Reports that fall into category 'a' are already on your machines, which are, number of clients you have, breakdown by Species/Sex/Breed, your turnover etc. These are all accessed from the menu option 'Stored Reports'; currently the options are sub-divided as per this page. Most of the reports are self-explanatory.
As all the reports take a very short time to run, we recommend you run a few of these reports before going any further to get an idea of what DataMajor is about. Additionally, look at them on the screen first and then re-run to the printer if you want a paper copy.
Select the Stored Reports menu option, you will see the top level index that 'groups' similar reports together, select with the Arrow Keys as required. As you move around the index's you will notice the system will automatically return to the last 'group' you were in. To return to the top level index select the 'Back to Menu' option.
The indexes can be altered by your practice manager (See
Technical Stuff
later on) and you can alter which report is present, what it is called
and as each 'menu group' can call others, you can add shortcuts to suit
your requirements.
There are two sub-menus Financial and Update, one will let you report on the financial side of the business and may contain information you do not wish all staff to have access to. The update option allows you to make changes back into Premvet (see Later Section for details), and again you do not want everyone to access it. Both these options are controlled via access permissions.
| 48 | Access to Financial Sub-Menu |
|---|---|
| 130 | Access to Update Sub-Menu |
When you run any of the reports you have the options:
| Screen | Display the results (You can scroll up/down and left/right with the arrow keys) |
|---|---|
| Send the results to the printer (This will try to fit as much as possible on the paper but will 'chop' the report if too wide) | |
| File | The results will be converted to one of HTML, CSV or TSV and sent to the text folder HTML - Suitable for displaying with a Web Browser CSV - Comma Separated - Suitable for loading into a spreadsheet TSV - Tab Separated - Suitable for loading into a spreadsheet use Premvet Main Menu -> Text -> CSV (or Reports -> Windows Export Files) -> Scan to load automatically (The filename will be the same as the query with .html, .csv or .tsv added). |
| You may want to send the results to your house PC or to a associate.i You have the same options as in File above. You have the option to set the mail address, the subject and whether you want to go into a mailer (mutt) to add comments or alter any details prior to sending. | |
| Windows | Rather than leaving DataMajor to access excel (see file) this option will automatically load Excel for you. |
| Browser | Rather than leaving DataMajor to access a web browser, this option will automatically load it for you and present the results as html. |
When any report is run the results will be displayed on the screen, you can use the arrow keys to scroll up/down, if the report extends off the right of the screen use the left/Right arrows to scroll. PageUp/Down will move a page at a time. To search within the text use /text-to-find to look for it - the search is normally case insensitive and we would recommend you always enter the text to look for in LOWERCASE. Pressing 'q' at any time will exit the screen.
A full list if the stored reports as of May 2003 can be found here.
This option is very similar to 'Client Lists' within Premvet, that is you have a selection screen, enter the details to search for and the report will be generated.
When selected you will see a screen similar to:
1.. Client or Animal : Animal 2.. Unused : 3.. Unused : 4.. Species : Ignore 5.. Breed : Ignore 6.. Status : Ignore 7.. Status to ignore : None 8.. Sex (Male/Female): Ignore 9.. Neutered (Yes/No): Ignore 10. Surgery number : Ignore 11. Alive or Dead : Ignore 12. Animal age : Ignore 13. Send bill field : Ignore 14. Insured (Yes/No) : Ignore 15. Bad Debt : Ignore 16. Visits : Ignore 17. Spend : Ignore 18. Weight : Ignore 19. Height : Ignore 20. No. of Animals : Ignore 21. Colour : Ignore 22. Address : Ignore 23. Balance : Ignore 24. Special (1) : Ignore 25. Special (2) : Ignore 26. Special (3) : IgnoreSelect option to change, <*> to reset, <RETURN> to continue .. Reset with an '*', Highlite options are used in search
Select the option to change and you will be prompted for the additional information.
The details displayed will vary based on the criteria you selected, they will all however, include the full client name and address to allow the clients to be mailed.
While the screen does resemble 'Client Lists' it does handle some of the fields in a different manner. The options are:
| 1 | Client or Animal based | Do you want a line per animal or a line
per client?
|
| 4 | Species | Species to include, the text entered MUST match the start of
the species, that is 'can' will match 'canine' but 'aine' will not work.
|
| 5 | Breed | Breed to look for, the text entered will be matched anywhere
in the breed.
|
| 6 7 | Status and Status to Ignore | Include/Ignore specific status codes.
|
| 8 | Sex (Male/Female) | The sex of the animal either Male or Female.
|
| 9 | Neutered (Yes/No) | Has the animal been neutered, Yes or No.
|
| 10 | Surgery number | Surgery the animal usually attends.
|
| 11 | Alive or Dead | List if the animal is Alive or Dead.
|
| 12 | Animal age | Age of the animal, you should enter a greater than
symbol (>) for older than or less than (<) for younger e.g. all
animals over 7 would be >7 animals under one year of age would be <1.
|
| 13 | Send bill field | Reports on the Send Bill field, this will be
either Yes or No.
|
| 14 | Insured (Yes/No) | Is the animal insured Yes or No?
|
| 15 | Bad Debt | Is the CLIENT a bad debt, if the client is marked as a bad debt all animals belonging to that client will also be marked as a bad debt.
|
| 16 | Visits | The number of Visits (Transactions) taken place for the
CLIENT during the last calendar year and up to the date of the scan. That is, if run in March 2002 this will relate to the transaction since Jan 2001. If this option is selected the report will switch over to be client based.
|
| 17 | Spend | The amount the CLIENT has spent in the current calendar
year and the last full calendar year. As with the Visits this option
will force the report to be client based.
|
| 18 | Weight | Weight of the animal, this can be greater than (>) less
than (<) or equal to a specific weight.
|
| 19 | Height | Height of the animal, this can be greater than (>) less
than (<) or equal to a specific weight. Applies to Equine records only.
|
| 20 | No. of Animals | How many animals does a CLIENT have, you can use
this to list all CLIENTS that have more than (>) a number e.g. >20
would list all client with more that 20 animal. As with options 16
and 17 this will switch the report to be client based.
|
| 21 | Colour | The colour of the animal, the text entered will be matched
anywhere in the colour field e.g. you enter 'tan' and the system will
find Black/Tan, Tan/White etc.
|
| 22 | Address | Searches ANY of the address or postcode fields for the
text entered.
|
| 23 | Balance | This limits the report based on CLIENT balance, that is
the amount of money the CLIENT owes rather than the animal owes. If
this option is used the report will switch to be client based.
|
| 24, 25 and 26 | These three options are there to handle one-off searches that may be needed from time to time. You would enter the exact SQL required, see restricting the search later on. It is unlikely you will need to use any of the Special options during 'normal' use. | |
Once you have run the report you will be asked if you wish to store it for later use. If so, it will be saved under 'My Stored Reports'.
When you save any of the management reports above or any of the reports within DataMajor they will be added automatically to the index My Own Stored Reports which is under the 'Stored Reports' menu option.
This allows you to set the initial option and then recall them for future runs, that is, you set it up once and then forget about it.
Looking at an example set:
- My own stored reports
- Laboratory Work by Month/Year
- Dental Work by Month/Year
- Urinalysis as % of income
- Dental % done by user Tom
- Ana codes 85-87 overall Picture
- Ana 85-87 as done by Tom
- Ana 85-87 by Users
- Diagnostic Ratio for ALL Users
- Diagnostic Ratio by User
The indexes can be altered by your practice manager (See
Technical Stuff
later on) and you can alter which report is present, what it is called
and as each 'menu group' can call others, you can add shortcuts to suit
your requirements.
The Ad-Hoc option allows you to create the basic reports that will be specific to your practice e.g. reports based on analysis codes.
Within this menu you have:
The following pages will show the usage of these options, we will use varied analysis codes - these codes will not be the same as your system. You should use the appropriate codes from your system.
Note: These options mainly deal with Clinical Records - Remember you do have some Clinical Stored Reports than can also be used to extract data.
Analysis Ratio can generate four basic types of reports, all of which summarise the results by Month/Year.
While I will use Dental work in this example, you can use it for ANY work you are interested in e.g. Laboratory, Consultations and Visits, Surgery etc.
Lets use some examples, I will explain how to get graphs etc. later, the first step is to get the data summarised.
Note: This report will start with the 1st year of the data e.g. in 2002 the default will be 5 full years so listing will start in 1997.
QUESTION: I want a breakdown of all dental work done.
You need to know the analysis code(s) relating to dental work
(Use the Stored Reports -> Analysis Queries to list them)
For this example, my dental work is entered under codes 85 to 87.
Select 'Analysis Ratio' and the screen will display:
| Analysis Codes between | xxx | and | yyy |
|---|---|---|---|
| OR between | aaa | and | bbb |
| User | |||
| Column Heading |
Briefly before continuing:
Back to the example, my analysis code range is 85 to 87 so the 1st line becomes:
| Analysis Codes between | 85 | and | 87 |
|---|
Leave the rest of the options blank.
The final question will appear:
Over the course of the examples we will show what difference the 'group by' option makes, for just now select 'Nothing'. Answer 'Yes' to run the query. The system will scan the records and generate a report e.g.
+------+-------+----------+---------+------+ | Year | Month | Income | Work | % | +------+-------+----------+---------+------+ | 1997 | Jan | 18483.67 | 481.78 | 2.61 | | 1997 | Feb | 17163.30 | 329.02 | 1.92 | | 1997 | Mar | 17938.45 | 405.40 | 2.26 | | 1997 | Apr | 18464.12 | 605.16 | 3.28 | [snip]
You have the Year the work was done, the Month the work was done. Income is the total practice income (inc VAT) for that Month and Year, 'Work' is the name of the Column from earlier and in this case is the total income against analysis codes 85 to 87 e.g. all our dental work. Finally the % is the percentage of the total income was dental - in Jan 1997 this was 2.6%.
You are then asked 'Save this query' - If the results are as you expect and you may want to run the report again then answer 'yes', you will be prompted for a name e.g. Income from dental work. This query will be saved and added to the My Own Stored Query index.
Next lets re-run the report with the SAME options except select Group by 'User'. This answers:
QUESTION: Who did the dental work?
+------+-------+---------+---------+---------+--------+ | Year | Month | Income | User ID | Work | % | +------+-------+---------+---------+---------+--------+ | 1997 | Jan | 481.78 | TOM | 152.76 | 31.71 | | 1997 | Jan | 481.78 | LEE | 76.38 | 15.85 | | 1997 | Jan | 481.78 | GIN | 99.88 | 20.73 | | 1997 | Jan | 481.78 | NAD | 152.76 | 31.71 | | 1997 | Feb | 329.02 | TOM | 76.38 | 23.21 | | 1997 | Feb | 329.02 | NAD | 76.38 | 23.21 | | 1997 | Feb | 329.02 | RET | 176.26 | 53.57 | | 1997 | Mar | 405.40 | TOM | 76.38 | 18.84 | | 1997 | Mar | 405.40 | LEE | 76.38 | 18.84 | [Snip]
This shows us who did the dental work, in this case the income relates to just income from analysis codes 85 to 87 - as a check Jan 97 on the 1st report was 481.78 - in the above report that figure is under income and it was done by users TOM, LEE, GIN and NAD.
Rather than selecting all the users you may want to just look at a specific user.
QUESTION: I want to see how much dental work user Tom has done.
Re-run the report, keep the analysis codes the same 85-87 but enter the user id you are interested in under User and let's call the column 'Tom Dental'. You will NOT be asked the 'Group By' question.
| Analysis Codes between | 85 | and | 87 |
|---|---|---|---|
| OR between | and | ||
| User | TOM | ||
| Column Heading | Tom Dental |
+------+-------+---------+------------+-------+ | Year | Month | Income | Tom Dental | % | +------+-------+---------+------------+-------+ | 1997 | Jan | 481.78 | 76.38 | 15.85 | | 1997 | Mar | 405.40 | 76.38 | 18.84 | | 1997 | Jul | 458.28 | 76.38 | 16.67 | | 1998 | Feb | 523.45 | 109.86 | 20.99 | | 1998 | Mar | 820.09 | 42.01 | 5.12 | | 1998 | Sep | 513.12 | 54.93 | 10.71 | [Snip]
This shows us the Year and Month, the Income is just dental income for that Month/Year, the Column has changed to 'Tom Dental', this is the amount of work the user with the ID 'TOM' has done and you are shown the percentage that is.
As with all the reports you have the option to save the results if you will be running it on a regular basis.
The final type of report than this option can generate is:
QUESTION: I want to compare Feline Dental with Canine Dental.
In this case, the analysis code for Feline dental work is 86 and Canine is 85.
| Analysis Codes between | 85 | and |
|---|---|---|
| OR between | 86 | and |
| User | ||
| Column Heading | Feline |
At the group by enter 'Analysis'
+------+-------+--------+---------+---------+ | Year | Month | 85 | Feline | % | +------+-------+--------+---------+---------+ | 2000 | Feb | 302.13 | 277.23 | 91.76 | | 2000 | Mar | 543.83 | 462.05 | 84.96 | | 2000 | Apr | 181.27 | 277.23 | 152.94 | | 2000 | May | 483.40 | 277.23 | 57.35 | [Snip]
Here we see the Year and Month, the column '85' is the 1st analysis code you entered, Feline is the column name and in our example is analysis code 86. The figures in '85' and 'Feline' is the income for those analysis codes for that Month/Year. The % is the ratio of the two.
By using the various examples above you should be able to create your own reports on any of your users and income categories. Save the common ones. You will actually need to save any report you want to printout as when creating the reports you will have noticed there was no option to re-direct the results.
Once saved select 'My Own Stored Reports', locate the report name, from there you can print or file the results.
These examples are based on using Microsoft Excel, if you are using a different spreadsheet the procedure will be similar - refer to the documentation.
The 1st step is re-run the stored report, when you run a report you will notice at the top of the screen:
ah5.sql Dental Work by Month/Year
This is the report name and description, if you are manually needing to copy the results to a floppy, you should make a note of the name as the file you will need to transfer is the same with the extension .csv e.g. in this case ah5.csv
To access this file you have a few options:
See Support FAQ: Using Word with Premvet
See Support FAQ: Customising the Places toolbar
Now in Excel,
| Select 'Data' followed by 'Pivot Table and Pivot Chart' The 'Pivot Table Wizard' will start up, | |
| Step 1 of 3 - Click Next | |
| Step 2 of 3 - Click Next | |
| Step 3 of 3 - Select 'Layout' |
|
| Drag 'Year' to COLUMN | |
| Drag 'Month' to ROW | |
| Drag '%' to DATA | |
| Select OK then Finish | |
Excel will have cross-tabulated the data in a grid and a 'floating menu' Pivot Table will have appeared. On that window click the Chart option.
You will now have some form of graph on the screen (which one depends on the default you have set in the past). If it's not a line graph, right click the white border, select 'Chart Type' from the menu and select Line and whatever you are happy with.

Tip: The data transferred will be a full five years and the current year, if you want to restrict the display, locate 'Year' on the left of the graph and click the arrow beside it. Un-tick the years you are not interested it and they will disappear from the graph.
Use the chart options to give the graph a meaningful name, change the colours and type of graph to suit the presentation you want.
The 'Pivot Table' option you have just used will handle most of your
needs in one form or another.
Lets look at one more Pivot Table example:
Breakdown of work by multiple users.
Now when looking at the grid you will see the User ID at the top right of the spreadsheet. If you click the arrow you can limit the figures to just that user. When graphed, the User ID will be visible, if it is 'dragged' over to the left beside Year you will get a very colourful graph of all the user by all the years. By selecting just some users and just some years you can get a picture of each users.

In addition to the stored reports we have covered pivot tables can be used for many of the 'Standard' reports on the system. Here are some more examples:
QUESTION: I want a graph of Practice Income
| Run the stored Report: Financial -> Practice Income Use the 'F'ile option (will be saved as 'income.csv') |
| Load into Excel, select Pivot table, |
| Drag Year to Column |
| Drag Month to Row |
| Drag Income to Data |
| Click the chart option |

QUESTION: What is the Practice Average Transaction Value and how many transactions have I done?
Run the Stored Report: Financial -> Practice ATV
Use the 'F'ile option (will be saved as 'atv.csv')Load into Excel, select Pivot table
![]()
- To look at ATV
- ( Drag Year to Column, Drag Month to Row, Drag ATV to Data)
- Click the chart option to Graph Average Transaction Value
- To look at Number of Transactions
- ( Drag Year to Column, Drag Month to Row, Drag Transactions to Data)
- Click the chart option to Graph Number of Transactions
- To look at Income
- ( Drag Year to Column, Drag Month to Row, Drag Income to Data)
- Click the chart option to Graph Practice Income
This option creates reports based on the date, the user and a specific (or range of) analysis codes.
When selected the screen will display:
| Transaction dates | and less than | |
|---|---|---|
| Analysis Codes between | and | |
| User who did the work | ||
| Restrict by |
If you want all data leave the dates empty, if you want all work after a specific date enter the required date in the 1st field and leave the second blank. (See Dates Below for more details).
The same applies to analysis codes, leave the 2nd blank to look for one specific code. If you want to look for clinical text then refer the option 'Clinical Text Contains'.
You can enter a question mark (?) in the analysis code box to give you a list of all the analysis codes on the system.
If you would rather look at your Analysis Groups, then leave the 1st analysis code box blank and enter the group in the 2nd. As with analysis codes, a question mark will list the groups available to you.
To limit the reports to just a specific user, enter the user ID beside 'User who did the work'. If you enter one of your User Groups then the report will be for that group of users. As with Analysis codes, a question mark will list all the groups and users on the system.
The Restrict by is covered in later.
In all cases a further question will appears asking you how you want the work grouped. The options are:
| Nothing | No grouping all clinical lines will be listed | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Date | This option has a sub menu allowing the work to be broken down by:
| ||||||||||||||||
| Analysis | Total number of times that code was used. | ||||||||||||||||
| User | Numbers will be grouped by user and month/year | ||||||||||||||||
| Group | Groups the figures by the Analysis Group the clinical line is under. | ||||||||||||||||
| Sub-Group | Breaks the report down first by Group and then by Analysis code. |
The following examples will show the same data (analysis codes between 85 and 97 since 1st Jan 2001) and the effect of the 'Group by' option.
Group By: Nothing
+----------+--------+-----+------+---------+------------------------------------ | Date | Animal | Ana | User | Price | Details +----------+--------+-----+------+---------+------------------------------------ | 03.01.01 | 8094 | 85 | AL | 120.85 | Dog Dental Treatment | 03.01.01 | 12690 | 86 | AL | 92.41 | Cat Dental Treatment | 03.01.01 | 15150 | 87 | MAR | 5.88 | burr teeth | 04.01.01 | 1430 | 86 | AL | 92.41 | Cat Dental Treatment | 04.01.01 | 4234 | 86 | EL | 92.41 | Cat Dental Treatment | 04.01.01 | 10574 | 86 | AL | 92.41 | Cat Dental Treatment | 09.01.01 | 2053 | 86 | AL | 92.41 | Cat Dental Treatment | 12.01.01 | 4495 | 86 | AL | 92.41 | Cat Dental Treatment | 16.01.01 | 10700 | 86 | AL | 92.41 | Cat Dental Treatment | 18.01.01 | 15150 | 87 | AL | 73.93 | Rabbit Dental Treatment | 22.01.01 | 7213 | 86 | AL | 92.41 | Cat Dental Treatment | 25.01.01 | 3682 | 86 | AL | 92.41 | Cat Dental Treatment [Snip]
Group By: Date
+-----+----------+----------------------+--------+--------+ | Ana | Date | Description | Amount | Number | +-----+----------+----------------------+--------+--------+ | 85 | Jan 2001 | Dog Dental Treatment | 120.85 | 1 | | 86 | Jan 2001 | Cat Dental Treatment | 866.69 | 10 | | 87 | Jan 2001 | Rabbit Dental Treatm | 79.81 | 2 | | 85 | Feb 2001 | Dog Dental Treatment | 531.74 | 6 | | 86 | Feb 2001 | Cat Dental Treatment | 369.64 | 4 | | 85 | Mar 2001 | Dog Dental Treatment | 362.55 | 3 | | 86 | Mar 2001 | Cat Dental Treatment | 646.87 | 7 | [Snip]
Group by: Analysis
+-----+----------------------+--------+ | Ana | Description | Number | +-----+----------------------+--------+ | 85 | Dog Dental Treatment | 30 | | 86 | Cat Dental Treatment | 75 | | 87 | Rabbit Dental Treatm | 10 | +-----+----------------------+--------+
Group by: User
+------+----------+-----+----------------------+--------+ | User | Date | Ana | Description | Number | +------+----------+-----+----------------------+--------+ | AL | Mar 2001 | 85 | Dog Dental Treatment | 9 | | AL | Jan 2001 | 86 | Cat Dental Treatment | 20 | | AL | Mar 2001 | 87 | Rabbit Dental Treatm | 3 | | ANN | Aug 2001 | 85 | Dog Dental Treatment | 2 | | ANN | Jun 2001 | 86 | Cat Dental Treatment | 2 | | BEN | Mar 2001 | 85 | Dog Dental Treatment | 2 | | BEN | Apr 2001 | 86 | Cat Dental Treatment | 5 | | BEN | May 2001 | 87 | Rabbit Dental Treatm | 1 | | CAT | May 2001 | 85 | Dog Dental Treatment | 13 | | CAT | Dec 2001 | 86 | Cat Dental Treatment | 31 | | CAT | Oct 2001 | 87 | Rabbit Dental Treatm | 3 | [Snip]
This will search the clinical records for lines containing specific text, very similar to the existing 'Search for Code' report except quicker.
When selected the screen will display:
| Transaction dates | and less than | |
|---|---|---|
| Text Contains | ||
| Restrict by |
As with the previous option, the dates are optional. Enter the text to search for e.g. mites
+----------+--------+-----+------+-------+-------------------------------------- | Date | Animal | Ana | User | Price | Details +----------+--------+-----+------+-------+-------------------------------------- | 02.01.97 | 10921 | 138 | NAD | 0.00 | New kitten - cat flu. Eating well. Ea | 10.01.97 | 9032 | 138 | EL | 0.00 | beak mites | 18.01.97 | 6981 | 138 | RET | 0.00 | prurutic, holds rh in a strange way w | 01.02.97 | 10766 | 138 | 068 | 0.00 | Billateral otitis externa properly ea | 01.02.97 | 10766 | 138 | 068 | 0.00 | very bad ear mites clean bid for 7 d [Snip]
Wildcard matches
There may be occasions where the text you are looking for has extra punctuation in it, or is separated by other text. In this case there are some characters with 'special meaning', these allow you to search for these situations.
| Basic Wildcards | |
|---|---|
| % | Match any number of characters |
| _ | Match a single character |
Using our earlier example of mites, lets assume we are looking for ear mites - have they been entered as 'ear mites' or 'ear-mites'? In this case we want to look for a single character so enter ear_mites as the text to search for - this will find both cases.
What is the gap is longer, use ear%mites this will match:
Note: If you want to search for the '%' or the '_' then you should prefix them with a back slash ('\').
The Restrict by is covered in later.
This is very similar to the above option but used to search for phrases that may or may not appear in the clinical text.
That is you are not sure if the phrase you are looking for was entered as 'Thyroid Lump' or 'Thyroid Tumour' or even 'found a lump, Thyroid?'. This option assigns a 'Score' to each clinical line, very similar to search engines on the web. The higher the score the better the chances are that the line is relevant.
Enter the details as the text search e.g. lump thyroid tumor and you will get results similar to.
(As the clinical line has been truncated to fit the manual you may
not see the full text - try this on your machine.)
+--------+--------+------+-------+---------------------------------------------- | Date | Animal | User | Score | Details +--------+--------+------+-------+---------------------------------------------- | Apr 99 | 10987 | TWM | 20.16 | I think I can feel a thyroid lump - has the a | Jun 97 | 2057 | U13 | 16.35 | Old dog massive tumour LH. One of cats vax-ol | Aug 00 | 1961 | TOM | 15.14 | now has large lump on ribs - probable sec. bo | Nov 98 | 4989 | TOM | 14.41 | 1.Mamm lump -quite a wide margin excised as w | Feb 97 | 3957 | U13 | 13.33 | Left ear infected/looks like bite below ear.I | Jun 97 | 1516 | U13 | 13.07 | Some wt loss.Heart rate ^.cant really count b | Dec 97 | 1018 | V4 | 12.84 | V since this am & off food a bit, motions loo | May 97 | 7025 | TWM | 12.72 | HR 220/min=, wt loss p/phagia, poorly digeste
The higher the score column the more relevent. The results will be returned by highest score not by date.
There is an option to disable building the index required for the Full Text Search. If the snapshot was built without the index and you then try to use it. You will ge a message similar to:
ERROR 1191 at line 1: Can't find FULLTEXT index matching column list
Your analysis codes are 'grouped' for billing purposes, DataMajor can
use these groupings to report on animals that may or may not have had
some treatment. This option will list those animals.
The report will include the animal name, number, date of Birth, Species, if it
has been chipped, has insurance, surgery registered at, has been neutered. This option will ONLY
look at the last 12 months data.
This option CAN report on those animals that have had for example, a consultation
but NOT had Flea control or Wormers. It can report on those who have
had Wormers, Flea and bought diets from you. It is used to look at trends
based on the billing categories.
When selected the screen will display:
1 Consultation/Examina 2 Vaccinations 3 Neutering
4 Radiography/ECG 5 Fluid Therapy 6 Worming Treatments
7 Flea Control 8 Desk Sales 9 Hills Science Plan
10 Prescription Diets 11 Drugs & Products 12 Laboratory Fees
13 Hospitalisation 14 Nails/Anal Glands/Ot 15 Anaesthetic Fees
16 Surgery Fees 17 Dental Treatment 18 Microchip
19 Visit Fee 20 Euthanasia Fees 21 Weight Control Clini
22 Puppy/Adolescent/Sen 23 Consumables 24 Miscellaneous
25 LVI Certification 26 Postage & Packing 27 Prescription Charge
28 Discount/Surcharge 110 Letter etc. 111 Credit Control
112 Advice
The top part of the screen allows you to enter the groups to look for
and the lower part shows your existing groups.
The system works by looking at the clinical records and checks if the
group has occurred or not e.g. Yes or No. You can use this option to
restrict the report to animals who have had a consultation AND Dental
work AND Worming.
The options (under 'What') are:
The field 'Call it' is what to call the column.
List animals, include
This will list the records as per:
-+------------+---------+----------+---------+-
| Species | ID Chip | Neutered | Insured |
-+------------+---------+----------+---------+-
| Canine | No | Yes | No |
| Feline | No | Yes | No |
| Canine | No | No | No |
| Feline | Yes | Yes | No |
| Canine | No | No | No |
| Feline | No | Yes | No |
[Snip]
-+------------+------+---------+------------+
| Diagnostic | Flea | Wormers | Recall Due |
-+------------+------+---------+------------+
| No | No | Yes | Jul 2002 |
| No | Yes | Yes | Apr 2002 |
| No | No | Yes | Jun 2002 |
| No | No | Yes | Dec 2002 |
| No | No | Yes | Oct 2002 |
| No | Yes | Yes | Aug 2002 |
[Snip]
The columns have been labelled with the text you entered on the setup
screen. As in this example we selected 'ignore' the system listed all
records. Had we set say 'Flea' to Yes then only records where 'Flea'
work was done will have been included.
Once you are happy with the options save the query and then re-run to
file. This can be loaded into a spreadsheet to look for trends within
your client base (see later section).
There may be times where your existing grouping does not give you enough
control of the options to examine. You could change the basic grouping
but this would affect the bills/receipts/estimates you send the clients.
How do you avoid this?
You have 128 group 'slots' available, the 1st 100
will be used for the client bills/receipts - the top 28 are reserved
for DataMajor. The system will group the work by the HIGHEST group the
analysis code is found in as far as DataMajor is concerned. With bills
it will be added to the LOWEST group.
For example, you may want to sub-divide your 'Laboratory Work' group so you can look
at Urinalysis, T4 and other blood work. To do this add two new groups
ABOVE 100 e.g.
Note: When the snapshot is created a pivot table query
(Stored Reports -> Pivot Tables -> Animal by Group) will be created and updated
each time that will
include the basic details and every analysis group currently on the system.
Animals by Ana Group Usage (Or Who are my active animals)
Group Call It What
1
2
3
4
5
Yes The group has appeared for that animal
No The animal did not have any work in that group
Ignore Ignore the settings and include the animal
Group Call It What
1 4 Diagnostic Ignore
2 7 Flea Ignore
3 6 Wormers Ignore
4
5
(Split here but will normally be one line per animal).
+--------+--------------------+------------+------------+-
| Number | Animal Name | D.O.B | Species |
+--------+--------------------+------------+------------+-
| 4 | Chazz | 22.03.1995 | Canine |
| 19 | Pixie | 07.01.1997 | Feline |
| 31 | Apollo | 01.02.1985 | Canine |
| 32 | Mikki | 06.08.1998 | Feline |
| 106 | Sam | 01.08.1993 | Canine |
| 196 | Harrison | 01.01.1987 | Feline |
[Snip]
Expanding / Drill down
101 Urinalysis
102 Thryrod T4
Looking at a grouping in Excel
Excel has a useful option 'Filters', these allow you to run the full report and then play around with the different options - do a 'What if' type report.
Select the criteria as per the previous section, save the report and run it to file. Load it into Excel (as per Graphing Results).
You will notice 'arrows' beside each of the column names - these are used to 'filter' or restrict the records displayed.
For example to only look at Dogs that are Insured:
Tip: To remove all Dogs and Cats from the list, select the Species filter then 'Custom'. In the pop-up box use the pull down options beside the box to set:
| Does not equal | Canine |
|
| And | ||
| Does not equal | Feline |
This filtering makes it easy to look at specific groupings of your data.
You have a range of analysis codes (10 - 20) dealing with vaccinations, you want to look at those records for who has have a 'Young Puppy' vaccination and NOT come back the following year for a booster. Your 'young puppy' analysis code is 15.
If you have not already done so, create a group (above 100) e.g. 101 called 'Young Puppy/Kitten' add in analysis code 15. Rebuild DM
Use 'By Analysis Group', select your vaccination group and set to ignore, select your group 101 and set to ignore, run the query.
You have looked at your active clients, now you want to send a mail shot, you want to 'track' these clients - did the mail shot work?, you may be monitoring Dental uptake - how do you do this?
DataMajor has the ability to 'Tag' the individual animal/client that it found - currently there are four tags - Platimum, Silver, Bronze and Gold - this tag is displayed (as of Nov 2002 Premvet release) on the management card.
When running the Grouping report you are asked if you with to set the marketing tag - if yes is selected the report is run as before but before returing to the menu you have the option to get the system to update the management record tag if required. (If you are a cross updating site this information WILL cross update).
There is a set of stored reports to list the taged animals. You can also use the stored reports to tag clients.
In Scripts
To mark clients within a script you have to keep two things in mind:
SET MARKETING TAG = X has to be present in
one of the comment lines. Here is the script to reset the tag to None if the animal is dead with the important lines shown in bold.
## This will set the marketing tag to NONE for all dead animals that ## are currently tagged. ** SET MARKETING TAG = None ** ## ## Premvet WILL be updated - This will Cross update. SELECT a.pvid as 'Number', c.marketing as 'Taged as', a.animalname as 'Name', ifnull(a.species,'Unknown') as 'Species', ifnull(a.breed,'Unknown') as 'Breed', date_format(a.dateofbirth,'%M %Y') as 'DOB', a.clientkey as 'ClientKey' FROM animal a,client c WHERE a.clientkey = c.clientkey AND c.marketing != "None" AND ( a.dead = 'Dead' or c.numberofanimals=0 ) ;
The system will use the 1st field to locate and update Premvet where as the last field will be used to update DataMajor there and then with the tag None.
It does not matter which index the report lives in, the system will detect this has to update the system and will act accordingly.
When running the reports on the Ad-Hoc menu you are prompted for dates. This is fine as long as you are running them as one-off - if you want to save the report and run it on a regular basis you cannot if the date range varies.
However, if you are interested in work done in the last 30 days, the last 6 months, the last 2 years e.g. work in the last xx something. Then you can do this.
The screen will display:
| Transaction dates | and less than | |
|---|---|---|
| ..... |
Leave the 1st date BLANK and enter the interval in the 2nd e.g.
| 30 days | In the last 30 days |
|---|---|
| 45 days | In the last 45 days |
| 4 months | In the last 4 months |
| 1 year | In the last year |
| 2.5 years | In the last two and half years |
You can enter any number followed by Days, Months or Years.
When the report is added to the stored reports the interval will also be saved and used the next time the report is run.
This section will be populated over time to include special setup options for specific reports. That is, if the report you want does not fit into one of the existing categories it may appear here.
As with the other reports you can save the query to re-run to the printer or graph the results.
Analysis Code/Group by Day/User for last month
This will breakdown work by day of the week and user for a specific analysis code or analysis group. The period is the last calendar month.
You will be asked:
As an example, here is consultations (analysis code 10) for the last month.
+-----------------------------------+-------------------+ | Report For | Code 10 | +-----------------------------------+-------------------+ | Between 28.01.2002 and 28.02.2002 | Consultation fees | +-----------------------------------+-------------------+ +------+-----------------+-----------+--------+--------+ | User | Name | Day | Amount | Number | +------+-----------------+-----------+--------+--------+ | KIR | Kirsten | Monday | 70.58 | 3 | | JEN | Jennifer | Monday | 132.62 | 6 | | TOM | Tom Melvin | Monday | 198.54 | 11 | | JC | James C | Monday | 74.85 | 3 | | LEE | Lee Cairns | Monday | 89.81 | 6 | | LEE | Lee Cairns | Tuesday | 124.75 | 5 | | JB | Julian B | Tuesday | 116.21 | 5 | | TOM | Tom Melvin | Tuesday | 178.25 | 10 | | JEN | Jennifer | Tuesday | 182.52 | 8 | [Snip]
This report looks at transaction volume and the number of 'slots' you have to work out occupancy rates. This report assumes you would like at least 80% occupancy.
Some transaction e.g. pet food sales will not affect the occupancy rates so you do have the option to ignore some transactions (done via analysis codes). By re-running the query with different work being ignored it will let you see what affect for example, diets/wormers have on your transaction volume.
The report can be run for a monthly or yearly basis.
A slot is either an appointment or operation e.g. 9am - 10am 10 min appointments = 5 slots, two vets = 10 slots, carry out 10 operations a day brings it up to 20 slots another 1 hr appointments in afternoon and evening makes one day = 40 slots, you are open 6 days a week = 240 slots a week.
E.g. Here is a yearly report with 240 slots a week available. (240 * 52 weeks = 12480 slots a year)
+------+--------+-------------+-------+---------+ | Year | Volume | Target 80 % | 100 % | Actual% | +------+--------+-------------+-------+---------+ | 1997 | 6431 | 9984 | 12480 | 51.53 | | 1998 | 6720 | 9984 | 12480 | 53.85 | | 1999 | 6649 | 9984 | 12480 | 53.28 | | 2000 | 6489 | 9984 | 12480 | 52.00 | | 2001 | 7226 | 9984 | 12480 | 57.90 | | 2002 | 926 | 9984 | 12480 | 7.42 | +------+--------+-------------+-------+---------+
Note: DataMajor will by default, only look at 'live' animals, as an Euthanasia may well use up a 'slot' these will NOT be included in the results. You should take that into account. There is no option to 'alter' the slots over the period, this would have to be done manually when exporting the figures to a spreadsheet.
All payments on the system are given analysis code 255 - the list of clients paying are given on the Vatbook - but sometimes this report is lost or thrown out.
Yes you can use 'Search for Code' or 'Ad-Hoc - Analysis Code search' and these will give you a list of payments - but they do not give you any totals or breakdown.
This Payment Report does the same but will print out a breakdown by payment type and give sub-totals per day.
Note: You can have a range of dates and the will print only.
In addition to the Ad-Hoc reports there is a set of Stored reports that can be used to cover some common situations. These are:
Some of the options have a field 'Restrict By' (or Special in Man Reports), this allows you to enter additional restrictions to the search e.g. just canine's. Each of the menu options that allow restricted searches is given below:
| Option | clinical | animal | analysis |
|---|---|---|---|
| Abbreviation | (c) | (a) | (y) |
| Clinical Text Contains | Yes | Yes | No |
| Clinical Date By Analysis | Yes | Yes | No |
| Management Reports | Yes | Yes | No |
Only the tables listed above can be used at that point, refer to the listing in Appendix 1 for the field names. You should enter a valid SQL comparison e.g.
| species = "canine" | To limit to just Dogs |
| idnumber is not null | The has been chipped |
| age > 7 | Animals over seven years of age |
| breed like "%terrier%" | Breed contains 'terrier' |
The SQL database we are using supports 'ODBC' (Open DataBase Connectivity), this is a 'standard' that allows other applications to access the data. There are many applications that support ODBC the most common is Micro$oft Office tools (Word, Excel, Access) and as such will show you examples based on those.
You can use ODBC to access the data directly from within Excel,, you do not need to run any software on the Premvet Server. Once you have created the initial query it will usually be saved when the spreadsheet is saved allowing you to 'refresh' the data and keep the graphs updated.
Appendix A lists the tables that are available along with a description of all the fields that you may want to use.
Start up Excel and select:
As an example we will graph the trend for Cat Castrations.
(Cat castrations in this example are analysis code 67, adjust as
appropriate for your data.)
The system will extract the data from DataMajor and you will be presented
with a blank Pivot Table.
Drop the Month into Row, Year into Column and
LineBalance into Data.
You can now graph the details as per previous examples.

Save the spreadsheet, when you recall it at a later date, if you click the red exclamation mark in the pivot table wizard the data will be updated.
One more example, generating a Pie chart of Species.
Start up Excel and select:
The system will extract the data and you will be presented with a blank Pivot Table. Drop the Species into BOTH Row and Data.
Select Graph, right click the background, select Chart Type and for this example pick the 'Bar of Pie' option. You will notice that it is a little congested - Some tips to help:
Microsoft Query will start up and you can now select what information you want. For example, lets extract all Terrapins.
To use MailMerge, the principle is similar:
Select Mailmerge from the Tools option,
Microsoft Query will allow you to look at the data, add columns and filter depending on your query.
This give access to some of the maintenance options:
| Run vet -p wdb | Rebuild the Snapshot |
|---|---|
| Display Table Layout | Display (or Print) the tables available along with some usage statistics. |
| Print Table Layout | |
| Analyse Tables | Run the optimiser on the tables |
| Query Maintenance | Edit/Delete stored queries |
| Setup Options | Configuration Screen |
With the exception of Re-building, Query Maintenance and Setup you should not need to use any of the other options.
(This currently contains only one setting.)
The first option, 'Moved/Rehomed Status Codes' - enter here the status codes for that type of client e.g. MARHV1. When the snapshot is created it will set a Field 'IsClient' to 'No' on each animal card, it will also use the last consultation date and add it to the Field 'IsClientDate' both of those are in the Animal Table. If ANY animal belonging to a client is marked as such the Client Table field 'IsClient' will also be set to 'No'.
This field is currently used in two stored reports:
The reports you see when you select stored reports are all plain text files this menu option allows you to:
| Edit Index | Edit the contents of any of the Index's
The system will display all the the current index's, select the item to change and the index will be displayed on the screen (using the ste text editor). Change as required and use F2 (or crtl Y) to save the changes. The format of each line is 'name-of-index <spaces> Description-for-the-user'. |
|---|---|
| View Query | Look at (and edit) the actual query.
The current query will be displayed in an editor (ste). If you want to make changes, we suggest you use the 'Copy' option first and then make changes to that. Tip: the ODBC programs all have an option to show the actual query - use 'Cut-and-paste' to copy the query from there to a stored report for others to use. |
| Remove Query | Deletes the query (and index entry)
Navigate and select the query to remove, confirm, it will be removed completely from the system. |
| Copy Query | Makes a copy of a query
Navigate and select the query to copy, confirm, a second copy of the query will be added to the current index. This can then be edited via the edit option above. |
| New Index | Creates a new index.
You will be asked to enter a brief name for the index (max eight characters) and the index will created and added to the top level menu. If you want to adjust/edit the longer description use the 'Edit Index' option (Back to Main). |
| Move Query | Move a query from one index to another.
Navigate and select the query to move, select the new index to move it too. |
As you create more and more queries of your own it is recommended that periodically you 'tidy up' your index entries. Move your 'related' query's to a new index or add them to one of the existing one.
DataMajor works on a COPY of your data, this copy needs to be updated on a regularly basis via a job in cron. When first installed support will have setup the cron job for you.
Some of the common cron settings are:
5 0 * * * /usr/local/bin/vet -p wdb >/dev/null #Every morning at 0:05
5 0 * * 0 /usr/local/bin/vet -p wdb >/dev/null #Once a week (Sunday)
5 0 1 * * /usr/local/bin/vet -p wdb >/dev/null #Once a month (on the 1st)
If you need to re-build the snapshot before the automation run you can do this manually. The re-build can take a little while!!.
Use the stand alone utility 'wdb', at an OS prompt enter:
vet -p wdb
Use the Automation Manager within premvet to alter and adjust the snapshot times rather than editing cron jobs manually.
This will use the default settings (include all animals and covers five years of information). You can specify some options to wdb, these are:
| -O directory | Where to send output files (Default /tmp)
| |
| -Y x | Where x is number of full years to include in clin (default is 5 full years) | |
| -C name | What to call the database (default is premvet). | |
| -P number | When merging multiple databases you
should use the 'pass' option.
Pass 1 - Setup the system ready for sites Pass 2 - Add data from premvet files Pass 3 - Create the SQL files (See example below)
| |
| -f what | ||
| Where what is: | ||
| 1 | CSV | |
| 2 | Fixed Length | |
| 3 | MySQL (Default)
| |
| -o option | nodead | Exclude Dead Animals |
| debug | Show progress when running and leave temporary files on the disk. | |
| pdsa | Include PDSA specific data | |
| office | Internal use only | |
| nofull | Don't create the full text index | |
| notext | The system will ignore unpriced lines. | |
| noopt | Skip optimising the tables | |
| ubys | Used when creating multiple databases. If specified it will include an entry for the user at every site he/she works at. The default is just to include the user once per cluster site. | |
| m251 | Analysis code 251 (User Defined Files) - these will be treated as comments and be appended to preceeding line. Otherwise they will always be separate lines and coded as such. | |
| incnoclin | Will include animals with no clinical records. | |
For example, to run the export for 10 years and exclude dead animals you would enter:
vet -p wdb "-Y 10 -o nodead"
Remember the more data you extract the more disk space that will be required so ensure you have the disk space.
There is also an option on the utility menu to do run wdb, as well, when run from the Utility menu you cannot alter any of the defaults.
Where you have multiple sites and wish to create one database with all the information in it. You will need to use a script something similar to:
# Use the MASTER directory here - all the Ana Codes, groups etc. vet -p wdb "-P 1 -o ubys" # Pass one to create the files # Loop on all the directories and create the import file for x in /w/dir1 /w/dir2 /v/dir3 do vet -d $x -p wdb "-P 2" done # Finished extracting clients - create the SQL database vet -p wdb "-P 3" # Last Pass to create the files
You can have multiple databases on the same server. That is you have an out-of-hours clinic or a play area and you want to look at this data within DataMajor as well.
Set the environment variable SQLD to the name of the of the database. This can be set in common.tcf (or any of the tcf files). When accessed from the Premvet menus this database name will be set automatically. If using ODBC you will need to specify the same 'Database Name' in the DSN.
If you are writing your own scripts this section of the manual will show you some ways you can interact with the user. That is ask them questions or give them additional help on the screen.
Within your scripts:
To ask the user for some information use the format:
!!Text to be Replaced!!
There are some additional 'features' to make it easier for you
| In Script | User Enters | MySQL gets |
|---|---|---|
| !!"Enter Species!! | canine,feline | "canine","feline" |
| In Script | User Enters | MySQL gets |
|---|---|---|
| !!Sex (leave blank for all)!!! | NULL | Line Skipped |
| In Script | User Enters | MySQL gets |
|---|---|---|
| !!Enter Start Date!! | 15.8.02 | 20020815 |
| !!Enter Start Date!! | -10 | Date 10 days ago |
If the line contains a less than (<) then date entered will have one day removed - saves the user remembering how many days in a month :-)
| In Script | User Enters | MySQL gets |
|---|---|---|
| !!End Date (<)!! | 1.2.02 | 20020131 |
| In Script | User Enters | MySQL gets |
|---|---|---|
| !!Which Month (MM.YY)!! | 8.02 | 20020801 |
Note: The screen will display the MySQL format once the question has been answered.
There may be times where you always want a report mailed to an address. If you add the line:
# MailTo: xyx@abc.com
Other options
You can copy the DataMajor database from the Unix server onto your PC
or Laptop to look at and analyse the data away from the practice. To do
this you need to install the Windows version of MySQL. This will be
found in
/usr/local/images/mysql as the file mysql-3.23.42-win.zip.
Copy this file to your PC and use WinZip (on the Utility CD) to extract.
Run the install script 'setup' and follow the instructions on the screen.
To start up the SQL server either re-boot the PC or locate the admin
utility 'winmysqladmin' in the
install\bin directory and click it. This will
start the server and you will see a set of 'traffic light' appearing in
the 'System Tray' which can be used to stop/start the server.
You should setup an ODBC link to this server as per Appendix 2 except set the servername to 'localhost'.
The DataMajor database resides in
/usr/local/mysql/data/premvet. This
sub-directory should be moved over to your PC that you want to run
queries on - you DON'T need to copy the database if your PC is local
to the server - this is only where you wish to look at the data on a
remote PC e.g. at home.
To cut the database to CD use the following command for Unix Systems
mkisofs -D -l -L -r -f /usr/local/mysql/data/premvet | cdrecord -v -eject -
If you are cutting the CD on a Windows PC then refer to the documentation that came with the CD burner.
You can then copy the data from the CD into install\data\premvet on your house PC or laptop.
In this case, the PC (or laptop) has to be connected to the server.
Browse the Unix host for
/usr/local/mysql/data/premvet and drag it over
to install\data\premvet on the PC.
Use an ftp client e.g. Cute FTP (on utility CD), navigate to
/usr/local/mysql/data/premvet and
'get' all the files in that sub-directory. If you use the ftp
client shipped with Windows make sure to select 'binary' as the filetype.
Insert a DOS jaz (or zip) cartridge into the Unix server, mount the disk, copy the data and un-mount it e.g.:
mount -f DOS /dev/jaz /jaz
copy -r /usr/local/mysql/data/premvet /jaz
umount /jaz
install\data\premvet on the PC.
When you use ODBC (or want to write your own SQL) you will need to know what data is available. This appendix lists all the tables and fields that you can use and report on.
| Tables_in_premvet | |
|---|---|
| analysis | Analysis Codes and descriptions. |
| agroup | Groups the analysis codes are in. |
| animal | Animal details |
| client | Client details |
| clinana | Clinical breakdown by analysis code. |
| clinical | Clinical records |
| notes | Animal Notes and Warnings |
| created | Date the snapshot was created. |
| lab | Lab results (from screen 1). |
| recall | Recall details |
| users | Users Named and Groups |
| stock | Stock Descriptions |
| medication | Repeat Prescription Records |
| dates | Date related items |
| conlog | Consultation Times |
| waitlog | Waiting Room Statistics |
| address | Address Book |
| history | Condensed History |
This needs to be done once on each PC that will be accessing the data via ODBC.
The ODBC drivers are located in
/usr/local/images/mysql on the Unix
server. You should either use Samba/VisionFS to copy the file to your
PC or copy the file to a floppy.
There are two versions of the ODBC drivers available:
| MyODBC-3.51.01.exe | Version 3.51 |
| myodbc-2.50.39-nt.zip | The older 2.5 version |
Generally you will want the 3.51 drivers, the older version is there for some applications not supported under 3.51 e.g. Crystal Reports version 7.
Copy the driver to your PC and double click it the install wizard will start and install the drivers.
See the next section for configuring them.
Make sure the drivers are installed as per the previous section.
Running locally - If you are running MySQL locally on your PC, that is you have a copy of the Data physically located on your PC, follow the instructions below except for Host/Server Name enter 'localhost' rather than the name of the Unix server.
Go to Start, Settings, Control Panel and click on ODBC32 or ODBC Data Sources. This will bring up a box with a number of tabs on and various names of data sources.
Click OK and then OK again.
Click on OK.
This should setup your ODBC and allow you to output from and input to Premvet.
If you are using ODBC to manipulate the data you MAY need to specify how the data from each table should be 'linked together'. In SQL parlance this is a 'Join'. In general, if you are linking :
It is worth mentioning - do you really need that join? Join's do use up resources and the reports take longer to run - if you are looking at reports consider not including the client name - will just the record number do? - do you need the full name of the user or will User ID do?