Back to Manual Table of Contents
Microsoft Visual C#
You can order C# .NET Standard Edition for only $91 on Amazon.com. Go to www.amazon.com and search software for C#. You will need C# .Net Standard 2003. We have only tested the source code on Visual Studio, but it should work exactly the same on the Standard Edition. We have been told that it also works if you use C# from Borland which has a personal edition available for free.
The source code for DentOffice is available on the downloads page. You can look at the code in a text editor, or you can load the whole solution (OpenDental.sln) into Visual Studio or C# Standard Edition. If you can't get it to compile please see the References section.
Navicat
MySQL doesn't include a way to view and edit the data in your database. They claim to have a few tools on their downloads page, but don't even bother; they are total junk. Save yourself a lot of hassle and buy Navicat from www.navicat.com. It is an outstanding piece of software for only $95. It has a huge variety of very useful tools for working with your raw database. Of course, it is not recommended to ever use it to change the data in your database.
Adding Functionality to DentOffice
Proprietary Modules
A proprietary addition is allowed in the form of a separate program which can
be accessed with a simple link. You should extract any necessary patient information
directly from the database to make your module function properly. The link should
be in the form of a button so that it does not take up valuable screen space
on any of the main DentOffice modules. See the Program Links section for information on how to set up your link and toolbar button. If your module does make changes to the database, you should
definitely contact us before releasing it so that we can help you avoid data
corruption. There are many data interactions which you may not be aware of or
might be poorly documented. Making changes to the database is currently discouraged
for that reason, but we will assist you if you really need to make changes.
The MySQL License
It can be difficult to interpret the GPL and to determine whether a proprietary
module is allowed. We have absolutely no problem with proprietary modules, and
our interpretation of the GPL is that it's allowed because it's a simple link.
We think it's a very good idea and will even help promote your add on. However,
be careful, because MySQL states on its website that if you distribute the MySQL
program, and you distribute a program that is proprietary, then that program
can not depend on the MySQL database to function. This creates a little bit
of a problem, but not an insurmountable one. Any company that creates a proprietary
addon to DentOffice would be safe as long as they did not also distribute MySQL.
Also, even if you do need to distribute MySQL, you can use the dual license
of MySQL. Your customers will be covered if they pay an extra $500 to MySQL.
Customized Versions
Since DentOffice is open source, anyone is free to create a customized version.
But... we would like to recommend a certain way of doing it that will provide
the most benefit to the dental offices involved. The dental offices will need
to upgrade periodically to gain the most benefit from this software. There will
be many extra features that will be added over the years, so you should make
sure that any customizations will not prevent them from upgrading. Changing
the look of the user interface should not cause problems as long as the functionality
remains the same. There should be no changes made to the way the data is organized
and stored. If you wish to make those types of changes, you should coordinate
with us for the most effective results. Extra database tables should not interfere
with upgrades, but please be sure to name the extra tables starting with "ut"
for user table or with some other very distinctive prefix. For instance utpharmacy or utmedhist or joedevelopermedhist. If named according to
that convention, your tables will not be damaged by any of the upgrade scripts
or any program function.
Remember that any customized versions are still covered by the GPL and must have source code available. You must also leave the copyright and license attached. Most importantly, unless you rename the program, it must clearly inform the user upon startup that they are using a customized version and not the original DentOffice software. If your customizations cause data corruption, we will try to help, but the responsibility is ultimately yours.
If you wish to make a profit from your work, we would recommend a strategic combination of submitting code snippets to us to enhance the core functionality, providing outstanding support with value-added features, providing services, and perhaps developing proprietary add-ons. We will help promote on our website any proprietary modules that we are aware of, although the extent of promotion is not guaranteed.
Programming Assistance and Partnerships
We are absolutely NOT interested in paying anyone for programming assistance
in any form. We have our own programmers and have no interest in outsourcing
or paying for programmers. If you want to contribute code we would be glad to
include it in the next release after review, but don't expect to get paid for
it. The only code we might be interested in paying for is tools that help us
convert user's data from other dental programs.
Using The Source Code
Installation Program
There is no included installation program with the source code. You can run
DentOffice on your development computer without an installation program. Play
with the installer that comes with the trial version, and you will quickly see
what elements you need to make it function properly. In fact you can use the
trial version installer, and then just substitute your compiled version for
the trial exe. The DentOffice exe is extremely simply to distribute. Just copy
it to another computer and put the required dlls in the same folder. Then
click on it and it will run.
Distributing
If you plan to distribute DentOffice, you can either purchase the distribution
from us and then distribute that, or else you can create your own Setup.exe.
One simple option is to add a project to the current solution. The type of project
would be a Setup project. If you have not tried to create a setup project in
.NET before, it is not exactly intuitive. You will want your Release configuration
to include the setup project, but your Debug configuration would only compile
the main project. To set the location of your setup files, right click on the
project in the solution explorer, and select properties. Also, review the settings
in the project's properties pane. One more place you need to look is when you
single click on the project in the solution explorer, there will be 6 buttons
available at the top of the solution explorer. They will open screens that show
more settings.
It might be nice to add a registry entry in HKEY_LOCAL_MACHINE\SOFTWARE\OpenDental. A string value called InstallDir should be added with a value of the installation directory, for instance "C:\Program Files\DentOffice". To view or edit the registry (carefully), select Start | Run, and enter regedit, OK. This key is not actually used by anyone that we are aware of, so it is optional.
Different Versions
There are a few slightly different versions of DentOffice. It can be compiled
with the TRIALONLY conditional compilation constant (symbol) to limit the number
of patients that can be loaded. There used to be two separate versions, one for Windows XP and one for Windows 98 or 2000. That distinction was eliminated with version 3.1.
DLL's
Before version 1.0.1.10, FreeDental.exe depended on these
three dll's:
MySQLDriverCS.dll
libmySQL.dll
Interop.WIALib.dll
For versions 1.0.1.10 through 2.8 the required dll's were:
Interop.WIALib.dll (for scanning)
ByteFX.Data.dll (the new data driver)
SharpZipLib.dll (used by Byte FX for compressing network traffic)
For versions 2.9, the required dll's were:
Interop.WIALib.dll (for scanning)
ByteFX.MySqlClient.dll (version 0.7.6)
For version 3.0, the required dll's were:
Interop.WIALib.dll (for scanning)
ByteFX.MySqlClient.dll (version 0.76)
Indy.Sockets.dll (for email)
eztw32.dll (for twain imaging)
For version 3.1, the required dll's were:
MySql.Data.dll (version 1.0.2)
Indy.Sockets.dll (for email)
eztw32.dll (for twain imaging)
RS232.dll (for eclaims via modem)
See the References section for more detailed information on how to use dll's.
Conversion Files
With major version changes, there will generally be a text file include with
the distribution that contains hundreds or even thousands of mySQL commands.
The program loads some database commands from the text file instead of including
the commands in the code. All the conversion files for the various versions
are always installed in the application directory in a folder called ConversionFiles.
With version 2.1, there are 3 files including the jpeg for the DentiCal claim
form. The ConversionFiles folder can be found in the source code in the bin\debug\
folder. If you are creating an installation program to distribute DentOffice,
you should always make sure the entire ConversionFiles folder gets copied to
the application directory with each installation. You might have to overwrite
an existing ConversionFiles folder, but that's OK, because it is only used once
during the conversion process. If a user is converting from version 1 to version
4, for instance, they may need to utilize 4 different conversion files in sequence
in addition to having access to various resource files like images and sounds,
which generally get copied to the OpenDentalData folder.
Renaming Free Dental to DentOffice
Starting with version 2.0, the new name, DentOffice, almost completely replaced
Free Dental. The only place where this was not the case was in the registry entries
as described above. Also, the file called FreeDentalConfig.xml remains unchanged
for simplicity. The default database name is now opendental, and the A-Z document
folder is called OpenDentalData. Both names can, of course be changed by the
user, and if they are already using a different name, they can continue to do
so.
SDK
There is a help file that can be downloaded from the Downloads page which covers almost every funtion in the program. It includes descriptions
of each table and field in the database and their interactions. It is based
on the XML documentation in the code.
Bugs and Version Changes
The previous versions page shows all minor releases
and the changes that were made with each. If you have a bug, it may have already
been fixed. If you think you found one that's not on the list, then let us know.
Conversions
If you are converting from another program, there are certain things you need
to do. To group family members, simply give them the same patient.Guarantor
number. To do this, you must have a way to uniquely identify each patient and
guarantor from the old system. If the export features of the old program are
inadequate, you might have to just use patient names. Each patient name will
have to be unique if you are using them to group families (you can add periods
to duplicate names to make them unique). To establish balances, add an adjustment
to each patient. Setting any of the fields in the patient table will not work
because those fields are recomputed every time the patient's account is opened. One last thing you should do is run UPDATE patient SET BillingType=40, PriProv=1; which will set those column value for every patient in the database.