Oct 28

Being well informed is the cornerstone of being able to make a good decision. Before you travel abroad to visit a dentist, doctor or cosmetic surgeon you should satisfy yourself that you are 100% happy to be treated by this person at their facility. Here are ten questions that will help you become an informed patient.

  1. What are your qualifications and specialisations?
    You should take the time to check that your dentist, doctor or surgeon is fully qualified and currently registered to practice in their local country. To do this, contact the local medical or dental council. If you are receiving specialist treatments, look for a further qualification in that area of specialisation. For further peace of mind, check if the person in question has been licensed to practice in your own local country.
  2. With my medical history, am I suitable for this procedure?
    To minimise the risk of unnecessary complications, you should disclose any possible medical reasons that might make you unsuitable for treatment. That could be something as simple as being a smoker, which might disqualify you from receiving dental implants. Your prospective practitioner should be asking these questions anyway, but if they don’t you should volunteer the information and ask about the implications.
  3. What are the normal treatment and recovery times recommended?
    One commonly voiced concern amongst local dentists and doctors when talking about patients seeking treatment abroad is that they compress too much treatment into too short a space of time. If you are getting complicated treatment done abroad, ask your overseas clinic what their recommended time between treatments is, what their recommended recovery times are, and if they differ significantly from what is suggested at home, ask them why that is.
  4. What happens if something goes wrong?
    The biggest fear that people have when looking for treatment abroad is that something will go wrong, either while they are still abroad or, worse still, once they return home. You need to know before you travel what procedures the clinic has in place for dealing with everything from pulled stitches to post operative infections. In the worst case scenario, what will they do if the procedure fails completely? Do they offer guarantees, refunds, or free remedial treatment? If you have returned home before the problem arises, will they pay for you to return? Be satisfied that you can live with the answers they give.
  5. What other options do I have?
    Often times you will have heard of a procedure from a magazine or a television programme that seems like it might be something you’d be interested in having done. Even if you are suitable for the procedure, ask about alternatives. There may be a newer procedure, or a less risky procedure or a cheaper procedure that you would be even more interested in, but if you don’t ask you may never be offered them.
  6. How much is it going to cost?
    If you are travelling abroad without having received a pre-consultation at home, any prices you have been quoted are likely list prices for a given procedure. You need to ask if there are any extra costs that are likely to arise: x-rays, anaesthetic, prescriptions, etc. The last thing you want to have happen is to get to your clinic and find out that the treatment you thought was going to cost €3,000 is actually going to cost €5,000 when everything is included. It is not unreasonable if you do have a local pre-consultation to ask for a fixed price guarantee. You might also want to enquire about possible payment methods.
  7. Where is the treatment going to take place?
    You will want to know in advance what type of facility you are going to be treated in. Is it a small clinic located in an office building, is it a larger purpose built clinic, or is it a hospital? There are implications involved in each case, but you will need to be satisfied that you are happy to be treated in whichever facility your prospective doctor, dentist or surgeon is located in.
  8. What is your success rate?
    Some procedures, such as dental implants, have a failure rate that is measurable. You should ask how many times your practitioner has performed the specific treatment you are interested in, and what the long term success rate of his or her use of this treatment is.
  9. Can I speak to some previous patients?
    One of the best ways you can get honest answers about treatment in a specific clinic is to talk to someone who has done it already. Ask the clinic to put you in touch with someone in your country who has had the same procedure performed. If they can’t or won’t, try and find someone yourself by searching online. People who are very happy or very unhappy often blog about the treatment they received.
  10. What brand of implant do you use?
    In order to accurately compare the price at home to the price abroad you really need to compare like with like, and that means asking what brand name of implant, crown, or veneer that the dentist is going to use is. The same applies for any cosmetic implants or fillers, and similarly there are a wide range of laser eye treatments available under the umbrella terms LASEK or LASIK. Know exactly what it is that you are buying or you might end up unhappy with the results.
Oct 15

