Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: HLEMSND

HLEMSND.m

Go to the documentation of this file.
  1. HLEMSND ;ALB/CJM - Sends events to remote event servers;12 JUN 1997 10:00 am
  1. ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13,1995
  1. ;
  1. SENDALL ;send all events pending distribution to remote locations
  1. L +^HLEV(776.4,"AK"):0
  1. Q:'$T
  1. D START^HLEVAPI()
  1. N EVENT
  1. S IDX="^HLEV(776.4,""AK"")"
  1. S EVENT=0
  1. F S EVENT=$O(@IDX@(EVENT)) Q:'EVENT D
  1. .I $$SEND(EVENT)
  1. .K @IDX@(EVENT)
  1. L -^HLEV(776.4,"AK")
  1. D CHECKOUT^HLEVAPI
  1. Q
  1. ;
  1. ;
  1. SEND(IEN) ;
  1. ;Sends the event=IEN to its remote servers
  1. ;
  1. N MSG,EVENT,TYPE,MAILMSG,DOMAIN
  1. ;
  1. ;get the event
  1. Q:'$$GET^HLEME(IEN,.EVENT) 0
  1. ;
  1. ;get the event type
  1. Q:'$$GET^HLEMT(EVENT("TYPE"),.TYPE) 0
  1. ;
  1. ;are there any remote locations to send this event type?
  1. S DOMAIN=0
  1. F S DOMAIN=$O(TYPE("DOMAIN",DOMAIN)) Q:'DOMAIN D
  1. .I '$L(TYPE("DOMAIN",DOMAIN)) S DOMAIN(DOMAIN)="" Q
  1. .;
  1. .;there is a screen, execute it
  1. .N HLEVENT
  1. .M HLEVENT=EVENT
  1. .N EVENT
  1. .X TYPE("DOMAIN",DOMAIN)
  1. .I $T S DOMAIN(DOMAIN)=""
  1. Q:'$O(DOMAIN(0)) 0 ;there are no remote locations!
  1. ;
  1. ;location of where the message will be built, referenced by indirection
  1. S MSG="^TMP($J,""HL7 MONITOR EVENT"")"
  1. K @MSG
  1. ;
  1. D BUILD(MSG,.EVENT,.TYPE)
  1. S MAILMSG=$$MAIL(MSG,.DOMAIN)
  1. I MAILMSG'="" D
  1. .N DA,DATA,ERROR
  1. .S DA(1)=IEN
  1. .S DATA(.01)=MAILMSG
  1. .I '$$ADD^HLEMU(776.42,.DA,.DATA,.ERROR) D
  1. ..D ERROR(.EVENT)
  1. ..I '$D(ZTQUEUED) W !,"FAILED TO ADD THE MAILMAN MESSAGE NUMBER TO THE EVENT ",ERROR ;then fileman failed!
  1. E D
  1. .D ERROR(.EVENT)
  1. .I '$D(ZTQUEUED) W !,"MAILMAN FAILED TO SEND HL7 LOG EVENT TO REMOTE SERVER"
  1. K @MSG
  1. Q 1
  1. ;
  1. BUILD(MSG,EVENT,TYPE) ;
  1. ;EVENT - event array, pass by reference
  1. ;TYPE - event type array, pass by reference
  1. ;
  1. N SUB,LINE,TXT
  1. ;
  1. ;can't send local pointers!
  1. S EVENT("SITE")=$$STATNUM^HLEMU(EVENT("SITE"))
  1. S EVENT("TYPE")=$$GETFIELD^HLEMU(9.4,.01,TYPE("PACKAGE"))_"^"_TYPE("CODE")
  1. S EVENT("REVIEWER")=""
  1. ;
  1. S SUB=""
  1. F S SUB=$O(EVENT(SUB)) Q:(SUB="") D:$D(EVENT(SUB))'[0
  1. .D ADDDATA(MSG,SUB,EVENT(SUB))
  1. ;
  1. ;add the application data
  1. D ADDLINE(MSG,"**APPLICATION DATA**")
  1. S LINE=0
  1. F S LINE=$O(^HLEV(776.4,EVENT("IEN"),3,LINE)) Q:'LINE D
  1. .S TXT=$G(^HLEV(776.4,EVENT("IEN"),3,LINE,0))
  1. .Q:'$L(TXT)
  1. .D ADDDATA(MSG,"VARIABLE",TXT)
  1. .S TXT=$G(^HLEV(776.4,EVENT("IEN"),3,LINE,2))
  1. .D ADDDATA(MSG,"VALUE",TXT)
  1. ;
  1. ;add the notes
  1. D ADDLINE(MSG,"**NOTES**")
  1. S LINE=0
  1. F S LINE=$O(^HLEV(776.4,EVENT("IEN"),1,LINE)) Q:'LINE D
  1. .S TXT=$G(^HLEV(776.4,EVENT("IEN"),1,LINE,0))
  1. .D:$L(TXT) ADDLINE(MSG,TXT)
  1. Q
  1. ;
  1. MAIL(MSG,DOMAIN) ;
  1. ;Sends the message located at @MSG to the HLEM EVENT SERVER, locations in TYPE("DOMAIN") array
  1. ;Input:
  1. ; message at @MSG
  1. ; DOMAIN - array of remote domains, pass by reference
  1. ;Output: If succssful, the function returns the mailman message number, otherwise, "" is returned
  1. ;
  1. N XMY,XMSUB,XMDUZ,XMTEXT,XMZ,XMDUN,DIFROM,SERVER
  1. S SERVER="S.HLEM EVENT LOG SERVER"
  1. S XMDUZ="HL7 EVENT LOG at "_$P($$SITE^VASITE(),"^",2)
  1. S XMY(.5)=""
  1. S DOMAIN=0 F S DOMAIN=$O(DOMAIN(DOMAIN)) Q:'DOMAIN D
  1. .S XMY(SERVER_"@"_$P($G(^DIC(4.2,DOMAIN,0)),"^"))=""
  1. ;
  1. ;******REMOVE THIS *****
  1. ;S XMY("MOORE,JIM")=""
  1. ;******
  1. ;
  1. S XMTEXT=$P(MSG,")")_","
  1. S XMSUB="HL7 EVENT LOG"
  1. D ^XMD
  1. Q $G(XMZ)
  1. ;
  1. ADDDATA(MSG,LABEL,DATA) ;
  1. ;Description: Adds one formated line to the message text containing the label and data value
  1. ;Input:
  1. ; MSG - the workspace location
  1. ; LABEL - text label that identifies the type of data
  1. ; DATA - data value
  1. ;Output:none
  1. ;
  1. D ADDLINE(MSG,LABEL_":"_DATA)
  1. Q
  1. ;
  1. ADDLINE(MSG,LINE) ;
  1. ;Description: adds one line to the message text
  1. ;Inputs:
  1. ; LINE - the line of text to be added
  1. ; MSG - @MSG is the location for the message text
  1. ;Output: none
  1. S @MSG@(($O(@MSG@(9999),-1)+1))=LINE
  1. Q
  1. ;
  1. ERROR(EVENT) ;
  1. ;establishes a new event if this routine encounters an error.
  1. ;pass EVENT by reference
  1. ;
  1. N NEWEVENT,VAR
  1. S NEWEVENT=$$EVENT^HLEME("SRVR ERROR","HEALTH LEVEL SEVEN")
  1. S VAR("IEN")=EVENT("IEN")
  1. S VAR("ID")=EVENT("ID")
  1. I $$STOREVAR^HLEME(NEWEVENT,.VAR)
  1. Q