@Test public void transformInternal() { final WritableProgramStage programStage = new WritableProgramStage(); programStage.setId( "b1234567890" ); programStage.setName( "Test Stage 1" ); programStage.setDescription( "Test Description 1" ); programStage.setRepeatable( false ); programStage.setDataElements( new ArrayList<>() ); WritableProgramStageDataElement programStageDataElement = new WritableProgramStageDataElement(); WritableDataElement dataElement = new WritableDataElement(); dataElement.setId( "d0123456789" ); dataElement.setName( "Value 1" ); dataElement.setValueType( ValueType.TEXT ); programStageDataElement.setCompulsory( false ); programStageDataElement.setElement( dataElement ); programStage.getDataElements().add( programStageDataElement ); WritableOptionSet optionSet = new WritableOptionSet(); optionSet.setOptions( new ArrayList<>() ); optionSet.getOptions().add( new WritableOption( "5", "Test Value 1" ) ); optionSet.getOptions().add( new WritableOption( "7", "Test Value 2" ) ); programStageDataElement = new WritableProgramStageDataElement(); dataElement = new WritableDataElement(); dataElement.setId( "d1123456789" ); dataElement.setName( "Value 2" ); dataElement.setValueType( ValueType.INTEGER ); dataElement.setOptionSetValue( true ); dataElement.setOptionSet( optionSet ); programStageDataElement.setCompulsory( true ); programStageDataElement.setElement( dataElement ); programStage.getDataElements().add( programStageDataElement ); final Questionnaire fhirQuestionnaire = new Questionnaire(); transformer.transformInternal( fhirClient, context, new RuleInfo<>( new ProgramStageMetadataRule(), Collections.emptyList() ), new HashMap<>(), new WritableScriptedDhisMetadata( programStage, scriptExecutionContext ), fhirQuestionnaire ); Assert.assertEquals( "b1234567890", fhirQuestionnaire.getUrl() ); Assert.assertEquals( "Test Stage 1", fhirQuestionnaire.getTitle() ); Assert.assertEquals( "Test Description 1", fhirQuestionnaire.getDescription() ); Assert.assertEquals( 2, fhirQuestionnaire.getItem().size() ); Assert.assertEquals( "d0123456789", fhirQuestionnaire.getItem().get( 0 ).getLinkId() ); Assert.assertEquals( "Value 1", fhirQuestionnaire.getItem().get( 0 ).getText() ); Assert.assertEquals( 0, fhirQuestionnaire.getItem().get( 0 ).getAnswerOption().size() ); Assert.assertFalse( fhirQuestionnaire.getItem().get( 0 ).getRequired() ); Assert.assertEquals( 1, fhirQuestionnaire.getItem().get( 0 ).getExtension().size() ); Assert.assertEquals( ValueTypeExtensionUtils.URL, fhirQuestionnaire.getItem().get( 0 ).getExtension().get( 0 ).getUrl() ); Assert.assertTrue( fhirQuestionnaire.getItem().get( 0 ).getExtension().get( 0 ).getValue() instanceof StringType ); Assert.assertEquals( "TEXT", ( (StringType) fhirQuestionnaire.getItem().get( 0 ).getExtension().get( 0 ).getValue() ).getValue() ); Assert.assertEquals( "d1123456789", fhirQuestionnaire.getItem().get( 1 ).getLinkId() ); Assert.assertEquals( "Value 2", fhirQuestionnaire.getItem().get( 1 ).getText() ); Assert.assertEquals( 2, fhirQuestionnaire.getItem().get( 1 ).getAnswerOption().size() ); Assert.assertTrue( fhirQuestionnaire.getItem().get( 1 ).getAnswerOption().get( 0 ).getValue() instanceof Coding ); Assert.assertEquals( "5", ( (Coding) fhirQuestionnaire.getItem().get( 1 ).getAnswerOption().get( 0 ).getValue() ).getCode() ); Assert.assertEquals( "Test Value 1", ( (Coding) fhirQuestionnaire.getItem().get( 1 ).getAnswerOption().get( 0 ).getValue() ).getDisplay() ); Assert.assertEquals( "7", ( (Coding) fhirQuestionnaire.getItem().get( 1 ).getAnswerOption().get( 1 ).getValue() ).getCode() ); Assert.assertEquals( "Test Value 2", ( (Coding) fhirQuestionnaire.getItem().get( 1 ).getAnswerOption().get( 1 ).getValue() ).getDisplay() ); Assert.assertTrue( fhirQuestionnaire.getItem().get( 1 ).getRequired() ); Assert.assertEquals( 1, fhirQuestionnaire.getItem().get( 1 ).getExtension().size() ); Assert.assertEquals( ValueTypeExtensionUtils.URL, fhirQuestionnaire.getItem().get( 1 ).getExtension().get( 0 ).getUrl() ); Assert.assertTrue( fhirQuestionnaire.getItem().get( 1 ).getExtension().get( 0 ).getValue() instanceof StringType ); Assert.assertEquals( "INTEGER", ( (StringType) fhirQuestionnaire.getItem().get( 1 ).getExtension().get( 0 ).getValue() ).getValue() ); }
@Override protected boolean transformInternal( @Nonnull FhirClient fhirClient, @Nonnull DhisToFhirTransformerContext context, @Nonnull RuleInfo<ProgramStageMetadataRule> ruleInfo, @Nonnull Map<String, Object> scriptVariables, @Nonnull AccessibleScriptedDhisMetadata input, @Nonnull IBaseResource output ) { final ProgramStage dhisProgramStage = (ProgramStage) input.getDhisResource(); final Questionnaire fhirQuestionnaire = (Questionnaire) output; fhirQuestionnaire.setUrl( dhisProgramStage.getId() ); fhirQuestionnaire.setTitle( dhisProgramStage.getName() ); fhirQuestionnaire.setStatus( Enumerations.PublicationStatus.ACTIVE ); fhirQuestionnaire.setDescription( dhisProgramStage.getDescription() ); fhirQuestionnaire.setItem( null ); dhisProgramStage.getDataElements().forEach( dataElement -> { final QuestionnaireItemType type = convertValueType( dataElement.getElement().getValueType() ); if ( type != null ) { final QuestionnaireItemComponent itemComponent = fhirQuestionnaire.addItem(); itemComponent.setLinkId( dataElement.getElementId() ); itemComponent.setText( dataElement.getElement().getName() ); itemComponent.setRequired( dataElement.isCompulsory() ); itemComponent.setType( type ); ValueTypeExtensionUtils.setValue( itemComponent, dataElement.getElement().getValueType(), getTypeFactory() ); if ( dataElement.getElement().isOptionSetValue() ) { dataElement.getElement().getOptionSet().getOptions().forEach( option -> itemComponent.addAnswerOption().setValue( new Coding().setCode( option.getCode() ).setDisplay( option.getName() ) ) ); } } } ); return true; }
R4ProgramStageMetadataToFhirQuestionnaireTransformer extends AbstractProgramStageMetadataToFhirQuestionnaireTransformer<Questionnaire> { @Override protected boolean transformInternal( @Nonnull FhirClient fhirClient, @Nonnull DhisToFhirTransformerContext context, @Nonnull RuleInfo<ProgramStageMetadataRule> ruleInfo, @Nonnull Map<String, Object> scriptVariables, @Nonnull AccessibleScriptedDhisMetadata input, @Nonnull IBaseResource output ) { final ProgramStage dhisProgramStage = (ProgramStage) input.getDhisResource(); final Questionnaire fhirQuestionnaire = (Questionnaire) output; fhirQuestionnaire.setUrl( dhisProgramStage.getId() ); fhirQuestionnaire.setTitle( dhisProgramStage.getName() ); fhirQuestionnaire.setStatus( Enumerations.PublicationStatus.ACTIVE ); fhirQuestionnaire.setDescription( dhisProgramStage.getDescription() ); fhirQuestionnaire.setItem( null ); dhisProgramStage.getDataElements().forEach( dataElement -> { final QuestionnaireItemType type = convertValueType( dataElement.getElement().getValueType() ); if ( type != null ) { final QuestionnaireItemComponent itemComponent = fhirQuestionnaire.addItem(); itemComponent.setLinkId( dataElement.getElementId() ); itemComponent.setText( dataElement.getElement().getName() ); itemComponent.setRequired( dataElement.isCompulsory() ); itemComponent.setType( type ); ValueTypeExtensionUtils.setValue( itemComponent, dataElement.getElement().getValueType(), getTypeFactory() ); if ( dataElement.getElement().isOptionSetValue() ) { dataElement.getElement().getOptionSet().getOptions().forEach( option -> itemComponent.addAnswerOption().setValue( new Coding().setCode( option.getCode() ).setDisplay( option.getName() ) ) ); } } } ); return true; } }
R4ProgramStageMetadataToFhirQuestionnaireTransformer extends AbstractProgramStageMetadataToFhirQuestionnaireTransformer<Questionnaire> { @Override protected boolean transformInternal( @Nonnull FhirClient fhirClient, @Nonnull DhisToFhirTransformerContext context, @Nonnull RuleInfo<ProgramStageMetadataRule> ruleInfo, @Nonnull Map<String, Object> scriptVariables, @Nonnull AccessibleScriptedDhisMetadata input, @Nonnull IBaseResource output ) { final ProgramStage dhisProgramStage = (ProgramStage) input.getDhisResource(); final Questionnaire fhirQuestionnaire = (Questionnaire) output; fhirQuestionnaire.setUrl( dhisProgramStage.getId() ); fhirQuestionnaire.setTitle( dhisProgramStage.getName() ); fhirQuestionnaire.setStatus( Enumerations.PublicationStatus.ACTIVE ); fhirQuestionnaire.setDescription( dhisProgramStage.getDescription() ); fhirQuestionnaire.setItem( null ); dhisProgramStage.getDataElements().forEach( dataElement -> { final QuestionnaireItemType type = convertValueType( dataElement.getElement().getValueType() ); if ( type != null ) { final QuestionnaireItemComponent itemComponent = fhirQuestionnaire.addItem(); itemComponent.setLinkId( dataElement.getElementId() ); itemComponent.setText( dataElement.getElement().getName() ); itemComponent.setRequired( dataElement.isCompulsory() ); itemComponent.setType( type ); ValueTypeExtensionUtils.setValue( itemComponent, dataElement.getElement().getValueType(), getTypeFactory() ); if ( dataElement.getElement().isOptionSetValue() ) { dataElement.getElement().getOptionSet().getOptions().forEach( option -> itemComponent.addAnswerOption().setValue( new Coding().setCode( option.getCode() ).setDisplay( option.getName() ) ) ); } } } ); return true; } R4ProgramStageMetadataToFhirQuestionnaireTransformer( @Nonnull ScriptExecutor scriptExecutor, @Nonnull LockManager lockManager, @Nonnull SystemRepository systemRepository, @Nonnull FhirResourceRepository fhirResourceRepository,
        @Nonnull FhirDhisAssignmentRepository fhirDhisAssignmentRepository, @Nonnull OrganizationUnitService organizationUnitService ); }
