Skip to content

Commit 08c5732

Browse files
committed
Adds tests for transformation of DHIS2 Program to FHIR Plan Definition.
1 parent e6eb75b commit 08c5732

File tree

9 files changed

+366
-25
lines changed

9 files changed

+366
-25
lines changed

app/src/test/java/org/dhis2/fhir/adapter/fhir/server/AbstractProgramStageFhirRestAppTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,8 @@ protected void expectProgramStageMetadataRequests() throws Exception
7474
systemDhis2Server.expect( ExpectedCount.between( 0, 1 ), method( HttpMethod.GET ) ).andExpect( header( "Authorization", testConfiguration.getDhis2SystemAuthorization() ) )
7575
.andExpect( requestTo( dhis2BaseUrl + "/api/" + dhis2ApiVersion + "/programs.json?paging=false&fields=id,name,code,description,selectIncidentDatesInFuture,selectEnrollmentDatesInFuture,displayIncidentDate,registration," +
7676
"withoutRegistration,captureCoordinates,trackedEntityType%5Bid%5D,programTrackedEntityAttributes%5Bid,name,valueType,mandatory,allowFutureDate,trackedEntityAttribute%5Bid,name,code,valueType,generated%5D%5D,programStages%5Bid,name," +
77-
"description," +
78-
"repeatable,captureCoordinates,generatedByEnrollmentDate,minDaysFromStart,programStageDataElements%5Bid,compulsory,allowProvidedElsewhere,dataElement%5Bid,name,code,formName,valueType,optionSetValue,optionSet%5Bid,name,options%5Bcode," +
79-
"name%5D%5D%5D%5D%5D&filter=name:eq:Child%20Programme" ) )
77+
"description,repeatable,captureCoordinates,generatedByEnrollmentDate,minDaysFromStart,programStageDataElements%5Bid,compulsory,allowProvidedElsewhere,dataElement%5Bid,name,code,formName,valueType,optionSetValue,optionSet%5Bid,name," +
78+
"options%5Bcode,name%5D%5D%5D%5D%5D&filter=name:eq:Child%20Programme" ) )
8079
.andRespond( withSuccess( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/dhis/test/default-program.json", StandardCharsets.UTF_8 ), MediaType.APPLICATION_JSON ) );
8180
}
8281
}

app/src/test/java/org/dhis2/fhir/adapter/fhir/server/r4/R4ProgramMetadataFhirRestAppTest.java

Lines changed: 335 additions & 0 deletions
Large diffs are not rendered by default.

dhis/src/main/java/org/dhis2/fhir/adapter/dhis/model/DhisResourceType.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,37 +44,37 @@ public enum DhisResourceType
4444
/**
4545
* Resource is a tracked entity instance.
4646
*/
47-
TRACKED_ENTITY( "trackedEntityInstances", "te" ),
47+
TRACKED_ENTITY( "trackedEntityInstances", "te", "TrackedEntityRule" ),
4848

4949
/**
5050
* Resource is a tracked entity type.
5151
*/
52-
TRACKED_ENTITY_TYPE( "trackedEntityTypes", "tt" ),
52+
TRACKED_ENTITY_TYPE( "trackedEntityTypes", "tt", "TrackedEntityTypeRule" ),
5353

5454
/**
5555
* The program metadata.
5656
*/
57-
PROGRAM_METADATA( "programs", "pm" ),
57+
PROGRAM_METADATA( "programs", "pm", "ProgramMetadataRule" ),
5858

5959
/**
6060
* The program stage metadata.
6161
*/
62-
PROGRAM_STAGE_METADATA( "programStages", "sm" ),
62+
PROGRAM_STAGE_METADATA( "programStages", "sm", "ProgramStageMetadataRule" ),
6363

6464
/**
6565
* Resource is a program instance (aka enrollment).
6666
*/
67-
ENROLLMENT( "enrollments", "en" ),
67+
ENROLLMENT( "enrollments", "en", "EnrollmentRule" ),
6868

6969
/**
7070
* Resource is a program stage instance (aka event of a program instance).
7171
*/
72-
PROGRAM_STAGE_EVENT( "events", "ps" ),
72+
PROGRAM_STAGE_EVENT( "events", "ps", "ProgramStageRule" ),
7373

7474
/**
7575
* Resource is a organisation unit.
7676
*/
77-
ORGANIZATION_UNIT( "organisationUnits", "ou" );
77+
ORGANIZATION_UNIT( "organisationUnits", "ou", "OrganizationUnitRule" );
7878

7979
private static final Map<String, DhisResourceType> byTypeName = Arrays.stream( values() ).collect( Collectors.toMap( DhisResourceType::getTypeName, v -> v ) );
8080

