<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Maintaining the Drug Ontology: an Open-source, Structured Product Label API for the JVM</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Roger A. Hall</string-name>
          <email>rahall2@uams.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Josh Hanna</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>William R. Hogan</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Division of Biomedical Informatics, University of Arkansas for Medical Sciences</institution>
          ,
          <addr-line>Little Rock, Arkansas</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Our use case for maintenance of the Drug Ontology includes a semi-automated, daily process capable of importing new, relevant information from a variety of linkable resources, using fast and flexible algorithms with full access to all data. Structured Product Labels contain linkable information regarding FDA approved drug products and the drug packages in which they are sold, as well as ingredients and metadata about the drugs. We created an Application Programming Interface for SPLs using Scala, which will run on any implementation of the Java Virtual Machine (JVM) and is freely available through an open-source license for any noncommercial use.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>INTRODUCTION</title>
      <p>We are using Structured Product Labels (SPL) from the
Food and Drug Administration (FDA) to capture new drug
and related entities for representation in the Drug Ontology
(DrOn). The reason is that manufacturers must submit an
SPL for all new drugs approved in the United States, and
thus this information is “directly from the source”. It is also
much richer than what is available in drug terminologies
such as RxNorm. This paper describes our processes and the
software we are developing to support them for extracting
information from SPLs to update DrOn as new drug
products come into existence.</p>
      <p>SPLs are machine-readable files, submitted-to and
released-by the FDA, containing prescription drug labeling
and product metadata, such as National Drug Codes (NDCs)
and drug product ingredients. They are available as full
“current revision” releases, and monthly, weekly, or daily
updates from the DailyMed website at
http://dailymed.nlm.nih.gov. Each archive release contains
individual archives. Each individual archive contains one
XML file and may contain zero or more “.jpg” image files,
which are referenced by the XML file.</p>
      <p>
        SPLs have been found useful linking active ingredients
and chemical entities
        <xref ref-type="bibr" rid="ref1">(Hassanzadeh et al., 2013)</xref>
        , extracting
indication information
        <xref ref-type="bibr" rid="ref2">(Fung et al., 2013)</xref>
        , and improving
detection of drug-intolerance issues
        <xref ref-type="bibr" rid="ref3">(Schadow, 2009)</xref>
        and
can be enhanced with current literature for greater safety,
efficacy, and effectiveness
        <xref ref-type="bibr" rid="ref4">(Boyce et al., 2013)</xref>
        .
While a non-proprietary SPL parsing web service called
“LinkedSPLs” is available
        <xref ref-type="bibr" rid="ref1">(Hassanzadeh et al., 2013)</xref>
        , we
discuss below the lack of fitness for our use case.
      </p>
      <p>
        Recent work
        <xref ref-type="bibr" rid="ref5 ref6">(Hogan et al., 2013)</xref>
        has shown the benefit of
ontological realism for avoiding scientific inaccuracy with
the creation of the Drug Ontology (DrOn). In addition to
modeling drug products, ingredients, and their respective
dispositions, DrOn includes an extensive historical
collection of identifiers such as NDCs. To keep DrOn updated as
new drug products come into existence, we have designed a
system for automated staging of data from three initial
sources: RxNorm, ChEBI, and SPLs (Fig 1).
      </p>
      <p>In addition to the need to drive DrOn maintenance, we are
aware that SPL files are created by a large and diverse user
base in industry and submitted to the FDA, so we have also
included the capability to write SPL documents. Although
one free tool for creating and editing SPL files exists (“SPL
XForms”), we discuss here our motivations for creating a
new tool.</p>
      <p>Our implementation is an Application Programming
Interface (API) for SPLs (SPL-API) which we use to update
DrOn each day using the “daily updates” from Dailymed.</p>
      <p>SPL-API also includes features for downloading and
parsing full releases and monthly and weekly updates.</p>
      <p>Thus, the goal of this work is to create a generally useful
open-source parser and writer for SPL XML files, and to use
it within a larger system to update DrOn with applicable
classes and their relationships, enabling additional data to be
linked by other processes. As a result DrOn will be
continuously updated with new drug products as they are approved.
2</p>
    </sec>
    <sec id="sec-2">
      <title>METHODS</title>
      <p>
        The DrOn support system must Extract, Transform, and
