def fhir_json_to_rdf(json_fname: str,
                     base_uri: str = "http://hl7.org/fhir/",
                     target_graph: Optional[Graph] = None,
                     add_ontology_header: bool = True,
                     do_continuations: bool = True,
                     replace_narrative_text: bool = False,
                     metavoc: Optional[Union[Graph, FHIRMetaVoc]] = None) -> Graph:
    """
    Convert a FHIR JSON resource image to RDF
    :param json_fname: Name or URI of the file to convert
    :param base_uri: Base URI to use for relative references.
    :param target_graph:  If supplied, add RDF to this graph. If not, start with an empty graph.
    :param add_ontology_header:  True means add owl:Ontology declaration to output
    :param do_continuations: True means follow continuation records on bundles and queries
    :param replace_narrative_text: True means replace any narrative text longer than 120 characters with
                '<div xmlns="http://www.w3.org/1999/xhtml">(removed)</div>'
    :param metavoc: FHIR Metadata Vocabulary (fhir.ttl) graph
    :return: resulting graph
    """

    def check_for_continuation(data_: JsonObj) -> Optional[str]:
        if do_continuations and 'link' in data_ and isinstance(data_.link, list):
            for link_e in data_.link:
                if 'relation' in link_e and link_e.relation == 'next':
                    return link_e.url
        return None

    if target_graph is None:
        target_graph = Graph()

    if metavoc is None:
        metavoc = FHIRMetaVoc().g
    elif isinstance(metavoc, FHIRMetaVoc):
        metavoc = metavoc.g

    page_fname = json_fname
    while page_fname:
        data = load(page_fname)
        if 'resourceType' in data and data.resourceType != 'Bundle':
            FHIRResource(metavoc, None, base_uri, data, target=target_graph, add_ontology_header=add_ontology_header,
                         replace_narrative_text=replace_narrative_text)
            page_fname = check_for_continuation(data)
        elif 'entry' in data and isinstance(data.entry, list) and 'resource' in data.entry[0]:
            FHIRCollection(metavoc, None, base_uri, data, target=target_graph,
                           add_ontology_header=add_ontology_header if 'resourceType' in data else False,
                           replace_narrative_text=replace_narrative_text)
            page_fname = check_for_continuation(data)
        else:
            page_fname = None
            target_graph = None
    return target_graph
def fhir_json_to_rdf ( json_fname : str , base_uri : str = "http://hl7.org/fhir/" , target_graph : Optional [ Graph ] = None , add_ontology_header : bool = True , do_continuations : bool = True , replace_narrative_text : bool = False , metavoc : Optional [ Union [ Graph , FHIRMetaVoc ] ] = None ) -> Graph : def check_for_continuation ( data_ : JsonObj ) -> Optional [ str ] : if do_continuations and 'link' in data_ and isinstance ( data_ . link , list ) : for link_e in data_ . link : if 'relation' in link_e and link_e . relation == 'next' : return link_e . url return None if target_graph is None : target_graph = Graph ( ) if metavoc is None : metavoc = FHIRMetaVoc ( ) . g elif isinstance ( metavoc , FHIRMetaVoc ) : metavoc = metavoc . g page_fname = json_fname while page_fname : data = load ( page_fname ) if 'resourceType' in data and data . resourceType != 'Bundle' : FHIRResource ( metavoc , None , base_uri , data , target = target_graph , add_ontology_header = add_ontology_header , replace_narrative_text = replace_narrative_text ) page_fname = check_for_continuation ( data ) elif 'entry' in data and isinstance ( data . entry , list ) and 'resource' in data . entry [ 0 ] : FHIRCollection ( metavoc , None , base_uri , data , target = target_graph , add_ontology_header = add_ontology_header if 'resourceType' in data else False , replace_narrative_text = replace_narrative_text ) page_fname = check_for_continuation ( data ) else : page_fname = None target_graph = None return target_graph
Convert a FHIR JSON resource image to RDF
    :param json_fname: Name or URI of the file to convert
    :param base_uri: Base URI to use for relative references.
    :param target_graph:  If supplied, add RDF to this graph. If not, start with an empty graph.
    :param add_ontology_header:  True means add owl:Ontology declaration to output
    :param do_continuations: True means follow continuation records on bundles and queries
    :param replace_narrative_text: True means replace any narrative text longer than 120 characters with
                '<div xmlns="http://www.w3.org/1999/xhtml">(removed)</div>'
    :param metavoc: FHIR Metadata Vocabulary (fhir.ttl) graph
    :return: resulting graph