Both the Times and the BBC picked up on a story yesterday which suggests that since the new deal between the UK government and NHS dentists was agreed in 2006 that their average pay has increased from £87,000 to £96,000, or just over 10%. Dentists who own their own practice saw a jump of 35%, with their pay reaching £172,000.

They also report that the government's chief dental officer thinks that NHS dentists are bringing patients back in for routine appointments sooner than is necessary in order to maximise their profits. The British Dental Association on the other hand, the body that represents dentists in the UK, says that it has seen no evidence that dentists are seeing patients too often.

Wherever the truth lies, if there is actually a problem here it is that patients don't know how often they should be going for a check up, and some dentists are taking advantage of that. According to a Department of Health source some patients are being seen every six months when there is no need to do so. Others are being given treatment over multiple visits that could be completed in one sitting.

How often do you see your dentist for regular check ups, and do you think it is too often?

Sources:
BBC News – Dentists 'playing the system'
The Times – NHS dentists accused of unnecessary check-ups

Oct 14

We have been working overtime to improve our health clinic search engine and in the latest build we have significantly improved the speed and usability of the product. Hopefully you should now notice that individual clinics load in almost instantly.

Previously every time we loaded a clinic information into the browser it would take a minimum of 1.5 seconds and as much as 5 seconds. No doubt our technical folks would love to tell you the cause of the discrepancy but suffice to say that we have now managed to engineer it so that there is no delay.

How did we do this? Well we cheated. We now load the all fo the  clinic information when the search page is loaded. Now this extra data doesn't cause the search page to display any slower, it just means that the search page continues to load for an extra second or two after it displays. 

The payoff is that when you click on a brochure it appears instantly. 

Hope you like. Expect some minor UI change to come soon.
Oct 10

Following on from his post last week, Tim is back to with a little bit more explanation and some code to show you how to implement his method of making Google static maps interactive.

Add Marker divs to your static maps (Part 2)

Lets start by handling a set of points. We can easily loop over them to find the max and min latitudes and longitudes of the set.

Getting the centre
To find the longitude centre is easy: sum the max and min longitudes and divide by 2. The centre latitude is harder – put the max and min latitudes through our Mercator equation for latitude that we used last time:

y = ln( (1+sinO)/(1-sinO)) / 2

