diff --git a/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/PersonNameTranslatorImpl.java b/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/PersonNameTranslatorImpl.java index 25ee98525..90708cd12 100644 --- a/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/PersonNameTranslatorImpl.java +++ b/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/PersonNameTranslatorImpl.java @@ -51,6 +51,8 @@ public HumanName toFhirResource(@Nonnull PersonName name) { addNameExtension(humanName, "familyNameSuffix", name.getFamilyNameSuffix()); addNameExtension(humanName, "degree", name.getDegree()); + humanName.setText(name.getFullName()); + return humanName; } diff --git a/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/PersonNameTranslatorImplTest.java b/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/PersonNameTranslatorImplTest.java index 35fa31be2..b266838e9 100644 --- a/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/PersonNameTranslatorImplTest.java +++ b/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/PersonNameTranslatorImplTest.java @@ -16,6 +16,11 @@ import static org.hamcrest.Matchers.hasProperty; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.Arrays; +import java.util.Collections; import org.hl7.fhir.r4.model.Extension; import org.hl7.fhir.r4.model.HumanName; @@ -23,7 +28,13 @@ import org.junit.Before; import org.junit.Test; import org.openmrs.PersonName; +import org.openmrs.api.AdministrationService; +import org.openmrs.api.context.ServiceContext; +import org.openmrs.layout.name.NameSupport; +import org.openmrs.layout.name.NameTemplate; import org.openmrs.module.fhir2.FhirConstants; +import org.openmrs.serialization.SerializationException; +import org.openmrs.serialization.SimpleXStreamSerializer; public class PersonNameTranslatorImplTest { @@ -152,6 +163,44 @@ public void shouldOnlyCreateOneExtensionForExtensibleAttributes() { assertThat(extension.getExtension().size(), greaterThan(1)); } + @Test + public void shouldUseDefaultNameTemplateToSetNameText() throws SerializationException { + AdministrationService administrationService = mock(AdministrationService.class); + ServiceContext.getInstance().setAdministrationService(administrationService); + when(administrationService.getGlobalProperty("layout.name.format")).thenReturn("test"); + + NameSupport nameSupportInstance = new NameSupport(); + NameTemplate customNameTemplate = new SimpleXStreamSerializer() + .deserialize("\n" + " test\n" + + " Test Name Format\n" + " \n" + + " \n" + + " \n" + + " \n" + " \n" + + " \n" + " \n" + + " \n" + + " \n" + " \n" + + " \n" + " givenName\n" + " familyName\n" + + " middleName\n" + " \n" + " \n" + + " givenName\n" + " familyName\n" + + " \n" + "", + NameTemplate.class); + nameSupportInstance.setLayoutTemplates(Collections.singletonList(customNameTemplate)); + nameSupportInstance.setSpecialTokens(Arrays.asList("prefix", "givenName", "middleName", "familyNamePrefix", + "familyNameSuffix", "familyName2", "familyName", "degree")); + + PersonName name = new PersonName(); + name.setGivenName(PERSON_GIVEN_NAME); + name.setMiddleName(PERSON_MIDDLE_NAME); + name.setFamilyName(PERSON_FAMILY_NAME); + + HumanName fhirName = personNameTranslator.toFhirResource(name); + + assertThat(fhirName, notNullValue()); + assertThat(fhirName.getTextElement(), notNullValue()); + assertThat(fhirName.getTextElement().getValue(), + equalTo(PERSON_GIVEN_NAME + " " + PERSON_FAMILY_NAME + " " + PERSON_MIDDLE_NAME)); + } + @Test public void shouldConvertHumanNameToPersonName() { HumanName name = new HumanName();