Updates to SocialHistory Observation

Added author and organization to the serialzation
modified the naming for observation
diff --git a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/ProcessSectionSwitch.java b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/ProcessSectionSwitch.java
index c674864..470d0f8 100644
--- a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/ProcessSectionSwitch.java
+++ b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/ProcessSectionSwitch.java
@@ -138,7 +138,7 @@
 				Row row2 = sheet.createRow(0);
 				int offset = SheetHeaderUtil.createPatientHeader(row1, row2, 0);
 				offset = SheetHeaderUtil.createEncounterIDHeader(row1, row2, offset);
-				offset = SheetHeaderUtil.createSocialHistoryHeader(row1, row2, offset);
+				offset = SheetHeaderUtil.createObservationHeader(row1, row2, offset);
 			}
 			Row row = sheet.createRow(sheet.getPhysicalNumberOfRows());
 			int offset = SpreadsheetSerializer.serializePatient(row, 0, this.documentMetadata, patientRole);
@@ -162,7 +162,7 @@
 				Row row2 = sheet.createRow(0);
 				int offset = SheetHeaderUtil.createPatientHeader(row1, row2, 0);
 				offset = SheetHeaderUtil.createEncounterIDHeader(row1, row2, offset);
-				offset = SheetHeaderUtil.createSocialHistoryHeader(row1, row2, offset);
+				offset = SheetHeaderUtil.createObservationHeader(row1, row2, offset);
 			}
 			Row row = sheet.createRow(sheet.getPhysicalNumberOfRows());
 			int offset = SpreadsheetSerializer.serializePatient(row, 0, this.documentMetadata, patientRole);
@@ -186,12 +186,12 @@
 				Row row2 = sheet.createRow(0);
 				int offset = SheetHeaderUtil.createPatientHeader(row1, row2, 0);
 				offset = SheetHeaderUtil.createEncounterIDHeader(row1, row2, offset);
-				offset = SheetHeaderUtil.createSocialHistoryHeader(row1, row2, offset);
+				offset = SheetHeaderUtil.createObservationHeader(row1, row2, offset);
 			}
 			Row row = sheet.createRow(sheet.getPhysicalNumberOfRows());
 			int offset = SpreadsheetSerializer.serializePatient(row, 0, this.documentMetadata, patientRole);
 			offset = SpreadsheetSerializer.serializeEnounterID(row, offset, observation, encounters);
-			offset = SpreadsheetSerializer.serializeObservation(row, offset, observation, false);
+			offset = SpreadsheetSerializer.serializeObservation(row, offset, observation, false, false);
 			SpreadsheetSerializer.serializeSectionAndFileName(row, offset, observation.getSection(), file.getName());
 		}
 
@@ -235,12 +235,12 @@
 				Row row2 = sheet.createRow(0);
 				int offset = SheetHeaderUtil.createPatientHeader(row1, row2, 0);
 				offset = SheetHeaderUtil.createEncounterIDHeader(row1, row2, offset);
-				offset = SheetHeaderUtil.createSocialHistoryHeader(row1, row2, offset);
+				offset = SheetHeaderUtil.createObservationHeader(row1, row2, offset);
 			}
 			Row row = sheet.createRow(sheet.getPhysicalNumberOfRows());
 			int offset = SpreadsheetSerializer.serializePatient(row, 0, this.documentMetadata, patientRole);
 			offset = SpreadsheetSerializer.serializeEnounterID(row, offset, observation, encounters);
-			offset = SpreadsheetSerializer.serializeObservation(row, offset, observation, false);
+			offset = SpreadsheetSerializer.serializeObservation(row, offset, observation, false, false);
 			SpreadsheetSerializer.serializeSectionAndFileName(row, offset, observation.getSection(), file.getName());
 		}
 
@@ -259,7 +259,7 @@
 				Row row2 = sheet.createRow(0);
 				int offset = SheetHeaderUtil.createPatientHeader(row1, row2, 0);
 				offset = SheetHeaderUtil.createEncounterIDHeader(row1, row2, offset);
-				offset = SheetHeaderUtil.createSocialHistoryHeader(row1, row2, offset);
+				offset = SheetHeaderUtil.createObservationHeader(row1, row2, offset);
 			}
 			Row row = sheet.createRow(sheet.getPhysicalNumberOfRows());
 			int offset = SpreadsheetSerializer.serializePatient(row, 0, this.documentMetadata, patientRole);
@@ -306,7 +306,7 @@
 				Row row2 = sheet.createRow(0);
 				int offset = SheetHeaderUtil.createPatientHeader(row1, row2, 0);
 				offset = SheetHeaderUtil.createEncounterIDHeader(row1, row2, offset);