Load (ETL) data from a variety of sources in order to
automatically rebuild the “lower ontology” containing specific
drug products from the latest sources. A DrOn Builder has
been previously implemented
        <xref ref-type="bibr" rid="ref5 ref6">(Hanna et al., 2013)</xref>
        which
produces OWL 2.0 ontology modules from the initial DrOn
database. Here, we describe the methods completed and
planned to add SPL support to DrOn Builder.
2.1
      </p>
      <sec id="sec-2-1">
        <title>Analysis of Existing SPL Tools</title>
        <p>Our use case requires full access to all data in available
resources and flexible server-side processing, preferring a
local library over a connected service for both processing
speed and algorithmic flexibility.</p>
        <p>LinkedSPL provides SPL content for prescription and
over-the-counter drugs, and is updated weekly. It can be
accessed through a SPARQL endpoint to acquire the
freetext contained in any “section” of the SPL file, which is
defined by the “&lt;section&gt;” tag-set. Although the LinkedSPL
software artifacts are freely available, and may be used
locally, they are unable to report included label image files or
a link to them. LinkedSPL also only parses prescription and
OTC files, leaving out the “Remainder” labels (which
include data on vaccines and some medical devices) and the
“Animal” labels. Additionally, DrOn is not currently using
RDF technologies (other than serialization of OWL into
RDF), so we seek to avoid the complexity of adding an
intermediate representation to the system.</p>
        <p>
          A browser-based editor (“SPL XForms”) for SPL format
XML files is also available
          <xref ref-type="bibr" rid="ref8">(Pragmatic, 2010)</xref>
          . Developed in
collaboration with the FDA, it can be used to view, create,
edit, and validate the XML data once a Java-helper is
allowed to load. Although useful to our study of individual
XML files, it is not freely available as a local library, and
thus could not be part of future system integrations.
2.2
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>Analysis of SPL Labels</title>
        <p>Software was written to survey all XML elements and their
attributes and relationships. Survey data will be available
online (see section 3). An analysis was conducted on 45,182
SPL submissions in the Human Prescription, Human Over
The Counter, Medical Device, and Animal label sets
available as of April 22, 2013. The survey revealed elements that
were primarily classes, those that were primarily attributes,
and those that were unnecessarily verbose “wrapper”
elements. Additionally, elements which are found in
collections were identified using a “max and mean” algorithm.</p>
        <p>SPL Documents have a fairly simple structure (Fig 2),
combining a metadata-filled header and a body (contained
in element &lt;structuredBody&gt;). The body contains a list of
“section” elements. Section elements contain other section
elements. While 90% of all files had 24 levels of nesting or
less, some runaways include 40 levels. We note that every
element deeper than 18 levels is related to a nested
&lt;containerPackagedProduct&gt; element, which creates significant
ambiguity for parsing drug products.</p>
        <p>Each section is “typed” by the loinc_code attribute
according to LOINC codes (e.g. “34067-9”) that identify the
common sections of SPLs (e.g. “Indications and Usage”).</p>
        <p>
          There are 87 codes allowed per ucm162057.htm
          <xref ref-type="bibr" rid="ref12 ref7">(FDA,
2013)</xref>
          , but only 84 were observed. Most documents include
an SPL PRODUCT DATA ELEMENTS SECTION, an
INDICATIONS &amp; USAGE SECTION, and a WARNINGS
SECTION. There was a mean of 1.48 PACKAGE
LABEL.PRINCIPAL DISPLAY PANEL sections per
document. All other codes were observed in less than half of the
documents (and most were observed in less than 20% of the
documents), while a full 33% of all SPL sections were
coded as SPL UNCLASSIFIED SECTION, suggesting
significant limitations in the standard.
        </p>
        <p>
          Maintaining the Drug Ontology: an Open-source, Structured Product Label API for the JVM
semantic clinical drugs, and semantic branded drugs
          <xref ref-type="bibr" rid="ref5 ref6">(Hogan
et al., 2013)</xref>
          . The staged data from all external resources
