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

PSSHRCOM.m

Go to the documentation of this file.
  1. PSSHRCOM ;WOIFO/AV,TS - Handles common PRE PEPS interface functionality ;09/20/07
  1. ;;1.0;PHARMACY DATA MANAGEMENT;**136**;9/30/97;Build 89;
  1. ;
  1. ; @authors - Alex Vazquez, Tim Sabat
  1. ; @date - September 19, 2007
  1. ; @version - 1.0
  1. ;
  1. QUIT
  1. ;;
  1. PARSEMSG(DOCHAND,NODE,HASH,COUNT) ;
  1. ; @DESC Parses the message XML element and stores
  1. ; severity, type, drugName and text in HASH parameter
  1. ;
  1. ; @DOCHAND Handle to XML document
  1. ; @NODE Node associated with XML element
  1. ; @HASH Passed by ref. Used to store return values
  1. ; @COUNT Count of messages
  1. ;
  1. ; @RETURNS Nothing, Values stored in HASH variable
  1. ;
  1. NEW PSS,NAME
  1. ;
  1. SET PSS("child")=0
  1. ;
  1. FOR SET PSS("child")=$$CHILD^MXMLDOM(DOCHAND,NODE,PSS("child")) QUIT:PSS("child")<1 DO
  1. . SET NAME=$$NAME^MXMLDOM(DOCHAND,PSS("child"))
  1. . ;
  1. . DO:NAME="drug"
  1. . . DO PARSEDRG(DOCHAND,PSS("child"),.HASH,COUNT)
  1. . . QUIT
  1. . DO:NAME="severity"
  1. . . SET HASH(COUNT,"severity")=$$GETTEXT(DOCHAND,PSS("child"))
  1. . . QUIT
  1. . DO:NAME="type"
  1. . . SET HASH(COUNT,"type")=$$GETTEXT(DOCHAND,PSS("child"))
  1. . . QUIT
  1. . DO:NAME="drugName"
  1. . . SET HASH(COUNT,"drugName")=$$GETTEXT(DOCHAND,PSS("child"))
  1. . . QUIT
  1. . DO:NAME="text"
  1. . . SET HASH(COUNT,"text")=$$GETTEXT(DOCHAND,PSS("child"))
  1. . . QUIT
  1. . QUIT
  1. QUIT
  1. ;;
  1. DRUGLIST(DOCHAND,NODE,HASH,COUNT) ;
  1. ; @DESC Handles reading the interacted drug list and stores to a Hash
  1. ;
  1. ; @DOCHAND Handle to XML document
  1. ; @NODE Represents the interactedDrugList XML element
  1. ; @HASH Passed by ref. Used to store return values
  1. ; @COUNT Count of drugs
  1. ;
  1. ; @RETURNS Nothing, Values stored in HASH variable
  1. ;
  1. NEW PSS,VAL,DRUGS
  1. SET PSS("child")=0
  1. SET PSS("interactedCount")=1
  1. ;
  1. FOR SET PSS("child")=$$CHILD^MXMLDOM(DOCHAND,NODE,PSS("child")) QUIT:PSS("child")=0 DO
  1. . ; Renew the DRUGS variable before passing in again
  1. . KILL DRUGS
  1. . DO PARSEDRG(DOCHAND,PSS("child"),.DRUGS,PSS("interactedCount"))
  1. . SET VAL=""
  1. . FOR SET VAL=$ORDER(DRUGS(VAL)) QUIT:VAL="" DO
  1. . . SET HASH(COUNT,"drugList",PSS("interactedCount"),"vuid")=DRUGS(VAL,"vuid")
  1. . . SET HASH(COUNT,"drugList",PSS("interactedCount"),"ien")=DRUGS(VAL,"ien")
  1. . . SET HASH(COUNT,"drugList",PSS("interactedCount"),"gcn")=DRUGS(VAL,"gcn")
  1. . . SET HASH(COUNT,"drugList",PSS("interactedCount"),"orderNumber")=DRUGS(VAL,"orderNumber")
  1. . . SET HASH(COUNT,"drugList",PSS("interactedCount"),"drugName")=DRUGS(VAL,"drugName")
  1. . . SET HASH(COUNT,"drugList",PSS("interactedCount"),"cprsOrderNumber")=$GET(DRUGS(VAL,"cprsOrderNumber"))
  1. . . SET HASH(COUNT,"drugList",PSS("interactedCount"),"package")=$GET(DRUGS(VAL,"package"))
  1. . SET PSS("interactedCount")=PSS("interactedCount")+1
  1. . QUIT
  1. QUIT
  1. ;;
  1. PARSEDRG(DOCHAND,NODE,HASH,COUNT) ;
  1. ; @DESC Parses a drug element and stores values in HASH parameter
  1. ;
  1. ; @DOCHAND Handle to XML document
  1. ; @NODE Node associated with XML element
  1. ; @HASH Passed by ref. Used to store return values.
  1. ; @COUNT Count of drugs
  1. ;
  1. ; @RETURNS Nothing, Values stored in HASH values
  1. ;
  1. SET HASH(COUNT,"vuid")=$$VALUE^MXMLDOM(DOCHAND,NODE,"vuid")
  1. SET HASH(COUNT,"ien")=$$VALUE^MXMLDOM(DOCHAND,NODE,"ien")
  1. SET HASH(COUNT,"gcn")=$$VALUE^MXMLDOM(DOCHAND,NODE,"gcnSeqNo")
  1. SET HASH(COUNT,"drugName")=$$VALUE^MXMLDOM(DOCHAND,NODE,"drugName")
  1. ;
  1. ; Split the order number that is in the format 'orderNumber|cprsOrderNumber|package'
  1. ; Get the cprsOrderNumber and package from order number and order number
  1. SET HASH(COUNT,"orderNumber")=$PIECE($$VALUE^MXMLDOM(DOCHAND,NODE,"orderNumber"),"|",1)
  1. SET HASH(COUNT,"cprsOrderNumber")=$PIECE($$VALUE^MXMLDOM(DOCHAND,NODE,"orderNumber"),"|",2)
  1. SET HASH(COUNT,"package")=$PIECE($$VALUE^MXMLDOM(DOCHAND,NODE,"orderNumber"),"|",3)
  1. ;
  1. QUIT
  1. ;;
  1. UPPER(PSSTEXT) ;
  1. ; @DESC Converts lowercase characters to uppercase
  1. ;
  1. ; @PSSTEXT Text to be converted
  1. ;
  1. ; @RETURNS Text in all UPPPERCASE
  1. ;
  1. NEW PSS
  1. ;
  1. SET PSS("lower")="abcdefghijklmnopqrstuvwxyz"
  1. SET PSS("upper")="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  1. SET PSS("upperText")=$TR(PSSTEXT,PSS("lower"),PSS("upper"))
  1. QUIT PSS("upperText")
  1. ;;
  1. GETTEXT(DOCHAND,NODE) ;
  1. ; @DESC Gets text from XML element as a single string
  1. ;
  1. ; @DOCHAND Handle to XML document
  1. ; @NODE Node associated with XML element
  1. ;
  1. ; @RETURNS Text of XML element as a single string
  1. ;
  1. NEW TEXT
  1. ;
  1. DO TEXT^MXMLDOM(DOCHAND,NODE,$NA(TEXT))
  1. ; Store array values in string
  1. SET TEXT=$$UNPARSE(.TEXT)
  1. ;
  1. QUIT TEXT
  1. ;;
  1. UNPARSE(ARRY) ;
  1. ; @DESC Creates a single string from an array
  1. ;
  1. ; @ARRY Array to be looped through for text
  1. ;
  1. ; @RETURNS Text of array as a single string
  1. ;
  1. NEW VAL,STRING
  1. ;
  1. SET VAL=""
  1. SET STRING=""
  1. ;
  1. FOR SET VAL=$ORDER(ARRY(VAL)) QUIT:VAL="" DO
  1. . SET STRING=STRING_ARRY(VAL)
  1. QUIT STRING
  1. ;;
  1. ATRIBUTE(NAME,VALUE) ;
  1. ; @DESC Builds a valid encoded attribute from the name/value pair passed in
  1. ;
  1. ; @NAME The left side of the "name=value" relationship
  1. ; @VALUE The right side of the "name=value" relationship
  1. ;
  1. ; @RETURNS A valid/encoded name value pair
  1. NEW PSS,QT
  1. SET QT=""""
  1. SET PSS("attribute")=NAME_"="_QT_$$SYMENC^MXMLUTL($GET(VALUE))_QT
  1. QUIT PSS("attribute")
  1. ;;
  1. ISPROF(ORDERNUM) ;
  1. ; @DESC Determines if a drug is a profile drug according to
  1. ; its orderNumber
  1. ;
  1. ; @RETURNS 1 if is a profile, 0 if not a profile
  1. NEW PSS
  1. ;
  1. SET PSS("isProfile")=$$UPPER^PSSHRCOM(ORDERNUM)["PROFILE"
  1. ;
  1. QUIT PSS("isProfile")
  1. ;;
  1. STACK ;
  1. ; @DESC Prints a stack trace
  1. ;
  1. ; @RETURNS Nothing
  1. NEW PSSLOOP
  1. FOR PSSLOOP=0:1:$STACK(-1) DO
  1. . WRITE !,"Context level:",PSSLOOP,?25,"Context type: ",$STACK(PSSLOOP)
  1. . WRITE !,?5,"Current place: ",$STACK(PSSLOOP,"PLACE")
  1. . WRITE !,?5,"Current source: ",$STACK(PSSLOOP,"MCODE")
  1. . WRITE !
  1. . QUIT
  1. QUIT
  1. ;;