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; 016 017public class CanonicalSpreadsheetGenerator extends SpreadsheetGenerator { 018 019 public CanonicalSpreadsheetGenerator(IWorkerContext context) { 020 super(context); 021 } 022 023 protected Sheet renderCanonicalResource(CanonicalResource cr) { 024 Sheet sheet = makeSheet("Metadata"); 025 026 Row headerRow = sheet.createRow(0); 027 addCell(headerRow, 0, "Property", styles.get("header")); 028 addCell(headerRow, 1, "Value", styles.get("header")); 029 030 addMetadataRow(sheet, "URL", cr.getUrl()); 031 for (Identifier id : cr.getIdentifier()) { 032 addMetadataRow(sheet, "Identifier", dr.display(id)); 033 } 034 addMetadataRow(sheet, "Version", cr.getVersion()); 035 addMetadataRow(sheet, "Name", cr.getName()); 036 addMetadataRow(sheet, "Title", cr.getTitle()); 037 addMetadataRow(sheet, "Status", cr.getStatusElement().asStringValue()); 038 addMetadataRow(sheet, "Experimental", cr.getExperimentalElement().asStringValue()); 039 addMetadataRow(sheet, "Date", cr.getDateElement().asStringValue()); 040 addMetadataRow(sheet, "Publisher", cr.getPublisher()); 041 for (ContactDetail c : cr.getContact()) { 042 addMetadataRow(sheet, "Contact", dr.display(c)); 043 } 044 for (CodeableConcept j : cr.getJurisdiction()) { 045 addMetadataRow(sheet, "Jurisdiction", dr.display(j)); 046 } 047 048 addMetadataRow(sheet, "Description", cr.getDescription()); 049 addMetadataRow(sheet, "Purpose", cr.getPurpose()); 050 addMetadataRow(sheet, "Copyright", cr.getCopyright()); 051 configureSheet(sheet); 052 return sheet; 053 } 054 055 private void configureSheet(Sheet sheet) { 056 sheet.setColumnWidth(0, columnPixels(15)); 057 sheet.setColumnWidth(1, columnPixels(80)); 058 } 059 060 protected void addMetadataRow(Sheet sheet, String name, String value) { 061 Row row = sheet.createRow(sheet.getLastRowNum()+1); 062 addCell(row, 0, name, styles.get("body")); 063 addCell(row, 1, value); 064 } 065 066 067 068}