used to build the “lower ontology” in DrOn are stored in a
relational database whose schema follows the RxNorm file
format closely. We added additional tables to the core
schema for annotations regarding provenance, including a
system-standard field for an “external link” to a
resourcespecific table. The external link can be used as an ID to load
a resource-specific helper module as described below. At a
minimum, the ID enables provenance for the external
resource file. A “module” of resource-specific tables may be
added to capture desired data. Although persistence of the
all SPL information is unnecessary for our current
integration with DrOn, our implementation represents all XML
classes and attributes (except for the lowest level classes
that represent HTML formatting of product labels). An
applicable prefix for the table-set (e.g. “spl_”) helps separate
the tables visually when added to the same database.
        </p>
        <p>The database currently holds on ~106 entries; the authors
are experienced with databases containing ~109 entries. In
the short term, expansion of ingredients and dispositions
will increase the database more quickly than new products.
2.5</p>
      </sec>
      <sec id="sec-2-3">
        <title>XML to JVM Classes with Code Generation</title>
        <p>
          Code generation (cogen) has been shown useful for creating
packages with numerous classes from OWL ontologies
          <xref ref-type="bibr" rid="ref9">(Kalyanpur et al., 2004)</xref>
          . It has also been useful in
generating SOAP clients from WSDL files (Simpkins, 2008).
        </p>
        <p>We developed a custom code generation utility to
generate Scala classes for the SPL XML Format using the
referenced XML Schema Definition (XSD), which validates the
SPL format, and the survey results (see section 2.2). Classes
were identified as elements (and their wrappers) which
contain a number of attributes and zero or more collections.
Attributes and elements of collections may both be typed as
other classes. Collections were implemented to hold lists of
child node types when necessary. Node types that never
contain other node types, such as &lt;id /&gt;, &lt;name&gt;, and
&lt;code /&gt;, are created as typed attributes of the classes that
represent the containing node types. Accessors were
generated for attributes; iterators were generated for collections.</p>
        <p>
          Instead of attempting to create classes at run-time through
the Java-beans paradigm
          <xref ref-type="bibr" rid="ref9">(Kalyanpur et al., 2004)</xref>
          , we chose
to keep code generation in a separate utility, and import the
resulting “top 34” classes into the dron.spl package.
2.6
        </p>
        <p>The SPL-API
The parser and writer implementation is contained in the
package dron.spl. Three sets of classes are included; classes
that model the SPL XML format, classes that model the
products and packages represented in the SPL XML files,
and utilities necessary to manage Dailymed releases and
updates (Fig 3 does not show utilities).</p>
        <p>The root Scala class is “SPLDocument”. At least one
SPLDocument instance is created for each SPL submission
file parsed (see section 2.8).
2.6.1</p>
        <sec id="sec-2-3-1">
          <title>SPL XML Format</title>
          <p>SPLDocument exposes classes and methods that represent
an abstract SPL document, which in turn utilize the cogen
classes that model the XML more exactly (Fig 3). A
recursive printing algorithm built into the cogen classes enables
the SPL-API to write SPL files.</p>
          <p>When an XML element is always wrapped by another
element, and the parent element never contains another
element, then only one cogen class is represented. There are
fourteen wrapped classes in SPL-API.</p>
          <p>As an example of the layered class design, consider the
“ComponentStructuredBody” cogen class that represents the
XML elements for the SPL document body. (This class is
the “structuredBody” element wrapped with a “component”
element.) With this class, you can create a collection of
“ComponentSection” cogen classes. However, the better
approach would normally be to use the “section methods” of
SPLDocument (e.g. SPLDocument.addSection()) to manage
the sections of a document.
2.6.2</p>
        </sec>
        <sec id="sec-2-3-2">
          <title>SPL Drug Classes</title>
          <p>Classes for Drug Products, Ingredients, and Drug Label
Data were created, along with a base class for Drug Packages.
Ingredients are maintained as a collection in the Products
class since each product may contain multiple ingredients,
and each ingredient has “active” or “inactive” status
attribute. Additional attributes are planned, such as the “strength”
of the Ingredient within the Drug Product.</p>
          <p>The primary subject of an SPL file—a drug package—is
