Computer-based systems and human operators can be seen as agents in that, while sharing physical resources, they encapsulate specialistic information (data/knowledge repositories), information processing capabilities and procedures determining their external behavior. The activities and services explicated by agents take place in a common environment, which in principle can be as large as the area covered by worldwide telecommunication networks. A realistic vision involves a number of relatively small communities of agents (including humans), connected through a network, in their turn linked to other communities to cover non internally supported needs. Starting from the seminal Minski's ideas [Minski, 1985], these communities of agents highly interoperating with each other can be called agencies, in that an external observer could consider the community a sort of "structured" agent offering multiple services.
While, in principle, the agent category embraces entities spanning from simple processing units (reactive agents acting on the basis of "stimulus/response" rules or mechanisms) to complex systems exhibiting "rational" behavior, we will confine ourselves to considering, as already mentioned, only the so-called cognitive agents, that is, entities endowed with symbolic representation of knowledge and driven by explicit goals. These will embody suitable procedures controlling external actions e.g. aimed at getting the resources needed to achieve perceived goals out of the environment or of other agents. For interactions like the latter, involving social ability and pro-active attitudes like commitments and intentions [Woolridge and Jennings, 1995], appropriate communication capabilities become necessary, as hinted before.
Indeed, from a software engineering point of view, a software agent can be defined as an at least semi-autonomous process able to interoperate with other processes (running on the same or on a separate machine) through a suitable ACL [Genesereth, 1992; Genesereth and Ketchpel, 1994]. That is, we assume an intuitive general software agent model, adapted from [Burmeister and Sundermeyer, 1992] and shown in Fig. 1, in which each "isolated" entity possesses one or more conveniently represented information repositories using which it can perform, without interacting with other agents, processing operations by means of suitable elaboration and control components. Information flows in an agent peculiar way along its I/O channels facing the environment (e.g. sensors and actuators).
Figure 1: A general software agent model.
Cooperation/coordination with other agents is achieved by extending the representation mechanisms of this isolated entity with ACL communication primitives. An essential feature of such primitives is that they must allow agent integration at the knowledge level [Newell, 1982], that is, in a manner independent of implementation related aspects. For the sake of simplicity, the inter-agent communication facility is shown as a self-contained module in the figure. Thus individual agents are essentially viewed as "units of knowledge and interaction" [Gasser, 1991].
Among proposed ACLs, the Knowledge Query and Manipulation Language (KQML) developed within the Knowledge Sharing Effort [Finin et al., 1992; Finin et al., 1993] is receiving more and more consensus both from the theoretical and from the applicative point of view. It consists of a set of communication primitives of notification (tell, untell) and of request and reply (ask- if, reply), and allows to linguistically decouple the communication modes (expressed in KQML) from the communicated information (expressed for example in KIF [Genesereth and Fikes, 1992]). The content portion of a message should mention the objects and relations in a predefined conceptualization, that is in an ontology known both to the sending and to the receiving agents. These design characteristics appeared suitable for the agentification process we undertook on previously developed prototypical systems, and also for the integration of a new agent in an existing community. Therefore we strongly took inspiration from KQML while developing our experimental agent communication protocol [Lanzola et al., 1995].
As already explained, in our framework we consider the individual agent makes little sense as an isolated entity and rather we are interested in the roles and the behaviors it assumes in the context and in behalf of a larger group. Thus, even at an organization-independent design stage we firstly made a fundamental distinction among software agents. Server agents provide other agents with information elements from their repositories, which are often structured as libraries of sharable and reusable components. That is, these components can be used as building blocks for off-line agent construction or expansion, or can be serviced on-line on request. Instances of this category can be terminology servers, ontology servers, problem solvers servers, data servers, and so on, each named after the kind of information chunks it is able to offer. Server agents are thus needed to speed up agent configuration and to allow the distribution and reuse of resources (e.g. of clinical data and medical knowledge). A fundamental role in the specification of an agent's competence is played by ontology and terminology servers: terms and concepts definitions identify the set of entities that "exist" for an agent. Application agents are instead endowed with specialistic competence; thus they can reply to queries pertaining to their expertise field. In this category we can classify systems equipped with application knowledge and appropriate reasoning techniques such as KBSs, specialistic databases with their DBMS, systems provided with particular computational skills as statistical software packages, devices endowed with peculiar abilities of interaction with physical environment such as monitoring systems, active sensors, robots, and so on.
Secondly, we devised three basic types of medical application agents, characterized by complementary competencies to be integrated in order to create a knowledgeable composite entity, that we named application agency [Lanzola et al., 1995], here shown in Fig. 2b. Desktop Agents are essentially more or less complex and customized user interfaces from which human users can access, besides routine services like e-mail, the facilities of the two other agent types: Data Management Agents (DMAs) and Reasoning Management Agents (RMAs). While the former manage local or distributed databases, the latter are endowed with local or remote application knowledge bases (which can be possibly augmented with information gained from other agents) and reasoning capabilities (e.g. several problem solvers whose action is coordinated through a common epistemological model) in order to perform complex and highly specialized problem solving activities. All the facilities offered by traditional databases, KBSs and user interfaces can be gathered and simultaneously made distributed by such application agencies, that are shaped, starting from a common explicit conceptualization or application ontology, to meet the needs and the patient management view of a particular category of human users. Actually, the application agencies offer a high-level, tailored view on the services provided by the networked systems. For example, the prototypical agencies implemented within a D-HIS were adapted to support the physician, the nurse and the administrator in some respectively typical tasks. Therefore, a physician agency is more biased on the medical side helping clinicians in assessing the patient's state and identifying a suitable therapy, while a manager agency is instead committed to the financial aspects, evaluating the suitability of patient management on a cost-effectiveness basis. Finally, nurse applications keep track of the evolution of patient states helping in collecting data and detecting the occurrence of abnormal situations [Lanzola et al., 1996].
Figure 2a: The general network.
Figure 2b: The basic application agency.
In summary, the general network of software agents can be schematized as in Fig. 2a, with the shown application agencies representing a particular configuration of the data-based or knowledge- based services offered by the distributed architecture, obtained thanks to the application model and vocabulary. Social or organizational roles are then superimposed on these autonomous knowledgeable collective agents [Conte and Castelfranchi, 1995] directly interfacing with human ones.