@Test
public void testTagDocument_Entry_Level_Tagging_Four_Sections()
		throws Exception {

	// Arrange
	logger.debug(c32);
	String factModelXml = documentFactModelExtractor.extractFactModel(c32,
			fileReader.readFile("testXacmlResultRedactHIV.xml"));
	c32 = embeddedClinicalDocumentExtractor
			.extractClinicalDocumentFromFactModel(factModelXml);
	factModelXml = removeEmbeddedClinicalDocument(factModelXml);
	final FactModel factModel = marshaller.unmarshalFromXml(
			FactModel.class, factModelXml);
	final String executionResponseContainer = ruleExecutionService
			.assertAndExecuteClinicalFacts(factModel)
			.getRuleExecutionResponseContainer();
	// Act
	final String taggedDocument = documentTagger.tagDocument(c32,
			executionResponseContainer);
	// Assert
	final Document taggedDoc = documentXmlConverter
			.loadDocument(taggedDocument);
	verifyEntryLevelTags(taggedDoc, "d1e1168",
			Arrays.asList(new String[] { "ENCRYPT", "NODSCLCD", "V" }));
	verifyEntryLevelTags(taggedDoc, "d1e503",
			Arrays.asList(new String[] { "ENCRYPT", "NODSCLCD", "R" }));
	verifyEntryLevelTags(taggedDoc, "d1e1168",
			Arrays.asList(new String[] { "ENCRYPT", "NODSCLCD", "V" }));
	verifyEntryLevelTags(taggedDoc, "d1e341",
			Arrays.asList(new String[] { "ENCRYPT", "NODSCLCD", "V" }));
	verifyEntryLevelTags(taggedDoc, "d1e849",
			Arrays.asList(new String[] { "ENCRYPT", "NODSCLCD", "V" }));
	verifyEntryLevelTags(taggedDoc, "d1e798",
			Arrays.asList(new String[] { "ENCRYPT", "NODSCLCD", "V" }));
	verifyEntryLevelTags(taggedDoc, "d1e220",
			Arrays.asList(new String[] { "ENCRYPT", "NODSCLCD", "V" }));
	verifyEntryLevelTags(taggedDoc, "d1e259",
			Arrays.asList(new String[] { "ENCRYPT", "NODSCLCD", "R" }));
	verifyEntryLevelTags(taggedDoc, "d1e564",
			Arrays.asList(new String[] { "ENCRYPT", "NODSCLCD", "V" }));
	verifyEntryLevelTags(taggedDoc, "d1e1261",
			Arrays.asList(new String[] { "ENCRYPT", "NORDSCLCD", "R" }));
}