use of org.hl7.fhir.r4.model.Timing in project org.hl7.fhir.core by hapifhir.
the class NarrativeGenerator method displayTiming.
private String displayTiming(Timing s) throws FHIRException {
CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder();
if (s.hasCode())
b.append("Code: " + displayCodeableConcept(s.getCode()));
if (s.getEvent().size() > 0) {
CommaSeparatedStringBuilder c = new CommaSeparatedStringBuilder();
for (DateTimeType p : s.getEvent()) {
c.append(p.toHumanDisplay());
}
b.append("Events: " + c.toString());
}
if (s.hasRepeat()) {
TimingRepeatComponent rep = s.getRepeat();
if (rep.hasBoundsPeriod() && rep.getBoundsPeriod().hasStart())
b.append("Starting " + rep.getBoundsPeriod().getStartElement().toHumanDisplay());
if (rep.hasCount())
b.append("Count " + Integer.toString(rep.getCount()) + " times");
if (rep.hasDuration())
b.append("Duration " + rep.getDuration().toPlainString() + displayTimeUnits(rep.getPeriodUnits()));
if (rep.hasWhen()) {
String st = "";
if (rep.hasPeriod()) {
st = rep.getPeriod().toPlainString();
if (rep.hasPeriodMax())
st = st + "-" + rep.getPeriodMax().toPlainString();
st = st + displayTimeUnits(rep.getPeriodUnits());
}
b.append("Do " + st + displayEventCode(rep.getWhen()));
} else {
String st = "";
if (!rep.hasFrequency() || (!rep.hasFrequencyMax() && rep.getFrequency() == 1))
st = "Once";
else {
st = Integer.toString(rep.getFrequency());
if (rep.hasFrequencyMax())
st = st + "-" + Integer.toString(rep.getFrequency());
}
if (rep.hasPeriod()) {
st = st + " per " + rep.getPeriod().toPlainString();
if (rep.hasPeriodMax())
st = st + "-" + rep.getPeriodMax().toPlainString();
st = st + " " + displayTimeUnits(rep.getPeriodUnits());
}
b.append("Do " + st);
}
if (rep.hasBoundsPeriod() && rep.getBoundsPeriod().hasEnd())
b.append("Until " + rep.getBoundsPeriod().getEndElement().toHumanDisplay());
}
return b.toString();
}
use of org.hl7.fhir.r4.model.Timing in project org.hl7.fhir.core by hapifhir.
the class RdfParser method composeTimingTimingRepeatComponent.
protected void composeTimingTimingRepeatComponent(Complex parent, String parentType, String name, Timing.TimingRepeatComponent element, int index) {
if (element == null)
return;
Complex t;
if (Utilities.noString(parentType))
t = parent;
else {
t = parent.predicate("fhir:" + parentType + '.' + name);
}
composeElement(t, "repeat", name, element, index);
if (element.hasBounds())
composeType(t, "Timing", "bounds", element.getBounds(), -1);
if (element.hasCountElement())
composeInteger(t, "Timing", "count", element.getCountElement(), -1);
if (element.hasCountMaxElement())
composeInteger(t, "Timing", "countMax", element.getCountMaxElement(), -1);
if (element.hasDurationElement())
composeDecimal(t, "Timing", "duration", element.getDurationElement(), -1);
if (element.hasDurationMaxElement())
composeDecimal(t, "Timing", "durationMax", element.getDurationMaxElement(), -1);
if (element.hasDurationUnitElement())
composeEnum(t, "Timing", "durationUnit", element.getDurationUnitElement(), -1);
if (element.hasFrequencyElement())
composeInteger(t, "Timing", "frequency", element.getFrequencyElement(), -1);
if (element.hasFrequencyMaxElement())
composeInteger(t, "Timing", "frequencyMax", element.getFrequencyMaxElement(), -1);
if (element.hasPeriodElement())
composeDecimal(t, "Timing", "period", element.getPeriodElement(), -1);
if (element.hasPeriodMaxElement())
composeDecimal(t, "Timing", "periodMax", element.getPeriodMaxElement(), -1);
if (element.hasPeriodUnitElement())
composeEnum(t, "Timing", "periodUnit", element.getPeriodUnitElement(), -1);
for (int i = 0; i < element.getDayOfWeek().size(); i++) composeEnum(t, "Timing", "dayOfWeek", element.getDayOfWeek().get(i), i);
for (int i = 0; i < element.getTimeOfDay().size(); i++) composeTime(t, "Timing", "timeOfDay", element.getTimeOfDay().get(i), i);
for (int i = 0; i < element.getWhen().size(); i++) composeEnum(t, "Timing", "when", element.getWhen().get(i), i);
if (element.hasOffsetElement())
composeUnsignedInt(t, "Timing", "offset", element.getOffsetElement(), -1);
}
use of org.hl7.fhir.r4.model.Timing in project org.hl7.fhir.core by hapifhir.
the class RdfParser method composePlanDefinitionPlanDefinitionActionComponent.
protected void composePlanDefinitionPlanDefinitionActionComponent(Complex parent, String parentType, String name, PlanDefinition.PlanDefinitionActionComponent element, int index) {
if (element == null)
return;
Complex t;
if (Utilities.noString(parentType))
t = parent;
else {
t = parent.predicate("fhir:" + parentType + '.' + name);
}
composeBackboneElement(t, "action", name, element, index);
if (element.hasLabelElement())
composeString(t, "PlanDefinition", "label", element.getLabelElement(), -1);
if (element.hasTitleElement())
composeString(t, "PlanDefinition", "title", element.getTitleElement(), -1);
if (element.hasDescriptionElement())
composeString(t, "PlanDefinition", "description", element.getDescriptionElement(), -1);
if (element.hasTextEquivalentElement())
composeString(t, "PlanDefinition", "textEquivalent", element.getTextEquivalentElement(), -1);
for (int i = 0; i < element.getCode().size(); i++) composeCodeableConcept(t, "PlanDefinition", "code", element.getCode().get(i), i);
for (int i = 0; i < element.getReason().size(); i++) composeCodeableConcept(t, "PlanDefinition", "reason", element.getReason().get(i), i);
for (int i = 0; i < element.getDocumentation().size(); i++) composeRelatedArtifact(t, "PlanDefinition", "documentation", element.getDocumentation().get(i), i);
for (int i = 0; i < element.getGoalId().size(); i++) composeId(t, "PlanDefinition", "goalId", element.getGoalId().get(i), i);
for (int i = 0; i < element.getTriggerDefinition().size(); i++) composeTriggerDefinition(t, "PlanDefinition", "triggerDefinition", element.getTriggerDefinition().get(i), i);
for (int i = 0; i < element.getCondition().size(); i++) composePlanDefinitionPlanDefinitionActionConditionComponent(t, "PlanDefinition", "condition", element.getCondition().get(i), i);
for (int i = 0; i < element.getInput().size(); i++) composeDataRequirement(t, "PlanDefinition", "input", element.getInput().get(i), i);
for (int i = 0; i < element.getOutput().size(); i++) composeDataRequirement(t, "PlanDefinition", "output", element.getOutput().get(i), i);
for (int i = 0; i < element.getRelatedAction().size(); i++) composePlanDefinitionPlanDefinitionActionRelatedActionComponent(t, "PlanDefinition", "relatedAction", element.getRelatedAction().get(i), i);
if (element.hasTiming())
composeType(t, "PlanDefinition", "timing", element.getTiming(), -1);
for (int i = 0; i < element.getParticipant().size(); i++) composePlanDefinitionPlanDefinitionActionParticipantComponent(t, "PlanDefinition", "participant", element.getParticipant().get(i), i);
if (element.hasType())
composeCoding(t, "PlanDefinition", "type", element.getType(), -1);
if (element.hasGroupingBehaviorElement())
composeEnum(t, "PlanDefinition", "groupingBehavior", element.getGroupingBehaviorElement(), -1);
if (element.hasSelectionBehaviorElement())
composeEnum(t, "PlanDefinition", "selectionBehavior", element.getSelectionBehaviorElement(), -1);
if (element.hasRequiredBehaviorElement())
composeEnum(t, "PlanDefinition", "requiredBehavior", element.getRequiredBehaviorElement(), -1);
if (element.hasPrecheckBehaviorElement())
composeEnum(t, "PlanDefinition", "precheckBehavior", element.getPrecheckBehaviorElement(), -1);
if (element.hasCardinalityBehaviorElement())
composeEnum(t, "PlanDefinition", "cardinalityBehavior", element.getCardinalityBehaviorElement(), -1);
if (element.hasDefinition())
composeReference(t, "PlanDefinition", "definition", element.getDefinition(), -1);
if (element.hasTransform())
composeReference(t, "PlanDefinition", "transform", element.getTransform(), -1);
for (int i = 0; i < element.getDynamicValue().size(); i++) composePlanDefinitionPlanDefinitionActionDynamicValueComponent(t, "PlanDefinition", "dynamicValue", element.getDynamicValue().get(i), i);
for (int i = 0; i < element.getAction().size(); i++) composePlanDefinitionPlanDefinitionActionComponent(t, "PlanDefinition", "action", element.getAction().get(i), i);
}
use of org.hl7.fhir.r4.model.Timing in project org.hl7.fhir.core by hapifhir.
the class RdfParser method composeExplanationOfBenefitSupportingInformationComponent.
protected void composeExplanationOfBenefitSupportingInformationComponent(Complex parent, String parentType, String name, ExplanationOfBenefit.SupportingInformationComponent element, int index) {
if (element == null)
return;
Complex t;
if (Utilities.noString(parentType))
t = parent;
else {
t = parent.predicate("fhir:" + parentType + '.' + name);
}
composeBackboneElement(t, "supportingInfo", name, element, index);
if (element.hasSequenceElement())
composePositiveInt(t, "ExplanationOfBenefit", "sequence", element.getSequenceElement(), -1);
if (element.hasCategory())
composeCodeableConcept(t, "ExplanationOfBenefit", "category", element.getCategory(), -1);
if (element.hasCode())
composeCodeableConcept(t, "ExplanationOfBenefit", "code", element.getCode(), -1);
if (element.hasTiming())
composeType(t, "ExplanationOfBenefit", "timing", element.getTiming(), -1);
if (element.hasValue())
composeType(t, "ExplanationOfBenefit", "value", element.getValue(), -1);
if (element.hasReason())
composeCoding(t, "ExplanationOfBenefit", "reason", element.getReason(), -1);
}
use of org.hl7.fhir.r4.model.Timing in project org.hl7.fhir.core by hapifhir.
the class NarrativeGenerator method renderLeaf.
private void renderLeaf(ResourceWrapper res, BaseWrapper ew, ElementDefinition defn, XhtmlNode x, boolean title, boolean showCodeDetails, Map<String, String> displayHints, String path, int indent, ResourceContext rc) throws FHIRException, UnsupportedEncodingException, IOException {
if (ew == null)
return;
Base e = ew.getBase();
if (e instanceof StringType)
x.addText(((StringType) e).getValue());
else if (e instanceof CodeType)
x.addText(((CodeType) e).getValue());
else if (e instanceof IdType)
x.addText(((IdType) e).getValue());
else if (e instanceof Extension)
return;
else if (e instanceof InstantType)
x.addText(((InstantType) e).toHumanDisplay());
else if (e instanceof DateTimeType) {
if (e.hasPrimitiveValue())
x.addText(((DateTimeType) e).toHumanDisplay());
} else if (e instanceof Base64BinaryType)
x.addText(new Base64().encodeAsString(((Base64BinaryType) e).getValue()));
else if (e instanceof org.hl7.fhir.r4.model.DateType)
x.addText(((org.hl7.fhir.r4.model.DateType) e).toHumanDisplay());
else if (e instanceof Enumeration) {
Object ev = ((Enumeration<?>) e).getValue();
// todo: look up a display name if there is one
x.addText(ev == null ? "" : ev.toString());
} else if (e instanceof BooleanType)
x.addText(((BooleanType) e).getValue().toString());
else if (e instanceof CodeableConcept) {
renderCodeableConcept((CodeableConcept) e, x, showCodeDetails);
} else if (e instanceof Coding) {
renderCoding((Coding) e, x, showCodeDetails);
} else if (e instanceof Annotation) {
renderAnnotation((Annotation) e, x);
} else if (e instanceof Identifier) {
renderIdentifier((Identifier) e, x);
} else if (e instanceof org.hl7.fhir.r4.model.IntegerType) {
x.addText(Integer.toString(((org.hl7.fhir.r4.model.IntegerType) e).getValue()));
} else if (e instanceof org.hl7.fhir.r4.model.DecimalType) {
x.addText(((org.hl7.fhir.r4.model.DecimalType) e).getValue().toString());
} else if (e instanceof HumanName) {
renderHumanName((HumanName) e, x);
} else if (e instanceof SampledData) {
renderSampledData((SampledData) e, x);
} else if (e instanceof Address) {
renderAddress((Address) e, x);
} else if (e instanceof ContactPoint) {
renderContactPoint((ContactPoint) e, x);
} else if (e instanceof UriType) {
renderUri((UriType) e, x, defn.getPath(), rc != null && rc.resourceResource != null ? rc.resourceResource.getId() : null);
} else if (e instanceof Timing) {
renderTiming((Timing) e, x);
} else if (e instanceof Range) {
renderRange((Range) e, x);
} else if (e instanceof Quantity) {
renderQuantity((Quantity) e, x, showCodeDetails);
} else if (e instanceof Ratio) {
renderQuantity(((Ratio) e).getNumerator(), x, showCodeDetails);
x.tx("/");
renderQuantity(((Ratio) e).getDenominator(), x, showCodeDetails);
} else if (e instanceof Period) {
Period p = (Period) e;
x.addText(!p.hasStart() ? "??" : p.getStartElement().toHumanDisplay());
x.tx(" --> ");
x.addText(!p.hasEnd() ? "(ongoing)" : p.getEndElement().toHumanDisplay());
} else if (e instanceof Reference) {
Reference r = (Reference) e;
XhtmlNode c = x;
ResourceWithReference tr = null;
if (r.hasReferenceElement()) {
tr = resolveReference(res, r.getReference(), rc);
if (!r.getReference().startsWith("#")) {
if (tr != null && tr.getReference() != null)
c = x.ah(tr.getReference());
else
c = x.ah(r.getReference());
}
}
// what to display: if text is provided, then that. if the reference was resolved, then show the generated narrative
if (r.hasDisplayElement()) {
c.addText(r.getDisplay());
if (tr != null && tr.getResource() != null) {
c.tx(". Generated Summary: ");
generateResourceSummary(c, tr.getResource(), true, r.getReference().startsWith("#"), rc);
}
} else if (tr != null && tr.getResource() != null) {
generateResourceSummary(c, tr.getResource(), r.getReference().startsWith("#"), r.getReference().startsWith("#"), rc);
} else {
c.addText(r.getReference());
}
} else if (e instanceof Resource) {
return;
} else if (e instanceof ElementDefinition) {
x.tx("todo-bundle");
} else if (e != null && !(e instanceof Attachment) && !(e instanceof Narrative) && !(e instanceof Meta)) {
StructureDefinition sd = context.fetchTypeDefinition(e.fhirType());
if (sd == null)
throw new NotImplementedException("type " + e.getClass().getName() + " not handled yet, and no structure found");
else
generateByProfile(res, sd, ew, sd.getSnapshot().getElement(), sd.getSnapshot().getElementFirstRep(), getChildrenForPath(sd.getSnapshot().getElement(), sd.getSnapshot().getElementFirstRep().getPath()), x, path, showCodeDetails, indent + 1, rc);
}
}
Aggregations