Add the results together and divide by 2 – then invert the function, which is Math.Atan(Math.Sinh( RESULT )) – where RESULT is (ln((1+sin(radians(maxLatitude))/(1-radians(maxLatitude))) / 2 + ln((1+sin(radians(minLatitude))/(1- adians(minLatitude)))) /2

We’ll have been working in radians so multiply this result by 180.00 / Math.PI to get the centre Latitude in degrees.

Calculate the zoom level
To find the zoom level necessary to contain our set of points we first calculate the span of degrees of the latitudes and longitudes. Subtract the minimums from the maximums to give us the largest spans by degrees for our latitude and longitude. If we zoom to a set level on a Google map: at any given zoom level anywhere on the earth the difference
between the maximum longitude and the minimum longitude remains the same. – If we return to our discussion of zoom levels from last week and work backwards… we can see that once we know a longitude span we can use it to find an appropriate zoom level. The equation ends up being:

log base2 of (180o / longitudeSpano)

That all required that the longitude was the span we were interested in… Now – if we look at a square map on a page, the central x-axis span does not equal the y-axis span (except at the equator) – Longitude is greater. This means that even if the longitude span is greater than the latitude span, if we set our zoom by longitude all our points’ latitude
values do not necessarily fit inside our returned map. Luckily, there is a consistent relationship between these spans that depends on latitude – as we get nearer to the equator our latitude spans get closer and closer to our longitude spans (on our handy square map), and by dividing our latitude span by the cos of the centre latitude we’ll get the value of our longitude span. This means we can use the zoom level calculation above – using max( longitude span , adjusted latitude span ) as our value.

As if that all wasn’t enough, the old problem crops up: that the map only fits the world perfectly at zoom level 0 if it is 256 pixels wide. To account for this before we take our log, divide by 256 and multiply by the width of the map in pixels (at 256pixels wide we get back to where we started).

Well that about wraps it up! As promised, it is possible, maybe even advisable to ignore my convoluted explanation and just use some preprepared code snippets instead!

MAP_SIZE = 256;

private double atanh(double rad)

{
return Math.Log(((1 + rad) / (1 – rad)), Math.E) / 2;
}
private double getZoom(double span)
{
double zoom = (180.00/span) * (MAP_SIZE/256.00);
zoom = Math.Log(zoom, 2);
return Math.Floor(zoom);
}
yourReturnType createDivs(double m_maxLatitude, double m_minLatitude, double m_maxLongitude , double m_minLongitude, List m_markerIList){
/**
* find our centre – we can reuse some of these variable later
*/
double atanhsinO = atanh(Math.Sin(m_maxLatitude * Math.PI / 180.00));
double atanhsinD = atanh(Math.Sin(m_minLatitude * Math.PI / 180.00));
double atanhCentre = (atanhsinD + atanhsinO) / 2;
double radianOfCentreLatitude = Math.Atan(Math.Sinh(atanhCentre));
double centreLatitude = radianOfCentreLatitude * 180.00 / Math.PI; //turn it to degrees
double centreLongitude = (m_maxLongitude + m_minLongitude) / 2;
// zoom is decided by the max span of longitude and an adjusted latitude span
// the relationship between the latitude span and the longitude span is /cos
double latitudeSpan = m_maxLatitude – m_minLatitude;
latitudeSpan = latitudeSpan / Math.Cos(radianOfCentreLatitude);
double longitudeSpan = m_maxLongitude – m_minLongitude;
double zoom = getZoom(Math.Max(longitudeSpan, latitudeSpan)) + 1;
/**
* create the x,y co-ordinates for the centre as they would appear on a map of the earth
*/
double power = Math.Pow(2.00, zoom);
double realWidth = 256.00 * power;
// ** result 1 – pixel size of a degree **
double oneDegree = realWidth / 360.00;
double radianLength = realWidth / (2.00 * Math.PI);
// ** result 2 ** the centre on our virtual map
double centreY = radianLength * atanhCentre;
/**
* now we go though the providers creating the x,y’s and adjusting them to the virtual frame of our
* map using our centreX,Y values
*/
for (IEnumerator enumerator = m_markerIList.GetEnumerator();
enumerator.MoveNext(); ) // for(Iterator<LaitutudeLongitude>
latitudeLongitudeIterator = etc.. for java heads
{
DataRow markerDetails= (DataRow)(enumerator.Current);
// LaitutudeLongitude markerDetails
= latitudeLongitudeIterator.next(); for java heads, you get the idea
double currentLatitude = double.Parse(markerDetails["Lat"].ToString());
double currentLongitude = double.Parse(markerDetails["Lng"].ToString());
double pixelLongitude = (currentLongitude – centreLongitude) * oneDegree;
double pixelLatitudeRadians = currentLatitude * Math.PI / 180.00;
double localAtanh = atanh(Math.Sin(pixelLatitudeRadians));
double realPixelLatitude = radianLength * localAtanh;
double pixelLatitude = centreY – realPixelLatitude; // convert from our virtual map to the displayed portion
pixelLongitude = pixelLongitude + (MAP_SIZE/2);
pixelLatitude = pixelLatitude + (MAP_SIZE/2);
int roleOverX = (int)(Math.Floor(pixelLongitude)) ;
int roleOverY = (int)(Math.Floor(pixelLatitude));
// now create whatever div you want with the given roleOverX and roleOverY so they overlay the map
// add them to a List or just concatenate a string in this loop and then return .
e.g -
String roleOverDiv = “<div name=’” + markerName + “‘
id=’id” + id + “‘ ” + ROLLOVER_STYLE_STRING + ” left:” + roleOverX +
“px; top:” + roleOverY + “px; ‘></div>”;
returnString += roleOverDiv
}
return returnString; //if using the example above
}
Enjoy.
Oct 06

The only downside to the growing number of visitors to RevaHealth.com is keeping up with the increasing demands on our server infrastructure. We got to the point recently where we realised that the current setup wouldn't be fast enough in a few months time, so along with all the work we've been putting into the code to increase the speed we have also just rearchitected our server infrastructure, making it easier to scale up to meet demand as the need arises.

These changes should also make your overall experience on RevaHealth.com faster and smoother, but we aren't just going to stop there. We will continue to add features and content that will drive more traffic to the site, and we intend to stay at least one step ahead (if not two!) of this ever increasing demand so that you always get the best experience on RevaHealth.com that we can deliver.

Oct 03

Today I’m happy to bring you part one of a post by Tim, one of our researchers. In it he discusses a smart way to add some interactivity to a static Google map. In the second part coming next week he is going to post some code you can use to see his idea in action.

Adding marker divs to your static maps

The Google Maps API is great, but for some things it’s overkill. Enter Google’s static maps, which are also great, but for some applications they might not be enough.

One solution is to use the static maps and then add a bit of panache. Let’s take a typical example where we take a location and in our data find 10 places close to that location. Using static maps we create an URL that has markers for our points and we might set the zoom level using the handy Span attribute.

Unfortunately we cannot interact with the map: if markers overlay each other we cannot tell which is where, we need to provide a key for the markers as they have no tool-tips or events.

By placing divs at the points our markers are displayed we can recover a good deal of our lost ground without needing to use a full map with all its associated overheads, load times and initialization especially. However, to do this we need to know a bit about map projections and a bit about the way Google makes its static maps.

The static maps use a Mercator projection, you can read about the maths here which is probably more than most people want to know. Lets look at the useful bits for us:

Getting the x-position

Longitude has a nice simple equation

x = y – yo

What does this mean for us? Well if we have a map 200 pixels wide and we know the map’s centre point and the length in pixels of a degree is 2.84 pixels then –  say a point 3o to the west (left) is 8.533 pixels left of our centre.

How do we know the width of a degree? Well, the map we have is a small window onto a projection of the whole world. At a Google zoom level of 0 we can see the whole world (or a little more depending on the width of our map, at a width of 256 pixels it fits the world exactly). As we zoom in our window shows us a smaller and smaller part of the whole world, 2zoom to be exact. The pixel width of our whole world grows accordingly so though we see a 256px window at zoom 1 the world is 512px wide, at zoom 2, 1024 pixels and so on.

The world being 360o in the round, at zoom level 3 a degree would be 1024/360 = 2.84 ( or 1024/2pi if we want to work in radians).

Phew! Feel like we’re getting somewhere? Now we can correctly position a div from the edge of our static image.

Getting the y-position

Latitude is a little harder to calculate. From our page of maths we’ll take

y = ln( (1+sinO)/(1-sinO)) / 2   (I use this one as it uses basic calculator functions)

If we take our centre then plug its latitude (in radians) into our equation (replace that O after each sin) and multiply by the size of a radian calculation we did for Longitude, then we get where on our virtual map of the world the centre is. Since it is the centre we know it’s at 128px on a map thats 256px wide.

Now when we plug in the latitudes of our markers we get their y co-ordinates on our virtual map and we can place them on the window onto that world because we know its centre on both the virtual map and our window: Subtract our centre’s virtual y pixel value from our markers virtual y pixel – As if by magic it will give you the value to offset from our images centre.

Somethings missing here…

Now the observant among us will have noticed a bit of skating around some problems. We’ve been using the zoom value but we were hoping to use that nice Span attribute to give us our static map… Also, if instead of having a centre point we want the map to centre on the middle of a set of markerpoints then though the longitude of the centre will just be (maxLongitude+minLongitude)/2. The centre latitude, however, needs us to do some inverting on our y-position function.

Next week we’ll wrap up these problems and provide some code so you can happily ignore everything I’ve been talking about and actually see it in action.

Tim
Senior Researcher
RevaHealth.com

preload preload preload