R4ProgramStageMetadataToFhirQuestionnaireTransformer extends AbstractProgramStageMetadataToFhirQuestionnaireTransformer<Questionnaire> { @Override protected boolean transformInternal( @Nonnull FhirClient fhirClient, @Nonnull DhisToFhirTransformerContext context, @Nonnull RuleInfo<ProgramStageMetadataRule> ruleInfo, @Nonnull Map<String, Object> scriptVariables, @Nonnull AccessibleScriptedDhisMetadata input, @Nonnull IBaseResource output ) { final ProgramStage dhisProgramStage = (ProgramStage) input.getDhisResource(); final Questionnaire fhirQuestionnaire = (Questionnaire) output; fhirQuestionnaire.setUrl( dhisProgramStage.getId() ); fhirQuestionnaire.setTitle( dhisProgramStage.getName() ); fhirQuestionnaire.setStatus( Enumerations.PublicationStatus.ACTIVE ); fhirQuestionnaire.setDescription( dhisProgramStage.getDescription() ); fhirQuestionnaire.setItem( null ); dhisProgramStage.getDataElements().forEach( dataElement -> { final QuestionnaireItemType type = convertValueType( dataElement.getElement().getValueType() ); if ( type != null ) { final QuestionnaireItemComponent itemComponent = fhirQuestionnaire.addItem(); itemComponent.setLinkId( dataElement.getElementId() ); itemComponent.setText( dataElement.getElement().getName() ); itemComponent.setRequired( dataElement.isCompulsory() ); itemComponent.setType( type ); ValueTypeExtensionUtils.setValue( itemComponent, dataElement.getElement().getValueType(), getTypeFactory() ); if ( dataElement.getElement().isOptionSetValue() ) { dataElement.getElement().getOptionSet().getOptions().forEach( option -> itemComponent.addAnswerOption().setValue( new Coding().setCode( option.getCode() ).setDisplay( option.getName() ) ) ); } } } ); return true; } R4ProgramStageMetadataToFhirQuestionnaireTransformer( @Nonnull ScriptExecutor scriptExecutor, @Nonnull LockManager lockManager, @Nonnull SystemRepository systemRepository, @Nonnull FhirResourceRepository fhirResourceRepository,
        @Nonnull FhirDhisAssignmentRepository fhirDhisAssignmentRepository, @Nonnull OrganizationUnitService organizationUnitService ); @Nonnull @Override Set<FhirVersion> getFhirVersions(); }
