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

PSBALL.m

Go to the documentation of this file.
  1. PSBALL ;BIRMINGHAM/VRN-BCMA RPC BROKER CALLS ;04/22/16 14:14
  1. ;;3.0;BAR CODE MED ADMIN;**93**;Mar 2004;Build 111
  1. ;
  1. ; Reference/IA
  1. ; EN1^GMRADPT/10099
  1. ; EN2^GMRADPT/10099 ;93
  1. ; HAVEHDR^ORRDI1/4659 ;93
  1. ;
  1. ALLR(RESULTS,DFN) ; Return array of patient allergies/adverse reactions
  1. ;
  1. ;RPC: PSB ALLERGY
  1. ;
  1. D SORT
  1. Q
  1. ;
  1. SORT ;*** Set up the allergies and adv. reactions arrays.
  1. N REMOTE,GMRA,GMRAL,PSBLCL,REMALL,REMADR,PSBALL,PSBADR,PSBCNT,PSBNM,PSBTYP,X,FIRST
  1. S PSBCNT=0
  1. S GMRA="0^0^111" D EN2^GMRADPT ; local results only
  1. S PSBLCL=GMRAL ; needed to know nka/no assesment (if there are remote results but not local results)
  1. S GMRA="0^0^111^1" D EN2^GMRADPT ; include remote
  1. S REMOTE=$$HAVEHDR^ORRDI1 ;check if server is up
  1. I +GMRAL D ; found local and/or remote results
  1. .S X="" F S X=$O(GMRAL(X)) Q:X="" D ; seperate into 4 arrays local allergies, local adrs, remote allergies, remote adrs
  1. ..S PSBTYP=$P(GMRAL(X),U,5),PSBNM=$P(GMRAL(X),U,2)
  1. ..I X["R" D Q
  1. ...S:PSBTYP=0 REMALL(PSBNM)=""
  1. ...S:PSBTYP>0 REMADR(PSBNM)=""
  1. ..S:PSBTYP=0 PSBALL(PSBNM)=""
  1. ..S:PSBTYP>0 PSBADR(PSBNM)=""
  1. .; add allergies first
  1. .I '$D(PSBALL) S PSBCNT=PSBCNT+1,RESULTS(PSBCNT)="ALL"_U_$S(PSBLCL="":"No Assessment",1:"No Known Allergies")
  1. .I $D(PSBALL) S X="" F S X=$O(PSBALL(X)) Q:X="" S PSBCNT=PSBCNT+1,RESULTS(PSBCNT)="ALL"_U_X ; add local allergies
  1. .S RESULTS(PSBCNT)=RESULTS(PSBCNT)_" Remote Allergies: " ; add remote tag to last local allergy
  1. .I '$D(REMALL) D ; no remote allergies
  1. ..I '$D(REMADR),'REMOTE S RESULTS(PSBCNT)=RESULTS(PSBCNT)_"Remote Data Not Available" Q
  1. ..S RESULTS(PSBCNT)=RESULTS(PSBCNT)_"None"
  1. .I $D(REMALL) S X="",FIRST=1 F S X=$O(REMALL(X)) Q:X="" D
  1. ..I 'FIRST S PSBCNT=PSBCNT+1,RESULTS(PSBCNT)="ALL"_U_X ; add remote allergies to list (will quit if none found)
  1. ..I FIRST S RESULTS(PSBCNT)=RESULTS(PSBCNT)_X,FIRST=0 ; first one needs to be appended to avoid leading comma added in gui
  1. .; add adrs next
  1. .I '$D(PSBADR) S PSBCNT=PSBCNT+1,RESULTS(PSBCNT)="ADR"_U_$S(PSBLCL="":"No Assessment",1:"No Known Reactions")
  1. .I $D(PSBADR) S X="" F S X=$O(PSBADR(X)) Q:X="" S PSBCNT=PSBCNT+1,RESULTS(PSBCNT)="ADR"_U_X ; add local adrs
  1. .S RESULTS(PSBCNT)=RESULTS(PSBCNT)_" Remote ADRs: " ; add remote tag to last local adr
  1. .I '$D(REMADR) D ; no remote adrs
  1. ..I '$D(REMALL),REMOTE'>0 S RESULTS(PSBCNT)=RESULTS(PSBCNT)_"Remote Data Not Available" Q
  1. ..S RESULTS(PSBCNT)=RESULTS(PSBCNT)_"None"
  1. .I $D(REMADR) S X="",FIRST=1 F S X=$O(REMADR(X)) Q:X="" D
  1. ..I 'FIRST S PSBCNT=PSBCNT+1,RESULTS(PSBCNT)="ADR"_U_X ; add remote adrs to list (will quit if none found)
  1. ..I FIRST S RESULTS(PSBCNT)=RESULTS(PSBCNT)_X,FIRST=0 ; first one needs to be appended to avoid leading comma added in gui
  1. E D ; did not find local or remote results
  1. .S PSBCNT=PSBCNT+1,RESULTS(PSBCNT)="ALL"_U_$S(PSBLCL="":"No Assessment",1:"No Known Allergies")
  1. .S RESULTS(PSBCNT)=RESULTS(PSBCNT)_$S('REMOTE:" Remote: Remote Data Not Available",1:" Remote Allergies: None")
  1. .S PSBCNT=PSBCNT+1,RESULTS(PSBCNT)="ADR"_U_$S(PSBLCL="":"No Assessment",1:"No Known Reactions")
  1. .S RESULTS(PSBCNT)=RESULTS(PSBCNT)_$S('REMOTE:" Remote: Remote Data Not Available",1:" Remote ADRs: None")
  1. S RESULTS(0)=PSBCNT
  1. Q