-				offset = SheetHeaderUtil.createSocialHistoryHeader(row1, row2, offset);
+				offset = SheetHeaderUtil.createObservationHeader(row1, row2, offset);
 			}
 			Row row = sheet.createRow(sheet.getPhysicalNumberOfRows());
 			int offset = SpreadsheetSerializer.serializePatient(row, 0, this.documentMetadata, patientRole);
@@ -353,7 +353,7 @@
 				Row row2 = sheet.createRow(0);
 				int offset = SheetHeaderUtil.createPatientHeader(row1, row2, 0);
 				offset = SheetHeaderUtil.createEncounterIDHeader(row1, row2, offset);
-				offset = SheetHeaderUtil.createSocialHistoryHeader(row1, row2, offset);
+				offset = SheetHeaderUtil.createObservationHeader(row1, row2, offset);
 			}
 			Row row = sheet.createRow(sheet.getPhysicalNumberOfRows());
 			int offset = SpreadsheetSerializer.serializePatient(row, 0, this.documentMetadata, patientRole);
@@ -480,7 +480,7 @@
 				Row row2 = sheet.createRow(0);
 				int offset = SheetHeaderUtil.createPatientHeader(row1, row2, 0);
 				offset = SheetHeaderUtil.createEncounterIDHeader(row1, row2, offset);
-				offset = SheetHeaderUtil.createSocialHistoryHeader(row1, row2, offset);
+				offset = SheetHeaderUtil.createObservationHeader(row1, row2, offset);
 			}
 			Row row = sheet.createRow(sheet.getPhysicalNumberOfRows());
 			int offset = SpreadsheetSerializer.serializePatient(row, 0, this.documentMetadata, patientRole);
diff --git a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SectionSwitch.java b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SectionSwitch.java
index 3ef88d6..f8c332a 100644
--- a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SectionSwitch.java
+++ b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SectionSwitch.java
@@ -229,7 +229,7 @@
 
 			int offset = SheetHeaderUtil.createPatientHeader(row1, row2, 0);
 			offset = SheetHeaderUtil.createEncounterIDHeader(row1, row2, offset);
-			offset = SheetHeaderUtil.createSocialHistoryHeader(row1, row2, offset);
+			offset = SheetHeaderUtil.createObservationHeader(row1, row2, offset);
 			emptySectionOffset.put(sheet.getSheetName(), offset);
 		}
 
@@ -809,7 +809,7 @@
 
 			int offset = SheetHeaderUtil.createPatientHeader(row1, row2, 0);
 			offset = SheetHeaderUtil.createEncounterIDHeader(row1, row2, offset);
-			offset = SheetHeaderUtil.createSocialHistoryHeader(row1, row2, offset);
+			offset = SheetHeaderUtil.createObservationHeaderWithAuthor(row1, row2, offset);
 			emptySectionOffset.put(sheet.getSheetName(), offset);
 		}
 
@@ -1036,7 +1036,7 @@
 
 			offset = SpreadsheetSerializer.serializeEnounterID(row, offset, sa, encounters);
 
-			offset = SpreadsheetSerializer.serializeObservation(row, offset, sa, false);
+			offset = SpreadsheetSerializer.serializeObservation(row, offset, sa, false, true);
 
 			SpreadsheetSerializer.serializeSectionAndFileName(row, offset, sa.getSection(), fileName);
 
diff --git a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SheetHeaderUtil.java b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SheetHeaderUtil.java
index 6332b57..dbcb92f 100644
--- a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SheetHeaderUtil.java
+++ b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SheetHeaderUtil.java
@@ -233,7 +233,7 @@
 		return offset;
 	}
 