R4ProgramStageMetadataToFhirQuestionnaireTransformer extends AbstractProgramStageMetadataToFhirQuestionnaireTransformer<Questionnaire> { @Override protected boolean transformInternal( @Nonnull FhirClient fhirClient, @Nonnull DhisToFhirTransformerContext context, @Nonnull RuleInfo<ProgramStageMetadataRule> ruleInfo, @Nonnull Map<String, Object> scriptVariables, @Nonnull AccessibleScriptedDhisMetadata input, @Nonnull IBaseResource output ) { final ProgramStage dhisProgramStage = (ProgramStage) input.getDhisResource(); final Questionnaire fhirQuestionnaire = (Questionnaire) output; fhirQuestionnaire.setUrl( dhisProgramStage.getId() ); fhirQuestionnaire.setTitle( dhisProgramStage.getName() ); fhirQuestionnaire.setStatus( Enumerations.PublicationStatus.ACTIVE ); fhirQuestionnaire.setDescription( dhisProgramStage.getDescription() ); fhirQuestionnaire.setItem( null ); dhisProgramStage.getDataElements().forEach( dataElement -> { final QuestionnaireItemType type = convertValueType( dataElement.getElement().getValueType() ); if ( type != null ) { final QuestionnaireItemComponent itemComponent = fhirQuestionnaire.addItem(); itemComponent.setLinkId( dataElement.getElementId() ); itemComponent.setText( dataElement.getElement().getName() ); itemComponent.setRequired( dataElement.isCompulsory() ); itemComponent.setType( type ); ValueTypeExtensionUtils.setValue( itemComponent, dataElement.getElement().getValueType(), getTypeFactory() ); if ( dataElement.getElement().isOptionSetValue() ) { dataElement.getElement().getOptionSet().getOptions().forEach( option -> itemComponent.addAnswerOption().setValue( new Coding().setCode( option.getCode() ).setDisplay( option.getName() ) ) ); } } } ); return true; } R4ProgramStageMetadataToFhirQuestionnaireTransformer( @Nonnull ScriptExecutor scriptExecutor, @Nonnull LockManager lockManager, @Nonnull SystemRepository systemRepository, @Nonnull FhirResourceRepository fhirResourceRepository,
        @Nonnull FhirDhisAssignmentRepository fhirDhisAssignmentRepository, @Nonnull OrganizationUnitService organizationUnitService ); @Nonnull @Override Set<FhirVersion> getFhirVersions();  }