001package org.hl7.fhir.r5.renderers; 002 003import org.hl7.fhir.r5.model.DomainResource; 004import org.hl7.fhir.r5.model.Resource; 005import org.hl7.fhir.r5.renderers.utils.BaseWrappers.ResourceWrapper; 006import org.hl7.fhir.r5.renderers.utils.RenderingContext; 007import org.hl7.fhir.r5.renderers.utils.Resolver.ResourceContext; 008 009public class RendererFactory { 010 011 public static ResourceRenderer factory(String resourceName, RenderingContext context) { 012 013 if (context.getTemplateProvider() != null) { 014 String liquidTemplate = context.getTemplateProvider().findTemplate(context, resourceName); 015 if (liquidTemplate != null) { 016 return new LiquidRenderer(context, liquidTemplate); 017 } 018 } 019 020 if ("CodeSystem".equals(resourceName)) { 021 return new CodeSystemRenderer(context); 022 } 023 if ("ValueSet".equals(resourceName)) { 024 return new ValueSetRenderer(context); 025 } 026 if ("ConceptMap".equals(resourceName)) { 027 return new ConceptMapRenderer(context); 028 } 029 030 if ("CapabilityStatement".equals(resourceName)) { 031 return new CapabilityStatementRenderer(context); 032 } 033 if ("StructureDefinition".equals(resourceName)) { 034 return new StructureDefinitionRenderer(context); 035 } 036 if ("OperationDefinition".equals(resourceName)) { 037 return new OperationDefinitionRenderer(context); 038 } 039 if ("SearchParameter".equals(resourceName)) { 040 return new SearchParameterRenderer(context); 041 } 042 if ("CompartmentDefinition".equals(resourceName)) { 043 return new CompartmentDefinitionRenderer(context); 044 } 045 if ("ImplementationGuide".equals(resourceName)) { 046 return new ImplementationGuideRenderer(context); 047 } 048 if ("NamingSystem".equals(resourceName)) { 049 return new NamingSystemRenderer(context); 050 } 051 if ("Questionnaire".equals(resourceName)) { 052 return new QuestionnaireRenderer(context); 053 } 054 055 if ("QuestionnaireResponse".equals(resourceName)) { 056 return new QuestionnaireResponseRenderer(context); 057 } 058 059 if ("Patient".equals(resourceName)) { 060 return new PatientRenderer(context); 061 } 062 if ("Encounter".equals(resourceName)) { 063 return new EncounterRenderer(context); 064 } 065 if ("Library".equals(resourceName)) { 066 return new LibraryRenderer(context); 067 } 068 if ("List".equals(resourceName)) { 069 return new ListRenderer(context); 070 } 071 if ("DiagnosticReport".equals(resourceName)) { 072 return new DiagnosticReportRenderer(context); 073 } 074 075 if ("Provenance".equals(resourceName)) { 076 return new ProvenanceRenderer(context); 077 } 078 if ("OperationOutcome".equals(resourceName)) { 079 return new OperationOutcomeRenderer(context); 080 } 081 if ("Parameters".equals(resourceName)) { 082 return new ParametersRenderer(context); 083 } 084 if ("Bundle".equals(resourceName)) { 085 return new BundleRenderer(context); 086 } 087 return new ProfileDrivenRenderer(context); 088 } 089 090 public static ResourceRenderer factory(Resource resource, RenderingContext context) { 091 092 if (context.getTemplateProvider() != null && resource instanceof DomainResource) { 093 String liquidTemplate = context.getTemplateProvider().findTemplate(context, (DomainResource) resource); 094 if (liquidTemplate != null) { 095 return new LiquidRenderer(context, liquidTemplate); 096 } 097 } 098 099 return factory(resource.fhirType(), context); 100 } 101 102 103 public static ResourceRenderer factory(ResourceWrapper resource, RenderingContext context, ResourceContext resourceContext) { 104 if (context.getTemplateProvider() != null) { 105 String liquidTemplate = context.getTemplateProvider().findTemplate(context, resource.getName()); 106 if (liquidTemplate != null) { 107 return new LiquidRenderer(context, liquidTemplate); 108 } 109 } 110 111 if ("List".equals(resource.getName())) { 112 return new ListRenderer(context); 113 } 114 if ("Library".equals(resource.getName())) { 115 return new LibraryRenderer(context); 116 } 117 if ("Patient".equals(resource.getName())) { 118 return new PatientRenderer(context); 119 } 120 if ("DiagnosticReport".equals(resource.getName())) { 121 return new DiagnosticReportRenderer(context); 122 } 123 if ("QuestionnaireResponse".equals(resource.getName())) { 124 return new QuestionnaireResponseRenderer(context); 125 } 126 127 return new ProfileDrivenRenderer(context, resourceContext); 128 } 129 130 public static ResourceRenderer factory(ResourceWrapper rw, RenderingContext lrc) { 131 return factory(rw, lrc, null); 132 } 133 134 135}