[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Evolving COAS model




Folks,

as you worry about resource IDs and resource names and resource references -
keep this in mind -
this is a subset of the evolving COAS interface.  as an application
developer in this space i do
need to worry about how can one apply the HRAC to the accesses being
attempted... :-)

for those of you interested in looking at all the related information:
http://www.protocol.com/engineering/corbamed/coas/incoming/

- regards
- juggy



//File: ObservationData.idl

#ifndef _OBSERVATION_DATA_IDL_
#define _OBSERVATION_DATA_IDL_

#include <NamingAuthority.idl>
#include <TerminologyServices.idl>
#include <PersonIdService.idl>
#include "TimeDefs.idl"

#pragma prefix "omg.org"

module ObservationData
{
	struct NameValuePair {
		NamingAuthority::QualifiedNameStr name;
		CORBA::ValueBase	val;
	}
	typedef sequence< NameValuePair > NVPairSeq;

	typedef NamingAuthority::QualifiedName OID;

	value Item;

	typedef sequence< Item > ItemSeq;

	// This definition only models tree structure relationships
	//  not the generic any item to any item relationships
	struct ItemRelation {
		TerminologyServices::QualifiedCode relationship;
		ItemSeq targets;
	};

	typedef sequence< ItemRelation > RelatedItemSeq;

	value Item {
		PersonIdService::QualifiedPersonId pid;
		TerminologyServices::QualifiedCode name;
		TimeSpan time_span;
		OID oid;
		NVPairSeq context;
		ItemSeq member_items;
		RelatedItemSeq related_items;
	};

};

#endif  // _OBSERVATION_DATA_IDL_

//File: ObservationAccess.idl

#ifndef _OBSERVATION_ACCESS_IDL_
#define _OBSERVATION_ACCESS_IDL_

#include <TerminologyServices.idl>
#include <PersonIdService.idl>
#include <CosNotifyComm.idl>
#include <CosNotifyChannelAdmin.idl>
#include <CosEventChannelAdmin.idl>
#include "ObservationData.idl"

#pragma prefix "omg.org"

module ObservationAccess {
	interface EventConsumer;
	interface EventSupplier;
	interface PatientAccess;
	interface IdentityAccess;
	interface ConstraintAccess;
	interface FederatedAccess;

	interface OAComponent {
		readonly attribute PersonIdService::DomainName	domain_name;
		readonly attribute PersonIdService::ComponentName	component_name;

		readonly attribute EventConsumer	event_consumer;
		readonly attribute EventSupplier	event_supplier;
		readonly attribute PatientAccess	patient_access;
		readonly attribute IdentityAccess	identify_access;
		readonly attribute ConstraintAccess	constraint_access;
		readonly attribute FederatedAccess	federated_access;

		readonly attribute PersonIdService::IdentificationComponent	pid_component;
		readonly attribute TerminologyServices::TerminologyService
terminology_service;
		readonly attribute CosTrader::TraderComponents	trader_components;
		readonly attribute CosNaming::NamingContext	naming_context;
	};

	interface PatientAccess : OAComponent {

		Obv ovservation_fetch ( in OID oid )
			raises ( InvalidId, UnknownId );

		ObvSeq observation_get (
				in PersonIdService::PersonId who,
				in TerminologyService::QualifiedCodeSeq what,
				in TimeSpan when )
			raises ( UnknownId, InvalidId, InvalidCode, InvalidTimeSpan );

		ObvSeq observation_available (
				in PersonIdService::PersonIdSeq who,
				in TerminologyServices::QualifiedCodeSeq what,
				in TimeSpan when )
			raises ( UnknownIds, InvalidIds, InvalidCode, InvalidTimeSpan );

		ObvSeq observation_query (
				in PersonIdService::PersonIdSeq who,
				in TerminologyService::QualifiedCodeSeq what,
				in TimeSpan when,
				in ContextSeq other )
			raises ( UnknownIds, InvalidIds, InvalidCode, InvalidTimeSpan );

