@Test
public void testRedactDocument_RemC32() throws Throwable {

	// Arrange
	initDocumentRedactorWithActualServices();
	String remC32 = fileReader.readFile("testRemC32.xml");
	final String remRuleExecutionContainerActual = fileReader
			.readFile("testRemRuleExecutionContainerActual.xml");
	final RuleExecutionContainer remRuleExecutionContainerActualObj = marshaller
			.unmarshalFromXml(RuleExecutionContainer.class,
					remRuleExecutionContainerActual);
	final String remXacmlResult = fileReader
			.readFile("testRemXacmlResult.xml");
	final XacmlResult remXacmlResultObj = marshaller.unmarshalFromXml(
			XacmlResult.class, remXacmlResult);
	final String factModelXml = factModelExtractor.extractFactModel(remC32,
			marshaller.marshal(remXacmlResultObj));
	final FactModel factModel = marshaller.unmarshalFromXml(
			FactModel.class, factModelXml);
	setValueSetCategories(factModel);
	remC32 = embeddedClinicalDocumentExtractor
			.extractClinicalDocumentFromFactModel(factModelXml);
	final String ethObservationId = "d17e379";
	final String hivObservationId = "d17e356";
	factModel.setXacmlResult(xacmlResultMock);
	// Act
	final String redactedC32 = documentRedactor.redactDocument(remC32,
			remRuleExecutionContainerActualObj, factModel)
			.getRedactedDocument();
	// Assert
	// sections
	assertNotNull(getSectionElement(remC32, PROBLEMS_SECTION));
	assertNotNull(getSectionElement(remC32, MEDICATIONS_SECTION));
	assertNull(getSectionElement(remC32, ALLERGIES_SECTION));
	assertNull(getSectionElement(remC32, RESULTS_SECTION));
	assertNotNull(getSectionElement(redactedC32, PROBLEMS_SECTION));
	assertNotNull(getSectionElement(redactedC32, MEDICATIONS_SECTION));
	assertNull(getSectionElement(redactedC32, ALLERGIES_SECTION));
	assertNull(getSectionElement(redactedC32, RESULTS_SECTION));
	// entries
	assertNotNull(getEntryElement(remC32, ethObservationId));
	assertNotNull(getEntryElement(remC32, hivObservationId));
	assertNull(getEntryElement(redactedC32, ethObservationId));
	assertNull(getEntryElement(redactedC32, hivObservationId));
	// human readable
	assertTrue(getHumanReadableTextNodeList(remC32, "substance abuse")
			.getLength() > 0);
	assertTrue(getHumanReadableTextNodeList(remC32, "hiv").getLength() > 0);
	assertTrue(getHumanReadableTextNodeList(redactedC32, "substance abuse")
			.getLength() == 0);
	assertTrue(getHumanReadableTextNodeList(redactedC32, "hiv").getLength() == 0);
}