implemented as two classes that are sub-classed from the
base class Package; SimplePackage and ComplexPackage.
Every instance of Package must be related to at least one
instance of Product. SimplePackage relates to exactly one
NDC, while a ComplexPackages contains a collection of
SimplePackage(s) along with its own metadata.</p>
          <p>Parsing one SPL file produces a list of Package instances,
which will have one or more elements of Content of
Labeling Data. Lists of Label Data are maintained as a collection
in the appropriate Package instance.
We provide utilities for downloading full release and
periodic updates, unzipping downloaded archives, unzipping all
archives in a given directory, and unzipping individual
submission archives. Additional data lookup utilities will be
added, for example to translate loinc_code(s) to text labels,
which is hoped to also assist users in minimizing the future
share of SPL UNCLASSIFIED sections.</p>
        </sec>
      </sec>
      <sec id="sec-2-4">
        <title>2.7 Matching NDCs</title>
        <p>
          For our use case, a key step in correctly identifying all of the
real drug products represented by the XML submission file
is to identify all NDCs, but NDCs are not encoded in the
XML scheme, and are only found in the free text of Product
Data Elements sections. They generally contain the text
string “NDC”, and they always conform to the NDC
10digit format (5-4-1, 4-4-2, or 5-3-2). We use pattern
matching to identify multiple NDCs per text section. The NDCs
that are found are checked against the National Drug Code
Directory
          <xref ref-type="bibr" rid="ref12 ref7">(FDA, 2013)</xref>
          . The ability to correctly match all
NDC’s affects the quality of the results of the Drug Package
listing (see section 2.6.2).
        </p>
      </sec>
      <sec id="sec-2-5">
        <title>2.8 Core Document References</title>
        <p>
          Of the 45,182 SPL submissions surveyed, 220 used the
XML tag-set “&lt;relatedDocument&gt;”. This tag includes the
“SetID” of a “Core Document Reference”
          <xref ref-type="bibr" rid="ref14">(FDA, 2012)</xref>
          (CDR), from which all sections are inherited by the
containing document. When parsing a submission XML, the
SPLAPI will load a related document if it is available within the
same directory, and create a separate instance of
SPLDocument to hold the related document data. Documents that are
“parents” can still have a &lt;relatedDocument&gt; tag, so the
loading scheme is recursive, and is currently dependent on a
small level of nesting.
        </p>
        <p>When using the Scala classes that represent the XML
model (see section 2.6.1), each SPL section is contained
within its proper document, and each related document is
accessible by the SPLDocument.getRelatedDocument()
property accessor.</p>
        <p>When using the Scala classes that represent Drug
Packages (see section 2.6.2), all related documents are “flattened”,
and each section is included from all documents. Inheritance
rules are unclear, so all sections are currently collected by
section type. All identified Drug Products and Drug
Packages will be included in the list.</p>
      </sec>
      <sec id="sec-2-6">
        <title>2.9 ETL and External Resource Helpers</title>
        <p>In addition to the SPL-API, a “helper” will be developed to
load the parsed SPL data into the DrOn relational schema
(represented as gears in Fig 1). A plugin system added to the
DrOn builder will be able to identify the proper
resourcespecific plugin and pass the initialization necessary to
complete loading for the next update.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>CONCLUSION</title>
      <p>We have developed an open-source API for processing
SPLs in a Java Virtual Machine. A developer’s release will
be made available at the start of VDOS 2013, and will be
available at: https://bitbucket.org/rogerhall68/spl-api.</p>
      <p>Ongoing work includes loading processed data into the
Drug Ontology to keep it current as new drug products are
released.</p>
    </sec>
    <sec id="sec-4">
      <title>ACKNOWLEDGEMENTS</title>
      <p>This work was supported by award number UL1TR000039
