Introduction
This document describes the steps to add customized tokens for various purpose like Specimen Print token, Specimen label token, Visit Label Token, Container label token etc. This guide is intended for developers or technical IT staff.
Prerequisites
One should have done the setup the plugin as per steps given at how to write a plugin for OpenSpecimen?
Steps
To customize the Print token implementation one needs to follow the below steps:
- Write a class to get label token. Below are examples for different type of label tokens.
i) Specimen label print token -
Write a class that extends AbstractLabelTmplToken and implements LabelTmplToken. The following example describes how to implement LabelTmplToken:
public class SpecimenCollectionContainerPrintToken extends AbstractLabelTmplToken implements LabelTmplToken { @Override public String getName() { return "specimen_collection_container"; } @Override public String getReplacement(Object object) { Specimen specimen = (Specimen)object; while (specimen.getParentSpecimen() != null) { specimen = specimen.getParentSpecimen(); } return specimen.getCollectionEvent().getContainer(); } }
ii) For specimen label token extend AbstractSpecimenLabelToken. Refer attached example of PPID label token PpidLabelToken.java.
iii) For visit label token extend AbstractVisitLabelToken class. Refer attached example of event label token EventLabelToken.java.
iv) For participant ppid label token extend AbstractPpidToken class. Refer attached example of cp code label token CpCodePpidToken.java.
2. The next step will be to register this new token with the com.krishagni.catissueplus.core.common.domain.LabelTmplTokenRegistrar, to make OpenSpecimen aware of this new token. To register the new token, one needs to write a java class in the plugin like below:
public class PluginInitializer implements InitializingBean { private LabelTmplTokenRegistrar labelTokensRegistrar; public void setLabelTokensRegistrar(LabelTmplTokenRegistrar labelTokensRegistrar) { this.labelTokensRegistrar = labelTokensRegistrar; } @Override public void afterPropertiesSet() throws Exception { labelTokensRegistrar.register(new SpecimenCollectionContainerPrintToken()); // Here replace SpecimenCollectionContainerPrintToken() with your class. } }
3. After adding this plugin initializer class you also need to define this bean in the spring context file located at PLUGIN_HOME/src/main/resources/pluginContext.xml. Following example describes how to define this bean:
<bean id="pluginInitializer" class="com.krishagni.openspecimen.plugin.init.PluginInitializer"> <property name="labelTokensRegistrar" ref="specimenPrintLabelTokensRegistrar"/> </bean>
In above bean specimenPrintLabelTokensRegistrar is to register specimen print label token. Replace registrar bean name according to your label token type by referring below list
Label Type | Registrar Bean |
---|---|
PPID Label Token | ppidTokensRegistrar |
Specimen Label Token | specimenTokenRegistrar |
Visit Label Token | visitTokenRegistrar |