Description

We need to reprioritize our import functions. 
First you import your key and body plan.

Next you decide which body parts you will not not use  the childern as synonyms. this allows the user to have a visual of structure before progressing to deciding you priorities.
Next you decide which traits will be low priority

We need to know how many different options we have when importing our data.

Without Images
First Import
Parsed
Truth Value Matrix
Where do we want to put the edited traits.

With Images

We need to go through all parts individually to make sure the essentials have been met.

Key and Body plan import

DynamicModule[{kname="NAGenera",fileextend={"ParsedKey","Images"},organ="ants",importpath=Null,importpathBody=Null,tree=Null},
Column@{
Grid[{
{"KeyName:",InputField[Dynamic[kname],String]},
{"Key File Import Path:",InputField[Dynamic[importpath]],Button["Choose File",FrontEndExecute[FrontEndToken["FileNameDialog"]]]},
{"Export/Import Format:",PopupMenu[Dynamic[fileextend],
{"xls"->"Export Excel Format",
"cvs"->"Export Comma Separated Variable Format",
"ParsedKey"->"Key of Already Parsed Traits",
{"ParsedKey","Images"}->"Key of Already Parsed Traits with Images",
"TruthValueMatrix"->"Data all ready Scored and Assigned"
}]},
{"Body Plan Name:",InputField[Dynamic[organ],String]},
{"Body Plan File Import Path:",InputField[Dynamic[importpathBody]],Button["Choose File",FrontEndExecute[FrontEndToken["FileNameDialog"]]]}
}],
Dynamic[Button["Import Data",
KeyDataSetUp[kname,importpath,fileextend];
CreateBodyPlan[organ,importpathBody];
Set[tree,
TreePlot[Flatten[Thread/@BodyRules[organ]],Top,"body",EdgeRenderingFunction->({Arrowheads[.01],Arrow[#1,.001]}&)]]
]],
OpenerView[{"Body Plan Tree",Dynamic[tree]}]
}]

Refine Synonym Rules

DynamicModule[{kname="NAGenera",organ="ants",z1=-1,z2=-1,z3=-1,chnotsyn=({"abdomen","antenna","body","color","head","leg","metrics","morphisms","thorax","waist"}),

lowpriority={"color","metrics","morphisms"},refineparts={"antenna","abdomen","body","leg","metrics","morphisms","thorax"},finallowpriority={}},
Column@{Grid[{
{"Select a Key Name:",PopupMenu[Dynamic[kname],{"NAGenera"}]},
{"Select a Body Plan:",PopupMenu[Dynamic[organ],{"ants"}]}
}],
Row@{OpenerView[{"Childred Not Synonyms",Row@{Dynamic[
CheckboxBar[
Dynamic[chnotsyn],
(Union[BodyPartofPairs[organ][[All,2]]])[[-z1;;-z1+5]],
Appearance->"Vertical"]],
VerticalSlider[Dynamic[z1],{-Length[Union[BodyPartofPairs[organ][[All,2]]]]+5,-1,1}],Dynamic[Column@chnotsyn],
Button["Reset",Set[chnotsyn,{}]]
}}],
OpenerView[{"Low Priority Parts",Row@{Dynamic
[CheckboxBar[
Dynamic[lowpriority],
(Union[BodyPartofPairs[organ][[All,2]]])[[-z2;;-z2+5]],
Appearance->"Vertical"]],
VerticalSlider[Dynamic[z2],{-Length[Union[BodyPartofPairs[organ][[All,2]]]]+5,-1,1}],
Dynamic[
Column@Flatten[{Union[{##}[[All,2]]],{##}[[All,1]]}&@@@(Function[part,Select[BodyPartofPairs[organ],({#[[2]]}⋂{part})=!={}&]][#]&/@Cases[lowpriority,_String,2])]],Button["Reset",Set[lowpriority,{}]]
}}],
OpenerView[{"Refine Parts",Row@{Dynamic
[CheckboxBar[
Dynamic[refineparts],
(Union[BodyPartofPairs[organ][[All,2]]])[[-z3;;-z3+5]],
Appearance->"Vertical"]],
VerticalSlider[Dynamic[z3],{-Length[Union[BodyPartofPairs[organ][[All,2]]]]+5,-1,1}],
Dynamic[Column@Cases[refineparts,_String,2]]}}],Button["Reset",Set[refineparts,{}]]
},
Dynamic[Button["Refine Part Assignments for Key",
Set[finallowpriority,Flatten[{Union[{##}[[All,2]]],{##}[[All,1]]}&@@@(Function[part,Select[BodyPartofPairs[organ],({#[[2]]}⋂{part})=!={}&]][#]&/@Cases[lowpriority,_String,2])]];
CreateGlobalTraitLookup[kname];
CreateCompleteSynonymRules[organ,Cases[chnotsyn,_String,2]];
RefineSearchTermsAllLevels[organ,kname,Cases[finallowpriority,_String,2],Cases[refineparts,_String,2]];]]
}]

Check for Umatched checks

DynamicModule[{kname="NAGenera",unmatch=Null},
Column@{
Row@{"Select a Key Name:",PopupMenu[Dynamic[kname],{"NAGenera"}]},
Button["Check for Unmatched Traits in "<>kname,Set[unmatch,CheckforUmatchedTraits[kname]]],
OpenerView[{"Unmatched Traits by Keylevel",Dynamic[unmatch]}]
}]

Create the final key

DynamicModule[{kname="NAGenera",organ="ants"},
Column@{
Row@{"Select a Key Name:",PopupMenu[Dynamic[kname],{"NAGenera"}]},
Row@{"Select a Key Name:",PopupMenu[Dynamic[organ],{"ants"}]},
Button["Create Data for "<>kname,AllTreeLevelBigInput[kname,organ]],
OpenerView[{"Key to "<>kname,Dynamic[dynamickeyInterface[kname,"Manipulate"]]}]
}]