Pulling Random Names from a list

We are trying to figure out how to pull random names from our data sheet. We have a column of first names and a column of last names. We are trying to be so random the same name should not appear for some time as there are extra warnings in the system to prevent duplicate names.

Here is the code we used;

set myDB to (file:ResourcePath("Data.xlsx"), type:"excel", writeable:"Yes")
set Patientdata to the records of table ("PTData") of mydb
repeat with each patient of Patientdata
put (item 1 of patient.fname, item 100 of patient.fname) into fnameR
typetext any item of fnameR, return
end repeat

Eggplant would certainly pull random names from the list but would go down in the order on the list and skip some of the name which would come up as a blank. Is there a way to pull a list of random names without the skipping?
I have seen some scripts online to create names but would the names generated be scrambled letters instead of names?

Comments

  • EggplantMattEggplantMatt ForumAdmin admin
    edited May 2
    How about something like this:

    put patientData into patientDataTmp
    repeat the number of items in patientDataTmp
          put random(the number of items in patientDataTmp) into itemNo
          typetext (item itemNo of patientDataTmp).fname, return
          delete item itemNo of patientDataTmp
    end repeat
    I have seen some scripts online to create names but would the names generated be scrambled letters instead of names?
    Yes, they would be scrambled letters.
  • GregbertGregbert Member
    Excellent, It looks like it is working. There are a few blanks but much better. I will keep troubleshooting. 
    Thanks so much
  • GregbertGregbert Member
    I have the script cleaned up and added the last name with the needed comma and space and they are coming across wonderfully. I need to figure how to have different first names and different last name that are on separate rows in order to randomize the names even more.  

    Thanks for all your help
  • Damo79Damo79 Member
    Just create another random variable to hold the last name index.

    Set numOfPatients to the number of items in patientDataTmp
    put random(numOfPatients) into firstNameIndex
    put random(numOfPatients) into lastNameIndex

    Also to ensure names don't come up too often (so not really random) just save for example the last 10 names into a list - if the name is in the list then get another name, once a suitable name has been found add that name to the list and remove the oldest name.
  • GregbertGregbert Member
    so now occasionally I will get a blank with only the coma. I am not sure if I need to limit the number of names to look at as it may be looking at blanks on the data sheet. 
  • Damo79Damo79 Member
    Just do a check when you grab the name to see if it's blank, if it is get another name
  • GregbertGregbert Member

    We were able to simplify the script a bit and pull from the spreadsheet. More of a maintenance issue now but is working.


    repeat with each patient of Patientdata by reference
      
     TypeText ControlDown,"1‘",ControlUp,tab,shiftdown, tab, shiftup
     wait 1
     typetext patient's PTname
     typetext tab
     typetext patient's SSN
     typetext tab
     typetext patient's Sex
     typetext tab
     typetext patient's Age
     wait .5
     typetext tab, tab, return, return
     
     typetext tab, return
     wait 2 
     DoubleClick "MRN"
     typetext controlkey, "c"
     log remoteclipboard()
     put remoteclipboard() into patient's MRN
     Click "ClosePTwindow"
     wait 3
     
    end repeat

    We use a naming convention for our test patients so we are trying to figure out a way to generate names with numbers in excel. Working through some issues with the VBA errors we are getting.


    Thanks for everyone's help

  • Damo79Damo79 Member
    I would probably try and avoid hard coding things like "typeText tab " in 
     typetext tab
     typetext patient's Sex
     typetext tab
     typetext patient's Age
    As you might want to change the order of these columns in the future. Consider writing  a small handler to get return the age or sex column. But depends on how future proof you want it to be. 

    Also an idea for a random name generator, instead of assigning single letters to a random number consider assigning syllables like "ler", "fra" "sm" "let" "bar"
     etc and build your name up from them. Could also categorise them (use sepearate lists) so that particular syllables will only appear at the start or end of the word. Like "fra" to make "Frank" or "Francis".

    Anyway hope this helps
Sign In or Register to comment.