from the National Center for Advancing Translational
Sciences, award R01GM101151 from the National Institute for
General Medical Science, and the Arkansas Biosciences
Institute, the major research component of the Arkansas
Tobacco Settlement Proceeds Act of 2000. This paper does
not represent the views of NCATS, NIGMS, or NIH.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Hassanzadeh</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhu</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Freimuth</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Boyce</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          (
          <year>2013</year>
          )
          <article-title>Extending the “Web of Drug Identity” with Knowledge Extracted from United States Product Labels</article-title>
          .
          <source>Proceedings of the 2013 AMIA Summit on Translational Bioinformatics</source>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Fung</surname>
            <given-names>K.W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jao</surname>
            <given-names>C.S.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Demner-Fushman</surname>
            <given-names>D.</given-names>
          </string-name>
          (
          <year>2013</year>
          )
          <article-title>Extracting drug indication information from structured product labels using natural languages processing</article-title>
          .
          <source>J Am Med Inform Assoc</source>
          .
          <source>2013 May</source>
          <volume>1</volume>
          ;
          <issue>20</issue>
          (
          <issue>3</issue>
          ):
          <fpage>482</fpage>
          -
          <lpage>8</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <surname>Schadow</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          (
          <year>2009</year>
          )
          <article-title>Structured Product Labeling Improves Detection of Drug-Intolerance Issues</article-title>
          .
          <source>J. Am Med Inform Assoc</source>
          ,
          <volume>16</volume>
          ,
          <fpage>211</fpage>
          -
          <lpage>219</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Boyce</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Horn</surname>
            <given-names>J.R.</given-names>
          </string-name>
          , Hassanzadeh O.,
          <string-name>
            <surname>de Waard</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Luciano</surname>
            <given-names>J.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rastegar-Mojarad</surname>
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Liakata</surname>
            <given-names>M.</given-names>
          </string-name>
          (
          <year>2013</year>
          )
          <article-title>Dynamic enhancement of drug product labels to support drug safety, efficacy, and effectiveness</article-title>
          .
          <source>J. Am Med Inform Assoc</source>
          ,
          <volume>16</volume>
          ,
          <fpage>211</fpage>
          -
          <lpage>219</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Hogan</surname>
            ,
            <given-names>W.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hanna</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Joseph</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Brochausen</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          (
          <year>2013</year>
          ).
          <article-title>Towards a Consistent and Scientifically Accurate Drug Ontology</article-title>
          , This Volume.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <given-names>Hanna J.</given-names>
            ,
            <surname>Brochausen</surname>
          </string-name>
          <string-name>
            <given-names>M.</given-names>
            , &amp;
            <surname>Hogan</surname>
          </string-name>
          <string-name>
            <surname>W. R.</surname>
          </string-name>
          (
          <year>2013</year>
          )
          <article-title>Building a Realist Drug Ontology using RxNorm and Other Sources</article-title>
          . This Volume.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <surname>FDA</surname>
          </string-name>
          (
          <year>2013</year>
          )
          <article-title>ucm162057</article-title>
          .htm http://www.fda.gov/ForIndustry/DataStandards/StructuredProductLabel ing/ucm162057.htm
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <given-names>Pragmatic</given-names>
            <surname>Data</surname>
          </string-name>
          (
          <year>2010</year>
          )
          <article-title>SPL XForms</article-title>
          , http://pragmaticdata.com/spl/form/
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>Kalyanpur</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pastor</surname>
            ,
            <given-names>D. J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Battle</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Padget</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          (
          <year>2004</year>
          , June).
          <article-title>Automatic mapping of OWL ontologies into Java</article-title>
          .
          <source>In SEKE (Vol. 4</source>
          , pp.
          <fpage>98</fpage>
          -
          <lpage>103</lpage>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>LinkedSPL</surname>
          </string-name>
          , http://dbmi-icode-
          <volume>01</volume>
          .dbmi.pitt.edu/linkedSPLs/
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <surname>Simpkins N.</surname>
          </string-name>
          ,
          <article-title>Generating a client from WSDL</article-title>
          , http://www.eclipse.org/webtools/community/education/web/t320/Gene rating_
          <article-title>a_client_from_WSDL</article-title>
          .pdf
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <surname>FDA</surname>
          </string-name>
          (
          <year>2013</year>
          ) National Drug Code Directory
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>http://www.fda.gov/drugs/informationondrugs/ucm142438.htm</mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          <string-name>
            <surname>FDA (2012) Structured Product Labeling (SPL) Implementation</surname>
            <given-names>Guide</given-names>
          </string-name>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <source>uctLabeling/UCM321876</source>
          .pdf
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>