Potential bug in XVweb integration
Potential bug in XVweb integration
Hello world,
We recently started using Apteryx and to make workflows easier (no more exporting/importing between systems) we opted to implement the OpenDental / XVweb integration. After working with Apteryx and OpenDental support (thank you all) we were able to get the bridge up, however the doctors are complaining about the quality of the images retrieved by the bridge. Here is a screenshot of the discrepancy in quality:
And below is what Apteryx support had to say about it:
In order for us to best understand what issues may arise from pulling images from XVWeb to OpenDental, we would need to know which specific API OpenDental is using. Without that information, our developers best guess was:
“Whenever they make a request for a bitmap, they need to specify the Accept header. Currently they are most likely giving us application/json, text/plain, and */*. This makes our server give it a completely raw, unprocessed PNG.
They would need to specify image/jpeg or image/png, which will apply the proper image processing pipeline to the image.”
That may in fact fix the issue outright, but if not, then we would need to have OpenDental let you/us know which calls are being used.
So I ask the users of the forum: if you are using XVweb/OpenDental integration do your images look fine or like mine?
And I ask the OD team: What headers are being used? We have tried OD versions up to 18.3 with the same results.
We recently started using Apteryx and to make workflows easier (no more exporting/importing between systems) we opted to implement the OpenDental / XVweb integration. After working with Apteryx and OpenDental support (thank you all) we were able to get the bridge up, however the doctors are complaining about the quality of the images retrieved by the bridge. Here is a screenshot of the discrepancy in quality:
And below is what Apteryx support had to say about it:
In order for us to best understand what issues may arise from pulling images from XVWeb to OpenDental, we would need to know which specific API OpenDental is using. Without that information, our developers best guess was:
“Whenever they make a request for a bitmap, they need to specify the Accept header. Currently they are most likely giving us application/json, text/plain, and */*. This makes our server give it a completely raw, unprocessed PNG.
They would need to specify image/jpeg or image/png, which will apply the proper image processing pipeline to the image.”
That may in fact fix the issue outright, but if not, then we would need to have OpenDental let you/us know which calls are being used.
So I ask the users of the forum: if you are using XVweb/OpenDental integration do your images look fine or like mine?
And I ask the OD team: What headers are being used? We have tried OD versions up to 18.3 with the same results.
There are 10 types of people in this world, those who will laugh at this joke, and those who won't. ~Annonymous Bug Writer
Re: Potential bug in XVweb integration
It looks like we may be using application/json. I've forwarded this to the developer who coded the integration for her input and awareness.
"To understand what recursion is, you must first understand recursion."
David Graffeo
Open Dental Software
http://www.opendental.com
David Graffeo
Open Dental Software
http://www.opendental.com
Re: Potential bug in XVweb integration
The accept header will now use image/jpeg as of 19.1.35.0
Re: Potential bug in XVweb integration
Thank you! is it possible to backport this to 18.2 or at the very least the latest stable version?
Thanks again, you guys rock!
Thanks again, you guys rock!
There are 10 types of people in this world, those who will laugh at this joke, and those who won't. ~Annonymous Bug Writer
Re: Potential bug in XVweb integration
19.1 will be stable in the nearish future.
Re: Potential bug in XVweb integration
so does this work with server based version of apteryx?
Re: Potential bug in XVweb integration
Short answer is probably no, this is specifically for Apteryx's XVweb product. XVweb isn't cheap so you'd likely know if you have it. XVweb uses the familiar Apteryx application for capturing images however it also uses their cloud infrastructure to store images and has a nice web interface for viewing as well as an API for integration.
There are 10 types of people in this world, those who will laugh at this joke, and those who won't. ~Annonymous Bug Writer
Re: Potential bug in XVweb integration
Its strange to call an error progress, but I'd rather a verbose error than a silent fail. After updating to the latest stable version clicking on an xvweb integrated images in the images module prompts the following error, after which the OD application closes:
Error Encountered - 08/08/2019 5:06:30 PM
Unhandled exception: A generic error occurred in GDI+.
System.Runtime.InteropServices.ExternalException
at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
at OpenDentBusiness.ImageStore.SaveDocument(Document doc, Bitmap image, ImageCodecInfo codec, EncoderParameters encoderParameters, String patFolder) in C:\Development\OPEN DENTAL SUBVERSION\opendental19.1\OpenDentBusiness\Imaging\ImageStore.cs:line 854
at OpenDentBusiness.ImageStore.Import(Bitmap image, Int64 docCategory, ImageType imageType, Patient pat, String fileName) in C:\Development\OPEN DENTAL SUBVERSION\opendental19.1\OpenDentBusiness\Imaging\ImageStore.cs:line 577
at OpenDental.Bridges.XVWeb.SaveApteryxImageToDoc(ApteryxImage img, Bitmap saveImage, Patient patCur) in C:\Development\OPEN DENTAL SUBVERSION\opendental19.1\OpenDental\Bridges\XVWeb.cs:line 259
at OpenDental.ContrImages.ShowApteryxImage(TreeNode nodeOver) in C:\Development\OPEN DENTAL SUBVERSION\opendental19.1\OpenDental\Main Modules\ContrImages.cs:line 1198
at OpenDental.ContrImages.SelectTreeNode(TreeNode node, String localPath) in C:\Development\OPEN DENTAL SUBVERSION\opendental19.1\OpenDental\Main Modules\ContrImages.cs:line 968
at OpenDental.ContrImages.TreeDocuments_MouseDown(Object sender, MouseEventArgs e) in C:\Development\OPEN DENTAL SUBVERSION\opendental19.1\OpenDental\Main Modules\ContrImages.cs:line 2764
at System.Windows.Forms.Control.OnMouseDown(MouseEventArgs e)
at System.Windows.Forms.TreeView.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.TreeView.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Error Encountered - 08/08/2019 5:06:30 PM
Unhandled exception: A generic error occurred in GDI+.
System.Runtime.InteropServices.ExternalException
at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
at OpenDentBusiness.ImageStore.SaveDocument(Document doc, Bitmap image, ImageCodecInfo codec, EncoderParameters encoderParameters, String patFolder) in C:\Development\OPEN DENTAL SUBVERSION\opendental19.1\OpenDentBusiness\Imaging\ImageStore.cs:line 854
at OpenDentBusiness.ImageStore.Import(Bitmap image, Int64 docCategory, ImageType imageType, Patient pat, String fileName) in C:\Development\OPEN DENTAL SUBVERSION\opendental19.1\OpenDentBusiness\Imaging\ImageStore.cs:line 577
at OpenDental.Bridges.XVWeb.SaveApteryxImageToDoc(ApteryxImage img, Bitmap saveImage, Patient patCur) in C:\Development\OPEN DENTAL SUBVERSION\opendental19.1\OpenDental\Bridges\XVWeb.cs:line 259
at OpenDental.ContrImages.ShowApteryxImage(TreeNode nodeOver) in C:\Development\OPEN DENTAL SUBVERSION\opendental19.1\OpenDental\Main Modules\ContrImages.cs:line 1198
at OpenDental.ContrImages.SelectTreeNode(TreeNode node, String localPath) in C:\Development\OPEN DENTAL SUBVERSION\opendental19.1\OpenDental\Main Modules\ContrImages.cs:line 968
at OpenDental.ContrImages.TreeDocuments_MouseDown(Object sender, MouseEventArgs e) in C:\Development\OPEN DENTAL SUBVERSION\opendental19.1\OpenDental\Main Modules\ContrImages.cs:line 2764
at System.Windows.Forms.Control.OnMouseDown(MouseEventArgs e)
at System.Windows.Forms.TreeView.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.TreeView.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
There are 10 types of people in this world, those who will laugh at this joke, and those who won't. ~Annonymous Bug Writer
Re: Potential bug in XVweb integration
Ardavan,
We were able to fix this bug in 19.1.46 and 19.2.15: "Images Module, downloading Apteryx XVWeb images caused an error sometimes."
Let us know if you have any more problems once you update.
We were able to fix this bug in 19.1.46 and 19.2.15: "Images Module, downloading Apteryx XVWeb images caused an error sometimes."
Let us know if you have any more problems once you update.
Re: Potential bug in XVweb integration
Thanks, tested and its working!
There are 10 types of people in this world, those who will laugh at this joke, and those who won't. ~Annonymous Bug Writer