...
- Create a new project by using the attached skelton
- Import this project into any IDE like eclipse
Add new class
3.1 Add custom token implementation class named SpecimenCollectionProcedurePrintToken.java in package com.krishagni.openspecimen.plugin.token, like below:Code Block package com.krishagni.openspecimen.plugin.token; import com.krishagni.catissueplus.core.biospecimen.domain.Specimen; import com.krishagni.catissueplus.core.common.domain.AbstractLabelTmplToken; import com.krishagni.catissueplus.core.common.domain.LabelTmplToken; public class SpecimenCollectionProcedurePrintToken extends AbstractLabelTmplToken implements LabelTmplToken { @Override public String getName() { return "specimen_collection_procedure"; } @Override public String getReplacement(Object object) { Specimen specimen = (Specimen)object; while (specimen.getParentSpecimen() != null) { specimen = specimen.getParentSpecimen(); } return specimen.getCollectionEvent().getProcedure(); } }
3.2. Add message key for the newly added label token. To add the message key need to update messages.properties file available at PLUGIN_HOME/src/main/resources/errors. Below is the sample: Register the token into OpenSpecimen with LabelTmplTokenRegistrar. Below is the code:
Code Block print_specimen_collection_procedure=Collection Proceudre Note: OpenSpecimen will use this value in the cmd files as the label for collection procedure value.
3.3. Now we need to register the above token into OpenSpecimen with LabelTmplTokenRegistrar. First create a package com.krishagni.openspecimen.plugin.init and write a class named PluginInitializer. This class will register the above token implementation with OpenSpecimen
Code Block package com.krishagni.openspecimen.plugin.init; import org.springframework.beans.factory.InitializingBean; import com.krishagni.catissueplus.core.common.domain.LabelTmplTokenRegistrar; import com.krishagni.openspecimen.plugin.token.SpecimenCollectionProcedurePrintToken; public class PluginInitializer implements InitializingBean { private LabelTmplTokenRegistrar specimenPrintLabelTokensRegistrar; public void setSpecimenPrintLabelTokensRegistrar(LabelTmplTokenRegistrar specimenPrintLabelTokensRegistrar) { this.specimenPrintLabelTokensRegistrar = specimenPrintLabelTokensRegistrar; } @Override public void afterPropertiesSet() throws Exception { specimenPrintLabelTokensRegistrar.register(new SpecimenCollectionProcedurePrintToken()); } }
3.4. We have created a custom class for the token and written a plugin initializer which will register the new token with the LabelTmplTokenRegistrar. To make Spring aware to load this class we need to update the spring context. For this we need to add below in file PLUGIN_HOME/src/main/resources/pluginContext.xml
Code Block <bean id="pluginInitializer" class="com.krishagni.openspecimen.plugin.init.PluginInitializer"> <property name="specimenPrintLabelTokensRegistrar" ref="specimenPrintLabelTokensRegistrar"/> </bean>
- Now we are done with the coding. Its time to deploy and test the plugin. Open the command prompt and traverse to PLUGIN_HOME. Run below commands:
4.1. gradle clean This will cleaup the classes and any unneccessary files
4.2. gradle build This will create the plugin archive file at PLUGIN_HOME/build/libs/ - Copy the os-plugin.jar and place it under plugin directory
- Start the tomcat
- Update the default_specimen_print_rules.csv and specify the newly added token specimen_collection_procedure and update the print rules file path from the settings
Access the OpenSpecimen application, select a specimen and print it. The output will looks like below:
Code Block Label Type=Std Printer=default Label=P0001-1 Specimen Type=Plasma Collection Procedure=Surgical Resection Location=Virtual
You can download the complete working example from here:
View file name os-plugin-token.zip height 250