-	static int createSocialHistoryHeader(Row row1, Row row2, int offset) {
+	static int createObservationHeader(Row row1, Row row2, int offset) {
 		row2.createCell(offset++).setCellValue(replaceSpace("ID"));
 		row2.createCell(offset++).setCellValue(replaceSpace("Date"));
 		row2.createCell(offset++).setCellValue(replaceSpace("Location"));
@@ -246,6 +246,21 @@
 		return offset;
 	}
 
+	static int createObservationHeaderWithAuthor(Row row1, Row row2, int offset) {
+		row2.createCell(offset++).setCellValue(replaceSpace("ID"));
+		row2.createCell(offset++).setCellValue(replaceSpace("Date"));
+		row2.createCell(offset++).setCellValue(replaceSpace("Location"));
+		row2.getSheet().setColumnHidden(offset - 1, hideColumns);
+		offset = addCodeHeader(row2, offset, "Observation");
+		row2.createCell(offset++).setCellValue(replaceSpace("Value"));
+		row2.createCell(offset++).setCellValue(replaceSpace("Location"));
+		row2.getSheet().setColumnHidden(offset - 1, hideColumns);
+		row2.createCell(offset++).setCellValue(replaceSpace("Organization"));
+		row2.createCell(offset++).setCellValue(replaceSpace("Author"));
+		offset = addSectionHeader(row2, offset);
+		return offset;
+	}
+
 	static int createAdvanceDirectivesHeader(Row row1, Row row2, int offset) {
 		row2.createCell(offset++).setCellValue(replaceSpace("ID"));
 		row2.createCell(offset++).setCellValue(replaceSpace("Date"));
diff --git a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SpreadsheetSerializer.java b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SpreadsheetSerializer.java
index c72bedd..489f17d 100644
--- a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SpreadsheetSerializer.java
+++ b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SpreadsheetSerializer.java
@@ -1313,31 +1313,22 @@
 	}
 
 	static int serializeObservation(Row row, int offset, Observation resultObservation) {
-		return serializeObservation(row, offset, resultObservation, true);
+		return serializeObservation(row, offset, resultObservation, true, false);
 	}
 
 	/**
 	 * @param row
 	 * @param offset
-	 * @param resultObservation
+	 * @param observation
 	 * @return
 	 */
-	static int serializeObservation(Row row, int offset, Observation resultObservation, boolean referenceRange) {
+	static int serializeObservation(Row row, int offset, Observation observation, boolean referenceRange,
+			boolean author) {
 
-		/*
-		 *
-		 * row2.createCell(offset++).setCellValue("ID");
-		 * row2.createCell(offset++).setCellValue("Test");
-		 * row2.createCell(offset++).setCellValue("Description");
-		 * row2.createCell(offset++).setCellValue("Result");
-		 * // undo to go back to two rows for headers row1.getSheet().addMergedRegion(new CellRangeAddress(0, 0, secondColumn, offset));
-		 * row2.createCell(offset++).setCellValue("Range");
-		 *
-		 */
 		Cell cell = row.createCell(offset++);
 
 		StringBuffer sb = new StringBuffer();
-		for (II ii : resultObservation.getIds()) {
+		for (II ii : observation.getIds()) {
 			sb.append(CDAValueUtil.getKey2(ii));
 		}
 
@@ -1347,7 +1338,7 @@
 		cell = row.createCell(offset++);
 
 		sb = new StringBuffer();
-		IVL_TS ivlts = resultObservation.getEffectiveTime();
+		IVL_TS ivlts = observation.getEffectiveTime();
 
 		if (ivlts != null) {
 
@@ -1391,10 +1382,9 @@
 
 		// currently only adding status code to result observations
 		if (referenceRange) {
-			if (resultObservation.getStatusCode() != null &&
-					!StringUtils.isEmpty(resultObservation.getStatusCode().getCode())) {
-				row.createCell(offset++).setCellValue(resultObservation.getStatusCode().getCode());
-				row.createCell(offset++).setCellValue(CDAUtil.getDomainPath(resultObservation.getStatusCode()));
+			if (observation.getStatusCode() != null && !StringUtils.isEmpty(observation.getStatusCode().getCode())) {
+				row.createCell(offset++).setCellValue(observation.getStatusCode().getCode());
+				row.createCell(offset++).setCellValue(CDAUtil.getDomainPath(observation.getStatusCode()));
 			} else {
 				row.createCell(offset++).setCellValue("");
 				row.createCell(offset++).setCellValue("");
@@ -1402,12 +1392,12 @@
 		}
 
 		offset = SpreadsheetSerializer.appendCodeShowNullFlavor(
-			row, offset, resultObservation.getSection(), resultObservation.getCode(), resultObservation.getText());
+			row, offset, observation.getSection(), observation.getCode(), observation.getText());
 
 		String value = "";
 		String valueLocation = "";
-		for (ANY any : resultObservation.getValues()) {
-			value = CDAValueUtil.getAnyValue(resultObservation.getSection(), any);
+		for (ANY any : observation.getValues()) {
+			value = CDAValueUtil.getAnyValue(observation.getSection(), any);
 			valueLocation = CDAUtil.getDomainPath(any);
 		}
 		if (value.length() < 1000) {
@@ -1420,12 +1410,12 @@
 
 		String referenceRangeValue = "";
 		ANY anyRangeValue = null;
-		for (ReferenceRange rr : resultObservation.getReferenceRanges()) {
+		for (ReferenceRange rr : observation.getReferenceRanges()) {
 
 			if (rr.getObservationRange() != null && rr.getObservationRange().getValue() != null) {
 				anyRangeValue = rr.getObservationRange().getValue();
 				referenceRangeValue = CDAValueUtil.getAnyValue(
-					resultObservation.getSection(), rr.getObservationRange().getValue());
+					observation.getSection(), rr.getObservationRange().getValue());
 			}
 
 		}
@@ -1436,6 +1426,11 @@
 
 		}
 
+		if (author) {
+			offset = SpreadsheetSerializer.appendOrganizationAndAuthor(row, offset, observation.getAuthors());
+
+		}
+
 		return offset;
 	}