
001package org.hl7.fhir.r5.renderers.spreadsheets; 002 003import java.io.OutputStream; 004 005import org.apache.poi.ss.usermodel.Row; 006import org.apache.poi.ss.usermodel.Sheet; 007import org.hl7.fhir.r5.context.IWorkerContext; 008import org.hl7.fhir.r5.model.CanonicalResource; 009import org.hl7.fhir.r5.model.CodeableConcept; 010import org.hl7.fhir.r5.model.ContactDetail; 011import org.hl7.fhir.r5.model.ElementDefinition; 012import org.hl7.fhir.r5.model.Identifier; 013import org.hl7.fhir.r5.model.StructureDefinition; 014import org.hl7.fhir.r5.model.StructureDefinition.StructureDefinitionMappingComponent; 015import org.hl7.fhir.r5.renderers.DataRenderer; 016import org.hl7.fhir.utilities.MarkedToMoveToAdjunctPackage; 017 018@MarkedToMoveToAdjunctPackage 019public class CanonicalSpreadsheetGenerator extends SpreadsheetGenerator { 020 021 public CanonicalSpreadsheetGenerator(IWorkerContext context) { 022 super(context); 023 } 024 025 protected Sheet renderCanonicalResource(CanonicalResource cr, boolean forMultiple) { 026 Sheet sheet = forMultiple && hasSheet("Metadata") ? getSheet("Metadata") : makeSheet("Metadata"); 027 028 Row headerRow = sheet.createRow(forMultiple ? sheet.getLastRowNum()+1 : 0); 029 addCell(headerRow, 0, "Property", styles.get("header")); 030 addCell(headerRow, 1, "Value", styles.get("header")); 031 032 if (forMultiple) { 033 addMetadataRow(sheet, "ID", cr.getId()); 034 } 035 addMetadataRow(sheet, "URL", cr.getUrl()); 036 for (Identifier id : cr.getIdentifier()) { 037 addMetadataRow(sheet, "Identifier", dr.displayDataType(id)); 038 } 039 addMetadataRow(sheet, "Version", cr.getVersion()); 040 addMetadataRow(sheet, "Name", cr.getName()); 041 addMetadataRow(sheet, "Title", cr.getTitle()); 042 addMetadataRow(sheet, "Status", cr.getStatusElement().asStringValue()); 043 addMetadataRow(sheet, "Experimental", cr.getExperimentalElement().asStringValue()); 044 addMetadataRow(sheet, "Date", cr.getDateElement().asStringValue()); 045 addMetadataRow(sheet, "Publisher", cr.getPublisher()); 046 for (ContactDetail c : cr.getContact()) { 047 addMetadataRow(sheet, "Contact", dr.displayDataType(c)); 048 } 049 for (CodeableConcept j : cr.getJurisdiction()) { 050 addMetadataRow(sheet, "Jurisdiction", dr.displayDataType(j)); 051 } 052 053 addMetadataRow(sheet, "Description", cr.getDescription()); 054 addMetadataRow(sheet, "Purpose", cr.getPurpose()); 055 addMetadataRow(sheet, "Copyright", cr.getCopyright()); 056 configureSheet(sheet); 057 return sheet; 058 } 059 060 private void configureSheet(Sheet sheet) { 061 sheet.setColumnWidth(0, columnPixels(15)); 062 sheet.setColumnWidth(1, columnPixels(80)); 063 } 064 065 protected void addMetadataRow(Sheet sheet, String name, String value) { 066 Row row = sheet.createRow(sheet.getLastRowNum()+1); 067 addCell(row, 0, name, styles.get("body")); 068 addCell(row, 1, value); 069 } 070 071 072 073}