Click to here to enter the Demographic Data Server
The demographic Data Server is a tool that generates random demographic informations, and make them available for tools to use for testing purpose.
The Demographic Data Server tries to respond to the following use cases :
When running a test we often need to inject demographic data. The aim of the tool is to generate the necessary data. Generated data are fictious (not real) but looks like real data. Demographic characteristics consist of
a name, last name, mother maiden name ...
date of birth,
sex,
religion,
race,
address
The address consists of the street, town, state, zip code and country. Addresses are randomly generated. We use the geonames database and googlemaps geocoding webservices in order to generate random addresses or more specific research. Generated addresses contains zip code information, matching the city name. Currently generated demographic information can be generated for the United-States, France, Germany and Japan. We are working on including data for more countries. Demographic Dataserver is taking into account information about the frequency of firstname, lastname, race and religion. The Demographic Data Server provides a Web User interface as well as a Web Service interface.
The java documentation of this project is available here.
User can access to DDS using the DDS web page. The GUI offers the possibility to generate patient data, see all generated patient data and shre this patient data with other systems in HL7 v2 or v3.
To create a new patient, go to the menu. In the create patient page, user will have the choice between to tabs : "Patient's generation" and "Advances Patient's generation".
To see all patient data generated by DDS, go to the menu. This page show to the use, in a table, all patient data generated by DDS. User can use the FirstName and the LastName filters to search a specific patient. It is also possible to sort the patient data by Id (Id in DDS), FirstName, LastName, Gender, Race, Religion ... by hiting the button.
In the action column :
Finally, just below the patient data table, the user could find all patients of the selected patient list :
The button (over the patient table) can be used to refresh the patients list of the patient data table.
The GUI allows the user to send the selected patients through an HL7 V2 or V3 messages. Once user has selected the patients to send to his system (see the section over), it is necessary to configure the sending option :
The WSDL file describing the web service is here. You can also download an example of a project soapUI that use these methods from here.
Functionalities of DDS can be used by web services methods. In fact, DDS implement 7 methods on web service :
The documentation of classes on this jar is there.
Web Services Limitation
We do not have limited ressources to offer for this service. Thus the access to the webservice is limited to a "reasonnable" number of request per days/minute. We'd like to avoid DoS on the gazelle tools because someone is requesting fake patients every second.
Thus our limitation are :
If you'd like to generate large random data, please get in contact with Eric Poiseau and we will try to help you and generate data to fill your needs.
The WSDL file describing the web service is here. You can also download an example of a project soapUI that use these methods from here.
Functionalities of DDS can be used by web services methods. In fact, DDS implement 12 methods on web service. See the table below to have further information :
Method Name |
Description |
Parameter Name |
Possible Values |
getListCountryCode |
Return all available country code. |
No parameter. | |
returnAddress |
Generate a specific address from country code. |
countryCode : The code of the country used to generate the Patient. |
For example : JP, FR, DE, US, ... (To know all possible values, see the ISO code of each country. Use the getListCountryCode method.) |
returnAddressByCoordinates |
Generate a specific address from country code and coordinates. |
countryCode : The code of the country used to generate the Patient. |
For example : JP, FR, DE, US, ... (To know all possible values, see the ISO code of each country. Use the getListCountryCode method.) |
lat : The lattitude of the place from which we extract the address. |
For example : 53.5459481506 |
||
lng : the longitude of the place from which we extract the address. |
For example : 10.204494639 |
||
returnAddressByTown |
Generate a specific address from a Town. |
townName : The name of the town. |
For example : Paris, London, Toronto, Roma, ... |
returnPerson |
Return a Person from some parameters. |
countryCode : The code of the country used to generate the Patient. |
For example : JP, FR, DE, US, ... (To know all possible values, see the ISO code of each country. Use the getListCountryCode method.) |
lastNameOption : Specify if you want to generate the last name or not. |
true or false |
||
firstNameOption : Specify if you want to generate the first name or not. |
true or false |
||
motherMaidenNameOption : Specify if you want to generate the mother maiden name or not. |
true or false |
||
religionOption : Specify if you want to generate the religion of the person or not. |
true or false |
||
raceOption : Specify if you want to generate the race of the person or not. |
true or false |
||
birthDayOption : Specify if you want to generate the birth day of the person or not. |
true or false |
||
genderDescription : Specify the gender of the person. |
Male, Female, male, female, m, M, f, F or Random. For other value, the gender will be generate randomly. |
||
firstNameLike : Specify it if you want to get a first name approaching the specified first name.(Attention, you have to choose between the firstNameLike and the firstNameIs.) |
For example : Nico, Dav, ... |
||
lastNameLike : Specify it if you want to get a last name approaching the specified last name. (Attention, you have to choose between the lastNameLike and the lastNameIs.) |
For example : Jam, lef, ... |
||
firstNameIs : Specify it if you want to get a person with this exact first name. (Attention, you have to choose between the firstNameLike and the firstNameIs.) |
For example : Nicolas |
||
lastNameIs : Specify it if you want to get a person with this exact first name. (Attention, you have to choose between the lastNameLike and the lastNameIs.) |
For example : James |
||
returnSimplePatient |
Return a simpl patient from a specific country. |
countryCode : The code of the country used to generate the Patient. |
For example : JP, FR, DE, US, ... (To know all possible values, see the ISO code of each country. Use the getListCountryCode method.) |
returnPatient |
Return a Patient from some parameters. |
countryCode : The code of the country used to generate the Patient. |
For example : JP, FR, DE, US, ... (To know all possible values, see the ISO code of each country. Use the getListCountryCode method.) |
lastNameOption : Specify if you want to generate the last name or not. |
true or false |
||
firstNameOption : Specify if you want to generate the first name or not. |
true or false |
||
motherMaidenNameOption : Specify if you want to generate the mother maiden name or not. |
true or false |
||
religionOption : Specify if you want to generate the religion of the person or not. |
true or false |
||
raceOption : Specify if you want to generate the race of the person or not. |
true or false |
||
birthDayOption : Specify if you want to generate the birth day of the person or not. |
true or false |
||
genderDescription : Specify the gender of the person. |
Male, Female, male, female, m, M, f, F or Random. For other value, the gender will be generate randomly. |
||
firstNameLike : Specify it if you want to get a first name approaching the specified first name.(Attention, you have to choose between the firstNameLike and the firstNameIs.) |
For example : Nico, Dav, ... |
||
lastNameLike : Specify it if you want to get a last name approaching the specified last name. (Attention, you have to choose between the lastNameLike and the lastNameIs.) |
For example : Jam, lef, ... |
||
firstNameIs : Specify it if you want to get a person with this exact first name. (Attention, you have to choose between the firstNameLike and the firstNameIs.) |
For example : Nicolas |
||
lastNameIs : Specify it if you want to get a person with this exact first name. (Attention, you have to choose between the lastNameLike and the lastNameIs.) |
For example : James |
||
returnPatientWithAllOptions |
The most complete method to return a patient. A lot of parameters are available. |
countryCode : The code of the country used to generate the Patient. |
For example : JP, FR, DE, US, ... (To know all possible values, see the ISO code of each country. Use the getListCountryCode method.) |
lastNameOption : Specify if you want to generate the last name or not. |
true or false |
||
firstNameOption : Specify if you want to generate the first name or not. |
true or false |
||
motherMaidenNameOption : Specify if you want to generate the mother maiden name or not. |
true or false |
||
religionOption : Specify if you want to generate the religion of the person or not. |
true or false |
||
raceOption : Specify if you want to generate the race of the person or not. |
true or false |
||
birthDayOption : Specify if you want to generate the birth day of the person or not. |
true or false |
||
addressOption : Specify if you want to generate the address of the patient or not. |
true or false |
||
genderDescription : Specify the gender of the person. |
Male, Female, male, female, m, M, f, F or Random. For other value, the gender will be generate randomly. |
||
firstNameLike : Specify it if you want to get a first name approaching the specified first name.(Attention, you have to choose between the firstNameLike and the firstNameIs.) |
For example : Nico, Dav, ... |
||
lastNameLike : Specify it if you want to get a last name approaching the specified last name. (Attention, you have to choose between the lastNameLike and the lastNameIs.) |
For example : Jam, lef, ... |
||
firstNameIs : Specify it if you want to get a person with this exact first name. (Attention, you have to choose between the firstNameLike and the firstNameIs.) |
For example : Nicolas |
||
lastNameIs : Specify it if you want to get a person with this exact first name. (Attention, you have to choose between the lastNameLike and the lastNameIs.) |
For example : James |
||
maritalSatusOption : Specify the marital status of the patient. |
Possible values are : Married or M, Single or S, Divorced or D, Unknown or U, Random or R. |
||
deadPatientOption : Specify if you want to generate a dead patient or not. If yes, the date of patient death will be randomly find. |
true or false |
||
maidenNameOption : Specify if you want to generate a maiden name for the patient or not. Attention, the maiden name can't be generate if the patient gender is not female. |
true or false |
||
aliasNameOption : Specify if you want to generate an alias name for the patient or not. |
true or false |
||
displayNameOption : Specify if you want to generate a display name for the patient or not. |
true or false |
||
newBornOption : Specify if you want to generate a new born patient or not. If yes, the patient will have a mother and the patient's age will be between 1 and 2 days. If the new born option is true, the marital status must be set to 'Unknown' or 'U', because a new born can't be married or divorced. |
true or false |
||
returnHl7Message |
Return HL7 v2 Message containing description of a patient from a specific country. |
||
countryCode : The code of the country used to generate the Patient. |
For example : JP, FR, DE, US, ... (To know all possible values, see the ISO code of each country. Use the getListCountryCode method.) |
||
receivingApplication : The Application of your system. (MSH-5) |
See the IHE Technical Framework for more information about this field. |
||
receivingFacility : The Facility of your system. (MSH-6) |
See the IHE Technical Framework for more information about this field. |
||
characterSet : The character set encoding of the HL7 message. (MSH-18) |
Possible values : It depends of each country. For example, for France, all available characters set are : UTF-8 and ISO-8859-1. If you ask for a character set which is not supported by DDS, DDS will return a SOAPException with a message to show you all possible characters set. |
||
hl7Version : The HL7 version of the message. (MSH-12) |
Possible values : 2.3.1 or 2.5 |
||
messageType : The message type of the HL7 message. (MSH-9) |
Possible values : ADT^A01^ADT_A01, ADT^A04^ADT_A01 or ADT^A28^ADT_A05. The ADT^A28^ADT_A05 is only available with the HL7 v2.5 version and the ADT^A01^ADT_A01 and ADT^A04^ADT_A01 with the HL7 v2.3.1 version. |
||
sendHl7Message |
Send HL7 v2 Message containing description of a patient from a specific country to a target host and port. This method return the message response.
|
||
countryCode : The code of the country used to generate the Patient. |
For example : JP, FR, DE, US, ... (To know all possible values, see the ISO code of each country get with the getListCountryCode method.) |
||
targetHost : The IP Address of your system, which will receive the HL7 message. |
Example : 137.114.220.XXX |
||
targetPort : The port on which your system will receive the HL7 message. |
Example : 1030 |
||
receivingApplication : The Application of your system. (MSH-5) |
See the IHE Technical Framework for more information about this field. |
||
receivingFacility : The Facility of your system. (MSH-6) |
See the IHE Technical Framework for more information about this field. |
||
characterSet : The character set encoding of the HL7 message. (MSH-18) |
Possible values : It depends of each country. For example, for France, all available characters set are : UTF-8 and ISO-8859-1. If you ask for a character set which is not supported by DDS, DDS will return a SOAPException with a message to show you all possible characters set. |
||
hl7Version : The HL7 version of the message. (MSH-12) |
Possible values : 2.3.1 or 2.5 |
||
messageType : The message type of the HL7 message. (MSH-9) |
Possible values : ADT^A01^ADT_A01, ADT^A04^ADT_A01 or ADT^A28^ADT_A05. The ADT^A28^ADT_A05 is only available with the HL7 v2.5 version and the ADT^A01^ADT_A01 and ADT^A04^ADT_A01 with the HL7 v2.3.1 version. |
||
returnHl7v3Message |
Return HL7 v3 Message containing description of a patient from a specific country. |
countryCode1 : The code of the country used to generate the Patient. |
For example : JP, FR, DE, US, ... (To know all possible values, see the ISO code of each country. Use the getListCountryCode method.) |
sendHl7v3Message |
Send HL7 v3 Message containing description of a patient from a specific country to URL. |
countryCode : The code of the country used to generate the Patient. |
For example : JP, FR, DE, US, ... (To know all possible values, see the ISO code of each country. Use the getListCountryCode method.) |
systemName : The name of your system. |
The name of your system. |
||
url : The URL of your system. |
The URL of your system. |
||
receivingApplication : The Application of your system. |
See the IHE Technical Framework for more information about this field. |
||
receivingFacility : The Facility of your system. |
See the IHE Technical Framework for more information about this field. |
We have implemented a Static WSClient for DDS. This related jar is easy to use. You have only to add the jar file to the project, and use it. The jar file is downloadable here (on the Gazelle Maven repository).
We do not have limited ressources to offer for this service. Thus the access to the webservice is limited to a "reasonnable" number of request per days/minute. We'd like to avoid DoS on the gazelle tools because someone is requesting fake patients every second.
Thus our limitation are :
If you'd like to generate large random data, please get in contact with Eric Poiseau and we will try to help you and generate data to fill your needs.
You can allow specific IPs to do not have limited ressources.
To do this you need to update database with this kind of request :
UPDATE dds_user_request_historic SET unlimited=true WHERE ip_address='62.212.122.29';