Snapshot 3: Connectathon 32 Base

This is Snapshot #3 for FHIR R5, released to support Connectathon 32. For a full list of available versions, see the Directory of published versions.

Example GraphDefinition/example (XML)

FHIR Infrastructure Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: Not linked to any defined compartments

Raw XML (canonical form + also see XML Format Specification)

Jump past Narrative

GraphDefinition example (id = "example")

<?xml version="1.0" encoding="UTF-8"?>

<GraphDefinition xmlns="http://hl7.org/fhir">
  <id value="example"/> 
  <text> <status value="generated"/> <div xmlns="http://www.w3.org/1999/xhtml"><p> <b> Generated Narrative: GraphDefinition</b> <a name="example"> </a> </p> <div style="display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border:
       1px solid #8da1b4; border-radius: 5px; line-height: 60%"><p style="margin-bottom: 0px">Resource GraphDefinition &quot;example&quot; </p> </div> <p> <b> url</b> : <code> http://h7.org/fhir/GraphDefinition/example</code> </p> <p> <b> name</b> : Document Generation Template</p> <p> <b> status</b> : draft</p> <p> <b> date</b> : 2015-08-04</p> <p> <b> publisher</b> : FHIR Project</p> <p> <b> contact</b> : <a href="http://hl7.org/fhir">http://hl7.org/fhir</a> </p> <p> <b> description</b> : Specify to include list references when generating a document using the $document
         operation</p> <p> <b> start</b> : <span title="  
    the $document operation will include everything directly linked to by the composition
         resource.
    In our case, we want any resources referred to by lists referenced from the
         composition to 
    be included as well. 
    
    We do this by defining a 'graph' of resources - and then we'll say to the $document
         server,
    aggregate this graph as well as other resources. So we define a graph that
         starts at composition,
    goes from section to list, and includes all the resources the list includes.
         
    
    While we're at it, we're going to say that all these resources must be about
         the same patient.
    Note that there are use cases for crossing patient record boundaries in documents,
         but not *this case*.
    
   &amp;#10;  this graph starts with a composition. We don't care what the specific
         profile is
     (though the statement above 'this case doesn't cross patients' implies that
         we do care a little)  ">comp1</span> </p> <blockquote> <p> <b> node</b> </p> <p> <b> nodeId</b> : comp1</p> <p> <b> description</b> : The base composition</p> <p> <b> type</b> : Composition</p> <p> <b> profile</b> : <a href="clinicaldocument.html">Clinical Document</a> </p> </blockquote> <blockquote> <p> <b> node</b> </p> <p> <b> nodeId</b> : list1</p> <p> <b> description</b> : A list resource that a section entry reference points to</p> <p> <b> type</b> : List</p> </blockquote> <blockquote> <p> <b> node</b> </p> <p> <b> nodeId</b> : resN</p> <p> <b> description</b> : Generic resource that's the target of a list reference</p> <p> <b> type</b> : Resource</p> </blockquote> <blockquote> <p> <b> link</b> </p> <p> <b> description</b> : Link from Composition.section to list</p> <p> <b> sourceId</b> : comp1</p> <p> <b> path</b> : <span title="  any section entry. Todo: this recurses; are we profiling this at all levels?
            ">Composition.section.entry</span> </p> <p> <b> targetId</b> : <span title="  
      one target. This graph is not making rules about the content of the section
           entries - that
      would be done in a profile. it's just saying, if you see a reference to a
           list in a section
      entry, these are the rules that describe the graph
     ">list1</span> </p> <h3> Compartments</h3> <table class="grid"><tr> <td> -</td> <td> <b> Use</b> </td> <td> <b> Rule</b> </td> <td> <b> Code</b> </td> </tr> <tr> <td> *</td> <td> requires</td> <td> identical</td> <td> Patient</td> </tr> </table> </blockquote> <blockquote> <p> <b> link</b> </p> <p> <b> description</b> : Include any list entries</p> <p> <b> sourceId</b> : list1</p> <p> <b> path</b> : List.entry.item</p> <p> <b> targetId</b> : resN</p> <h3> Compartments</h3> <table class="grid"><tr> <td> -</td> <td> <b> Use</b> </td> <td> <b> Rule</b> </td> <td> <b> Code</b> </td> </tr> <tr> <td> *</td> <td> requires</td> <td> identical</td> <td> Patient</td> </tr> </table> </blockquote> </div> </text> <url value="http://h7.org/fhir/GraphDefinition/example"/> 
  <name value="Document Generation Template"/> 
  <status value="draft"/> 
  <date value="2015-08-04"/> 
  <publisher value="FHIR Project"/> 
  <contact> 
    <telecom> 
      <system value="url"/> 
      <value value="http://hl7.org/fhir"/> 
    </telecom> 
  </contact> 
  <description value="Specify to include list references when generating a document using the $document
   operation"/> 
      <!--    
    the $document operation will include everything directly linked to by the composition
   resource.
    In our case, we want any resources referred to by lists referenced from the
   composition to 
    be included as well. 
    
    We do this by defining a 'graph' of resources - and then we'll say to the $document
   server,
    aggregate this graph as well as other resources. So we define a graph that
   starts at composition,
    goes from section to list, and includes all the resources the list includes.
   
    
    While we're at it, we're going to say that all these resources must be about
   the same patient.
    Note that there are use cases for crossing patient record boundaries in documents,
   but not *this case*.
    
     -->
  
      <!--    this graph starts with a composition. We don't care what the specific profile
   is
     (though the statement above 'this case doesn't cross patients' implies that
   we do care a little)    -->
  <start value="comp1"/> 
  
  <node> 
    <nodeId value="comp1"/> 
    <description value="The base composition"/> 
    <type value="Composition"/> 
    <profile value="http://hl7.org/fhir/StructureDefinition/clinicaldocument"/> 
  </node> 
  <node> 
    <nodeId value="list1"/> 
    <description value="A list resource that a section entry reference points to"/> 
    <type value="List"/> 
  </node> 
  <node> 
    <nodeId value="resN"/> 
    <description value="Generic resource that's the target of a list reference"/> 
    <type value="Resource"/> 
  </node> 

      <!--    define the section -> list link    -->
  <link> 
    <description value="Link from Composition.section to list"/> 
    <sourceId value="comp1"/> 
        <!--    any section entry. Todo: this recurses; are we profiling this at all levels?
        --> 
    <path value="Composition.section.entry"/> 
        <!--    
      one target. This graph is not making rules about the content of the section
     entries - that
      would be done in a profile. it's just saying, if you see a reference to a
     list in a section
      entry, these are the rules that describe the graph
       -->
    <targetId value="list1"/> 
    <compartment> 
      <use value="requires"/> 
      <rule value="identical"/> 
      <code value="Patient"/> 
    </compartment> 
  </link>     

      <!--    and from the list, any references    -->
  <link> 
    <description value="Include any list entries"/> 
    <sourceId value="list1"/> 
    <path value="List.entry.item"/> 
    <targetId value="resN"/> 
    <compartment> 
      <use value="requires"/> 
      <rule value="identical"/> 
      <code value="Patient"/> 
    </compartment> 
  </link>       
</GraphDefinition> 

Usage note: every effort has been made to ensure that the examples are correct and useful, but they are not a normative part of the specification.