		ObvSeq observation_query_with_policy (
				in PersonIdService::PersonIdSeq who,
				in TerminologyService::QualifiedCodeSeq what,
				in TimeSpan when,
				in ContextSeq other,
				in PolicySeq policy )
			raises ( UnknownIds, InvalidIds, InvalidCode, InvalidTimeSpan );
	};

	interface ConstraintAccess : OAComponent {
		ObvSeq contraint_query (
				in Constraint the_constraint,
				in PolicySeq policy )
			raises ( ... );
	};

	interface IdentityAccess : OAComponent {
		Identity get_identity_object ( in PersonIdService::PersonId who )
			raises ( UnknownId, InvalidId );

		IdentitySeq get_identity_seq ( in PersonIdService::PersonIdSeq who )
			raises (unknownIds, InvalidIds );
	};

	interface Identity {

		ObvSeq observation_get (
				in TerminologyService::QualifiedCodeSeq what,
				in TimeSpan when )
			raises ( InvalidCode, InvalidTimeSpan );

		ObvSeq observation_available (
				in TerminologyServices::QualifiedCodeSeq what,
				in TimeSpan when )
			raises ( InvalidCode, InvalidTimeSpan );

		ObvSeq observation_query (
				in TerminologyService::QualifiedCodeSeq what,
				in TimeSpan when,
				in ContextSeq other )
			raises ( InvalidCode, InvalidTimeSpan );

		ObvSeq observation_query_with_policy (
				in TerminologyService::QualifiedCodeSeq what,
				in TimeSpan when,
				in ContextSeq other,
				in PolicySeq policy )
			raises ( InvalidCode, InvalidTimeSpan );

		void done ( )
			raises ( ... );
	};

	interface EventConsumer : OAComponent,
CosNotifyComm::StructuredPushConsumer {
		readonly attribute CosNotifyChannelAdmin::EventChannel event_channel;

		void connect_structured_push_supplier ( in
CosNotifyComm::StructuredPushSupplier supplier )
			raises ( CosEventChannelAdmin::AlreadyConnected, ... );
	};

	interface EventSupplier : OAComponent,
CosNotifyComm::StructuredPushSupplier {
		readonly attribute CosNotifyChannelAdmin::EventChannel event_channel;

		void connect_structured_push_consumer ( in
CosNotifyComm::StructuredPushConsumer consumer )
			raises ( CosEventChannelAdmin::AlreadyConnected, ... );

		UID subscribe (
				in PersonIdService::PersonIdSeq who,
				in TerminologyServices::QualifiedCodeSeq what,
				in ContextSeq other,
				in PolicySeq policy )
			raises ( UnknownIds, InvalidIds, InvalidCode );

		void unsubscribe ( in UID the_uid )
			raises ( Unsubscribed, ... );

		void get_subscription (
				in UID the_uid,
				out PersonIdService::PersonIdSeq who,
				out TerminologyServices::QualifiedCodeSeq what,
				out ContextSeq other,
				out PolicySeq policy )
			raises ( Unsubscribed, ... );

		void modify_subscription (
				in UID the_uid,
				in PersonIdService::PersonIdSeq who,
				in TerminologyServices::QualifiedCodeSeq what,
				in ContextSeq other,
				in PolicySeq policy )
			raises ( Unsubscribed, ... );
	};

	interface FederatedAccess : OAComponent {
		void load_observations

				in ObvSeq the_observations,
				in PersonIdService::DomainName	domain_name,
				in PersonIdService::ComponentName	component_name )
			raises { ... };
	};

};

#endif  // _OBSERVATION_ACCESS_IDL_

----------------
Broadcast message to hrac-rfp from "V. Juggy Jagannathan" <juggy@careflow.com>.
Go to http://cadse.cs.fiu.edu/omg/hrac-rfp to browse the mail list archive.