|
Programming Resources
Microsoft Visual C#
C# .NET is available from the MS website at no charge. The source code for Open Dental 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.
Database Documentation
OpenDentalDocumentation44.xml (version
4.4)
OpenDentalDocumentation51.xml (version 5.1)
OpenDentalDocumentation55.xml (version 5.5)
OpenDentalDocumentation56.xml (version 5.6)
OpenDentalDocumentation64.xml (version 6.4)
Navicat
MySQL doesn't include a way to view and edit the data in your database.
They have a few tools on their downloads page, but they are inadequate.
We recommend Navicat from www.navicat.com. It's an outstanding piece of software for only $95. It has a variety of useful tools for working with your raw database. Of course, it's not recommended to ever use it to change the data in your database.
Adding Functionality to Open Dental
Developer Involvement
See the Developers page for information
about how to get involved in actually making changes to the source
code. These changes would become part of the general release that
everyone uses.
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 Open Dental 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 cannot 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 Open Dental 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
Sometimes, a developer wants to make changes that are just for their own use. Maybe
the changes have been discussed on the developer's forum and found to be unpopular. Or
maybe the developer is in a hurry and does not want to take the time to get
officially involved. An example would be an additional table in the database
to keep track of certain exam fields. The important thing to keep in
mind in this situation is that the user will need to upgrade periodically to
gain the most benefit from the software. So it might almost make sense
to keep such functionality separate from the main program. 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 Open Dental software. If your customizations cause data corruption, we will try to help, but the responsibility is ultimately yours.
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.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 (yet). You can
run Open Dental 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 and dll's. The Open Dental exe is simple 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 Open Dental, you can either purchase the distribution
from us and then distribute that, or else you can create your own Setup.exe.
Different Versions
There are a few slightly different versions of Open Dental. It can be compiled
with the TRIALONLY conditional compilation constant (symbol) to limit the
number of patients that can be loaded. Be sure not to use the DEBUG
version in a production environment, since many of the printing features
won't work.
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)
With recent versions, there are many more dll's that get installed. Install the trial version to see them.
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 Open Dental, 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.
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. Also you should run UPDATE patient SET
BillingType=40 which will set that column value for every patient in the
database. Finally, run the Database Maint tool.
|