Used in the accounting section in chart of accounts. Not related to patient accounts in any way.
Primary key..
.
Enum:AccountType Asset, Liability, Equity,Revenue, Expense
Used in accounting for chart of accounts.
0
1
2
3
4
For asset accounts, this would be the bank account number for deposit slips.
Set to true to not normally view this account in the list.
.
In the accounting section, this automates entries into the database when user enters a payment into a patient account. This table presents the user with a picklist specific to that payment type. For example, a cash payment would create a picklist of cashboxes for user to put the cash into.
Primary key.
FK to definition.DefNum.
FK to account.AccountNum. AccountNums separated by commas. No spaces.
An adjustment in the patient account. Usually, adjustments are very simple, just being assigned to one patient and provider. But they can also be attached to a procedure to represent a discount on that procedure. Attaching adjustments to procedures is not automated, so it is not very common.
Primary key.
The date that the adjustment shows in the patient account.
Amount of adjustment. Can be pos or neg.
FK to patient.PatNum.
FK to definition.DefNum.
FK to provider.ProvNum.
Note for this adjustment.
Procedure date. Not when the adjustment was entered. This is what the aging will be based on in a future version.
FK to procedurelog.ProcNum. Only used if attached to a procedure. Otherwise, 0.
Timestamp automatically generated and user not allowed to change. The actual date of entry.
FK to clinic.ClinicNum.
FK to statement.StatementNum. Only used when the statement in an invoice.
An allergy attached to a patient and linked to an AllergyDef.
Primary key.
FK to allergydef.AllergyDefNum
FK to patient.PatNum
Adverse reaction description.
True if still an active allergy. False helps hide it from the list of active allergies.
To be used for synch with web server for CertTimelyAccess.
The historical date that the patient had the adverse reaction to this agent.
An allergy definition. Gets linked to an allergy and patient.
Primary key.
Name of the drug. User can change this. If an RxCui is present, the RxNorm string can be pulled from the in-memory table for UI display in addition to the Description.
Because user can't delete.
The last date and time this row was altered. Not user editable.
Enum:SnomedAllergy SNOMED Allergy Type Code.
FK to Medication.MedicationNum. Optional.
Appointments can show in the Appointments module, or they can be on the unscheduled list. An appointment object is also used to store the Planned appointment. The planned appointment never gets scheduled, but instead gets copied.
Primary key.
FK to patient.PatNum. The patient that the appointment is for.
Enum:ApptStatus .
Appointment status.
0- No appointment should ever have this status.
1- Shows as a regularly scheduled appointment.
2- Shows greyed out.
3- Only shows on unscheduled list.
4- Functions almost the same as Scheduled, but also causes the appointment to show on the ASAP list.
5- Shows with a big X on it.
6- Planned appointment. Only shows in Chart module. User not allowed to change this status, and it does not display as one of the options.
7- Patient "post-it" note on the schedule. Shows light yellow. Shows on day scheduled just like appt, as well as in prog notes, etc.
8- Patient "post-it" note completed
Time pattern, X for Dr time, / for assist time. Stored in 5 minute increments. Converted as needed to 10 or 15 minute representations for display.
FK to definition.DefNum. This field can also be used to show patient arrived, in chair, etc. The Category column in the definition table is DefCat.ApptConfirmed.
If true, then the program will not attempt to reset the user's time pattern and length when adding or removing procedures.
FK to operatory.OperatoryNum.
Note.
FK to provider.ProvNum.
FK to provider.ProvNum. Optional. Only used if a hygienist is assigned to this appt.
Appointment Date and time. If you need just the date or time for an SQL query, you can use DATE(AptDateTime) and TIME(AptDateTime) in your query.
FK to appointment.AptNum. A better description of this field would be PlannedAptNum. Only used to show that this apt is derived from specified planned apt. Otherwise, 0.
FK to definition.DefNum. The definition.Category in the definition table is DefCat.RecallUnschedStatus. Only used if this is an Unsched or Planned appt.
This is the first appoinment this patient has had at this office. Somewhat automated.
A one line summary of all procedures. Can be used in various reports, Unscheduled list, and Planned appointment tracker. Not user editable right now, so it doesn't show on the screen.
FK to employee.EmployeeNum. You can assign an assistant to the appointment.
FK to clinic.ClinicNum. 0 if no clinic.
Set true if this is a hygiene appt. The only purpose of this flag is to cause the hygiene provider's color to show. This flag is frequently not set even when it is a hygiene appointment because some offices want the dentist color on the appointments.
Automatically updated by MySQL every time a row is added or changed.
The date and time that the patient checked in. Date is largely ignored since it should be the same as the appt.
The date and time that the patient was seated in the chair in the operatory.
The date and time that the patient got up out of the chair
FK to insplan.PlanNum for the primary insurance plan at the time the appointment is set complete. May be 0. We can't tell later which subscriber is involved; only the plan.
FK to insplan.PlanNum for the secoondary insurance plan at the time the appointment is set complete. May be 0. We can't tell later which subscriber is involved; only the plan.
Date and time patient asked to arrive, or minval if patient not asked to arrive at a different time than appt.
Stores XML for the procs colors
If set to anything but 0, then this will override the graphic color for the appointment.
For now, the rule is simple. It simply blocks all double booking of the specified code range. The double booking would have to be for the same provider. This can later be extended to provide more complex rules, such as partial double booking, time limitations, etc.
Primary key.
The description of the rule which will be displayed to the user.
The procedure code of the start of the range.
The procedure code of the end of the range.
Usually true. But this does allow you to turn off a rule temporarily without losing the settings.
These are custom fields added to appointments and managed by the user.
Primary key.
FK to appointment.AptNum
FK to apptfielddef.FieldName. The full name is shown here for ease of use when running queries. But the user is only allowed to change fieldNames in the patFieldDef setup window.
Any text that the user types in. Will later allow some automation.
These are the definitions for the custom patient fields added and managed by the user.
Primary key.
The name of the field that the user will be allowed to fill in the appt edit window. Duplicates are prevented.
Enum:ApptFieldType Text=0,PickList=1
The text that contains pick list values.
Enables viewing a variety of operatories or providers. This table holds the views that the user picks between. The apptviewitem table holds the items attached to each view.
Primary key.
Description of this view. Gets displayed in Appt module.
0-based order to display in lists. Every view must have a unique itemorder, but it is acceptable to have some missing itemorders in the sequence.
Number of rows per time increment. Usually 1 or 2. Programming note: Value updated to ApptDrawing.RowsPerIncr to track current state.
If set to true, then the only operatories that will show will be for providers that have schedules for the day, ops with no provs assigned.
If OnlyScheduledProvs is set to true, and this time is not 0:00, then only provider schedules with start or stop time before this time will be included.
If OnlyScheduledProvs is set to true, and this time is not 0:00, then only provider schedules with start or stop time after this time will be included.
Enum:ApptViewStackBehavior
Enum:ApptViewStackBehavior
FK to clinic.ClinicNum. 0=All clinics. If OnlyScheduledProvs is set to true, then only provider schedules with matching clinic will be included.
Each item is attached to a row in the apptview table. Each item specifies ONE of: OpNum, ProvNum, ElementDesc, or ApptFieldDefNum. The other three will be 0 or "".
Primary key.
FK to apptview.
FK to operatory.OperatoryNum.
FK to provider.ProvNum.
Must be one of the hard coded strings picked from the available list.
If this is a row Element, then this is the 0-based order within its area. For example, UR starts over with 0 ordering.
If this is an element, then this is the color.
Enum:ApptViewAlignment. If this is an element, then this is the alignment of the element within the appointment.
FK to apptfielddef.ApptFieldDefNum. If this is an element, and the element is an appt field, then this tells us which one.
FK to patfielddef.PatFieldDefNum. If this is an element, and the element is an appt field, then this tells us which one. Not implemented yet.
An autocode automates entering procedures. The user only has to pick composite, for instance, and the autocode figures out the code based on the number of surfaces, and posterior vs. anterior. Autocodes also enforce and suggest changes to a procedure code if the number of surfaces or other properties change.
Primary key.
Displays meaningful decription, like "Amalgam".
User can hide autocodes
This will be true if user no longer wants to see this autocode message when closing a procedure. This makes it less intrusive, but it can still be used in procedure buttons.
AutoCode condition. Always attached to an AutoCodeItem, which is then, in turn, attached to an autocode. There is usually only one or two conditions for a given AutoCodeItem.
Primary key.
FK to autocodeitem.AutoCodeItemNum.
Enum:AutoCondition
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Corresponds to the autocodeitem table in the database. There are multiple AutoCodeItems for a given AutoCode. Each Item has one ADA code.
Primary key.
FK to autocode.AutoCodeNum
Do not use
FK to procedurecode.CodeNum
A trigger event causes one or more actions.
Primary key.
.
Enum:AutomationTrigger What triggers this automation
Regardless of module. Usually only used with conditions.
If this has a CompleteProcedure trigger, this is a comma-delimited list of codes that will trigger the action.
Enum:AutomationAction The action taken as a result of the trigger. To get more than one action, create multiple automation entries.
If a referral does not exist for this patient, then notify user instead.
FK to sheetdef.SheetDefNum. If the action is to print a sheet, then this tells which sheet to print. So it must be a custom sheet. Also, not that this organization does not allow passing parameters to the sheet such as which procedures were completed, or which appt was broken.
FK to definition.DefNum. Only used if action is CreateCommlog.
If a commlog action, then this is the text that goes in the commlog. If this is a ShowStatementNoteBold action, then this is the NoteBold. Might later be expanded to work with email or to use variables.
Each condition evaluates to true or false. A series of conditions for a single automation is ANDed together.
Primary key.
FK to automation.AutomationNum.
Enum:AutoCondField
Enum:AutoCondComparison Not all comparisons are allowed with all data types.
.
A single autonote template.
Primary key
Name of AutoNote
Was 'ControlsToInc' in previous versions.
In the program, this is now called an autonote prompt.
Primary key
The description of the prompt as it will be referred to from other windows.
'Text', 'OneResponse', or 'MultiResponse'. More types to be added later.
The prompt text.
For TextBox, this is the default text. For a ComboBox, this is the list of possible responses, one per line.
Corresponds to the benefit table in the database which replaces the old covpat table. A benefit is usually a percentage, deductible, limitation, max, or similar. Each row represents a single benefit. A benefit can have a value in EITHER PlanNum OR PatPlanNum. If it is for a PlanNum, the most common, then the benefit is attached to an insurance plan. If it is for a PatPlanNum, then it overrides the plan benefit, usually a percentage, for a single patient. Benefits we can't handle yet include posterior composites, COB duplication, amounts used, in/out of plan network, authorization required, missing tooth exclusion, and any date related limitations like waiting periods.
Here are examples of typical usage which parallel X12 usage.
Example fields shown in this order:
CovCat, ProcCode(- indicates blank), BenefitType, Percent, MonetaryAmt, TimePeriod, QuantityQualifier, Quantity, CoverageLevel
Annual Max Indiv $1000: None/General,-,Limitations,-1,1000,CalendarYear,None,0,Individual
Restorative 80%: Restorative,-,CoInsurance,80,-1,CalendarYear,None,0,None
$50 deductible: None/General,-,Deductible,-1,50,CalendarYear,None,0,Individual
Deductible waived on preventive: Preventive,-,Deductible,-1,0,CalendarYear,None,0,Individual
1 pano every 5 years: None,D0330,Limitations,-1,-1,Years?,Years,5,None
2 exams per year: Preventive(or Diagnostic),-,Limitations,-1,-1,BenefitYear,NumberOfServices,2,None
Fluoride limit 18yo: None, D1204, Limitations, -1, -1, CalendarYear/None, AgeLimit, 18,None (might require a second identical entry for D1205)
4BW every 6 months: None, D0274, Limitations, -1, -1, None, Months, 6,None.
The text above might be difficult to read. We are trying to improve the white spacing.
Primary key.
FK to insplan.PlanNum. Most benefits should be attached using PlanNum. The exception would be if each patient has a different percentage. If PlanNum is used, then PatPlanNum should be 0.
FK to patplan.PatPlanNum. It is rare to attach benefits this way. Usually only used to override percentages for patients. In this case, PlanNum should be 0.
FK to covcat.CovCatNum. Corresponds to X12 EB03- Service Type code. Situational, so it can be 0. Will probably be 0 for general deductible and annual max. There are very specific categories covered by X12. Users should set their InsCovCats to the defaults we provide.
Enum:InsBenefitType Corresponds to X12 EB01. Examples: 0=ActiveCoverage, 1=CoInsurance, 2=Deductible, 3=CoPayment, 4=Exclusions, 5=Limitations. ActiveCoverage doesn't really provide meaningful information.
Used in the benefit table. Corresponds to X12 EB01.
0- Not usually used. Would only be used if you are just indicating that the patient is covered, but without any specifics.
1- Used for percentages to indicate portion that insurance will cover. When interpreting electronic benefit information, this is the opposite percentage, the percentage that the patient will pay after deductible.
2- The deductible amount. Might be two entries if, for instance, deductible is waived on preventive.
3- A dollar amount.
4- Services that are simply not covered at all.
5- Covers a variety of limitations, including Max, frequency, fee reductions, etc.
Only used if BenefitType=CoInsurance. Valid values are 0 to 100. -1 indicates empty, which is almost always true if not CoInsurance. The percentage that insurance will pay on the procedure. Note that benefits coming from carriers are usually backwards, indicating the percetage that the patient is responsible for.
Used for CoPayment, Limitations, and Deductible. -1 indicates empty
Enum:BenefitTimePeriod Corresponds to X12 EB06, Time Period Qualifier. Examples: 0=None,1=ServiceYear,2=CalendarYear,3=Lifetime,4=Years. Might add Visit and Remaining.
Used in the benefit table. Corresponds to X12 EB06.
0- A timeperiod is frequenly not needed. For example, percentages.
1- The renewal month is not Jan. In this case, we need to know the effective date so that we know which month the benefits start over in.
2- Renewal month is Jan.
3- Usually used for ortho max.
4- Wouldn't be used alone. Years would again be specified in the quantity field along with a number.
Enum:BenefitQuantity Corresponds to X12 EB09. Not used very much. Examples: 0=None,1=NumberOfServices,2=AgeLimit,3=Visits,4=Years,5=Months
Used in the benefit table in conjunction with an integer quantity.
0- This is used a lot. Most benefits do not need any sort of quantity.
1- For example, two exams per year
2- For example, 18 when flouride only covered to 18 y.o.
3- For example, copay per 1 visit.
4- For example, pano every 5 years.
5- For example, BWs every 6 months.
Corresponds to X12 EB10. Qualify the quantity using QuantityQualifier.
FK to procedurecode.CodeNum. Typical uses include fluoride, sealants, etc. If a specific code is used here, then the CovCat should be None.
Enum:BenefitCoverageLevel Corresponds to X12 EB02. None, Individual, or Family. Individual and Family are commonly used for deductibles and maximums. None is commonly used for percentages and copays.
Used in the benefit table.
0- Since this is a situational X12 field, we can also have none. Typical for percentages and copayments.
1- The default for deductibles and maximums.
2- For example, family deductible or family maximum.
Not user-editable.
Primary key.
This will also be the folder name
.
A01. Up to 12 char.
Set to true if this network is in charge of handling all Request for Payment Reconciliation (RPR) transactions for all carriers within this network, as opposed to the individual carriers wihtin the network processing the RPR transactions themselves.
Every InsPlan has a Carrier. The carrier stores the name and address.
Primary key.
Name of the carrier.
.
Second line of address.
.
2 char in the US.
Postal code.
Includes any punctuation.
E-claims electronic payer id. 5 char in USA. 6 digits in Canada. I've seen an ID this long before: "LA-DHH-MEDICAID". The user interface currently limits length to 20, although db limits length to 255. X12 requires length between 2 and 80.
Do not send electronically. It's just a default; you can still send electronically.
Canada: True if a CDAnet carrier. This has significant implications: 1. It can be filtered for in the list of carriers. 2. An ElectID is required. 3. The ElectID can never be used by another carrier. 4. If the carrier is attached to any etrans, then the ElectID cannot be changed (and, of course, the carrier cannot be deleted or combined).
The version of CDAnet supported. Either 02 or 04.
FK to canadiannetwork.CanadianNetworkNum. Only used in Canada. Right now, there is no UI to the canadiannetwork table in our db.
.
1=No Encryption, 2=CDAnet standard #1, 3=CDAnet standard #2. Field A10.
Bit flags.
Used by the Central Manager. Stores the information needed to establish a connection to a remote database.
Primary key.
If direct db connection. Can be ip address.
If direct db connection.
If direct db connection.
If direct db connection. Symmetrically encrypted.
If connecting to the web service. Can be on VPN, or can be over https.
If connecting to the web service.
If connecting to the web service. Symmetrically encrypted.
.
0-based.
If set to true, the password hash is calculated differently.
Enables viewing a variety of views in chart module.
Primary key.
Description of this view. Gets displayed at top of Progress Notes grid.
0-based order to display in lists.
Enum:ChartViewProcStat None=0,TP=1,Complete=2,Existing Cur Prov=4,Existing Other Prov=8,Referred=16,Deleted=32,Condition=64,All=127.
Enum:ChartViewObjs None=0,Appointments=1,Comm Log=2,Comm Log Family=4,Tasks=8,Email=16,LabCases=32,Rx=64,Sheets=128,All=255.
Set true to show procedure notes.
Set true to enable audit mode.
Set true to only show information regarding the selected teeth.
Enum:OrionStatus Which orion statuses to show. Will be zero if not orion.
0- None. While a normal orion proc would never have this status2, it is still needed for flags in ChartViews. And it's also possible that a status2 slipped through the cracks and was not assigned, leaving it with this value.
1– Treatment planned
2– Completed
4– Existing prior to incarceration
8– Refused treatment
16– Referred out to specialist
32– Completed by specialist
64– Completed by registry
128- Cancelled, tx plan changed
256- Cancelled, eligible parole
512- Cancelled, parole/discharge
1024– Suspended, unacceptable plaque
2048- Stop clock, multi visit
4096– Watch
8192– Alternative
Enum:ChartViewDates
The claim table holds information about individual claims. Each row represents one claim.
Primary key
FK to patient.PatNum
Usually the same date as the procedures, but it can be changed if you wish.
Usually the date it was created. It might be sent a few days later if you don't send your e-claims every day.
Single char: U,H,W,P,S,or R. U=Unsent, H=Hold until pri received, W=Waiting in queue, S=Sent, R=Received. A(adj) is no longer used. P(prob sent) is no longer used.
Date the claim was received.
FK to insplan.PlanNum. Every claim is attached to one plan.
FK to provider.ProvNum. Treating provider for dental claims. For institutional claims, this is called the attending provider.
Total fee of claim.
Amount insurance is estimated to pay on this claim.
Amount insurance actually paid.
Deductible applied to this claim.
The predetermination of benefits number received from ins. In X12, REF G3.
Single char for No, Initial, or Replacement.
Date prior prosthesis was placed. Note that this is only for paper claims. E-claims have a date field on each individual procedure.
Note for patient for why insurance didn't pay as expected.
Note to be sent to insurance. Max 255 char. E-claims also have notes on each procedure.
"P"=primary, "S"=secondary, "PreAuth"=preauth, "Other"=other, "Cap"=capitation. Not allowed to be blank. Might need to add "Med"=medical claim.
FK to provider.ProvNum. Billing provider. Assignment can be automated from the setup section.
FK to referral.ReferralNum.
Referral number for this claim.
Enum:PlaceOfService .
0. CPT code 11
1. CPT code 12
2. CPT code 21
3. CPT code 22
4. CPT code 31
5. CPT code 33. In X12, a similar code AdultLivCareFac 35 is mentioned.
6. CPT code ?. We use 11 for office.
7. CPT code 15
8. CPT code 03
9. CPT code 26
10. CPT code 50
11. CPT code 71
12. CPT code 72
13. CPT code 23
14. CPT code 24
blank or A=Auto, E=Employment, O=Other.
Date of accident, if applicable.
Accident state.
Enum:YN .
Unknown,Yes, or No.
0
1
2
True if is ortho.
Remaining months of ortho. Valid values are 1-36.
Date ortho appliance placed.
Enum:Relat Relationship to subscriber. The relationship is copied from InsPlan when the claim is created. It might need to be changed in both places.
Relationship to subscriber for insurance.
0
1
2
3
4
5
6
7
8
FK to insplan.PlanNum. Other coverage plan number. 0 if none. This provides the user with total control over what other coverage shows. This obviously limits the coverage on a single claim to two insurance companies.
Enum:Relat The relationship to the subscriber for other coverage on this claim.
Relationship to subscriber for insurance.
0
1
2
3
4
5
6
7
8
Sum of ClaimProc.Writeoff for this claim.
The number of x-rays enclosed.
FK to clinic.ClinicNum. 0 if no clinic. Since one claim cannot have procs from multiple clinics, the clinicNum is set when creating the claim and then cannot be changed. The claim would have to be deleted and recreated. Otherwise, if changing at the claim level, a feature would have to be added that synched all procs, claimprocs, and probably some other tables.
FK to claimform.ClaimFormNum. 0 if not assigned to use the claimform for the insplan.
The number of intraoral images attached. Not the number of files attached. This is the value that goes on the 2006 claimform.
The number of models attached.
A comma-delimited set of flag keywords. Can have one or more of the following: EoB,Note,Perio,Misc. Must also contain one of these: Mail or Elect.
Example: NEA#1234567. If present, and if the claim note does not already start with this Id, then it will be prepended to the claim note for both e-claims and mail. If using e-claims, this same ID will be used for all PWK segements.
A08. Any combination of E(email), C(correspondence), M(models), X(x-rays), and I(images). So up to 5 char. Gets converted to a single char A-Z for e-claims.
B05. Optional. The 9-digit CDA number of the referring provider, or identifier of referring party up to 10 characters in length.
B06. A number 0(none) through 13.
F18. Y, N, or X(not a lower denture, crown, or bridge).
F19. Mandatory if F18 is N.
F21. If crown, not required. If denture or bridge, required if F18 is N. Single digit number code, 0-6. We added type 7, which is crown.
F15. Y, N, or X(not an upper denture, crown, or bridge).
F04. Mandatory if F15 is N.
F20. If crown, not required. If denture or bridge, required if F15 is N. 0 indicates empty response. Single digit number code, 1-6. We added type 7, which is crown.
FK to inssub.InsSubNum.
FK to inssub.InsSubNum.
G01 assigned by carrier/network and returned in acks. Used for claim reversal.
F37 Used for predeterminations.
F28 Used for predeterminations.
F29 Used for predeterminations.
F30 Used for predeterminations.
F31 Used for predeterminations.
F32 Used for predeterminations.
This is NOT the predetermination of benefits number. In X12, this is REF G1.
Enum:EnumClaimSpecialProgram This is used to track EPSDT.
0=none, 1=EPSDT_1, 2=Handicapped_2, 3=SpecialFederal_3, (no 4), 5=Disability_5, 9=SecondOpinion_9
A three digit number used on 837I. Aka Bill Code. UBO4 4. Examples: 321,823,131,652. The third digit is claim frequency code. If this is used, then our CorrectionType should be 0=original.
Enum:EnumClaimMedType 0=Dental, 1=Medical, 2=Institutional
Used for inst claims. Single digit. X12 2300 CL101. UB04 14. Should only be required for IP, but X12 clearly states required for all.
Used for inst claims. Single char. X12 2300 CL102. UB04 15. Should only be required for IP, but X12 clearly states required for all.
Used for inst claims. Two digit. X12 2300 CL103. UB04 17. Should only be required for IP, but X12 clearly states required for all.
FK to definition.DefNum. Most users will leave this blank. Some offices may set up tracking statuses such as 'review', 'hold', 'riskmanage', etc.
Used for historical purposes only, not sent electronically. Automatically set when CorrectionType is not original and the claim is resent.
X12 CLM05-3. Usually set to original, but can be used to resubmit claims.
X12 CLM01. Unique identifier for the claim within the current database. Defaults to PatNum/ClaimNum, but can be edited by user.
X12 2300 REF (F8). Used when resending claims to refer to the original claim. The user must type this value in after reading it from the original claim response report.
Keeps track of one image file attached to a claim. Multiple files can be attached to a claim using this method.
Primary key.
FK to claim.ClaimNum
The name of the file that shows on the claim. For example: tooth2.jpg.
The actual file is stored in the A-Z folder in EmailAttachments. (yes, even though it's not actually an email attachment) The files are named automatically based on Date/time along with a random number. This ensures that they will be sequential as well as unique.
There is either one or zero per claim.
Primary key.
FK to claim.ClaimNum.
Corresponds with condition code 18 on the UB04.
Corresponds with condition code 19 on the UB04.
Corresponds with condition code 20 on the UB04.
Corresponds with condition code 21 on the UB04.
Corresponds with condition code 22 on the UB04.
Corresponds with condition code 23 on the UB04.
Corresponds with condition code 24 on the UB04.
Corresponds with condition code 25 on the UB04.
Corresponds with condition code 26 on the UB04.
Corresponds with condition code 27 on the UB04.
Corresponds with condition code 28 on the UB04.
Stores the information for printing different types of claim forms. Each claimform has many claimformitems attached to it, one for each field on the claimform. This table has nothing to do with the actual claims. It just describes how to print them.
Primary key.
eg. ADA2002 or CA Medicaid
If true, then it will not be displayed in various claim form lists as a choice.
Valid font name for all text on the form.
Font size for all text on the form.
For instance OD12 or JoeDeveloper9. If you are a developer releasing claimforms, then this should be your name or company followed by a unique number. This will later make it easier for you to maintain your claimforms for your customers. All claimforms that we release will be of the form OD##. Forms that the user creates will have this field blank, protecting them from being changed by us. So far, we have built the following claimforms: ADA2002=OD1, Denti-Cal=OD2, ADA2000=OD3, HCFA1500=OD4, HCFA1500preprinted=OD5, Canadian=OD6, Belgian=OD7, ADA2006=OD8, 1500=OD9, UB04=OD10, ADA2012=OD11
Set to false to not print images. This removes the background for printing on premade forms.
Shifts all items by x/100th's of an inch to compensate for printer, typically less than 1/4 inch.
Shifts all items by y/100th's of an inch to compensate for printer, typically less than 1/4 inch.
One item is needed for each field on a claimform.
Primary key.
FK to claimform.ClaimFormNum
If this item is an image. Usually only one per claimform. eg ADA2002.emf. Otherwise it MUST be left blank, or it will trigger an error that the image cannot be found.
Must be one of the hardcoded available fieldnames for claims.
For dates, the format string. ie MM/dd/yyyy or M d y among many other possibilities.
The x position of the item on the claim form. In pixels. 100 pixels per inch.
The y position of the item.
Limits the printable area of the item. Set to zero to not limit.
Limits the printable area of the item. Set to zero to not limit.
Each row represents a single check from the insurance company. The amount may be split between patients using claimprocs. The amount of the check must always exactly equal the sum of all the claimprocs attached to it. There might be only one claimproc.
Primary key.
Date the check was entered into this system, not the date on the check.
The amount of the check.
The check number.
Bank and branch.
Note for this check if needed.
FK to clinic.ClinicNum. 0 if no clinic.
FK to deposit.DepositNum. 0 if not attached to any deposits.
Descriptive name of the carrier just for reporting purposes. We use this because the CarrierNums could conceivably be different for the different claimprocs attached.
Date that the carrier issued the check. Date on the check.
.
Links procedures to claims. Also links ins payments to procedures or claims. Also used for estimating procedures even if no claim yet. Warning: One proc might be linked twice to a given claim if insurance made two payments. Many of the important fields are actually optional. For instance, ProcNum is only required if itemizing ins payment, and ClaimNum is blank if Status=adjustment,cap,or estimate.
Primary key.
FK to procedurelog.ProcNum.
FK to claim.ClaimNum.
FK to patient.PatNum.
FK to provider.ProvNum. At least one office has been manually setting their claimproc provider to a different provider when entering payments as a means to track provider income. So we can't force this to always be the same as the procedure. We also don't want to change any historical data, so only synched when setting appt complete or if an estimate. Right now on e-claims, we are sending the prov from the procedure. When we have time, we will change e-claims to send the proc from the ClaimProc.
Fee billed to insurance. Might not be the same as the actual fee. The fee billed can be different than the actual procedure. For instance, if you have set the insurance plan to bill insurance using UCR fees, then this field will contain the UCR fee instead of the fee that the patient was charged.
Only if attached to a claim. Actual amount this carrier is expected to pay, after taking everything else into account. Considers annual max, override, percentAmt, copayAmt, deductible, etc. This estimate is computed automatically when sent to ins.
0 if blank. Deductible applied to this procedure only. Only for procedures attached to claims. Otherwise, the DedEst and DedEstOverride are used.
Enum:ClaimProcStatus .
Claimproc Status. The status must generally be the same as the claim, although it is sometimes not strictly enforced.
0: For claims that have been created or sent, but have not been received.
1: For claims that have been received.
2: For preauthorizations.
3: The only place that this status is used is to make adjustments to benefits from the coverage window. It is never attached to a claim.
4:This differs from Received only slightly. It's for additional payments on procedures already received. Most fields are blank.
5: CapClaim is used when you want to send a claim to a capitation insurance company. These are similar to Supplemental in that there will always be a duplicate claimproc for a procedure. The first claimproc tracks the copay and writeoff, has a status of CapComplete, and is never attached to a claim. The second claimproc has status of CapClaim.
6: Estimates have replaced the fields that were in the procedure table. Once a procedure is complete, the claimprocstatus will still be Estimate. An Estimate can be attached to a claim and status gets changed to NotReceived.
7: For capitation procedures that are complete. This replaces the old procedurelog.CapCoPay field. This stores the copay and writeoff amounts. The copay is only there for reference, while it is the writeoff that actually affects the balance. Never attached to a claim. If procedure is TP, then status will be CapEstimate. Only set to CapComplete if procedure is Complete.
8: For capitation procedures that are still estimates rather than complete. When procedure is completed, this can be changed to CapComplete, but never to anything else.
Amount insurance actually paid.
The remarks that insurance sends in the EOB about procedures.
FK to claimpayment.ClaimPaymentNum(the insurance check).
FK to insplan.PlanNum
This is the date that is used for payment reports and tracks the payment date. Always exactly matches the date of the ClaimPayment it's attached to. See the note under Ledgers.ComputePayments. This will eventually not be used for aging. The ProcDate will instead be used. See ProcDate.
Amount not covered by ins which is written off. The writeoff estimate goes in a different column.
The procedure code that was sent to insurance. This is not necessarily the usual procedure code. It will already have been trimmed to 5 char if it started with "D", or it could be the alternate code. Not allowed to be blank if it is procedure.
The allowed fee (not the override) is a complex calculation which is performed on the fly in Procedure.ComputeEstimates/ClaimProc.ComputeBaseEst. It is the amount that the percentage is based on. If this carrier has a lower UCR than the office, then the allowed fee is where that is handled. It can be pulled from an allowed fee schedule. It is also where substitutions for posterior composites are handled. The AllowedOverride allows the user to override the calculation. -1 indicates blank. A new use of this field is for when entering insurance payments. On the eob, it will tell you what the allowed/UCR fee is. The user will now be able to enter this information into the AllowedOverride field. They will simultaneously pass the info to the allowed fee schedule. AllowedOverride is never changed automatically by the program except to sometimes set it to -1 if NoBillIns.
-1 if blank. Otherwise a number between 0 and 100. The percentage that insurance pays on this procedure, as determined from insurance categories. Not user editable.
-1 if blank. Otherwise a number between 0 and 100. Can only be changed by user.
-1 if blank. Calculated automatically. User cannot edit but can use CopayOverride instead. Opposite of InsEst, because this is the patient portion estimate. Two different uses: 1. For capitation, this automates calculation of writeoff. 2. For any other insurance, it gets deducted during calculation as shown in the edit window. Neither use directly affects patient balance.
Set to true to not bill to this insurance plan.
-1 if blank. The amount paid or estimated to be paid by another insurance. This amount is then subtracted from what the current insurance would pay. When running the calculation and considering other claimprocs, it will ignore any patPlan with a higher ordinal. So, always blank for primary claims. User cannot edit, but can use PaidOtherInsOverride.
Always has a value. Used in TP, etc. The base estimate is the ((fee or allowedOverride)-Copay) x (percentage or percentOverride). Does not include all the extras like ded, annualMax,and paidOtherIns that InsEstTotal holds. BaseEst cannot be overridden by the user. Instead, the following fields can be manipulated: allowedOverride, CopayOverride, PercentOverride.
-1 if blank. See description of CopayAmt. This lets the user set a copay that will never be overwritten by automatic calculations.
Date of the procedure. Currently only used for tracking annual insurance benefits remaining. Important in Adjustments to benefits. For total claim payments, MUST be the date of the procedures to correctly figure benefits. Will eventually transition to use this field to actually calculate aging. See the note under Ledgers.ComputePayments.
Date that it was changed to status received or supplemental. It is usually attached to a claimPayment at that point, but not if user forgets. This is still the date that it becomes important financial data. Only applies if Received or Supplemental. Otherwise, the date is disregarded. User may never edit. Important in audit trail.
Assigned when claim is created as a way to order the procs showing on a claim. Really only used in Canadian claims for now as F07.
-1 if blank. Not sure why we need to allow -1. Calculated automatically. User cannot edit, but can use DedEstOverride instead.
-1 if blank. Overrides the DedEst value.
Always has a value. BaseEst-(DedEst or DedEstOverride)-PaidOtherIns-OverAnnualMax. User cannot edit, but can instead use InsEstTotalOverride.
-1 if blank. Overrides the InsEstTotal value.
-1 if blank. Overrides the PaidOtherIns value.
An automatically generated note that displays information about over max, exclusions, and other limitations for which there are no fields. Only applies to estimate. Once it's attached to a claim, similar information can go in the remarks field.
-1 if blank. The estimated writeoff as calculated by OD. Usually only used for PPOs.
-1 if blank. Overrides WriteOffEst. Usually only used for PPOs.
FK to clinic.ClinicNum. Can be zero. No user interface for editing. Forced to always be the same as the procedure, or if no procedure, then the claim.
FK to inssub.InsSubNum.
1-indexed. Allows user to sort the order of payments on an EOB. All claimprocs for a payment will have the same PaymentRow value.
Value codes for institutional 'claims'. Can have up to 12 per claim.
Primary key.
FK to claim.ClaimNum.
Descriptive abbreviation to help place field on form (Ex: "FL55" for field 55).
Value Code. 2 char.
Value Code Amount.
Order of Value Code
Since we can send e-claims to multiple clearinghouses, this table keeps track of each clearinghouse. Will eventually be used for individual carriers as well if they accept
Primary key.
Description of this clearinghouse
The path to export the X12 file to. \ is now optional.
A list of all payors which should have claims sent to this clearinghouse. Comma delimited with no spaces. Not necessary if IsDefault.
Enum:ElectronicClaimFormat The format of the file that gets sent electronically.
For every type of electronic claim format that Open Dental can create, there will be an item in this enumeration. All e-claim formats are hard coded due to complexity.
0-Not in database, but used in various places in program.
1-The American standard through 12/31/11.
2-Proprietary format for Renaissance.
3-CDAnet format version 4.
4-CSV file adaptable for use in Netherlands.
5-The American standard starting on 1/1/12.
6-Either professional or medical. The distiction is stored at the claim level.
Sender ID Qualifier. Usually ZZ, sometimes 30. Seven other values are allowed as specified in X12 document, but probably never used.
Used in ISA06, GS02, 1000A NM1, and 1000A PER. If blank, then 810624427 is used to indicate Open Dental.
Receiver ID Qualifier. Usually ZZ, sometimes 30. Seven other values are allowed as specified in X12 document, but probably never used.
Receiver ID. Also used in GS03. Provided by clearinghouse. Examples: BCBSGA or 0135WCH00(webMD)
"P" for Production or "T" for Test.
Password is usually combined with the login ID for user validation.
The path that all incoming response files will be saved to. \ is now optional.
Enum:EclaimsCommBridge One of the included hard-coded communications briges. Or none to just create the claim files without uploading.
Each clearinghouse can have a hard-coded comm bridge which handles all the communications of transfering the claim files to the clearinghouse/carrier. Does not just include X12, but can include any format at all.
0-No comm bridge will be activated. The claim files will be created to the specified path, but they will not be uploaded.
1
2
3
4
5
6
7
8
9 Canadian clearinghouse.
10
11
12
13
14
15 Canadian clearinghouse.
If applicable, this is the name of the client program to launch. It is even used by the hard-coded comm bridges, because the user may have changed the installation directory or exe name.
Each clearinghouse increments their batch numbers by one each time a claim file is sent. User never sees this number. Maxes out at 999, then loops back to 1. This field must NOT be cached and must be ignored in the code except where it explicitly retrieves it from the db. Defaults to 0 for brand new clearinghouses, which causes the first batch to go out as #1.
Was not used. 1,2,3,or 4. The port that the modem is connected to if applicable. Always uses 9600 baud and standard settings. Will crash if port or modem not valid.
A clearinghouse usually has a login ID that is used with the password in order to access the remote server. This value is not usualy used within the actual claim.
Used in 1000A NM1 and 1000A PER. But if SenderTIN is blank, then OPEN DENTAL SOFTWARE is used instead.
Used in 1000A PER. But if SenderTIN is blank, then 8776861248 is used instead. 10 digit phone is required by WebMD and is universally assumed, so for now, this must be either blank or 10 digits.
Usually the same as ISA08, but at least one clearinghouse uses a different number here.
Authorization information. Almost always blank. Used for Denti-Cal.
Security information. Almost always blank. Used for Denti-Cal.
X12 component element separator. Two digit hexadecimal string representing an ASCII character or blank. Usually blank, implying 3A which represents ':'. For Denti-Cal, hexadecimal value 22 must be used, corresponding to '"'.
X12 data element separator. Two digit hexadecimal string representing an ASCII character or blank. Usually blank, implying 2A which represents '*'. For Denti-Cal, hexadecimal value 1D must be used, corresponding to the "group separator" character which has no visual representation.
X12 segment terminator. Two digit hexadecimal string representing an ASCII character or blank. Usually blank, implying 7E which represents '~'. For Denti-Cal, hexadecimal value 1C must be used, corresponding to the "file separator" character which has no visual representation.
A clinic is usually a separate physical office location. If multiple clinics are sharing one database, then this is used. Patients, Operatories, Claims, and many other types of objects can be assigned to a clinic.
Primary key. Used in patient,payment,claimpayment,appointment,procedurelog, etc.
.
.
Second line of address.
.
2 char in the US.
.
Does not include any punctuation. Exactly 10 digits or blank in USA and Canada.
The account number for deposits.
Enum:PlaceOfService Usually 0 unless a mobile clinic for instance.
0. CPT code 11
1. CPT code 12
2. CPT code 21
3. CPT code 22
4. CPT code 31
5. CPT code 33. In X12, a similar code AdultLivCareFac 35 is mentioned.
6. CPT code ?. We use 11 for office.
7. CPT code 15
8. CPT code 03
9. CPT code 26
10. CPT code 50
11. CPT code 71
12. CPT code 72
13. CPT code 23
14. CPT code 24
FK to provider.ProvNum. 0=Default practice provider, -1=Treating provider.
Does not include any punctuation. Exactly 10 digits or empty in USA and Canada.
FK to EmailAddress.EmailAddressNum.
One clock-in / clock-out pair. Of, if the pair is a break, then it's an out/in pair. With normal clock in/out pairs, we want to know how long the employee was working. It's the opposite with breaks. We want to know how long they were not working, so the pair is backwards. This means that a normal clock in is left incomplete when the clock out for break is created. And once both are finished, the regular in/out will surround the break. Breaks cannot be viewed easily on the same grid as regular clock events for this reason. And since breaks do not affect pay, they should not clutter the normal grid.
Primary key.
FK to employee.EmployeeNum
The actual time that this entry was entered. Cannot be 01-01-0001.
The time to display and to use in all calculations. Cannot be 01-01-0001.
Enum:TimeClockStatus Home, Lunch, or Break. The status really only applies to the clock out. Except the Break status applies to both out and in.
0
1
2
.
The user can never edit this, but the program has to be able to edit this when user clocks out. Can be 01-01-0001 if not clocked out yet.
User can edit. Can be 01-01-0001 if not clocked out yet.
This is a manual override for OTimeAuto. Typically -1 hour (-01:00:00) to indicate no override. When used as override, allowed values are zero or positive. This is an alternative to using a TimeAdjust row.
Automatically calculated OT. Will be zero if none.
This is a manual override of AdjustAuto. Ignored unless AdjustIsOverridden set to true. When used as override, it's typically negative, although zero and positive are also allowed.
Automatically calculated Adjust. Will be zero if none.
True if AdjustAuto is overridden by Adjust.
Override for AmountBonusAuto. -1 indicates no override.
Automatically created bonus (due to differential and OT hours worked). -1 will indicate no bonus calculated.
Tracks all forms of communications with patients, including emails, phonecalls, postcards, etc.
Primary key.
FK to patient.PatNum.
Date and time of entry
FK to definition.DefNum. This will be 0 if IsStatementSent. Used to be an enumeration in previous versions.
Note for this commlog entry.
Enum:CommItemMode Phone, email, etc.
0-
1-
2
3
4
5
Enum:CommSentOrReceived Neither=0,Sent=1,Received=2.
0=neither, 1=sent, 2=received.
0
1
2
FK to userod.UserNum.
Signature. For details, see procedurelog.Signature.
True if signed using the Topaz signature pad, false otherwise.
Automatically updated by MySQL every time a row is added or changed.
Date and time when commlog ended. Mainly for internal use.
Keeps track of the computers in an office. The list will eventually become cluttered with the names of old computers that are no longer in service. The old rows can be safely deleted. Although the primary key is used in at least one table, this will probably be changed, and the computername will become the primary key.
Primary key.
Name of the computer.
Allows use to tell which computers are running. All workstations record a heartbeat here at an interval of 3 minutes. And when they shut down, they set this value to min. So if the heartbeat is fairly fresh, then that's an accurate indicator of whether Open Dental is running on that computer.
Enables preference specification for individual computers on a customer network.
Primary key.
The human-readable name of the computer on the network (not the IP address).
Set to true if the tooth chart is to use a hardware accelerated OpenGL window when available. Set to false to use software rendering when available. Of course, the final pixel format on the customer machine depends on the list of available formats. Best match pixel format is always used. This option only applies if GraphicsSimple is set to false.
Enum:DrawingMode Set to 1 to use the low-quality 2D tooth chart in the chart module. Set to 0 to use a 3D DirectX based tooth chart in the chart module. This option helps the program run even when the local graphics hardware is buggy or unavailable.
Indicates the type of Suni sensor connected to the local computer (if any). This can be a value of A, B, C, or D.
Indicates wether or not the Suni sensor uses binned operation.
Indicates which Suni box port to connect with. There are 2 ports on a box (ports 0 and 1).
Indicates the exposure level to use when capturing from a Suni sensor. Values can be 1 through 7.
Indicates if the user prefers double-buffered 3D tooth-chart (where applicable).
Indicates the current pixel format by number which the user prefers.
The path of the A-Z folder for the specified computer. Overrides the officewide default. Used when multiple locations are on a single virtual database and they each want to look to the local data folder for images.
If the global setting for showing the Task List is on, this controls if it should be hidden on this specified computer
Dock task bar on bottom (0) or right (1).
X pos for right docked task list.
Y pos for bottom docked task list.
Holds a semi-colon separated list of enumeration names and values representing a DirectX format. If blank, then
no format is currently set and the best theoretical foramt will be chosen at program startup. If this value is set to
'opengl' then this computer is using OpenGL and a DirectX format will not be picked.
The index of the most recent appt view for this computer. Uses it when opening.
Show the select scanner dialog when scanning documents.
Show the scanner options dialog when scanning documents.
Attempt to scan in duplex mode when scanning multipage documents with an ADF.
Scan in gray scale when scanning documents.
Scan at the specified resolution when scanning documents.
0-100. Quality of jpeg after compression when scanning documents. 100 indicates full quality. Opposite of compression.
Like a rolodex for businesses that the office interacts with. Used to store pharmacies, etc.
Primary key.
Last name or, frequently, the entire name.
First name is optional.
Work phone.
Fax number.
FK to definition.DefNum
Note for this contact.
Used in public health.
Primary Key.
Frequently used as the primary key of this table. But it's allowed to change. Change is programmatically synchronized.
Optional. Usage varies.
Insurance coverage categories. They need to look like in the manual for the American calculations to work properly.
Primary key. Only used in Benefit and CovSpan tables.
Description of this category.
Default percent for this category. -1 to skip this category and not apply a percentage.
The order in which the categories are displayed. Includes hidden categories. 0-based.
If true, this category will be hidden.
Enum:EbenefitCategory The X12 benefit categories. Each CovCat can link to one X12 category. Default is 0 (unlinked).
The X12 benefit categories. Used to link the user-defined CovCats to the corresponding X12 category.
0- Default. Applies to all codes.
1- X12: 30 and 35. All ADA codes except ortho. D0000-D7999 and D9000-D9999
2- X12: 23. ADA D0000-D0999. This includes DiagnosticXray.
3- X12: 24. ADA D4000
4- X12: 25. ADA D2000-D2699, and D2800-D2999.
5- X12: 26. ADA D3000
6- X12: 27. ADA D5900-D5999
7- X12: 36. Exclusive subcategory of restorative. D2700-D2799
8- X12: 37. ADA range?
9- X12: 38. ADA D8000-D8999
10- X12: 39. ADA D5000-D5899 (removable), and D6200-D6899 (fixed)
11- X12: 40. ADA D7000
12- X12: 41. ADA D1000
13- X12: 4. ADA D0200-D0399. So this is like an optional category which is otherwise considered to be diagnosic.
14- X12: 28. ADA D9000-D9999
Always attached to covcats, this describes the span of procedure codes to which the category applies.
Primary key.
FK to covcat.CovCatNum.
Lower range of the span. Does not need to be a valid code.
Upper range of the span. Does not need to be a valid code.
One credit card along with any recurring charge information.
Primary key.
FK to patient.PatNum.
.
Postal code.
Token for X-Charge. Alphanumeric, upper and lower case, about 15 char long. Passed into Xcharge instead of the actual card number.
Credit Card Number. Will be stored masked: XXXXXXXXXXXX1234.
Only month and year are used, the day will usually be 1.
The order that multiple cards will show. Zero-based. First one will be default.
Amount set for recurring charges.
Start date for recurring charges.
Stop date for recurring charges.
Any notes about the credit card or account goes here.
FK to payplan.PayPlanNum.
For internal use only.
Primary key.
FK to patient.PatNum. The customer seeking a reference.
FK to patient.PatNum. The chosen reference. This is the customer who was given as a reference to the new customer.
Date the reference was chosen.
Notes specific to this particular reference entry, mostly for a special reference situation.
One to one relation with the patient table representing each customer as a reference.
Primary key.
FK to patient.PatNum.
Most recent date the reference was used, loosely kept updated.
Notes specific to this customer as a reference.
Set to true if this customer was a bad reference.
A table just used by the dashboard to store historical AR because it never changes and it takes too long (1 second for each of the 12 dates) to compute on the fly. One entry per month going back at least 12 months. This table gets automatically filled the first time that the dashboard is used. The most recent month also gets added by using the dashboard.
Primary key.
This date will always be the last day of a month.
Bal_0_30+Bal_31_60+Bal_61_90+BalOver90 for all patients. This should also exactly equal BalTotal for all patients with positive amounts. Negative BalTotals are credits, not A/R.
Sum of all InsEst for all patients for the month.
The info in the definition table is used by other tables extensively. Almost every table in the database links to definition. Almost all links to this table will be to a DefNum. Using the DefNum, you can find any of the other fields of interest, usually the ItemName. Make sure to look at the Defs class to see how the definitions are used. Loaded into memory ahead of time for speed. Some types of info such as operatories started out life in this table, but then got moved to their own table when more complexity was needed.
Primary key.
Enum:DefCat
Definition Category. Go to the definition setup window in the program to see how each of these categories is used.
0- Colors to display in Account module.
1- Adjustment types.
2- Appointment confirmed types.
3- Procedure quick add list for appointments.
4- Billing types.
5- Not used.
6- Not used.
7- Not used.
8- Medical notes for quick paste.
9- No longer used
10- Payment types.
11- Procedure code categories.
12- Progress note colors.
13- Statuses for recall, unscheduled, and next appointments.
14- Service notes for quick paste.
15- Discount types.
16- Diagnosis types.
17- Colors to display in the Appointments module.
18- Image categories.
19- Quick add notes for the ApptPhoneNotes, which is getting phased out.
20- Treatment plan priority names.
21- Miscellaneous color options.
22- Colors for the graphical tooth chart.
23- Categories for the Contact list.
24- Categories for Letter Merge.
25- Types of Schedule Blockouts.
26- Categories of procedure buttons in Chart module
27- Types of commlog entries.
28- Categories of Supplies
29- Types of unearned income used in accrual accounting.
30- Prognosis types.
31- Custom Tracking, statuses such as 'review', 'hold', 'riskmanage', etc.
Order that each item shows on various lists. 0-indexed.
Each category is a little different. This field is usually the common name of the item.
This field can be used to store extra info about the item.
Some categories include a color option.
If hidden, the item will not show on any list, but can still be referenced.
When some objects are deleted, we sometimes need a way to track them for synching purposes. Other objects already have fields for IsHidden or PatStatus which track deletions just fine. Those types of objects will not use this table.
Primary key.
Foreign key to a number of different tables, depending on which type it is.
Enum:DeletedObjectType
Updated any time the row is altered in any way.
A deposit slip. Contains multiple insurance and patient checks.
Primary key.
The date of the deposit.
User editable. Usually includes name on the account and account number. Possibly the bank name as well.
Total amount of the deposit. User not allowed to directly edit.
Short description to help identify the deposit.
Spell check custom dictionary, shared by the whole office.
Primary key.
No space or punctuation allowed.
Each row is one disease that one patient has. Now called a problem in the UI. Must have either a DiseaseDefNum or an ICD9Num.
Primary key.
FK to patient.PatNum
FK to diseasedef.DiseaseDefNum. The disease description is in that table. Will be zero if ICD9Num has a value.
Any note about this disease that is specific to this patient.
The last date and time this row was altered. Not user editable. Will be set to NOW by OD if this patient gets an OnlinePassword assigned.
FK to icd9.ICD9Num. Will be zero if DiseaseDefNum has a value.
Enum:ProblemStatus Active=0, Resolved=1, Inactive=2.
0=Active, 1=Resolved, 2=Inactive
0
1
2
Date that the disease was diagnosed. Can be minval if unknown.
Date that the disease was set resolved or inactive. Will be minval if still active. ProbStatus should be used to determine if it is active or not.
A list of diseases that can be assigned to patients. Cannot be deleted if in use by any patients.
Primary key.
.
0-based. The order that the diseases will show in various lists.
If hidden, the disease will still show on any patient that it was previously attached to, but it will not be available for future patients.
The last date and time this row was altered. Not user editable.
Allows customization of which fields display in various lists and grids. For now, the only grid is ProgressNotes. Will also eventually let users set column widths and translate titles. For now, the selections are the same for all computers.
Primary key.
This is the internal name that OD uses to identify the field within this category. This will be the default description if the user doesn't specify an alternate.
Order to display in the grid or list. Every entry must have a unique itemorder.
Optional alternate description to display for field. Can be in another language. For the ortho category, this is the 'key', since InternalName is blank.
For grid columns, this lets user override the column width. Especially useful for foreign languages.
Enum:DisplayFieldCategory. If category is 0, then this is attached to a ChartView.
FK to chartview.ChartViewNum. 0 if attached to a category.
Represents a single document in the images module.
Primary key.
Description of the document.
Date created.
FK to definition.DefNum. Categories for documents.
FK to patient.PatNum. The document will be located in the patient folder of this patient.
The name of the file. Does not include any directory info.
Enum:ImageType eg. document, radiograph, photo, file
The type of image for images module.
0- Includes scanned documents and screenshots.
1
2
3- For instance a Word document or a spreadsheet. Not an image.
4- For xray mount sets.
True if flipped horizontally. A vertical flip would be stored as a horizontal flip plus a 180 rotation.
Only allowed 0,90,180, and 270.
Incomplete. An optional list of tooth numbers separated by commas. The tooth numbers will be in American format and must be processed for display. When displayed, dashes will be used for sequences of 3 or more tooth numbers.
.
True if the signature is in Topaz format rather than OD format.
The encrypted and bound signature in base64 format. The signature is bound to the byte sequence of the original image.
Crop rectangle X in original image pixel coordinates. May be negative.
Crop rectangle Y in original image pixel coordinates. May be negative.
Crop rectangle Width in original image pixel coordinates. May be zero if no cropping. May be greater than original image width.
Crop rectangle Height in original image pixel coordinates. May be zero if no cropping. May be greater than original image height.
The lower value of the "windowing" (contrast/brightness) for radiographs. Default is 0. Max is 255.
The upper value of the "windowing" (contrast/brightness) for radiographs. Default is 0(no windowing). Max is 255.
FK to mountitem.MountItemNum. If set, then this image will only show on a mount, not in the main tree. If set to 0, then no mount item is associated with this document.
Date/time last altered.
The raw file data encoded as base64. Only used if there is no AtoZ folder.
Thumbnail encoded as base64. Only present if not using AtoZ folder. 100x100 pixels, jpg, takes around 5.5k.
For storing docs/images in database. This table is for the various miscellaneous documents that are not in the normal patient subfolders.
Primary key.
Date created.
The name the file would have if it was not in the database. Does not include any directory info.
Enum:DocumentMiscType Corresponds to the same subfolder within AtoZ folder. eg. UpdateFiles
More types will be added to correspond to most of the subfolders inside the AtoZ folder. But no point adding them until we implement.
0- There will just be zero or one row of this type. It will contain a zipped archive.
The raw file data encoded as base64.
Manufacturer of a vaccine.
Primary key.
.
An abbreviation of the manufacturer name.
And other kinds of units. We will only prefill this list with units needed for the tests. Users would have to manually add any other units.
Primary key.
Example ml, capitalization not critical. Usually entered as lowercase except for L.
Example milliliter.
A message that will show on certain patient statements when printing bills. Criteria must be met in order for the dunning message to show.
Primary key.
The actual dunning message that will go on the patient bill.
FK to definition.DefNum.
Program forces only 0,30,60,or 90.
Enum:YN Set Y to only show if insurance is pending.
Unknown,Yes, or No.
0
1
2
A message that will be copied to the NoteBold field of the Statement.
EHR education resource. Only one of the 4 FK fields will be used at a time. The other two will be blank. Displays a clickable URL if the patient meets certain criteria.
Primary key.
FK to icd9.ICD9Num.
FK to diseasedef.DiseaseDefNum.
FK to medication.MedicationNum.
FK to labresult.TestID.
Used for display in the grid.
String, example <43. Must start with < or > followed by int. Only used if FK LabResultID is used.
.
For EHR module, automate measure calculation.
Primary key.
Enum:EhrMeasureType
0-100, -1 indicates not entered yet.
0-100, -1 indicates not entered yet.
Stores events for EHR that are needed for reporting purposes.
Primary key.
Date and time of measure event.
Enum: EhrMeasureEventType.
FK to patient.PatNum
Only used for some types: EducationProvided, TobaccoCessation.
Only used by OD customer support to store and track Ehr Provider Keys for customers.
Primary key.
FK to patient.PatNum. There can be multiple EhrProvKeys per patient/customer.
The provider LName.
The provider FName.
The key assigned to the provider
Usually 1. Can be less, like .5 or .25 to indicate possible discount is justified.
Any notes that the tech wishes to include regarding this situation.
True if the provider has access to the reports needed to show MU. Changing this will require a new provider key.
Also used by OD customer support to store and track Ehr Quarterly Keys for customers.
Primary key.
Example 11
Example 2
The customer must have this exact practice name entered in practice setup.
The calculated key value, tied to year, quarter, and practice name.
Always zero for customer databases. When used by OD customer support, this is the customer num.
Any notes that the tech wishes to include regarding this situation.
Can also be a CCR. Sent CCDs are not saved here, only received CCDs/CCRs. To display a saved Ccd, it is combined with an internal stylesheet.
Primary key.
FK to patient.PatNum.
Date that this Ccd was received.
The xml content of the received text file.
Corresponds to the electid table in the database. Helps with entering elecronic/payor id's as well as keeping track of the specific carrier requirements. Only used by the X12 format.
Primary key.
aka Electronic ID. A simple string.
Used when doing a search.
True if medicaid. Then, the billing and treating providers will have their Medicaid ID's attached.
Integers separated by commas. Each long represents a ProviderSupplementalID type that is required by this insurance. Usually only used for BCBS or other carriers that require supplemental provider id's. Even if we don't put the supplemental types in here, the user can still add them. This just helps by doing an additional check for known required types.
Any comments. Usually includes enrollment requirements and descriptions of how to use the provider id's supplied by the carrier because they might call them by different names.
Stores all the connection info for one email address. Linked to clinic by clinic.EmailAddressNum. Sends email based on patient's clinic.
Primary key.
For example smtp.gmail.com
.
.
Usually 587, sometimes 25
.
The email address of the sender as it should appear to the recipient.
Keeps track of one file attached to an email. Multiple files can be attached to an email using this method.
Primary key.
FK to emailmessage.EmailMessageNum
The name of the file that shows on the email. For example: tooth2.jpg.
The actual file is stored in the A-Z folder in EmailAttachments. This field stores the name of the file. The files are named automatically based on Date/time along with a random number. This ensures that they will be sequential as well as unique.
An outgoing email message is stored here.
Primary key.
FK to patient.PatNum
Single valid email address. Bcc field might be added later, although it won't be very useful. We will never allow visible cc for privacy reasons.
Valid email address.
Subject line.
Body of the email
Date and time the message was sent. Automated at the UI level.
0=neither, 1=sent, 2=received.
A template email which can be used as the basis for a new email.
Primary key.
Default subject line.
Body of the email
An employee at the dental office.
Primary key.
Employee's last name.
First name.
Middle initial or name.
If hidden, the employee will not show on the list.
This is just text used to quickly display the clockstatus. eg Working,Break,Lunch,Home, etc.
The phone extension for the employee. e.g. 101,102,etc. This field is only visible for user editing if the pref DockPhonePanelShow is true (1).
Most insurance plans are organized by employer. This table keeps track of the list of employers. The address fields were added at one point, but I don't know why they don't show in the program in order to edit. Nobody has noticed their absence even though it's been a few years, so for now we are just using the EmpName and not the address.
Primary key.
Name of the employer.
.
Second line of address.
.
2 char in the US.
.
Includes any punctuation.
One file attached to an eob (claimpayment). Multiple files can be attached to an eob using this method. Order shown will be based on date/time scanned.
Primary key.
FK to claimpayment.ClaimPaymentNum
Date/time created.
The file is stored in the A-Z folder in 'EOBs' folder. This field stores the name of the file. The files are named automatically based on Date/time along with EobAttachNum for uniqueness.
The raw file data encoded as base64. Only used if there is no AtoZ folder.
Used for property tax tracking.
Primary key.
Short description, need not be very unique.
Must be unique among all pieces of equipment. Auto-generated 3 char alpha numeric gives 1.5M unique serial numbers. Zero never part of autogenerated serial number.
Limit 2 char.
Date when this corporation obtained the equipment. Always has a valid value.
Normally 01-01-0001 if equipment still in possession. Once sold, a date will be present.
.
.
Freeform text.
Security uses this date to lock older entries from accidental deletion. Date, no time.
Primary key.
FK to patient.PatNum.
Holds up to 16MB.
Automatically updated by MySQL every time a row is added or changed.
One electronic transaction. Typically, one claim or response. Or one benefit request or response. Is constantly being expanded to include more types of transactions with clearinghouses. Also stores printing of paper claims. Sometimes stores a copy of what was sent.
Primary key.
The date and time of the transaction.
FK to clearinghouse.ClearinghouseNum . Can be 0 if no clearinghouse was involved.
Enum:EtransType
The _CA of some types should get stripped off when displaying to users.
0 X12-837. Should we differenitate between different kinds of 837s and 4010 vs 5010?
1 claim
2 Canada. Type 01
3 Renaissance
4 Canada. Type 11
5 Canada. Type 21
6 Canada. Type 08
7 Canada. Type 18. V02 type 10.
8 Canada. Type 02
9 Canada. Type 03
10 Canada. Type 04
11 Canada. Type 05
12 Canada. Type 06
13 Canada. Type 07
14 Canada. Type 12
15 Canada. Type 13
16 Canada. Type 23
17 Canada. Type 14
18 Canada. Type 24
19 Canada. Type 16
20 Canada. Type 15
21 Ack from clearinghouse. X12-997.
22 X12-277. Unsolicited claim status notification.
23 Text report from clearinghouse in human readable format.
24 X12-270.
25 X12-271
26 When a Canadian message is sent, and an error comes back instead of a message. This stores information about the error. The etrans with this type is attached it to the original etrans as an ack.
27 X12-835. Not used yet.
28 Ack from clearinghouse. X12-999.
FK to claim.ClaimNum if a claim. Otherwise 0. Warning. Original claim might have been deleted. But if Canadian claim was successfully sent, then deletion will be blocked.
For Canada. Unique for every transaction sent. Increments by one until 999999, then resets to 1.
For Canada. Separate counter for each carrier. Increments by one until 99999, then resets to 1.
For Canada. If this claim includes secondary, then this is the counter for the secondary carrier.
FK to carrier.CarrierNum.
FK to carrier.CarrierNum Only used if secondary insurance info is provided on a claim. Necessary for Canada.
FK to patient.PatNum This is useful in case the original claim has been deleted. Now, we can still tell who the patient was.
Maxes out at 999, then loops back to 1. This is not a good key, but is a restriction of (canadian?). So dates must also be used to isolate the correct BatchNumber key. Specific to one clearinghouse. Only used with e-claims. Claim will have BatchNumber, and 997 will have matching BatchNumber. (In X12 lingo, it's a functional group number)
A=Accepted, R=Rejected, blank if not able to parse. More options will be added later. The incoming 997 or 999 sets this flag automatically. To find the 997 or 999, look for a matching BatchNumber with a similar date, since both the claims and the 997 or 999 will both have the same batch number. The 997 or 999 does not have this flag set on itself.
For sent e-claims, within each batch (functional group), each carrier gets it's own transaction set. Since 997s and 999s acknowledge transaction sets rather than batches, we need to keep track of which transaction set each claim is part of as well as which batch it's part of. This field can't be set as part of 997 or 999, because one 997 or 999 refers to multiple trans sets.
Typical uses include indicating that the report was printed, the claim was resent, reason for rejection, etc. For a 270, this contains the automatically generated short summary of the response. The response could include the reason for failure, or it could be a short summary of the 271.
FK to etransmessagetext.EtransMessageTextNum. Can be 0 if there is no message text. Multiple Etrans objects can refer to the same message text, very common in a batch.
FK to etrans.EtransNum. Only has a non-zero value if there exists an ack etrans, like a 997, 999, 277ack, 271, 835, or ackError. There can be only one ack for any given etrans, but one ack can apply to multiple etran's that were sent as one batch.
FK to insplan.PlanNum. Used if EtransType.BenefitInquiry270 and BenefitResponse271 and Eligibility_CA.
FK to inssub.InsSubNum. Used if EtransType.BenefitInquiry270 and BenefitResponse271 and Eligibility_CA.
Each row is big. The entire X12 message text is stored here, since it can be the same for multiple etrans objects, and since the messages can be so big.
Primary key.
The entire message text, including carriage returns.
There is one entry in this table for each fee for a single procedurecode. So if there are 5 different fees stored for one procedurecode, then there will be five entries here.
Primary key.
The amount usually charged. If an amount is unknown, then the entire Fee entry is deleted from the database. The absence of a fee is sometimes shown in the user interface as a blank entry, and sometimes as 0.00.
Do not use.
FK to feesched.FeeSchedNum.
Not used.
Not used.
FK to procedurecode.CodeNum.
Fee schedule names used to be in the definition table, but now they have their own table. We are about to have many many more fee schedules as we start automating allowed fees.
Primary key.
The name of the fee schedule.
Enum:FeeScheduleType
Unlike with the old definition table, this ItemOrder is not as critical in the caching of data. The item order is only for fee schedules of the same type.
True if the fee schedule is hidden. Can't delete fee schedules or change their type once created.
One form or questionnaire filled out by a patient. Each patient can have multiple forms.
Primary key.
FK to patient.PatNum.
The date and time that this questionnaire was filled out.
A list of medications that are preferred by an insurance or Medicaid.
Primary key.
Description.
A medication on a formulary.
Primary key.
FK to Formulary.
FK to Medication.
Every user group has certain permissions. This defines a permission for a group. The absense of permission would cause that row to be deleted from this table.
Primary key.
Only granted permission if newer than this date. Can be Minimum (01-01-0001) to always grant permission.
Can be 0 to always grant permission. Otherwise, only granted permission if item is newer than the given number of days. 1 would mean only if entered today.
FK to usergroup.UserGroupNum. The user group for which this permission is granted. If not authorized, then this groupPermission will have been deleted.
Enum:Permissions
A hard-coded list of permissions which may be granted to usergroups.
0
1
2
3
4
5
6
7
8. Currently covers a wide variety of setup functions.
9
10. Uses date restrictions. Covers editing AND deleting of completed procs. Deleting non-completed procs is covered by ProcDelete.
11
12
13
14. Uses date restrictions.
15
16. Uses date restrictions.
17
18. Uses date restrictions.
19
20. Not used anymore.
21 Not used anymore.
22
23. Includes setting procedures complete.
24. At least one user must have this permission.
25.
26
27
28
29
30
31. Uses date restrictions.
32. Uses date restrictions.
33
34
35
36
37. Uses date restrictions. Also includes completed claimprocs even if unattached to an insurance check. However, it's not actually enforced when creating a check because it would be very complex.
38. Uses date restrictions.
39
40. Uses date restrictions.
41. Uses date restrictions. All other equipment functions are covered by .Setup.
42. Uses date restrictions. Also used in audit trail to log web form importing.
43. Uses date restrictions.
44. Uses date restrictions.
45. Uses date restrictions.
46
47
48
49. Uses date restrictions. This only applies to non-completed procs. Deletion of completed procs is covered by ProcComplEdit.
50 - Only used at OD HQ. No user interface.
51
52
53
54
55
56
57
58
59
60
61
62
63
Links patient to patient in an n-n relationship. A guardian need not be in the same family.
Primary key.
FK to patient.PatNum.
FK to patient.PatNum.
Enum:GuardianRelationship Father, Mother, Stepfather, Stepmother, Grandfather, Grandmother, Sitter.
Relationship of a child to a parent/guardian.
0
1
2
3
4
5
6
.
Primary key.
Enum:ModeTxHL7 File, TcpIp.
Only used for File mode
Only used for File mode
Only used for tcpip mode. Example: 1461
Only used for tcpip mode. Example: 192.168.0.23:1462
Only relevant for outgoing. Incoming field separators are defined in MSH. Default |.
Only relevant for outgoing. Incoming field separators are defined in MSH. Default ^.
Only relevant for outgoing. Incoming field separators are defined in MSH. Default ~.
Only relevant for outgoing. Incoming field separators are defined in MSH. Default \.
If this is set, then there will be no child tables. Internal types are fully defined within the C# code rather than in the database.
This will always have a value because we always start with a copy of some internal type.
Example: 12.2.14. This will be empty if IsInternal. This records the version at which they made their copy. We might have made significant improvements since their copy.
.
The machine name of the computer where the OpenDentHL7 service for this def is running.
The name of the HL7 service for this def. Must begin with OpenDent...
Enum:HL7ShowDemographics Hide,Show,Change,ChangeAndAdd
Show Appointments module.
Show Account module
Multiple fields per segment.
Primary key.
FK to HL7DefSegment.HL7DefSegmentNum
Position within the segment.
HL7 table Id, if applicable. Example: 0234. Example: 1234/2345. DataType will be ID.
The DataTypeHL7 enum will be unlinked from the db by storing as string in db. As it's loaded into OD, it will become an enum.
User will get to pick from a list of fields that we will maintain. Example: guar.nameLFM, prov.provIdName, or pat.addressCityStateZip. See below for the full list. This will be blank if this is a fixed text field.
User will need to insert fixed text for some fields. Either FixedText or FieldName will have a value, not both.
There is no field for MessageStructureHL7 (ADT_A01), because that will be inferred. Defined in HL7 specs, section 2.16.3.
Primary key.
FK to HL7Def.HL7DefNum
Stored in db as string, but used in OD as enum MessageTypeHL7. Example: ADT
Stored in db as string, but used in OD as enum EventTypeHL7. Example: A04, which is only used iwth ADT/ACK.
Enum:InOutHL7 Incoming, Outgoing
The only purpose of this column is to let you change the order in the HL7 Def windows. It's just for convenience.
text
multiple segments per message
Primary key.
FK to HL7DefMessage.HL7DefMessageNum
Since we don't enforce or automate, it can be 1-based or 0-based. For outgoing, this affects the message structure. For incoming, this is just for convenience and organization in the HL7 Def windows.
For example, a DFT can have multiple FT1 segments. This turns out to be a completely useless field, since we already know which ones can repeat.
If this is false, and an incoming message is missing this segment, then it gets logged as an error/failure. If this is true, then it will gracefully skip a missing incoming segment. Not used for outgoing.
Stored in db as string, but used in OD as enum SegmentNameHL7. Example: PID.
.
HL7 messages sent and received.
Primary key.
Enum:HL7MessageStatus Out/In are relative to Open Dental. This is in contrast to the names of the old ecw folders, which were relative to the other program. OutPending, OutSent, InReceived, InProcessed.
The actual HL7 message in its entirity.
FK to appointment.AptNum. Many of the messages contain "Visit ID" which is equivalent to our AptNum.
Used to determine which messages are old so that they can be cleaned up.
Patient number.
Maximum size 2000 characters.
Primary key is an arbitrary number, allowing code to change if needed, although that should generally be prohibited. Currently synched to mobile server in a very inefficient manner.
Primary key.
Not allowed to edit this column once saved in the database.
Description.
The last date and time this row was altered. Not user editable.
An optional field on insplan and claims. This lets user customize so that they can track insurance types.
Primary key.
Description of the insurance filing code.
Code for electronic claim.
Display order for this filing code within the UI. 0-indexed.
Stores the list of insurance filing code subtypes.
Primary key.
FK to insfilingcode.insfilingcodenum
The description of the insurance filing code subtype.
Subscribers can share insplans by using the InsSub table. The patplan table determines coverage for individual patients. InsPlans can also exist without any subscriber.
Primary key.
Optional
Optional. In Canada, this is called the Plan Number.
Note for this plan. Same for all subscribers.
FK to feesched.FeeSchedNum.
""=percentage(the default),"p"=ppo_percentage,"f"=flatCopay,"c"=capitation.
FK to claimform.ClaimFormNum. eg. "1" for ADA2002. For ADA2006, it varies by office.
0=no,1=yes. could later be extended if more alternates required
Fee billed on claim should be the UCR fee for the patient's provider.
FK to feesched.FeeSchedNum. Not usually used. This fee schedule holds only co-pays(patient portions). Only used for Capitation or for fixed copay plans.
FK to employer.EmployerNum.
FK to carrier.CarrierNum.
FK to feesched.FeeSchedNum. Not usually used. This fee schedule holds amounts allowed by carriers.
.
Only used in Canada. It's a suffix to the plan number (group number).
True if this is medical insurance rather than dental insurance. When creating a claim, this, along with pref.
FK to insfilingcode.InsFilingCodeNum. Used for e-claims. Also used for some complex reports in public health. The e-claim usage might become obsolete when PlanID implemented by HIPAA. Can be 0 to indicate none. Then 'CI' will go out on claims.
Canadian e-claim field. D11 and E07. Zero indicates empty. Mandatory value for Dentaide. Not used for all others. 2 digit.
If checked, the units Qty will show the base units assigned to a procedure on the claim form.
Set to true to not allow procedure code downgrade substitution on this insurance plan.
Set to true to hide it from the pick list and from the main list.
The month, 1 through 12 when the insurance plan renews. It will renew on the first of the month. To indicate calendar year, set renew month to 0.
FK to insfilingcodesubtype.insfilingcodesubtypenum
Canadian C12. Single char, usually blank. If non-blank, then it's one of three kinds of Provincial Medical Plans. A=Newfoundland MCP Plan. V=Veteran's Affairs Plan. N=NIHB. N and V are not yet in use, so they will result in blank being sent instead. See Elig5.
Canadian C39. Required when CanadianPlanFlag is 'A'.
Canadian C40. Required when CanadianPlanFlag is 'A'.
BIN location number. Only used with EHR.
Enum:EnumCobRule. 0=Basic, 1=Standard, 2=CarveOut.
Multiple subscribers can have the same insurance plan. But the patplan table is still what determines coverage for individual patients.
Primary key.
FK to insplan.PlanNum.
FK to patient.PatNum.
Date plan became effective.
Date plan was terminated
Release of information signature is on file.
Assignment of benefits signature is on file. For Canada, this handles Payee Code, F01. Option to pay other third party is not included.
Usually SSN, but can also be changed by user. No dashes. Not allowed to be blank.
User doesn't usually put these in. Only used when automatically requesting benefits, such as with Trojan. All the benefits get stored here in text form for later reference. Not at plan level because might be specific to subscriber. If blank, we try to display a benefitNote for another subscriber to the plan.
Use to store any other info that affects coverage.
Simpler than a payment plan. Does not affect running account balances. Allows override of finance charges. Affects the "pay now" on statements. Only one installmentplan is allowed for a family, attached to guarantor only. This is loosely enforced.
Primary key.
FK to patient.PatNum.
Date payment plan agreement was made.
Date of first payment.
Amount of monthly payment.
Annual Percentage Rate. e.g. 12.
Note
Used in accounting to represent a single credit or debit entry. There will always be at least 2 journal enties attached to every transaction. All transactions balance to 0.
Primary key.
FK to transaction.TransactionNum
FK to account.AccountNum
Always the same for all journal entries within one transaction.
Negative numbers never allowed.
Negative numbers never allowed.
.
A human-readable description of the splits. Used only for display purposes.
Any user-defined string. Usually a check number, but can also be D for deposit, Adj, etc.
FK to reconcile.ReconcileNum. 0 if not attached to a reconcile. Not allowed to alter amounts if attached.
A lab case.
Primary key.
FK to patient.PatNum.
FK to laboratory.LaboratoryNum. The lab that the case gets sent to. Required.
FK to appointment.AptNum. This is how a lab case is attached to a scheduled appointment. 1:1 relationship for now. Only one labcase per appointment, and (obviously) only one appointment per labcase. Labcase can exist without being attached to any appointments at all, making this zero.
FK to appointment.AptNum. This is how a lab case is attached to a planned appointment in addition to the scheduled appointment.
The due date that is put on the labslip. NOT when you really need the labcase back, which is usually a day or two later and is the date of the appointment this case is attached to.
When this lab case was created. User can edit.
Time that it actually went out to the lab.
Date/time received back from the lab. If this is filled, then the case is considered received.
Date/time that quality was checked. It is now completely ready for the patient.
FK to provider.ProvNum.
The text instructions for this labcase.
There is no UI built yet for this field. Plugins might be making use of this field.
A dental laboratory. Will be attached to lab cases.
Primary key.
Description of lab.
Freeform text includes punctuation.
Any notes. No practical limit to amount of text.
FK to sheetdef.SheetDefNum. Lab slips can be set for individual laboratories. If zero, then the default internal lab slip will be used instead of a custom lab slip.
.
.
.
.
.
.
One lab panel comes back from the lab with multiple lab results. Multiple panels can come back in one HL7 message. This table loosely corresponds to the OBR segment.
Primary key.
FK to patient.PatNum
The entire raw HL7 message. Can contain other labpanels in addition to this one.
Both name and address in a single field. OBR-20.
To be used for synch with web server.
OBR-13. Usually blank. Example: hemolyzed.
OBR-15. Usually blank. Example: LNA&Arterial Catheter&HL70070.
OBR-4-0, Service performed, id portion, LOINC. For example, 24331-1.
OBR-4-1, Service performed description. Example, Lipid Panel.
FK to medicalorder.MedicalOrderNum. Used to attach in imported lab panel to a lab order. Multiple panels may be attached to an order.
Medical labs, not dental labs. Multiple labresults are attached to a labpanel. Loosely corresponds to the OBX segment in HL7.
Primary key.
FK to labpanel.LabPanelNum.
OBX-14.
OBX-3-1, text portion.
To be used for synch with web server.
OBX-3-0, id portion, LOINC. For example, 10676-5.
OBX-5. Value always stored as a string because the type might vary in the future.
OBX-6 For example, mL. Was FK to drugunit.DrugUnitNum, but that would make reliable import problematic, so now it's just text.
OBX-7 For example, <200 or >=40.
Enum:LabAbnormalFlag 0-None, 1-Below, 2-Normal, 3-Above.
The amount of time it takes for a lab case to be processed at the lab. Used to compute due dates.
Primary key.
FK to laboratory.LaboratoryNum. The lab that this item is attached to.
The description of the service that the lab is performing.
The number of days that the lab publishes as the turnaround time for the service.
The actual number of days. Might be longer than DaysPublished due to travel time. This is what the actual calculations will be done on.
This is a list of phrases that need to be translated. The primary key is a combination of the ClassType and the English phrase. This table is currently filled dynmically at run time, but the plan is to fill it using a tool that parses the code.
Primary key.
No longer used.
A string representing the class where the translation is used. Maximum length is 25 characters.
The English version of the phrase, case sensitive.
As this gets more sophisticated, we will use this field to mark some phrases obsolete instead of just deleting them outright. That way, translators will still have access to them. For now, this is not used at all.
Will usually only contain translations for a single foreign language, although more are allowed. The primary key is a combination of the ClassType and the English phrase and the culture.
Primary key.
A string representing the class where the translation is used.
The English version of the phrase. Case sensitive.
The specific culture name. Almost always in 5 digit format like this: en-US.
The foreign translation. Remember we use Unicode-8, so this translation can be in any language, including Russian, Hebrew, and Chinese.
Comments for other translators for the foreign language.
These are templates that are used to send simple letters to patients.
Primary key.
Description of the Letter.
Text of the letter
Describes the templates for letter merges to Word.
Primary key.
Description of this letter.
The filename of the Word template. eg MyTemplate.doc.
The name of the data file. eg MyTemplate.txt.
FK to definition.DefNum.
When doing a lettermerge, a data file is created with certain fields. This is a list of those fields for each lettermerge.
Primary key.
FK to lettermerge.LetterMergeNum.
One of the preset available field names.
Ehr. Lab and radiology orders. Medication orders are simply fields in medicationPat.
Primary key.
Enum:MedicalOrderType Laboratory=0,Radiology=1.
FK to patient.PatNum
Date and time of order.
User will be required to type entire order out from scratch.
EHR requires Active/Discontinued status. 0=Active, 1=Discontinued.
FK to provider.ProvNum.
A list of medications, not attached to any particular patient. Not allowed to delete if in use by a patient. Not allowed to edit name once created due to possibility of damage to patient record.
Primary key.
Name of the medication. User can change this. If an RxCui is present, the RxNorm string can be pulled from the in-memory table for UI display in addition to the MedName.
FK to medication.MedicationNum. If this is a generic drug, then the GenericNum will be the same as the MedicationNum.
Notes.
The last date and time this row was altered. Not user editable.
RxNorm Code identifier.
Links medications to patients. For ehr, some of these can be considered 'medication orders', but only if they contain a PatNote (instructions), a ProvNum, and a DateStart.
Primary key.
FK to patient.PatNum.
FK to medication.MedicationNum.
Medication notes specific to this patient.
The last date and time this row was altered. Not user editable. Will be set to NOW by OD if this patient gets an OnlinePassword assigned.
Date that the medication was started. Can be minval if unknown.
Date that the medication was stopped. Can be minval if unknown. If not minval, then this medication is "discontinued".
FK to provider.ProvNum. Can be 0. Gets set to the patient's primary provider when adding a new med. If adding the med from EHR, gets set to the ProvNum of the logged-in user.
A mount shows in the images module just like other images in the tree. But it is just a container for images within it rather than an actual image itself.
Primary key.
FK to patient.PatNum
FK to definition.DefNum. Categories for documents.
The date at which the mount itself was created. Has no bearing on the creation date of the images the mount houses.
Used to provide a document description in the image module tree-view.
Enum:ImageType This is so that an image can be properly associated with the mount in the image module tree-view.
The type of image for images module.
0- Includes scanned documents and screenshots.
1
2
3- For instance a Word document or a spreadsheet. Not an image.
4- For xray mount sets.
To allow the user to enter specific information regarding the exam and tooth numbers, as well as points on interest in the xray images.
The static width of the mount, in pixels.
The static height of the mount, in pixels.
THIS TABLE IS NOT BEING USED. These can be freely deleted, renamed, moved, etc. without affecting any patient info. mountitemdef
Primary key.
.
The order that the mount defs will show in various lists.
Set to true if this is just xrays. If true, this prevents image from being scaled to fit inside the mount. If false (composite photographs for example) then the images will be scaled to fit inside the mount. Later, the basic appearance or background color might be set based on this flag as well.
The width of the mount, in pixels. For radiograph mounts, this could be very large. It must be large enough for the radiographs to fit in the mount without scaling. For photos, it should also be large so that the scaling won't be too noticeable. Shrinking to view or print will always produce nicer results than enlarging to view or print.
Height of the mount in pixels.
These are always attached to a mount and are constant. Should not be deleted, but rather updated if geometry changes. Documents are then attached to MountItems using Document.MountItemNum field.
Primary key.
FK to mount.MountNum.
The x position, in pixels, of the item on the mount.
The y position, in pixels, of the item on the mount.
The ordinal position of the item on the mount.
The scaled or unscaled width of the mount item in pixels.
The scaled or unscaled height of the mount item in pixels.
THIS TABLE IS NOT BEING USED. These are always attached to mountdefs. Can be deleted without any problems.
Primary key.
FK to mountdef.MountDefNum.
The x position, in pixels, of the item on the mount.
The y position, in pixels, of the item on the mount.
Ignored if mount IsRadiograph. For other mounts, the image will be scaled to fit within this space. Any cropping, rotating, etc, will all be defined in the original image itself.
Ignored if mount IsRadiograph. For other mounts, the image will be scaled to fit within this space. Any cropping, rotating, etc, will all be defined in the original image itself.
Each row is a single operatory or column in the appts module.
Primary key
The full name to show in the column.
5 char or less. Not used much.
The order that this op column will show. Changing views only hides some ops; it does not change their order. Zero based.
Used instead of deleting to hide an op that is no longer used.
FK to provider.ProvNum. The dentist assigned to this op. If more than one dentist might be assigned to an op, then create a second op and use one for each dentist. If 0, then no dentist is assigned.
FK to provider.ProvNum. The hygienist assigned to this op. If 0, then no hygienist is assigned.
Set true if this is a hygiene operatory. The hygienist will then be considered the main provider for this op.
FK to clinic.ClinicNum. 0 if no clinic.
If true patients put into this operatory will have status set to prospective.
This table is only used by one customer. 1:1 relationship to procedurelog table.
Primary key.
FK to procedurelog.ProcNum
Enum:OrionDPC NotSpecified=0,None=1,_1A=2,_1B=3,_1C=4,_2=5,_3=6,_4=7,_5=8.
0- Not Specified
1- None
2- Treatment to be scheduled within 1 calendar day
3- Treatment to be scheduled within 30 calendar days
4- Treatment to be scheduled within 60 calendar days
5– Treatment to be scheduled within 120 calendar days
6– Treatment to be scheduled within 1 year
7– No further treatment is needed, no appointment needed
8– No appointment needed
System adds days to the diagnosis date based upon the DPC entered for that procedure. If DPC = none the system will return “No Schedule by Date”.
Default to current date. Provider shall have to ability to edit with a previous date, but not a future date.
Enum:OrionStatus None=0,TP=1,C=2,E=4,R=8,RO=16,CS=32,CR=64,CA-Tx=128,CA-ERPD=256,CA-P/D=512,S=1024,ST=2048,W=4096,A=8192
0- None. While a normal orion proc would never have this status2, it is still needed for flags in ChartViews. And it's also possible that a status2 slipped through the cracks and was not assigned, leaving it with this value.
1– Treatment planned
2– Completed
4– Existing prior to incarceration
8– Refused treatment
16– Referred out to specialist
32– Completed by specialist
64– Completed by registry
128- Cancelled, tx plan changed
256- Cancelled, eligible parole
512- Cancelled, parole/discharge
1024– Suspended, unacceptable plaque
2048- Stop clock, multi visit
4096– Watch
8192– Alternative
.
Indicates in the clinical note that effective communication was used for this encounter.
.
Enum:OrionDPC None=0,1A=1,1B=2,1C=3,2=4,3=5,4=6,5=7
0- Not Specified
1- None
2- Treatment to be scheduled within 1 calendar day
3- Treatment to be scheduled within 30 calendar days
4- Treatment to be scheduled within 60 calendar days
5– Treatment to be scheduled within 120 calendar days
6– Treatment to be scheduled within 1 year
7– No further treatment is needed, no appointment needed
8– No appointment needed
For the orthochart feature, each row in this table is one cell in that grid. An empty cell corresponds to a missing db table row.
Primary key.
FK to patient.PatNum.
Date of service.
.
.
These are custom fields added and managed by the user.
Primary key.
FK to patient.PatNum
FK to patfielddef.FieldName. The full name is shown here for ease of use when running queries. But the user is only allowed to change fieldNames in the patFieldDef setup window.
Any text that the user types in. For picklists, this will contain the picked text. For dates, this is stored as the user typed it, after validating that it could be parsed. So queries that involve dates won't work very well. If we want better handling of date fields, we should add a column to this table. Checkbox will either have a value of 1, or else the row will be deleted from the db. Currency is handled in a culture neutral way, just like other currency in the db.
These are the definitions for the custom patient fields added and managed by the user.
Primary key.
The name of the field that the user will be allowed to fill in the patient info window.
Enum:PatFieldType Text=0,PickList=1,Date=2,Checkbox=3,Currency=4
The text that contains pick list values.
One row for each patient. Includes deleted patients.
Primary key.
Last name.
First name.
Middle initial or name.
Preferred name, aka nickname.
Enum:PatientStatus
0
1
2
3
4
5
6- Not an actual patient yet.
Enum:PatientGender
0
1
2- This is not a joke. Required by HIPAA for privacy. Required by ehr to track missing entries.
Enum:PatientPosition Marital status would probably be a better name for this column.
0
1
2
3
4
Age is not stored in the database. Age is always calculated as needed from birthdate.
In the US, this is 9 digits, no dashes. For all other countries, any punctuation or format is allowed.
.
Optional second address line.
.
2 Char in USA
Postal code. For Canadian claims, it must be ANANAN. No validation gets done except there.
Home phone. Includes any punctuation
.
.
FK to patient.PatNum. Head of household.
Single char. Shows at upper right corner of appointments. Suggested use is A,B,or C to designate creditworthiness, but it can actually be used for any purpose.
.
Dear __. This field does not include the "Dear" or a trailing comma. If this field is blank, then the typical salutation is FName. Or, if a Preferred name is present, that is used instead of FName.
Current patient balance.(not family). Never subtracts insurance estimates.
FK to provider.ProvNum. The patient's primary provider. Required. The database maintenance tool ensures that every patient always has this number set, so the program no longer has to handle 0.
FK to provider.ProvNum. Secondary provider (hygienist). Optional.
FK to feesched.FeeSchedNum. Fee schedule for this patient. Usually not used. If missing, the practice default fee schedule is used. If patient has insurance, then the fee schedule for the insplan is used.
FK to definition.DefNum. Must have a value, or the patient will not show on some reports.
Name of folder where images will be stored. Not editable for now.
Address or phone note. Unlimited length in order to handle data from other programs during a conversion.
Family financial urgent note. Only stored with guarantor, and shared for family.
Individual patient note for Urgent medical.
Individual patient note for Appointment module note.
Single char for Nonstudent, Parttime, or Fulltime. Blank also=Nonstudent
College name. If Canadian, then this is field C10 and must be filled if C9 (patient.CanadianEligibilityCode) is 1 and patient is 18 or older.
Max 15 char. Used for reference to previous programs.
Optional. The Medicaid ID for this patient.
Aged balance from 0 to 30 days old. Aging numbers are for entire family. Only stored with guarantor.
Aged balance from 31 to 60 days old. Aging numbers are for entire family. Only stored with guarantor.
Aged balance from 61 to 90 days old. Aging numbers are for entire family. Only stored with guarantor.
Aged balance over 90 days old. Aging numbers are for entire family. Only stored with guarantor.
Insurance Estimate for entire family.
Total balance for entire family before insurance estimate. Not the same as the sum of the 4 aging balances because this can be negative. Only stored with guarantor.
FK to employer.EmployerNum.
Not used since version 2.8.
Enum:PatientRace Race and ethnicity.
Race and ethnicity for patient. Used by public health. The problem is that everyone seems to want different choices. If we give these choices their own table, then we also need to include mapping functions. These are currently used in ArizonaReports, HL7 w ECW, and EHR. Foreign users would like their own mappings.
0
1
2
3
4
5
6
7
8
9
10 - Required by EHR.
FK to county.CountyName, although it will not crash if key absent.
Enum:PatientGrade Gradelevel.
Grade level used in public health.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Enum:TreatmentUrgency Used in public health screenings.
For public health. Unknown, NoProblems, NeedsCarE, or Urgent.
The date that the patient first visited the office. Automated.
FK to clinic.ClinicNum. Can be zero if not attached to a clinic or no clinics set up.
For now, an 'I' indicates that the patient has insurance. This is only used when displaying appointments. It will later be expanded. User can't edit.
The Trophy bridge is inadequate. This is an attempt to make it usable for offices that have already invested in Trophy hardware.
This simply indicates whether the 'done' box is checked in the chart module. Used to be handled as a -1 in the NextAptNum field, but now that field is unsigned.
Set to true if patient needs to be premedicated for appointments, includes PAC, halcion, etc.
Only used in hospitals.
Enum:ContactMethod
0
1
2
3
4
5
6
7
8
Enum:ContactMethod
0
1
2
3
4
5
6
7
8
Enum:ContactMethod
0
1
2
3
4
5
6
7
8
.
.
We do not use this, but some users do, so here it is. 0=none. Otherwise, 1-7 for day.
The primary language of the patient. Typically en, fr, es, or similar. If it's a custom language, then it might look like Tahitian.
Used in hospitals. It can be before the first visit date. It typically gets set automatically by the hospital system.
Includes any punctuation. For example, Mr., Mrs., Miss, Dr., etc. There is no selection mechanism yet for user; they must simply type it in.
.
FK to site.SiteNum. Can be zero. Replaces the old GradeSchool field with a proper foreign key.
The last date and time this row was altered. Not user editable.
FK to patient.PatNum. Can be zero. Person responsible for medical decisions rather than finances. Guarantor is still responsible for finances. This is useful for nursing home residents. Part of public health.
C09. Eligibility Exception Code. A single digit 1-4. 0 is not acceptable for e-claims. 1=FT student, 2=disabled, 3=disabled student, 4=code not applicable. Warning. 4 is a 0 if using CDAnet version 02.
Number of minutes patient is asked to come early to appointments.
If this is blank, then the chart info for this patient will not be uploaded. If this has a value, then this is the password that a patient must use to access their info online.
Enum:SmokingStatus 0=UnknownIfEver,1=SmokerUnkownCurrent,2=NeverSmoked,3=FormerSmoker,4=CurrentSomeDay,5=CurrentEveryDay
0=UnknownIfEver,1=SmokerUnkownCurrent,2=NeverSmoked,3=FormerSmoker,4=CurrentSomeDay,5=CurrentEveryDay
0
1
2
3
4
5
Enum:ContactMethod Used for EHR.
0
1
2
3
4
5
6
7
8
FK to patient.PatNum. If this is the same as PatNum, then this is a SuperHead. If zero, then not part of a superfamily. Synched for entire family. If family is part of a superfamily, then the guarantor for this family will show in the superfamily list in the Family module for anyone else who is in the superfamily. Only a guarantor can be a superfamily head.
Enum:YN
Unknown,Yes, or No.
0
1
2
Essentially more columns in the patient table. They are stored here because these fields can contain a lot of information, and we want to try to keep the size of the patient table a bit smaller.
FK to patient.PatNum. Also the primary key for this table. Always one to one relationship with patient table. A new patient might not have an entry here until needed.
Only one note per family stored with guarantor.
No longer used.
Medical Summary
Service notes
Complete current Medical History
Shows in the Chart module just below the graphical tooth chart.
Each row represents the linking of one insplan to one patient for current coverage. Dropping a plan will delete the entry in this table. Deleting a plan will delete the actual insplan (if no dependencies).
Primary key
FK to patient.PatNum. The patient who currently has the insurance. Not the same as the subscriber.
Number like 1, 2, 3, etc. Represents primary ins, secondary ins, tertiary ins, etc. 0 is not used
For informational purposes only. For now, we lose the previous feature which let us set isPending without entering a plan. Now, you have to enter the plan in order to check this box.
Enum:Relat Remember that this may need to be changed in the Claim also, if already created.
Relationship to subscriber for insurance.
0
1
2
3
4
5
6
7
8
An optional patient ID which will override the insplan.SubscriberID on eclaims. For Canada, this holds the Dependent Code, C17 and E17, and in that use it doesn't override subscriber id, but instead supplements it.
FK to inssub.InsSubNum. Gives info about the subscriber.
A patient payment. Always has at least one split.
Primary key.
FK to definition.DefNum. This will be 0 if this is an income transfer to another provider.
The date that the payment displays on the patient account.
Amount of the payment. Must equal the sum of the splits.
Check number is optional.
Bank-branch for checks.
Any admin note. Not for patient to see. Length 4000.
Set to true to indicate that a payment is split. Just makes a few functions easier. Might be eliminated.
FK to patient.PatNum. The patient where the payment entry will show. But only the splits affect account balances. This has a value even if the 'payment' is actually an income transfer to another provider.
FK to clinic.ClinicNum. Can be 0. Copied from patient.ClinicNum when creating payment, but user can override. Not used in provider income transfers. Cannot be used in financial reporting when grouping by clinic, because payments may be split between clinics.
The date that this payment was entered. Not user editable.
FK to deposit.DepositNum. 0 if not attached to any deposits. Cash does not usually get attached to a deposit; only checks.
Text of printed receipt if the payment was done electronically. Allows reprinting if needed. Only used for PayConnect at the moment, but plans to use for XCharge as well.
True if this was an automatically added recurring CC charge rather then one entered by the user. This was set to true for all historical entries before version 11.1, but will be accurate after that.
Used to view employee timecards. Timecard entries are not linked to a pay period. Instead, payperiods are setup, and the user can only view specific pay periods. So it feels like they are linked, but it's date based.
Primary key.
The first day of the payperiod
The last day of the payperiod.
The date that paychecks will be dated. A few days after the dateStop. Optional.
Each row represents one signed agreement to make payments.
Primary key
FK to patient.PatNum. The patient who had the treatment done.
FK to patient.PatNum. The person responsible for the payments. Does not need to be in the same family as the patient. Will be 0 if PlanNum and InsSubNum have values.
Date that the payment plan will display in the account.
Annual percentage rate. eg 18. This does not take into consideration any late payments, but only the percentage used to calculate the amortization schedule.
Generally used to archive the terms when the amortization schedule is created.
FK to insplan.PlanNum. Will be 0 if standard payment plan. But if this is being used to track expected insurance payments, then this will be the foreign key to insplan.PlanNum, and Guarantor will be 0.
The amount of the treatment that has already been completed. This should match the sum of the principal amounts for most situations. But if the procedures have not yet been completed, and the payment plan is to make any sense, then this number must be changed.
FK to inssub.InsSubNum. Will be 0 if standard payment plan. But if this is being used to track expected insurance payments, then this will be the foreign key to inssub.InsSubNum, and Guarantor will be 0.
One of the dated charges attached to a payment plan. This has nothing to do with payments, but rather just causes the amount due to increase on the date of the charge. The amount of the charge is the sum of the principal and the interest.
Primary key.
FK to payplan.PayPlanNum.
FK to patient.PatNum. The guarantor account that each charge will affect.
FK to patient.PatNum. The patient account that the principal gets removed from.
The date that the charge will show on the patient account. Any charge with a future date will not show on the account yet and will not affect the balance.
The principal portion of this payment.
The interest portion of this payment.
Any note about this particular payment plan charge
FK to provider.ProvNum. Since there is no ProvNum field at the payplan level, the provider must be the same for all payplancharges. It's initially assigned as the patient priProv. Payments applied should be to this provnum, although the current user interface does not help with this.
FK to clinic.ClinicNum. Since there is no ClincNum field at the payplan level, the clinic must be the same for all payplancharges. It's initially assigned using the patient clinic. Payments applied should be to this clinic, although the current user interface does not help with this.
Always attached to a payment. Always affects exactly one patient account and one provider.
Primary key.
Amount of split.
FK to patient.PatNum.
Procedure date. Typically only used if tied to a procedure. In older versions (before 7.0), this was the date that showed on the account. Frequently the same as the date of the payment, but not necessarily. Not when the payment was made. This is what the aging will be based on in a future version.
FK to payment.PayNum. Every paysplit must be linked to a payment.
No longer used.
No longer used
FK to provider.ProvNum.
FK to payplan.PayPlanNum. 0 if not attached to a payplan.
Date always in perfect synch with Payment date.
FK to procedurelog.ProcNum. 0 if not attached to a procedure.
Date this paysplit was created. User not allowed to edit.
FK to definition.DefNum. Usually 0 unless this is a special unearned split.
FK to clinic.ClinicNum. Can be 0. Need not match the ClinicNum of the Payment, because a payment can be split between clinics.
One perio exam for one patient on one date. Has lots of periomeasures attached to it.
Primary key.
FK to patient.PatNum.
.
FK to provider.ProvNum.
One row can hold up to six measurements for one tooth, all of the same type. Always attached to a perioexam.
Primary key.
FK to perioexam.PerioExamNum.
Enum:PerioSequenceType eg probing, mobility, recession, etc.
In perio, the type of measurements for a given row.
0
1
2-AKA recession.
3-MucoGingivalJunction- the division between attached and unattached mucosa.
4
5-For the skiptooth type, set surf to none, and ToothValue to 1.
6. Sum of flags for bleeding(1), suppuration(2), plaque(4), and calculus(8).
7. But this type is never saved to the db. It is always calculated on the fly.
Valid values are 1-32. Every measurement must be associated with a tooth.
This is used when the measurement does not apply to a surface(mobility and skiptooth). Valid values for all surfaces are 0 through 19, or -1 to represent no measurement taken.
-1 represents no measurement. Values of 100+ represent negative values (only used for Gingival Margins). e.g. To use a value of 105, subtract it from 100. (100 - 105 = -5)
.
.
.
.
.
An individual pharmacy store.
Primary key.
NCPDPID assigned by NCPDP. Not used yet.
For now, it can just be a common description. Later, it might have to be an official designation.
Includes all punctuation.
Includes all punctuation.
.
Optional.
.
Two char, uppercase.
.
A freeform note for any info that is needed about the pharmacy, such as hours.
The last date and time this row was altered. Not user editable.
Only used internally by OpenDental, Inc. Not used by anyone else.
Primary key.
FK to patient.PatNum.
The actual phone number for the patient. Includes any punctuation. No leading 1 or plus, so almost always 10 digits.
Links one planned appointment to one patient. Allows multiple planned appointments per patient. Also see the PlannedIsDone field. A planned appointment is an appointment that will show in the Chart module and in the Planned appointment tracker. It will never show in the Appointments module. In other words, it is the suggested next appoinment rather than an appointment that has already been scheduled.
Primary key.
FK to patient.PatNum.
FK to appointment.AptNum.
One-indexed order of item in group of planned appts.
Only one popup per patient is currently supported.
Primary key.
FK to patient.PatNum. If PopupLevel is Family/SuperFamily then this must be a guarantor/super family head.
The text of the popup.
If true, then the popup won't ever automatically show.
Enum:EnumPopupFamily 0=Patient, 1=Family, 2=Superfamily. If Family, then this Popup will apply to the entire family and PatNum will the Guarantor PatNum. If Superfamily, then this popup will apply to the entire superfamily and PatNum will be the head of the superfamily. This column will need to be synched for all family actions where the guarantor changes.
Stores small bits of data for a wide variety of purposes. Any data that's too small to warrant its own table will usually end up here.
The text 'key' in the key/value pairing.
The stored value.
Primary key.
Documentation on usage and values of each pref. Mostly deprecated now in favor of using XML comments in the code.
One printer selection for one situation for one computer.
Primary key.
FK to computer.ComputerNum. This will be changed some day to refer to the computername, because it would make more sense as a key than a cryptic number.
Enum:PrintSituation One of about 10 different situations where printing takes place. If no printer object exists for a situation, then a default is used and a prompt is displayed.
0- Covers any printing situation not listed separately.
TP and perio
The name of the printer as set from the specified computer.
If true, then user will be prompted for printer. Otherwise, print directly with little user interaction.
An individual procedure code color range.
Primary key.
Procedure code range defined by user. Includes commas and dashes, but no spaces. The codes need not be valid since they are ranges.
Color that shows in appointments
Adds most recent completed date to ProcsColored
The 'buttons' to show in the Chart module. They must have items attached in order to do anything.
Primary key
The text to show on the button.
Order that they will show in the Chart module.
FK to definition.DefNum.
If no image, then the clob will be an empty string. In this case, the bitmap will be null when loaded from the database.
Attached to procbuttons. These tell the program what to do when a user clicks on a button. There are two types: proccodes or autocodes.
Primary key.
FK to procbutton.ProcButtonNum.
Do not use.
FK to autocode.AutoCodeNum. 0 if this is a procedure code.
FK to procedurecode.CodeNum. 0 if this is an autocode.
Stores the default note and time increments for one procedure code for one provider. That way, an unlimited number of providers can each have different notes and times. These notes and times override the defaults which are part of the procedurecode table. So, for single provider offices, there will be no change to the current interface.
Primary Key.
FK to procedurecode.CodeNum.
FK to provider.ProvNum.
The note.
X's and /'s describe Dr's time and assistant's time in the same increments as the user has set.
A list setup ahead of time with all the procedure codes used by the office. Every procedurelog entry which is attached to a patient is also linked to this table.
Primary Key. This happened in version 4.8.7.
Was Primary key, but now CodeNum is primary key. Can hold dental codes, medical codes, custom codes, etc.
The main description.
Abbreviated description.
X's and /'s describe Dr's time and assistant's time in the same increments as the user has set.
FK to definition.DefNum. The category that this code will be found under in the search window. Has nothing to do with insurance categories.
Enum:TreatmentArea
Used in procedurecode setup to specify the treatment area for a procedure. This determines what fields are available when editing an appointment.
0-Same as 3 mouth.
1
2
3
4
5
6
7
If true, do not usually bill this procedure to insurance.
True if Crown,Bridge,Denture, or RPD. Forces user to enter Initial or Replacement and Date.
The default procedure note to copy when marking complete.
Identifies hygiene procedures so that the correct provider can be selected.
No longer used.
For Medicaid. There may be more later.
FK to procedurecode.ProcCode. The actual medical code that is being referenced must be setup first. Anytime a procedure it added, this medical code will also be added to that procedure. The user can change it in procedurelog.
Used by some offices even though no user interface built yet. SalesTaxPercentage has been added to the preference table to store the amount of sales tax to apply as an adjustment attached to a procedurelog entry.
Enum:ToothPaintingType
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
If set to anything but 0, then this will override the graphic color for all procedures of this code, regardless of the status.
When creating treatment plans, this description will be used instead of the technical description.
Only used in Canada. Set to true if this procedure code is only used as an adjunct to track the lab fee.
This is true if this procedure code existed before ADA code distribution changed at version 4.8, false otherwise.
Support for Base Units for a Code (like anesthesia). Should normally be zero.
FK to procedurecode.ProcCode. Used for posterior composites because insurance substitutes the amalgam code when figuring the coverage.
Enum:SubstitutionCondition Used so that posterior composites only substitute if tooth is molar. Ins usually pays for premolar composites.
Used for insurance substitutions conditions of procedurecodes. Mostly for posterior composites.
0
1
2
Last datetime that this row was inserted or updated.
Set to true if the procedure takes more than one appointment to complete.
11 digits or blank, enforced. For 837I
Gets copied to procedure.RevCode. For 837I
FK to provider.ProvNum. 0 for none. Otherwise, this provider will be used for this code instead of the normal provider.
Database table is procedurelog. A procedure for a patient. Can be treatment planned or completed. Once it's completed, it gets tracked more closely be the security portion of the program. A procedure can NEVER be deleted. Status can just be changed to "deleted".
Primary key.
FK to patient.PatNum
FK to appointment.AptNum. Only allowed to attach proc to one appt(not counting planned appt)
No longer used.
Procedure date that will show in the account as the date performed. If just treatment planned, the date can be the date it was tp'd, or the date can be min val if we don't care. Also see ProcTime column.
Procedure fee.
Surfaces, or use "UL" etc for quadrant, "2" etc for sextant, "U","L" for arches.
May be blank, otherwise 1-32, 51-82, A-T, or AS-TS, 1 or 2 char.
May be blank, otherwise is series of toothnumbers separated by commas.
FK to definition.DefNum, which contains the text of the priority.
Enum:ProcStat TP=1,Complete=2,Existing Cur Prov=3,Existing Other Prov=4,Referred=5,Deleted=6,Condition=7.
Procedure Status.
1- Treatment Plan.
2- Complete.
3- Existing Current Provider.
4- Existing Other Provider.
5- Referred Out.
6- Deleted.
7- Condition.
FK to provider.ProvNum.
FK to definition.DefNum, which contains text of the Diagnosis.
FK to appointment.AptNum. Was called NextAptNum in older versions. Allows this procedure to be attached to a Planned appointment as well as a standard appointment.
Enum:PlaceOfService Only used in Public Health. Zero(Office) until procedure set complete. Then it's set to the value of the DefaultProcedurePlaceService preference.
0. CPT code 11
1. CPT code 12
2. CPT code 21
3. CPT code 22
4. CPT code 31
5. CPT code 33. In X12, a similar code AdultLivCareFac 35 is mentioned.
6. CPT code ?. We use 11 for office.
7. CPT code 15
8. CPT code 03
9. CPT code 26
10. CPT code 50
11. CPT code 71
12. CPT code 72
13. CPT code 23
14. CPT code 24
Single char. Blank=no, I=Initial, R=Replacement.
For a prosthesis Replacement, this is the original date.
This note goes out on e-claims. Not visible in Canada.
This is the date this procedure was entered or set complete. If not status C, then the value is ignored. This date is set automatically when Insert, but older data or converted data might not have this value set. It gets updated when set complete. User never allowed to edit. This will be enhanced later.
FK to clinic.ClinicNum. 0 if no clinic.
FK to procedurecode.ProcCode. Optional.
Simple text for ICD-9 code. Gets sent with medical claims.
Set true if this medical diagnostic code is the principal diagnosis for the visit. If no principal diagnosis is marked for any procedures on a medical e-claim, then it won't be allowed to be sent. If more than one is marked, then it will just use one at random.
FK to procedurelog.ProcNum. Only used in Canada. If not zero, then this proc is a lab fee and this indicates to which actual procedure the lab fee is attached. For ordinary use, they are treated like two separate procedures. It's only for insurance claims that we need to know which lab fee belongs to which procedure. Two lab fees may be attached to one procedure.
FK to definition.DefNum. Lets some users track charges for certain types of reports. For example, a Medicaid billing type could be assigned to a procedure, flagging it for inclusion in a report mandated by goverment. Would be more useful if it was automated to flow down based on insurance plan type, but that can be added later. Not visible if prefs.EasyHideMedicaid is true.
FK to definition.DefNum. Same as BillingTypeOne, but used when there is a secondary billing type to account for.
FK to procedurecode.CodeNum
Modifier for certain CPT codes.
Modifier for certain CPT codes.
Modifier for certain CPT codes.
Modifier for certain CPT codes.
NUBC Revenue Code for medical/inst billing. Used on UB04 and 837I.
Default is 1. Becomes Service Unit Count on institutional UB claimforms SV205. Becomes Service Unit Count on medical 1500 claimforms SV104. Becomes procedure count on dental claims SV306. Gets multiplied by fee in all accounting calculations.
Base units used for some billing codes. Default is 0. No UI for this field. It is only edited in the ProcedureCode window. The database maint tool changes BaseUnits of all procedures to match that of the procCode. Not sure yet what it's for.
Start time in military. No longer used, but not deleting just in case someone has critical information stored here.
Stop time in military. No longer used, but not deleting just in case someone has critical information stored here.
The date that the procedure was originally treatment planned. Does not change when marked complete.
FK to site.SiteNum.
Set to true to hide the chart graphics for this procedure. For example, a crown was done, but then tooth extracted.
F16, up to 5 char. One or more of the following: A=Repair of a prior service, B=Temporary placement, C=TMJ, E=Implant, L=Appliance lost, S=Appliance stolen, X=none of the above. Blank is equivalent to X for claim output, but one value will not be automatically converted to the other in this table. That will allow us to track user entry for procedurecode.IsProsth.
Used to be part of the ProcDate, but that was causing reporting issues.
Marks the time a procedure was finished.
Automatically updated by MySQL every time a row is added or changed.
FK to definition.DefNum, which contains text of the Prognosis.
Enum:EnumProcDrugUnit For 837I and UB04
Includes fractions. For 837I
Enum:ProcUnitQtyType For dental, the type is always sent electronically as MultiProcs. For institutional SV204, Days will be sent electronically if chosen, otherwise ServiceUnits will be sent. For medical SV103, MinutesAnesth will be sent electronically if chosen, otherwise ServiceUnits will be sent.
FK to statement.StatementNum. Only used when the statement in an invoice.
If this flag is set, then the proc is locked down tight. No changes at all can be made except to append, sign, or invalidate. Invalidate really just sets the proc to status 'deleted'. An invalidated proc retains its IsLocked status. All locked procs will be status of C or D. Locked group notes will be status of EC or D.
Links Procedures(groupnotes) to Procedures in a 1-n relationship.
Primary key.
FK to procedurelog.ProcNum.
FK to procedurelog.ProcNum.
A procedure note for one procedure. User does not have any direct control over this table at all. It's handled automatically. When user "edits" a procedure note, the program actually just adds another note. No note can EVER be edited or deleted.
Primary key.
FK to patient.PatNum
FK to procedurelog.ProcNum
The server time that this note was entered. Essentially a timestamp.
FK to userod.UserNum.
The actual note.
There are two kinds of signatures. Topaz signatures use hardware manufactured by that company, and the signature is created by their library. OD signatures work exactly the same way, but are only for on-screen signing.
The encrypted signature. A signature starts as a collection of vectors. The Topaz .sig file format is proprietary. The OD signature format looks like this: 45,68;48,70;49,72;0,0;55,88;etc. It's simply a sequence of points, separated by semicolons. 0,0 represents pen up. Then, a hash is created from the Note, concatenated directly with the userNum. For example, "This is a note3" gets turned into a hash of 2849283940385391 (16 bytes). The hash is used to encrypt the signature data string using symmetric encryption. Therefore, the actual signature cannot be retrieved from the database by ordinary means. Also, the signature info cannot even be retrieved by Open Dental at all unless it supplies the same hash as before, proving that the data has not changed since signed. If OD supplies the correct hash, then it will be able to extract the sequence of vectors which it will then use to display the signature. The OD sigs are not compressed, and the Topaz sigs are. But there is very little difference in their sizes. It would be very rare for a signature to be larger than 1000 bytes.
These are copies of procedures that are attached to treatment plans.
Primary key.
FK to treatplan.TreatPlanNum. The treatment plan to which this proc is attached.
FK to patient.PatNum.
FK to procedurelog.ProcNum. It is very common for the referenced procedure to be missing. This procNum is only here to compare and test the existence of the referenced procedure. If present, it will check to see whether the procedure is still status TP.
The order of this proc within its tp. This is set when the tp is first created and can't be changed. Drastically simplifies loading the tp.
FK to definition.DefNum which contains the text of the priority.
A simple string displaying the tooth number. If international tooth numbers are used, then this will be in international format already.
Tooth surfaces or area. This is already converted for international use. If arch or quad, then it will have U,LR, etc.
Not a foreign key. Simply display text. Can be changed by user at any time.
Description is originally copied from procedurecode.Descript, but user can change it.
The fee charged to the patient. Never gets automatically updated.
The amount primary insurance is expected to pay. Never gets automatically updated.
The amount secondary insurance is expected to pay. Never gets automatically updated.
The amount the patient is expected to pay. Never gets automatically updated.
The amount of discount. Currently only used for PPOs.
Text from prognosis definition. Can be changed by user at any time.
Text from diagnosis definition. Can be changed by user at any time.
Each row is a bridge to an outside program, frequently an imaging program. Most of the bridges are hard coded, and simply need to be enabled. But user can also add their own custom bridge.
Primary key.
Unique name for built-in program bridges. Not user-editable. enum ProgramName
Description that shows.
True if enabled.
The path of the executable to run or file to open.
Some programs will accept command line arguments.
Notes about this program link. Peculiarities, etc.
If this is a Plugin, then this is the filename of the dll. The dll must be located in the application directory.
Some program links (bridges), have properties that need to be set. The property names are always hard coded. User can change the value. The property is usually retrieved based on its name.
Primary key.
FK to program.ProgramNum
The description or prompt for this property. Blank for workstation overrides of program path.
The value.
The human-readable name of the computer on the network (not the IP address). Only used when overriding program path. Blank for typical Program Properties.
A provider is usually a dentist or a hygienist. But a provider might also be a denturist, a dental student, or a dental hygiene student. A provider might also be a 'dummy', used only for billing purposes or for notes in the Appointments module. There is no limit to the number of providers that can be added.
Primary key.
Abbreviation. There was a limit of 5 char before version 5.4. The new limit is 255 char. This will allow more elegant solutions to various problems. Providers will no longer be referred to by FName and LName. Abbr is used as a human readable primary key.
Order that provider will show in lists. Was 1-based, now 0-based.
Last name.
First name.
Middle inital or name.
eg. DMD or DDS. Was 'title' in previous versions.
FK to feesched.FeeSchedNum.
Enum:DentalSpecialty
0
1
2
3
4
5
6
7
8
9
10
11
12
13
or TIN. No punctuation
can include punctuation
.
True if hygienist.
Color that shows in appointments
If true, provider will not show on any lists
True if the SSN field is actually a Tax ID Num
No longer used since each state assigns a different ID. Use the providerident instead which allows you to assign a different BCBS ID for each Payor ID.
Signature on file.
.
Color that shows in appointments as outline when highlighted.
FK to schoolclass.SchoolClassNum Used in dental schools. Each student is a provider. This keeps track of which class they are in.
US NPI, and Canadian CDA provider number.
Canadian field required for e-claims. Assigned by CDA. It's OK to have multiple providers with the same OfficeNum. Max length should be 4.
.
FK to ??. Field used to set the Anesthesia Provider type. Used to filter the provider dropdowns on FormAnestheticRecord
If none of the supplied taxonomies works. This will show on claims.
For Canada. Set to true if CDA Net provider.
The name of this field is bad and will soon be changed to MedicalSoftID. This allows an ID field that can be used for HL7 synch with other software. Before this field was added, we were using prov abbreviation, which did not work well.
Allows using ehr module for this provider. Tied to provider fname and lname.
Provider medical State ID.
True if the provider key for this provider is set up for report access.
Default is false because most providers are persons. But some dummy providers used for practices or billing entities are not persons. This is needed on 837s.
The state abbreviation where the state license number in the StateLicense field is legally registered.
Some insurance companies require special provider ID #s, and this table holds them.
Primary key.
FK to provider.ProvNum. An ID only applies to one provider.
FK to carrier.ElectID aka Electronic ID. An ID only applies to one insurance carrier.
Enum:ProviderSupplementalID
Used when submitting e-claims to some carriers who require extra provider identifiers. Usage varies by company. Only used as needed.
0
1
2
3
The number assigned by the ins carrier.
Each row is one Question for one patient. If a patient has never filled out a questionnaire, then they will have no rows in this table.
Primary key.
FK to patient.PatNum
The order that this question shows in the list.
The original question.
The answer to the question in text form.
FK to formpat.FormPatNum
Each row represents one question on the medical history questionnaire. Later, other questionnaires will be allowed, but for now, all questions are on one questionnaire for the patient. This table has no dependencies, since the question is copied when added to a patient record. Any row can be freely deleted or altered without any problems.
Primary key.
The question as presented to the patient.
The order that the Questions will show.
Enum:QuestionType
0=FreeformText, 1=YesNoUnknown. Allows for later adding other types, 3=picklist, 4, etc
0
1
Quick paste categories are used by the quick paste notes feature.
Primary key.
.
The order of this category within the list. 0-based.
Enum:QuickPasteType Each Category can be set to be the default category for multiple types of notes. Stored as integers separated by commas.
Used by QuickPasteCat to determine which category to default to when opening.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Template for quick pasted note feature.
Primary key.
FK to quickpastecat.QuickPasteCatNum. Keeps track of which category this note is in.
The order of this note within it's category. 0-based.
The actual note. Can be multiple lines and possibly very long.
The abbreviation which will automatically substitute when preceded by a ?.
A patient can only have one recall object per type. The recall table stores a few dates that must be kept synchronized with other information in the database. This is difficult. Anytime one of the following items changes, things need to be synchronized: procedurecode.SetRecall, any procedurelog change for a patient (procs added, deleted, completed, status changed, date changed, etc), patient status changed. There are expected to be a few bugs in the synchronization logic, so anytime a patient's recall is opened, it will also update.
During synchronization, the program will frequently alter DateDueCalc, DateDue, and DatePrevious based on trigger procs. The system will also add and delete recalls as necessary. But it will not delete a recall unless all values are default and there is no useful information. When a user tries to delete a recall, they will only be successful if the trigger conditions do not apply. Otherwise, they will have to disable the recall instead.
Primary key.
FK to patient.PatNum.
Not editable. The calculated date due. Generated by the program and subject to change anytime the conditions change. It can be blank (0001-01-01) if no appropriate triggers.
This is the date that is actually used when doing reports for recall. It will usually be the same as DateDueCalc unless user has changed it. System will only update this field if it is the same as DateDueCalc. Otherwise, it will be left alone. Gets cleared along with DateDueCalc when resetting recall. When setting disabled, this field will also be cleared. This is the field to use if converting from another software.
Not editable. Previous date that procedures were done to trigger this recall. It is calculated and enforced automatically. If you want to affect this date, add a procedure to the chart with a status of C, EC, or EO.
The interval between recalls. The Interval struct combines years, months, weeks, and days into a single integer value.
FK to definition.DefNum, or 0 for none.
An administrative note for staff use.
If true, this recall type will be disabled (there's only one type right now). This is usually used rather than deleting the recall type from the patient because the program must enforce the trigger conditions for all patients.
Last datetime that this row was inserted or updated.
FK to recalltype.RecallTypeNum.
Default is 0. If a positive number is entered, then the family balance must be less in order for this recall to show in the recall list.
If a date is entered, then this recall will be disabled until that date.
This will only have a value if a recall is scheduled.
Links one procedurecode to one recalltype. The presence of this trigger is used when determining DatePrevious in the recall table.
Primary key.
FK to recalltype.RecallTypeNum
FK to procedurecode.CodeNum
All recalls are based on these recall types. Recall triggers are in their own table.
Primary key.
.
The interval between recalls. The Interval struct combines years, months, weeks, and days into a single integer value.
For scheduling the appointment.
What procedures to put on the recall appointment. Comma delimited set of ProcCodes. (We may change this to CodeNums).
Used in the Accounting section. Each row represents one reconcile. Transactions will be attached to it.
Primary key.
FK to account.AccountNum
User enters starting balance here.
User enters ending balance here.
The date that the reconcile was performed.
If StartingBal + sum of entries selected = EndingBal, then user can lock. Unlock requires special permission, which nobody will have by default.
Attaches a referral to a patient.
Primary key.
FK to referral.ReferralNum.
FK to patient.PatNum.
Order to display in patient info. One-based. Will be automated more in future.
Date of referral.
true=from, false=to
Enum:ReferralToStatus 0=None,1=Declined,2=Scheduled,3=Consulted,4=InTreatment,5=Complete.
0=None,1=Declined,2=Scheduled,3=Consulted,4=InTreatment,5=Complete
0
1
2
3
4
5
Why the patient was referred out, or less commonly, the circumstances of the referral source.
Used to track ehr events. All outgoing referrals default to true. The incoming ones get a popup asking if it's a transition of care.
FK to procedurelog.ProcNum
.
All info about a referral is stored with that referral even if a patient. That way, it's available for easy queries.
Primary key.
Last name.
First name.
Middle name or initial.
SSN or TIN, no punctuation. For Canada, this holds the referring provider CDA num for claims.
Specificies if SSN is real SSN.
Enum:DentalSpecialty -1 is allowed to indicate no specialty. -1 is what all non-professionals will be set to.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
State
Primary phone, restrictive, must only be 10 digits and only numbers.
.
.
.
.
Holds important info about the referral.
Additional phone no restrictions
Can't delete a referral, but can hide if not needed any more.
Set to true for referralls such as Yellow Pages.
i.e. DMD or DDS
.
FK to patient.PatNum for referrals that are patients.
NPI for the referral
FK to sheetdef.SheetDefNum. Referral slips can be set for individual referral sources. If zero, then the default internal referral slip will be used instead of a custom referral slip.
True if another dentist or physician. Cannot be a patient.
Keeps track of which product keys have been assigned to which customers. This datatype is only used if the program is being run from a distributor installation. A single customer is allowed to have more than one key, to accommodate for various circumstances, including having multiple physical business locations.
Primary Key.
FK to patient.PatNum. The customer to which this registration key applies.
The registration key as stored in the customer database.
Db note about the registration key. Specifically, the note must include information about the location to which this key pertains, since once at least one key must be assigned to each location to be legal.
This will help later with tracking for licensing.
This is used to completely disable a key. Might possibly even cripple the user's program. Usually only used if reassigning another key due to abuse or error. If no date specified, then this key is still valid.
This is used when the customer cancels monthly support. This still allows the customer to get downloads for bug fixes, but only up through a certain version. Our web server program will use this date to deduce which version they are allowed to have. Any version that was released as a beta before this date is allowed to be downloaded.
This is assigned automatically based on whether the registration key is a US version vs. a foreign version. The foreign version is not able to unlock the procedure codes. There are muliple layers of safeguards in place.
Deprecated.
We have given this customer a free version. Typically in India.
This customer is not using the software with live patient data, but only for testing and development purposes.
Typically 100, although it can be more for multilocation offices.
Ehr
Primary key.
Enum:EhrCriterion Problem,Medication,Allergy,Age,Gender,LabResult.
EhrCriterion: Problem,Medication,Allergy,Age,Gender,LabResult
0-Problem (diseaseDef)
1-Medication
2-AllergyDef
3-Age
4-Gender
5-LabResult
6-ICD9
Foreign key to disease.DiseaseDefNum, medicationpat.MedicationNum, or allergy.AllergyDefNum. Will be 0 if Age, Gender, or LabResult are the trigger.
Only used if Age, Gender, or LabResult are the trigger. Examples: "<25"(must include < or >), "Male"/"Female", "INR" (the simple description of the lab test)
Text that will show as the reminder.
Each row represents one charge that will be added monthly.
Primary key
FK to patient.PatNum.
FK to procedurecode.ProcCode. The code that will be added to the account as a completed procedure.
The amount that will be charged. The amount from the procedurecode will not be used. This way, a repeating charge cannot be accidentally altered.
The date of the first charge. Charges will always be added on the same day of the month as the start date. If more than one month goes by, then multiple charges will be added.
The last date on which a charge is allowed. So if you want 12 charges, and the start date is 8/1/05, then the stop date should be 7/1/05, not 8/1/05. Can be blank (0001-01-01) to represent a perpetual repeating charge.
Any note for internal use.
If replication is being used, then this stores information about each server. Each row is one server.
Primary key.
The description or name of the server. Optional.
Db admin sets this server_id server variable on each replication server. Allows us to know what server each workstation is connected to. In display, it's ordered by this value. Users are always forced to enter a value here.
The start of the key range for this server. 0 if no value entered yet.
The end of the key range for this server. 0 if no value entered yet.
The AtoZpath for this server. Optional.
If true, then this server cannot initiate an update. Typical for satellite servers.
The description or name of the comptuer that will monitor replication for this server.
For Dental Schools. Requirements needed in order to complete a course.
Primary key.
.
FK to schoolcourse.SchoolCourseNum. Never 0.
FK to schoolclass.SchoolClassNum. Never 0.
For Dental Schools. The purpose of this table changed significantly in version 4.5. This now only stores completed requirements. There can be multiple completed requirements of each ReqNeededNum. No need to synchronize any longer.
Primary key.
FK to reqneeded.ReqNeededNum.
.
FK to schoolcourse.SchoolCourseNum. Never 0.
FK to provider.ProvNum. The student. Never 0.
FK to appointment.AptNum.
FK to patient.PatNum
FK to provider.ProvNum
The date that the requirement was completed.
Many-to-many relationship connecting Rx with DiseaseDef, AllergyDef, or Medication. Only one of those links may be specified in a single row; the other two will be 0.
Primary key.
FK to rxdef.RxDefNum.
FK to diseasedef.DiseaseDefNum. Only if DrugProblem interaction. This is compared against disease.DiseaseDefNum using PatNum.
FK to allergydef.AllergyDefNum. Only if DrugAllergy interaction. The allergy and allergydef tables do not yet exist. Once they are in place in place, this will be compared against allergy.AllergyDefNum using PatNum.
FK to medication.MedicationNum. Only if DrugDrug interaction. This will be compared against medicationpat.MedicationNum using PatNum.
This is typically blank, so a default message will be displayed by OD. But if this contains a message, then this message will be used instead.
Rx definitions. Can safely delete or alter, because they get copied to the rxPat table, not referenced.
Primary key.
The name of the drug.
Directions.
Amount to dispense.
Number of refills.
Notes about this drug. Will not be copied to the rxpat.
Is a controlled substance. This will affect the way it prints.
RxNorm Code identifier. This is used to enhance the RxAlert functionality. Usually, RxAlerts are triggered when an Rx is entered from an RxDef. But if an alert needs to be triggered when entering a medication through the ehr CPOE, then this RxCui matching the RxCui of the medication is the trigger. This is clearly not practical because there are so many RxCuis that an exact match would be extremely rare. So the only reason this field is here is to pass ehr certification.
RxNorm created from a zip file.
Primary key.
RxNorm Concept universal ID. Throughout the program, this is actually used as the Primary Key of this table rather than the RxNormNum.
Multum code. Only used for import/export with electronic Rx program. User cannot see multum codes.
Only used for RxNorms, not Multums.
One Rx for one patient. Copied from rxdef rather than linked to it.
Primary key.
FK to patient.PatNum.
Date of Rx.
Drug name. Example: PenVK 500 mg capsules. Example: Percocet 5/500 tablets.
Directions. Example: Take 2 tablets qid. (qid means 4 times a day)
Amount to dispense. Example: 12 (twelve)
Number of refills. Example: 3. Example: 1 per month.
FK to provider.ProvNum.
Notes specific to this Rx. Will not show on the printout. For staff use only.
FK to pharmacy.PharmacyNum.
Is a controlled substance. This will affect the way it prints.
The last date and time this row was altered. Not user editable.
Enum:RxSendStatus
RxNorm Code identifier.
NCI Pharmaceutical Dosage Form code. Only used with ehr. For example, C48542 is the code for “Tablet dosing unit”. User enters code manually, and it's only used for Rx Send, which will be deprecated with 2014 cert. Guaranteed that nobody actually uses or cares about this field.
NewCrop returns this unique identifier to use for electronic Rx.
One block of time. Either for practice, provider, or blockout.
Primary key.
Date for this timeblock.
Start time for this timeblock.
Stop time for this timeblock.
Enum:ScheduleType 0=Practice,1=Provider,2=Blockout,3=Employee. Practice is used as a way to indicate holidays and as a way to put a note in for the entire practice for one day. But whenever type is Practice, times will be ignored.
For schedule timeblocks.
0
1
2
3
FK to provider.ProvNum if a provider type.
FK to definition.DefNum if blockout. eg. HighProduction, RCT Only, Emerg.
This contains various types of text entered by the user.
Enum:SchedStatus enumeration 0=Open,1=Closed,2=Holiday. All blocks have a status of Open, but user doesn't see the status. The "closed" status was previously used to override the defaults when the last timeblock was deleted. But it's nearly phased out now. Still used by blockouts. Holidays are a special type of practice schedule item which do not have providers attached.
Schedule status. Open=0,Closed=1,Holiday=2.
0
1
2
FK to employee.EmployeeNum.
Last datetime that this row was inserted or updated.
Links one schedule block to one operatory. So for a schedule block to show, it must be linked to one or more operatories.
Primary key.
FK to schedule.ScheduleNum.
FK to operatory.OperatoryNum.
Used in dental schools. eg. Dental 2009 or Hygiene 2007.
Primary key.
The year this class will graduate
Description of this class. eg Dental or Hygiene
Used in dental schools. eg OP 732 Operative Dentistry Clinic II.
Primary key.
Alphanumeric. eg PEDO 732.
eg: Pediatric Dentistry Clinic II
Used in public health. This screening table is meant to be general purpose. It is compliant with the popular Basic Screening Survey. It is also designed with minimal foreign keys and can be easily adapted to a tablet PC. This table can be used with only the screengroup table, but is more efficient if provider, school, and county tables are also available.
Primary key
The date of the screening.
FK to site.Description, although it will not crash if key absent.
FK to county.CountyName, although it will not crash if key absent.
Enum:PlaceOfService
0. CPT code 11
1. CPT code 12
2. CPT code 21
3. CPT code 22
4. CPT code 31
5. CPT code 33. In X12, a similar code AdultLivCareFac 35 is mentioned.
6. CPT code ?. We use 11 for office.
7. CPT code 15
8. CPT code 03
9. CPT code 26
10. CPT code 50
11. CPT code 71
12. CPT code 72
13. CPT code 23
14. CPT code 24
FK to provider.ProvNum. ProvNAME is always entered, but ProvNum supplements it by letting user select from list. When entering a provNum, the name will be filled in automatically. Can be 0 if the provider is not in the list, but provName is required.
Required.
Enum:PatientGender
0
1
2- This is not a joke. Required by HIPAA for privacy. Required by ehr to track missing entries.
Enum:PatientRace and ethnicity.
Race and ethnicity for patient. Used by public health. The problem is that everyone seems to want different choices. If we give these choices their own table, then we also need to include mapping functions. These are currently used in ArizonaReports, HL7 w ECW, and EHR. Foreign users would like their own mappings.
0
1
2
3
4
5
6
7
8
9
10 - Required by EHR.
Enum:PatientGrade
Grade level used in public health.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Age of patient at the time the screening was done. Faster than recording birthdates.
Enum:TreatmentUrgency
For public health. Unknown, NoProblems, NeedsCarE, or Urgent.
Enum:YN Set to true if patient has cavities.
Unknown,Yes, or No.
0
1
2
Enum:YN Set to true if patient needs sealants.
Unknown,Yes, or No.
0
1
2
Enum:YN
Unknown,Yes, or No.
0
1
2
Enum:YN
Unknown,Yes, or No.
0
1
2
Enum:YN
Unknown,Yes, or No.
0
1
2
Enum:YN
Unknown,Yes, or No.
0
1
2
Optional
FK to screengroup.ScreenGroupNum.
The order of this item within its group.
.
Used in public health. Programming note: There are many extra fields in common with the screen table, but they are only in this struct and not in the database itself, where that data is stored with the individual screen items. The data in this table is irrelevant in reports. It is just used to help organize the user interface.
Primary key
Up to the user.
Date used to help order the groups.
This allows users to set up a list of students prior to actually going to the school. It also serves to attach the exam sheet to the screening.
Primary key.
FK to patient.PatNum
FK to screengroup.ScreenGroupNum. Every screening is attached to a group (classroom)
FK to sheet.SheetNum. Starts out 0 to indicate a potential screening. Gets linked to an exam sheet once the screening is done.
Stores an ongoing record of database activity for security purposes. User not allowed to edit.
Primary key.
Enum:Permissions
A hard-coded list of permissions which may be granted to usergroups.
0
1
2
3
4
5
6
7
8. Currently covers a wide variety of setup functions.
9
10. Uses date restrictions. Covers editing AND deleting of completed procs. Deleting non-completed procs is covered by ProcDelete.
11
12
13
14. Uses date restrictions.
15
16. Uses date restrictions.
17
18. Uses date restrictions.
19
20. Not used anymore.
21 Not used anymore.
22
23. Includes setting procedures complete.
24. At least one user must have this permission.
25.
26
27
28
29
30
31. Uses date restrictions.
32. Uses date restrictions.
33
34
35
36
37. Uses date restrictions. Also includes completed claimprocs even if unattached to an insurance check. However, it's not actually enforced when creating a check because it would be very complex.
38. Uses date restrictions.
39
40. Uses date restrictions.
41. Uses date restrictions. All other equipment functions are covered by .Setup.
42. Uses date restrictions. Also used in audit trail to log web form importing.
43. Uses date restrictions.
44. Uses date restrictions.
45. Uses date restrictions.
46
47
48
49. Uses date restrictions. This only applies to non-completed procs. Deletion of completed procs is covered by ProcComplEdit.
50 - Only used at OD HQ. No user interface.
51
52
53
54
55
56
57
58
59
60
61
62
63
FK to user.UserNum
The date and time of the entry. It's value is set when inserting and can never change. Even if a user changes the date on their ocmputer, this remains accurate because it uses server time.
The description of exactly what was done. Varies by permission type.
FK to patient.PatNum. Can be 0 if not applicable.
.
FK to relevant table. Not implemented yet. Table will be based on PermType.
One sheet for one patient.
Primary key.
Enum:SheetTypeEnum
Different types of sheets that can be used.
0-Requires SheetParameter for PatNum. Does not get saved to db.
1-Requires SheetParameter for CarrierNum. Does not get saved to db.
2-Requires SheetParameter for ReferralNum. Does not get saved to db.
3-Requires SheetParameters for PatNum,ReferralNum.
4-Requires SheetParameter for AptNum. Does not get saved to db.
5-Requires SheetParameter for RxNum.
6-Requires SheetParameter for PatNum.
7-Requires SheetParameter for PatNum.
8-Requires SheetParameters for PatNum,ReferralNum.
9-Requires SheetParameter for PatNum.
10-Requires SheetParameter for AptNum. Does not get saved to db.
11-Requires SheetParameter for PatNum.
12-Requires SheetParameter for PatNum, LabCaseNum.
13-Requires SheetParameter for PatNum.
14-Requires SheetParameter for PatNum.
FK to patient.PatNum. A saved sheet is always attached to a patient (except deposit slip). There are a few sheets that are so minor that they don't get saved, such as a Carrier label.
The date and time of the sheet as it will be displayed in the commlog.
The default fontSize for the sheet. The actual font must still be saved with each sheetField.
The default fontName for the sheet. The actual font must still be saved with each sheetField.
Width of the sheet in pixels, 100 pixels per inch.
Height of the sheet in pixels, 100 pixels per inch.
.
An internal note for the use of the office staff regarding the sheet. Not to be printed on the sheet in any way.
Copied from the SheetDef description.
The order that this sheet will show in the patient terminal for the patient to fill out. Or zero if not set.
True if this sheet was downloaded from the webforms service.
A definition (template) for a sheet. Can be pulled from the database, or it can be internally defined.
Primary key.
The description of this sheetdef.
Enum:SheetTypeEnum
Different types of sheets that can be used.
0-Requires SheetParameter for PatNum. Does not get saved to db.
1-Requires SheetParameter for CarrierNum. Does not get saved to db.
2-Requires SheetParameter for ReferralNum. Does not get saved to db.
3-Requires SheetParameters for PatNum,ReferralNum.
4-Requires SheetParameter for AptNum. Does not get saved to db.
5-Requires SheetParameter for RxNum.
6-Requires SheetParameter for PatNum.
7-Requires SheetParameter for PatNum.
8-Requires SheetParameters for PatNum,ReferralNum.
9-Requires SheetParameter for PatNum.
10-Requires SheetParameter for AptNum. Does not get saved to db.
11-Requires SheetParameter for PatNum.
12-Requires SheetParameter for PatNum, LabCaseNum.
13-Requires SheetParameter for PatNum.
14-Requires SheetParameter for PatNum.
The default fontSize for the sheet. The actual font must still be saved with each sheetField.
The default fontName for the sheet. The actual font must still be saved with each sheetField.
Width of the sheet in pixels, 100 pixels per inch.
Height of the sheet in pixels, 100 pixels per inch.
Set to true to print landscape.
One field on a sheet.
Primary key.
FK to sheet.SheetNum.
Enum:SheetFieldType OutputText, InputField, StaticText,Parameter(only used for SheetField, not SheetFieldDef),Image,Drawing,Line,Rectangle,CheckBox,SigBox,PatImage.
Mostly for OutputText and InputField types. Each sheet typically has a main datatable type. For OutputText types, FieldName is usually the string representation of the database column for the main table. For other tables, it can be of the form table.Column. There may also be extra fields available that are not strictly pulled from the database. Extra fields will start with lowercase to indicate that they are not pure database fields. The list of available fields for each type in SheetFieldsAvailable. Users can pick from that list. Likewise, InputField types are internally tied to actions to persist the data. So they are also hard coded and are available in SheetFieldsAvailable. For static images, this is the full file name including extension, but without path. Static images paths are reconstructed by looking in the AtoZ folder, SheetImages folder. For a PatImage, this now contains the long FK to the document. A join must be done to that table to find the filename. When a SheetField has a fieldType of Parameter, then the FieldName stores the name of the parameter.
For OutputText, this value is set before printing. This is the data obtained from the database and ready to print. For StaticText, this is copied from the sheetFieldDef, but in-line fields like [this] will have been filled. For an archived sheet retrieved from the database (all SheetField rows), this value will have been saved and will not be filled again automatically. For a parameter fieldtype, this will store the value of the parameter. For a Drawing fieldtype, this will be the point data for the lines. The format would look similar to this: 45,68;48,70;49,72;0,0;55,88;etc. It's simply a sequence of points, separated by semicolons. For CheckBox, it will either be an X or empty. For SigBox, the first char will be 0 or 1 to indicate SigIsTopaz, and all subsequent chars will be the Signature itself. For Pat Image, this contains image size and image position info. Like this: "X=0,Y=20,W=100,H=60". This is initially generated automatically to fit the object. It can later be changed by the user to "zoom and pan" within the confines of the object.
The fontSize for this field regardless of the default for the sheet. The actual font must be saved with each sheetField.
The fontName for this field regardless of the default for the sheet. The actual font must be saved with each sheetField.
.
In pixels.
In pixels.
The field will be constrained horizontally to this size. Not allowed to be zero.
The field will be constrained vertically to this size. Not allowed to be 0. It's not allowed to be zero so that it will be visible on the designer.
Enum:GrowthBehaviorEnum
For sheetFields
Not allowed to grow. Max size would be Height and Width.
Can grow down if needed, and will push nearby objects out of the way so that there is no overlap.
Can grow down, and will push down all objects on the sheet that are below it. Mostly used when drawing grids.
This is only used for checkboxes that you want to behave like radiobuttons. Set the FieldName the same for each Checkbox in the group. The FieldValue will likely be X for one of them and empty string for the others. Each of them will have a different RadioButtonValue. Whichever box has X, the RadioButtonValue for that box will be used when importing. This field is not used for "misc" radiobutton groups.
Name which identifies the group within which the radio button belongs. FieldName must be set to "misc" in order for the group to take effect.
Set to true if this field is required to have a value before the sheet is closed.
Tab stop order for all fields. Only checkboxes and input fields can have values other than 0.
Allows reporting on misc fields.
One field on a sheetDef.
Primary key.
FK to sheetdef.SheetDefNum.
Enum:SheetFieldType OutputText, InputField, StaticText,Parameter(only used for SheetField, not SheetFieldDef),Image,Drawing,Line,Rectangle,CheckBox,SigBox,PatImage.
Mostly for OutputText, InputField, and CheckBox types. Each sheet typically has a main datatable type. For OutputText types, FieldName is usually the string representation of the database column for the main table. For other tables, it can be of the form table.Column. There may also be extra fields available that are not strictly pulled from the database. Extra fields will start with lowercase to indicate that they are not pure database fields. The list of available fields for each type in SheetFieldsAvailable. Users can pick from that list. Likewise, InputField types are internally tied to actions to persist the data. So they are also hard coded and are available in SheetFieldsAvailable. For static images, this is the full file name including extension, but without path. Static images paths are reconstructed by looking in the AtoZ folder, SheetImages folder. For Pat Images, this is an long FK/DefNum to the default folder for the image. The filename of a PatImage will later be stored in FieldValue.
For StaticText, this text can include bracketed fields, like [nameLF]. For OutputText and InputField, this will be blank. For CheckBoxes, either X or blank. Even if the checkbox is set to behave like a radio button.
The fontSize for this field regardless of the default for the sheet. The actual font must be saved with each sheetField.
The fontName for this field regardless of the default for the sheet. The actual font must be saved with each sheetField.
.
In pixels.
In pixels.
The field will be constrained horizontally to this size. Not allowed to be zero.
The field will be constrained vertically to this size. Not allowed to be 0. It's not allowed to be zero so that it will be visible on the designer.
Enum:GrowthBehaviorEnum
For sheetFields
Not allowed to grow. Max size would be Height and Width.
Can grow down if needed, and will push nearby objects out of the way so that there is no overlap.
Can grow down, and will push down all objects on the sheet that are below it. Mostly used when drawing grids.
This is only used for checkboxes that you want to behave like radiobuttons. Set the FieldName the same for each Checkbox in the group. The FieldValue will likely be X for one of them and empty string for the others. Each of them will have a different RadioButtonValue. Whichever box has X, the RadioButtonValue for that box will be used when importing. This field is not used for "misc" radiobutton groups.
Name which identifies the group within which the radio button belongs. FieldName must be set to "misc" in order for the group to take effect.
Set to true if this field is required to have a value before the sheet is closed.
Tab stop order for all fields. One-based. Only checkboxes and input fields can have values other than 0.
Allows reporting on misc fields.
This defines the light buttons on the left of the main screen.
Primary key.
The text on the button
0-based index defines the order of the buttons.
0=none, or 1-9. The cell in the 3x3 tic-tac-toe main program icon that is to be synched with this button. It will light up or clear whenever this button lights or clears.
Blank for the default buttons. Or contains the computer name for the buttons that override the defaults.
This table stores references to the sequence of sounds and lights that should get sent out with a button push.
Primary key.
FK to sigbutdef.SigButDefNum A few elements are usually attached to a single button.
FK to sigelementdef.SigElementDefNum, which contains the actual sound or light.
These are the actual elements attached to each signal that is sent. They contain references to the sounds and lights that should result.
Primary key.
FK to sigelementdef.SigElementDefNum
FK to signalod.SignalNum.
This defines the items that will be available for clicking when composing a manual message. Also, these are referred to in the button definitions as a sequence of elements.
Primary key.
If this element should cause a button to light up, this would be the row. 0 means none.
If a light row is set, this is the color it will turn when triggered. Ack sets it back to white. Note that color and row can be in two separate elements of the same signal.
Enum:SignalElementType 0=User,1=Extra,2=Message.
0=User,1=Extra,2=Message.
0-To and From lists. Not tied in any way to the users that are part of security.
Typically used to insert "family" before "phone" signals.
Elements of this type show in the last column and trigger the message to be sent.
The text that shows for the element, like the user name or the two word message. No long text is stored here.
The sound to play for this element. Wav file stored in the database in string format until "played". If empty string, then no sound.
The order of this element within the list of the same type.
An actual signal that gets sent out as part of the messaging functionality.
Primary key.
Text version of 'user' this message was sent from, which can actually be any description of a group or individual.
Enum:InvalidType List of InvalidType long values separated by commas. Can be empty. When Date or Tasks are used, they are used all alone with no other flags present.
When the autorefresh message is sent to the other computers, this is the type.
0
1 Not used with any other flags
2 Deprecated. Inefficient. All flags combined except Date and Tasks.
3 Not used with any other flags. Used to just indicate added tasks, but now it indicates any change at all except those where a popup is needed. If we also want a popup, then use TaskPopup.
4
5
6 ApptViews, ApptViewItems, AppointmentRules, ProcApptColors.
7
8
9
10
11
12- Also includes payperiods.
13- Deprecated.
14
15- Both templates and addresses.
16
17
18
19- Userod and UserGroup
20
21- Also includes Image Mounts
22- Also includes clinics.
23
24
25
26
27
28
29
30
31
32
33
34. This is used internally by OD, Inc with the phonenumber table and the phone server.
35. Signal/message defs
36
37. And ApptFields.
38
39
40. Includes ICD9s.
41
42
43
44
45
46
47
48
49
50. This is used internally by OD, Inc with the phone server to trigger the phone system to reload after changing which call groups users are in.
51
52. Includes DrugManufacturers and DrugUnits.
53. Includes all 4 HL7Def tables.
54
55. Caches the wiki master page and the wikiListHeaderWidths
If IType=Date, then this is the affected date in the Appointments module.
Enum:SignalType Button, or Invalid.
The type of signal being sent.
0- Includes text messages.
1
This is only used if the type is button, and the user types in some text. This is the typed portion and does not include any of the text that was on the buttons. These types of signals are displayed in their own separate list in addition to any light and sound that they may cause.
The exact server time when this signal was entered into db. This does not need to be set by sender since it's handled automatically.
Text version of 'user' this message was sent to, which can actually be any description of a group or individual.
If this signal has been acknowledged, then this will contain the date and time. This is how lights get turned off also.
FK to task.TaskNum. If IType=Tasks, then this is the taskNum that was added.
Generally used by mobile clinics to track the temporary locations where treatment is performed, such as schools, nursing homes, and community centers. Replaces the old school table.
Primary key.
.
Notes could include phone, address, contacts, etc.
Represents one statement for one family. Usually already sent, but could still be waiting to send.
Primary key.
FK to patient.PatNum. Typically the guarantor. Can also be the patient for walkout statements.
This will always be a valid and reasonable date regardless of whether it's actually been sent yet.
Typically 45 days before dateSent
Any date >= year 2200 is considered max val. We generally try to automate this value to be the same date as the statement rather than the max val. This is so that when payment plans are displayed, we can add approximately 10 days to effectively show the charge that will soon be due. Adding the 10 days is not done until display time.
Can include line breaks. This ordinary note will be in the standard font.
More important notes may go here. Font will be bold. Color and size of text will be customizable in setup.
Enum:StatementMode Mail, InPerson, Email, Electronic.
0
1
2
3
Set true to hide the credit card section, and the please pay box.
One patient on statement instead of entire family.
If entire family, then this determines whether they are all intermingled into one big grid, or whether they are all listed in separate grids.
True
FK to document.DocNum when a pdf has been archived.
Date/time last altered.
The only effect of this flag is to change the text at the top of a statement from "statement" to "receipt". It might later do more.
This flag is for marking a statement as Invoice. In this case, it must have procedures and/or adjustments attached.
Only used if IsInvoice=true. The first printout will not be a copy. Subsequent printouts will show "copy" on them.
A company that provides supplies for the office, typically dental supplies.
Primary key.
.
.
The customer ID that this office uses for transactions with the supplier
Full address to website. We might make it clickable.
The username used to log in to the supplier website.
The password to log in to the supplier website. Not encrypted or hidden in any way.
Any note regarding supplier. Could hold address, CC info, etc.
A dental supply or office supply item.
Primary key.
FK to supplier.SupplierNum
The catalog item number that the supplier uses to identify the supply.
The description can be similar to the catalog, but not required. Typically includes qty per box/case, etc.
FK to definition.DefNum. User can define their own categories for supplies.
The zero-based order of this supply within it's category.
The level that a fresh order should bring item back up to. Can include fractions. If this is 0, then it will be displayed as having this field blank rather than showing 0. This simply gives a cleaner look.
If hidden, then this supply item won't normally show in the main list.
The price per unit that the supplier charges for this supply. If this is 0.00, then no price will be displayed.
A supply freeform typed in by a user.
Primary key.
.
.
One supply order to one supplier. Contains SupplyOrderItems.
Primary key.
FK to supplier.SupplierNum.
A date greater than 2200 (eg 2500), is considered a max date. A max date is used for an order that was started but has not yet been placed. This puts it at the end of the list where it belongs, but it will display as blank. Only one unplaced order is allowed per supplier.
.
The sum of all the amounts of each item on the order. If any of the item prices are zero, then it won't auto calculate this total. This will allow the user to manually put in the total without having it get deleted.
One item on one supply order. This table links supplies to orders as well as storing a small amount of additional info.
Primary key.
FK to supplyorder.supplyOrderNum.
FK to supply.SupplyNum.
How many were ordered.
Price per unit on this order.
A task is a single todo item.
Primary key.
FK to tasklist.TaskListNum. If 0, then it will show in the trunk of a section.
Only used if this task is assigned to a dated category. Children are NOT dated. Only dated if they should show in the trunk for a date category. They can also have a parent if they are in the main list as well.
FK to patient.PatNum or appointment.AptNum. Only used when ObjectType is not 0.
The description of this task. Might be very long.
Enum:TaskStatusEnum New,Viewed,Done.
True if it is to show in the repeating section. There should be no date. All children and parents should also be set to IsRepeating=true.
Enum:TaskDateType None, Day, Week, Month. If IsRepeating, then setting to None effectively disables the repeating feature.
0
1
2
3
FK to task.TaskNum If this is derived from a repeating task, then this will hold the TaskNum of that task. It helps automate the adding and deleting of tasks. It might be deleted automatically if not are marked complete.
Enum:TaskObjectType 0=none,1=Patient,2=Appointment. More will be added later. If a type is selected, then the KeyNum will contain the primary key of the corresponding Patient or Appointment. Does not really have anything to do with the ObjectType of the parent tasklist, although they tend to match.
Used when attaching objects to tasks. These are the choices.
0
1
2
The date and time that this task was added. Used to sort the list by the order entered.
FK to user.UserNum. The person who created the task.
The date and time that this task was marked "done".
Represents one ancestor of one task. Each task will have at least one ancestor unless it is directly on a main trunk. An ancestor is defined as a tasklist that is higher in the heirarchy for the task, regardless of how many levels up it is. This allows us to mark task lists as having "new" tasks, and it allows us to quickly check for new tasks for a user on startup.
Primary key.
FK to task.TaskNum
FK to tasklist.TaskListNum
A tasklist is like a folder system, where it can have child tasklists as well as tasks.
Primary key.
The description of this tasklist. Might be very long, but not usually.
FK to tasklist.TaskListNum The parent task list to which this task list is assigned. If zero, then this task list is on the main trunk of one of the sections.
Optional. Set to 0001-01-01 for no date. If a date is assigned, then this list will also be available from the date section.
True if it is to show in the repeating section. There should be no date. All children should also be set to IsRepeating=true.
Enum:TaskDateType None, Day, Week, Month. If IsRepeating, then setting to None effectively disables the repeating feature.
0
1
2
3
FK to tasklist.TaskListNum If this is derived from a repeating list, then this will hold the TaskListNum of that list. It helps automate the adding and deleting of lists. It might be deleted automatically if no tasks are marked complete.
Enum:TaskObjectType 0=none, 1=Patient, 2=Appointment. More will be added later. If a type is selected, then this list will be visible in the appropriate places for attaching the correct type of object. The type is not copied to a task when created. Tasks in this list do not have to be of the same type. You can only attach an object to a task, not a tasklist.
Used when attaching objects to tasks. These are the choices.
0
1
2
The date and time that this list was added. Used to sort the list by the order entered.
A tasknote is a note that may be added to a task. Many notes may be attached to a task. A user may only edit their own tasknotes within a task.
Primary key.
FK to task. The task this tasknote is attached to.
FK to user. The user who created this tasknote.
Date and time the note was created (editable).
Note. Text that the user wishes to show on the task.
A subscription of one user to either a tasklist or to a task.
Primary key.
FK to userod.UserNum
FK to tasklist.TaskListNum
When a task is created or a comment made, a series of these taskunread objects are created, one for each user who is subscribed to the tasklist. Duplicates are intelligently avoided. Rows are deleted once user reads the task.
Primary key.
FK to task.TaskNum.
FK to userod.UserNum.
Each row is one computer that currently acting as a terminal for new patient info input.
Primary key.
The name of the computer where the terminal is active.
Enum:TerminalStatusEnum No longer used. Instead, the PatNum field is used. Used to indicates at what point the patient was in the sequence. 0=standby, 1=PatientInfo, 2=Medical, 3=UpdateOnly. If status is 1, then nobody else on the network could open the patient edit window for that patient.
Indicates at what point the patient is in the sequence. 0=standby, 1=PatientInfo, 2=Medical, 3=UpdateOnly.
0
1
2
3. Only the patient info tab will be visible. This is just to let patient up date their address and phone number.
FK to patient.PatNum. The patient currently showing in the terminal. If 0, then terminal is in standby mode.
Used on employee timecards to make adjustments.
Primary key.
FK to employee.EmployeeNum
The date and time that this entry will show on timecard.
The number of regular hours to adjust timecard by. Can be + or -.
Overtime hours. Usually +. Automatically combined with a - adj to RegHours. Another option is clockevent.OTimeHours.
.
Set to true if this adjustment was automatically made by the system. When the calc weekly ot tool is run, these types of adjustments are fair game for deletion. Other adjustments are preserved.
A rule for automation of timecard overtime. Can apply to one employee or all.
FK to employee.EmployeeNum. If zero, then this rule applies to all employees.
Typical example is 8:00. In California, any work after the first 8 hours is overtime.
Typical example is 16:00 to indicate that all time worked after 4pm for specific employees is overtime.
Typical example is 6:00 to indicate that all time worked before 6am for specific employees is overtime.
Differential paid to employees working before or after the specified times.
Each row represents one toolbar button to be placed on a toolbar and linked to a program.
Primary key.
FK to program.ProgramNum.
Enum:ToolBarsAvail The toolbar to show the button on.
0
1
2
3
4
5
6
7 Shows in the toolbar at the top that is common to all modules.
The text to show on the toolbar button.
Holds one recorded cell value for a tooth grid, which is a special kind of sheet field type that shows a grid with 32 rows and configurable columns. The entire grid is a single large sheet field.
Primary key.
FK to sheet.SheetFieldNum. Required.
FK to toothgridcol.ToothGridColNum. This tells which column it belongs in. Can't use the column name here because multiple columns could have the same name.
Cannot be empty. For a tooth-level cell, the only allowed value is X. If the cell is unchecked, then it won't even have a row in this table. For a surface level column, only valid surfaces can be entered:MOIDBFLV Enforced. FreeText columns can have any text up to 255 char.
Corresponds exactly to procedurelog.ToothNum. May be blank, otherwise 1-32, 51-82, A-T, or AS-TS, 1 or 2 char. Gets internationalized as being displayed.
Defines the columns present in a single completed tooth grid, which is a special kind of sheet field that shows a grid with 32 rows and configurable columns. The entire grid is a single large sheet field. This table defines how the grid is layed out on an actual sheet, pulled initially from a ToothGridDef. The data itself is recorded in ToothGridCell.
Primary key.
FK to sheet.SheetFieldNum. Required.
Pulled from the ToothGridDef. This can be a NameInternal , or it can be a NameShowing if it's a user-defined column.
Enum:ToothGridCellType 0=HardCoded, 1=Tooth, 2=Surface, 3=FreeText.
0=HardCoded, 1=Tooth, 2=Surface, 3=FreeText.
0
1
2
3
Order of the column to display. Every entry must have a unique itemorder.
.
FK to procedurecode.CodeNum. This allows data entered to flow into main program as actual completed or tp procedures.
Enum:ProcStat If these flow into main program, then this is the status that the new procs will have.
Procedure Status.
1- Treatment Plan.
2- Complete.
3- Existing Current Provider.
4- Existing Other Provider.
5- Referred Out.
6- Deleted.
7- Condition.
Defines the columns present in a tooth grid, which is a special kind of sheet field def that shows a grid with 32 rows and configurable columns. Can be edited without damaging any completed sheets.
Primary key.
This is the internal name that OD uses to identify the column. Blank if this is a user-defined column. We will keep a hard-coded list of available NameInternals in the code to pick from.
The user may override the internal name for display purposes. If this is a user-defined column, this is the only name, since there is no NameInternal.
Enum:ToothGridCellType 0=HardCoded, 1=Tooth, 2=Surface, 3=FreeText.
0=HardCoded, 1=Tooth, 2=Surface, 3=FreeText.
0
1
2
3
Order of the column to display. Every entry must have a unique itemorder.
.
FK to procedurecode.CodeNum. This allows data entered to flow into main program as actual completed or tp procedures.
Enum:ProcStat If these flow into main program, then this is the status that the new procs will have.
Procedure Status.
1- Treatment Plan.
2- Complete.
3- Existing Current Provider.
4- Existing Other Provider.
5- Referred Out.
6- Deleted.
7- Condition.
FK to sheetfielddef.SheetFieldDefNum
Used to track missing teeth, primary teeth, movements, and drawings.
Primary key.
FK to patient.PatNum
1-32 or A-Z. Supernumeraries not supported here yet.
Enum:ToothInitialType
0
1 - Also hides the number. This is now also allowed for primary teeth.
2 - Only used with 1-32. "sets" this tooth as a primary tooth. The result is that the primary tooth shows in addition to the perm, and that the letter shows in addition to the number. It also does a Shift0 -12 and some other handy movements. Even if this is set to true, there can be a separate entry for a missing primary tooth; this would be almost equivalent to not even setting the tooth as primary, but would also allow user to select the letter.
3
4
5
6
7
8
9 One segment of a drawing.
Shift in mm, or rotation / tipping in degrees.
Point data for a drawing segment. The format would look similar to this: 45,68;48,70;49,72;0,0;55,88;etc. It's simply a sequence of points, separated by semicolons. Only positive numbers are used. 0,0 is the upper left of the tooth chart at original size. Stored in pixels as originally drawn. If we ever change the tooth chart, we will have to also keep an old version as an alternate to display old drawings.
.
Used in the accounting section of the program. Each row is one transaction in the ledger, and must always have at least two splits. All splits must always add up to zero.
Primary key.
Not user editable. Server time.
FK to user.UserNum.
FK to deposit.DepositNum. Will eventually be replaced by a source document table, and deposits will just be one of many types.
FK to payment.PayNum. Like DepositNum, it will eventually be replaced by a source document table, and payments will just be one of many types.
A treatment plan saved by a user. Does not include the default tp, which is just a list of procedurelog entries with a status of tp. A treatplan has many proctp's attached to it.
Primary key.
FK to patient.PatNum.
The date of the treatment plan
The heading that shows at the top of the treatment plan. Usually 'Proposed Treatment Plan'
A note specific to this treatment plan that shows at the bottom.
The encrypted and bound signature in base64 format. The signature is bound to the byte sequence of the original image.
True if the signature is in Topaz format rather than OD format.
FK to patient.PatNum. Can be 0. The patient responsible for approving the treatment. Public health field not visible to everyone else.
A group of users. Security permissions are determined by the usergroup of a user.
Primary key.
.
(User OD since "user" is a reserved word) Users are a completely separate entity from Providers and Employees even though they can be linked. A usernumber can never be changed, ensuring a permanent way to record database entries and leave an audit trail. A user can be a provider, employee, or neither.
Primary key.
.
The password hash, not the actual password. If no password has been entered, then this will be blank.
FK to usergroup.UserGroupNum. Every user belongs to exactly one user group. The usergroup determines the permissions.
FK to employee.EmployeeNum. Cannot be used if provnum is used. Used for timecards to block access by other users.
FK to clinic.ClinicNum. Has two purposes. Firstly, it causes new patients to default to this clinic when entered by this user. Also, if ClinicIsRestricted is set to be true, then it does not allow this user to have access to other clinics. If 0, then user had access to all clinics regardless of ClinicIsRestricted.
FK to provider.ProvNum. Cannot be used if EmployeeNum is used.
Set true to hide user from login list.
FK to tasklist.TaskListNum. 0 if no inbox setup yet. It is assumed that the TaskList is in the main trunk, but this is not strictly enforced. User can't delete an attached TaskList, but they could move it.
Defaults to 3 (regular user) unless specified. Helps populates the Anesthetist, Surgeon, Assistant and Circulator dropdowns properly on FormAnestheticRecord///
If set to true, the hide popups button will start out pressed for this user.
Gets set to true if strong passwords are turned on, and this user changes their password to a strong password. We don't store actual passwords, so this flag is the only way to tell.
Only used when userod.ClinicNum is set to not be zero. Prevents user from having access to other clinics.
A list of query favorites that users can run.
Primary key.
Description.
The name of the file to export to.
The text of the query.
A vaccine definition. Should not be altered once linked to VaccinePat.
Primary key.
RXA-5-1.
Name of vaccine. RXA-5-2.
FK to drugmanufacturer.DrugManufacturerNum.
A vaccine given to a patient on a date.
Primary key.
FK to vaccinedef.VaccineDefNum.
The datetime that the vaccine was administered.
Typically set to the same as DateTimeStart. User can change.
Size of the dose of the vaccine. 0 indicates unknown and gets converted to 999 on HL7 output.
FK to drugunit.DrugUnitNum. Unit of measurement of the AdministeredAmt. 0 represents null.
Optional
FK to patient.PatNum.
Set to true if no vaccine given. Documentation required in the Note.
Documentation sometimes required.
For EHR module, one dated vital sign entry.
Primary key.
FK to patient.PatNum.
Height of patient in inches. Fractions might be needed some day. Allowed to be 0.
Lbs. Allowed to be 0.
Allowed to be 0.
Allowed to be 0.
The date that the vitalsigns were taken.
For an abnormal BMI measurement this must be true in order to meet quality measurement.
If a BMI was not recored, this must be true in order to meet quality measurement. For children, this is used as an IsPregnant flag, the only valid reason for not taking BMI on children.
For HasFollowupPlan or IsIneligible, this documents the specifics.
.
.
Keeps track of column widths in Wiki Lists.
Primary key.
Name of the list that this header belongs to. Tablename without the prefix.
Name of the column that this header belongs to.
Width in pixels of column.
Rows never edited, just added. Contains all only newest versions of each page.
Primary key.
FK to userod.UserNum.
Must be unique. Any character is allowed except: \r, \n, and ". Needs to be tested, especially with apostrophes.
Automatically filled from the [[Keywords:]] tab in the PageContent field as page is being saved.
Content of page stored in "wiki markup language". This should never be updated. Medtext (16M)
The DateTime that the page was saved to the DB. User can't edit.
Rows never edited, just added. Contains all historical versions of each page as well.
Primary key.
FK to userod.UserNum.
Will not be unique because there are multiple revisions per page.
The entire contents of the revision are stored in "wiki markup language". This should never be updated. Medtext (16M)
The DateTime from the original WikiPage object.
This flag will only be set for the revision where the user marked it deleted, not the ones prior.
Zipcodes are also known as postal codes. Zipcodes are always copied to patient records rather than linked. So items in this list can be freely altered or deleted without harming patient data.
Primary key.
The actual zipcode.
.
.
If true, then it will show in the dropdown list in the patient edit window.