@@ -96,10 +96,13 @@ public static DhisResourceType getByAbbreviation( @Nullable String abbreviation
9696

9797
private final String abbreviation;
9898

99-
DhisResourceType( @Nonnull String typeName, @Nonnull String abbreviation )
99+
private final String ruleType;
100+
101+
DhisResourceType( @Nonnull String typeName, @Nonnull String abbreviation, @Nonnull String ruleType )
100102
{
101103
this.typeName = typeName;
102104
this.abbreviation = abbreviation;
105+
this.ruleType = ruleType;
103106
}
104107

105108
@Nonnull
@@ -113,4 +116,10 @@ public String getAbbreviation()
113116
{
114117
return abbreviation;
115118
}
119+
120+
@Nonnull
121+
public String getRuleType()
122+
{
123+
return ruleType;
124+
}
116125
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
import org.dhis2.fhir.adapter.fhir.repository.FhirResourceRepository;
4343
import org.dhis2.fhir.adapter.fhir.script.ScriptExecutor;
4444
import org.dhis2.fhir.adapter.fhir.transform.dhis.DhisToFhirTransformerContext;
45-
import org.dhis2.fhir.adapter.fhir.transform.dhis.impl.metadata.program.AbstractProgramMetadataToFhirCarePlanTransformer;
45+
import org.dhis2.fhir.adapter.fhir.transform.dhis.impl.metadata.program.AbstractProgramMetadataToFhirPlanDefinitionTransformer;
4646
import org.dhis2.fhir.adapter.fhir.transform.scripted.AccessibleScriptedDhisMetadata;
4747
import org.dhis2.fhir.adapter.lock.LockManager;
4848
import org.hl7.fhir.instance.model.api.IBaseResource;
@@ -62,9 +62,9 @@
6262
* @author volsch
6363
*/
6464
@Component
65-
public class R4ProgramMetadataToFhirCarePlanTransformer extends AbstractProgramMetadataToFhirCarePlanTransformer<PlanDefinition>
65+
public class R4ProgramMetadataToFhirPlanDefinitionTransformer extends AbstractProgramMetadataToFhirPlanDefinitionTransformer<PlanDefinition>
6666
{
67-
public R4ProgramMetadataToFhirCarePlanTransformer( @Nonnull ScriptExecutor scriptExecutor, @Nonnull LockManager lockManager, @Nonnull SystemRepository systemRepository, @Nonnull FhirResourceRepository fhirResourceRepository,
67+
public R4ProgramMetadataToFhirPlanDefinitionTransformer( @Nonnull ScriptExecutor scriptExecutor, @Nonnull LockManager lockManager, @Nonnull SystemRepository systemRepository, @Nonnull FhirResourceRepository fhirResourceRepository,
6868
@Nonnull FhirDhisAssignmentRepository fhirDhisAssignmentRepository, @Nonnull OrganizationUnitService organizationUnitService,
6969
@Nonnull TrackedEntityMetadataService trackedEntityMetadataService, @Nonnull TrackedEntityRuleRepository trackedEntityRuleRepository )
7070
{

fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/AbstractRule.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,7 @@
9898
"SELECT r FROM AbstractRule r JOIN r.applicableCodeSet acs WHERE r.fhirResourceType=:fhirResourceType AND r.enabled=true " +
9999
"AND r.expEnabled=true AND acs.code IN (:codeSetCodes)" ),
100100
@NamedQuery( name = AbstractRule.FIND_IMP_RULE_BY_ID_NAMED_QUERY, query =
101-
"SELECT r FROM AbstractRule r WHERE r.fhirResourceType=:fhirResourceType AND TYPE(r)=:dhisResourceType AND r.id=:ruleId AND r.enabled=true AND r.impEnabled=true" ),
102-
@NamedQuery( name = AbstractRule.FIND_ALL_EXP_NAMED_QUERY, query = "SELECT our FROM OrganizationUnitRule our WHERE our.enabled=true AND our.expEnabled=true AND (our.fhirCreateEnabled=true OR our.fhirUpdateEnabled=true)" )
101+
"SELECT r FROM AbstractRule r WHERE r.fhirResourceType=:fhirResourceType AND TYPE(r)=:dhisResourceType AND r.id=:ruleId AND r.enabled=true AND r.impEnabled=true" )
103102
} )
104103
@JsonTypeInfo( use = JsonTypeInfo.Id.NAME, property = "dhisResourceType", include = JsonTypeInfo.As.EXISTING_PROPERTY )
105104
@JsonSubTypes( {
@@ -129,8 +128,6 @@ public abstract class AbstractRule extends VersionedBaseMetadata implements Seri
129128

130129
public static final String FIND_IMP_RULE_BY_ID_NAMED_QUERY = "AbstractRule.findImpById";
131130

132-
public static final String FIND_ALL_EXP_NAMED_QUERY = "AbstractRule.findAllExp";
133-
134131
public static final int MAX_NAME_LENGTH = 230;
135132

136133
@NotBlank

fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/repository/CustomRuleRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,6 @@ public interface CustomRuleRepository
6767

6868
@RestResource( exported = false )
6969
@Nonnull
70-
Collection<RuleInfo<? extends AbstractRule>> findAllExp();
70+
Collection<RuleInfo<? extends AbstractRule>> findAllExp( @Nonnull DhisResourceType dhisResourceType );
7171

7272
}

fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/repository/impl/CustomRuleRepositoryImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,12 @@ public List<RuleInfo<? extends AbstractRule>> findAllExpByInputData( @Nonnull Fh
111111

112112
@RestResource( exported = false )
113113
@Nonnull
114-
@Cacheable( key = "{#root.methodName}", cacheManager = "metadataCacheManager", cacheNames = "rule" )
114+
@Cacheable( key = "{#root.methodName, #a0}", cacheManager = "metadataCacheManager", cacheNames = "rule" )
115115
@Transactional( readOnly = true )
116-
public Collection<RuleInfo<? extends AbstractRule>> findAllExp()
116+
public Collection<RuleInfo<? extends AbstractRule>> findAllExp( @Nonnull DhisResourceType dhisResourceType )
117117
{
118-
final List<AbstractRule> rules = entityManager.createNamedQuery( AbstractRule.FIND_ALL_EXP_NAMED_QUERY, AbstractRule.class ).getResultList();
118+
final List<AbstractRule> rules = entityManager.createQuery( "SELECT r FROM " + dhisResourceType.getRuleType() +
119+
" r WHERE r.enabled=true AND r.expEnabled=true AND (r.fhirCreateEnabled=true OR r.fhirUpdateEnabled=true)", AbstractRule.class ).getResultList();
119120

120121
return rules.stream().map( r -> {
121122
Hibernate.initialize( r.getDhisDataReferences() );

fhir/src/main/java/org/dhis2/fhir/adapter/fhir/transform/dhis/impl/metadata/AbstractDhisMetadataToFhirRequestResolver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ protected AbstractDhisMetadataToFhirRequestResolver( @Nonnull FhirClientReposito
6161
@Override
6262
public List<RuleInfo<? extends AbstractRule>> resolveRules( @Nonnull ScriptedDhisResource dhisResource )
6363
{
64-
return ruleRepository.findAllExp().stream().sorted().collect( Collectors.toList() );
64+
return ruleRepository.findAllExp( dhisResource.getResourceType() ).stream().sorted().collect( Collectors.toList() );
6565
}
6666

6767
@Nonnull
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,15 @@
5959
* @param <F> the concrete type of the FHIR resource into which the DHIS2 resource should be transformed.
6060
* @author volsch
6161
*/
62-
public abstract class AbstractProgramMetadataToFhirCarePlanTransformer<F extends IBaseResource> extends AbstractReadOnlyDhisMetadataToTypedFhirTransformer<AccessibleScriptedDhisMetadata, F, ProgramMetadataRule>
62+
public abstract class AbstractProgramMetadataToFhirPlanDefinitionTransformer<F extends IBaseResource> extends AbstractReadOnlyDhisMetadataToTypedFhirTransformer<AccessibleScriptedDhisMetadata, F, ProgramMetadataRule>
6363
{
6464
private final Logger logger = LoggerFactory.getLogger( getClass() );
6565

6666
private final TrackedEntityMetadataService trackedEntityMetadataService;
6767

6868
private final TrackedEntityRuleRepository trackedEntityRuleRepository;
6969

70-
public AbstractProgramMetadataToFhirCarePlanTransformer( @Nonnull ScriptExecutor scriptExecutor, @Nonnull LockManager lockManager, @Nonnull SystemRepository systemRepository, @Nonnull FhirResourceRepository fhirResourceRepository,
70+
public AbstractProgramMetadataToFhirPlanDefinitionTransformer( @Nonnull ScriptExecutor scriptExecutor, @Nonnull LockManager lockManager, @Nonnull SystemRepository systemRepository, @Nonnull FhirResourceRepository fhirResourceRepository,
7171
@Nonnull FhirDhisAssignmentRepository fhirDhisAssignmentRepository, @Nonnull OrganizationUnitService organizationUnitService,
7272
@Nonnull TrackedEntityMetadataService trackedEntityMetadataService, @Nonnull TrackedEntityRuleRepository trackedEntityRuleRepository )
7373
{

0 commit comments

Comments
 (0)