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

AMQQSQ.m

Go to the documentation of this file.
  1. AMQQSQ ; IHS/CMI/THL - SUBQUERY MANAGER ;
  1. ;;2.0;IHS PCC SUITE;;MAY 14, 2009
  1. ;-----
  1. ; WHEN YOU CALL THIS ROUTINE, YOU MUST HAVE THE FOLLOWING VARIABLES:
  1. ; AMQQSQAN (SQ SUBJECT)
  1. ; AMQQUSQL (LEVEL)
  1. ; AMQQSQAA (PARENT SQ OR AMQQUATN)
  1. ; AMQQSQSN (SUBJECT NUMBER)
  1. ; AMQQSQST (SUBJECT TYPE)
  1. ; AMQQUSQN HOLDS THE ABSOLUTE SUBQUERY NUMBER
  1. ; AMQQSQNN HOLDS THE CURRENT AMQQUSQN AT THAT LEVEL
  1. ; AMQQUQQN HOLDS THE 'QQ' NUMBER
  1. RUN D VAR
  1. I $P(^AMQQ(1,AMQQLINK,0),U,5)'=20 W:'$D(AMQQXX) !!,$S(AMQQCCLS="V":"Note: This visit may have ",1:"SUBQUERY: Analysis of "),"multiple ",AMQQSQSZ,"S",!
  1. E D ^AMQQSQIM I $D(AMQQQUIT) G EXIT
  1. D GET
  1. EXIT K %,AMQQAFN,AMQQNMAS
  1. NOTSTD D SQKILL^AMQQKILL
  1. Q
  1. ;
  1. VAR S (AMQQQ,AMQQMULT)=""
  1. I AMQQSQST'="L",AMQQSQST'="I",AMQQSQST'="G" S AMQQCOMP=";;"
  1. S (AMQQSQFN,AMQQSQFR)=0
  1. I $D(AMQQYYMI) Q
  1. S AMQQNAR=$S($D(AMQQONE):AMQQONE,1:"ea. patient")
  1. S %=AMQQSQAN
  1. S %=$P(%,",")
  1. S %=$P(%," (")
  1. S %=$P(%,"(")
  1. S AMQQSQSJ=%
  1. S AMQQSQSZ=$S($E(%,$L(%))="Y":($E(%,1,$L(%)-1)_"IE"),%="DIAGNOSIS":"DIAGNOSE",%="PROBLEM LIST DIAGNOSIS":"PROBLEM LIST DIAGNOSE",%="HEALTH FACTORS":"HEALTH FACTOR",$E(%,$L(%))="S":(%_"E"),1:%)
  1. Q
  1. ;
  1. GET S AMQQSQFN=AMQQSQFN+1
  1. I AMQQSQFN=1 S %=+$G(^AMQQ(5,AMQQSQSN,5)) I %,$P(^(5),U,4) K AMQQSQUF D ^AMQQSQUP G:$D(AMQQSQUF) G1 D CANCEL Q
  1. D ^AMQQSQA
  1. I $D(AMQQSQNV) K AMQQSQNV S AMQQSQFN=AMQQSQFN-1 G GET
  1. I $D(AMQQSQQT) K AMQQSQQT D:AMQQUSQL=1 SQR Q
  1. I $D(AMQQQUIT),AMQQSQFN>1 K AMQQQUIT D CANCEL Q
  1. I $D(AMQQQUIT) Q
  1. G1 K AMQQSQUF
  1. D ^AMQQSQS
  1. I $D(AMQQSQSQ) D RECURSE
  1. I $D(AMQQSQQF) D QQ
  1. I $D(AMQQSQNF) Q
  1. I $D(AMQQSQCF) S AMQQNMAS=""
  1. I '$D(AMQQXX),AMQQSQFN>1 W !! F %=0:0 S %=$O(^UTILITY("AMQQ",$J,"SQL",AMQQSQNN,%)) Q:'% W ! X ^(%)
  1. G GET
  1. ;
  1. CANCEL W !!,$S(AMQQUSQL=1:"ATTRIBUTE ",1:"SUBQUERY "),"CANCELLED!!!",!!,*7
  1. S AMQQSQJ1="CLEANUP^AMQQSQ"
  1. D TREE2^AMQQSQT
  1. S AMQQCOMP=""
  1. I AMQQUSQL=1 K ^UTILITY("AMQQ",$J,"Q",AMQQUATN) S AMQQUATN=AMQQUATN-1,AMQQXSQF=""
  1. Q
  1. ;
  1. CLEANUP K ^UTILITY("AMQQ",$J,$S(AMQQTLVL=1:"SQXQ",1:"SQXS"),AMQQSQN1,AMQQSQN2)
  1. N %
  1. F %="SQ","SQL" K ^UTILITY("AMQQ",$J,%,AMQQSQN2)
  1. Q
  1. ;
  1. SQR S AMQQSQFR=0
  1. I AMQQSQFN=1 Q
  1. CHECK I '$G(AMQQSQNN) S %=$G(AMQQCOMP) I '+%,$P(%,";",4)="" S AMQQSQFR=1 Q
  1. I $D(^UTILITY("AMQQ",$J,"SQ",AMQQSQNN,"NULL")) S AMQQSQFR=6 Q
  1. F %=0:0 S %=$O(^UTILITY("AMQQ",$J,"SQ",AMQQSQNN,%)) Q:'% I $P(^(%),U,6)="C" S AMQQSQFR=5 G CEXIT
  1. F %=0:0 S %=$O(^UTILITY("AMQQ",$J,"SQ",AMQQSQNN,%)) Q:'% I $P(^(%),U,6,7)="O^1" S AMQQSQFR=2 G CEXIT
  1. F %=0:0 S %=$O(^UTILITY("AMQQ",$J,"SQ",AMQQSQNN,%)) Q:'% S Y=$P(^(%),U,6) I "TPN"'[Y S AMQQSQFR=$S(Y="O":3,1:0)
  1. CEXIT K AMQQNVAR,AMQQMULR
  1. Q
  1. ;
  1. QQ S AMQQUQQN=AMQQUQQN+1
  1. I $G(AMQQSQQF) S ^UTILITY("AMQQ",$J,"SQXX",AMQQUQQN,AMQQSQQF)=""
  1. S ^UTILITY("AMQQ",$J,"SQ",AMQQSQNN,AMQQSQFN)="0^LINK^22^SUB^AMQQF1^"_$E(AMQQSQCT)_"^"_AMQQUQQN_U
  1. S AMQQSQQF=AMQQUQQN
  1. D ^AMQQATS
  1. K AMQQSQQF
  1. Q
  1. ;
  1. RECURSE S AMQQUSQL=AMQQUSQL+1
  1. S %=$P(^AMQQ(5,AMQQSQN,0),U,5)
  1. S:%=9 %=AMQQSQN+($J/100000)
  1. S %=$P(^AMQQ(1,%,0),U,5)
  1. S %=$P(^AMQQ(4,%,0),U)
  1. S AMQQTSTG=AMQQSQNM_U_AMQQSQN_U_%_U_AMQQSQNN_U_AMQQSQSQ
  1. N AMQQCOMP,AMQQRECV,AMQQLINK K AMQQSQSQ
  1. FRESH N AMQQSQAA,AMQQSQAN,AMQQSQBF,AMQQSQBS,AMQQSQCF,AMQQSQCT,AMQQSQCV,AMQQSQDF,AMQQSQDV,AMQQSQF1,AMQQSQF2,AMQQSQFL,AMQQSQFL,AMQQSQFN,AMQQSQFR,AMQQSQGF
  1. N AMQQSQJ1,AMQQSQJ2,AMQQSQLS,AMQQSQN,AMQQSQN1,AMQQSQN2,AMQQSQNC,AMQQSQNF,AMQQSQNM,AMQQSQNN,AMQQSQAT,AMQQSQP,AMQQSQP1,AMQQSQP2,AMQQSQPH,AMQQSQPL,AMQQSQPQ,AMQQSQPS,AMQQSQPY,AMQQSQQQ,AMQQSQQT
  1. N AMQQSQRC,AMQQSQRD,AMQQSQSC,AMQQSQSJ,AMQQSQSN,AMQQSQSQ,AMQQSQST,AMQQSQSZ,AMQQSQTF,AMQQSQTP,AMQQSQVV,AMQQSQZL,AMQQSQP,AMQQSQZF ; &&& AMQQSQZF ADDED
  1. S %=AMQQTSTG
  1. S AMQQSQAN=$P(%,U)
  1. S AMQQSQSN=$P(%,U,2)
  1. S AMQQSQST=$P(%,U,3)
  1. S AMQQRECV=$P(%,U,5,99)
  1. S AMQQLINK=$P(AMQQRECV,U,8)
  1. S AMQQSQAA=$P(%,U,4)
  1. S AMQQSQNN=AMQQUSQN
  1. S AMQQSQRC=""
  1. K AMQQTSTG
  1. I $D(AMQQXXND),$D(AMQQYYMI) D AUTO Q
  1. D ^AMQQSQ
  1. R1 I $D(AMQQQUIT) Q
  1. D SETSUB
  1. S AMQQUSQL=AMQQUSQL-1
  1. S AMQQSQQF=AMQQSQRC
  1. K AMQQSQRC
  1. Q
  1. ;
  1. SETSUB F %=1,2 S $P(AMQQCOMP,";",%)=$P(AMQQRECV,U,%)
  1. S $P(AMQQCOMP,";",4)=$P(AMQQRECV,U,11)
  1. S AMQQQ=$P(AMQQRECV,U,8,10)_"^1^^^^^"_AMQQCOMP_"^^^^^^"
  1. S $P(AMQQQ,U,17)=$P(AMQQRECV,U,11)
  1. Q
  1. ;
  1. EN1 ; ENTRY POINT FROM AMQQQ2
  1. D VAR,GET,EXIT
  1. Q
  1. ;
  1. AUTO N AMQQYYYY
  1. S AMQQYYYY=AMQQMMMM
  1. S %=AMQQXXND
  1. N AMQQXXND
  1. S AMQQXXND=$E(%,1,$L(%)-1)_","_AMQQYYMI_",1)"
  1. N AMQQMMMM,AMQQMMCC,AMQQMMVV,AMQQYYMI
  1. S AMQQYYMI=0
  1. D MULT^AMQQQ2
  1. D R1
  1. Q
  1. ;