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

AMQQSQA2.m

Go to the documentation of this file.
  1. AMQQSQA2 ; IHS/CMI/THL - SUB-SUBQUERIES ;
  1. ;;2.0;IHS PCC SUITE;;MAY 14, 2009
  1. ;-----
  1. I $D(AMQQMMMM) D AUTO G EXIT
  1. VAR D P1
  1. D V1
  1. S $P(AMQQSQSQ,U,5,6)=AMQQSQSJ_U_AMQQSQP1
  1. S AMQQCOMP=";;"
  1. S %=$P($G(^AMQQ(5,AMQQSQN,5)),U,2)
  1. I %,%=$P($G(^AMQQ(5,AMQQSQSN,5)),U,2) S $P(AMQQSQSQ,U,7)=1,$P(AMQQSQSQ,U,1,2)="+0^+0" G CKTAX
  1. Q1 W !!,"Do you want to screen each ",AMQQSQAN," according to the",!
  1. D QX
  1. W " on the ",@AMQQRV,"SAME",@AMQQNV," visit"
  1. S %=1
  1. D YN^DICN
  1. S:$D(DTOUT)+$D(DUOUT) %Y=U
  1. K DTOUT,DUOUT
  1. I %Y=U S AMQQQUIT="" G EXIT
  1. I %Y?1."?" W !!,"If you answer ""YES"" you can screen each ",AMQQSQAN," according to",!,AMQQSQP1," from on the same visit",!! G Q1
  1. I "Yy"[$E(%Y) S $P(AMQQSQSQ,U,7)=1,$P(AMQQSQSQ,U,1,2)="+0^+0" G CKTAX
  1. Q2 W !!,"Well then, do you want me to screen each ",AMQQSQAN," according to",!
  1. D QX
  1. W " on ",@AMQQRV,"TEMPORALLY RELATED",@AMQQNV," visits"
  1. S %=1
  1. D YN^DICN
  1. S:$D(DTOUT)+$D(DUOUT) %Y=U
  1. K DTOUT,DUOUT
  1. I %Y=U S AMQQQUIT="" G EXIT
  1. I %Y?1."?" W !!,"If you answer ""YES"" you can screen ",AMQQSQP1," according to",!,"the value of a temporally related ",AMQQSQAN,!! G Q2
  1. I "Yy"'[$E(%Y) S Y=-1 W " ??",*7 S AMQQQUIT="" G EXIT
  1. DATE W !!
  1. F Z="start","end" D D1 I $D(AMQQQUIT) G EXIT
  1. I $P(AMQQSQSQ,U)>$P(AMQQSQSQ,U,2) W " ??",*7,!!,"The start of the time frame must preceed the end of the time frame!!!",!! G DATE
  1. CKTAX 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. I %="G"!(%="L") D TAX I $D(AMQQQUIT) G EXIT
  1. EXIT K X,%,%Y,Y,Z
  1. Q
  1. ;
  1. V1 S %=$P(^AMQQ(5,AMQQSQN,0),U,5)
  1. S:%=9 %=AMQQSQN+($J/100000)
  1. S $P(AMQQSQSQ,U,8,9)=%_U_AMQQSQNM
  1. S %=$P(^AMQQ(1,%,0),U,5)
  1. S %=$P(^AMQQ(4,%,0),U)
  1. S $P(AMQQSQSQ,U,10)=%
  1. Q
  1. ;
  1. QX W $S(AMQQSQNM["PROVIDER":"the providers of record ",1:(AMQQSQNM_" values obtained"))
  1. Q
  1. ;
  1. D1 W !,"Enter the relative ",Z,"ing point of the time frame: "
  1. R X:DTIME E S X=U
  1. I X="" W !!,"Your answer is mandatory" D HELPD G D1
  1. I $E(X)=U S AMQQQUIT="" G DENDK
  1. I X?1."?" D HELPD G D1
  1. I X=0!(X="0D")!(X="+0D")!(X="-0D") S X="+0D" W " (Same day)"
  1. F Q:X'[" " S X=$P(X," ")_$P(X," ",2,99)
  1. I $E(X)?1N S X="+"_X
  1. I "-+"'[$E(X) W " ??",*7 G D1
  1. S AMQQDATE(1)=$E(X),X=$E(X,2,99)
  1. I $E(X)'?1N W " ??",*7 G D1
  1. S AMQQDATE(2)=+X
  1. S (X,AMQQDATE(3))=$P(X,+X,2)
  1. I $L(X),"DWMY"[$E(X) S %=$E(X),Y=AMQQDATE(2)*$S(%="D":1,%="W":7,%="M":30.44,1:365.25),Y=Y\1 G DEND
  1. W " ??",*7
  1. G D1
  1. DEND S $P(AMQQSQSQ,U,1+(Z="end"))=AMQQDATE(1)_Y
  1. S Y=$E(AMQQDATE(3))
  1. S %=$S(AMQQDATE(1)="-":" BEFORE",1:" AFTER")
  1. S %=AMQQDATE(2)_" "_$S(Y="D":"DAY",Y="W":"WK",Y="M":"MO",1:"YR")_$S(AMQQDATE(2)>1:"S",1:"")_%
  1. S $P(AMQQSQSQ,U,3+(Z="end"))=%
  1. DENDK K AMQQDATE,Y
  1. Q
  1. ;
  1. HELPD W !!,"Answer in the following format: SIGN_NUMBER_TIME UNIT",!
  1. W "For example: ""-6 MONTHS"" or ""+12 WEEKS""",!
  1. W "The SIGN is relative to the primary visit with ""-"" designating a time prior to",!,"the visit and ""+"" designating a time after the visit.",!
  1. W "If you do not enter a SIGN, I will assume it is a '+'",!
  1. W "The TIME UNIT can be DAYS, WEEKS, MONTHS or YEARS. Abbreviations are OK.",!
  1. W "Enter '0' to indicate the same day as the primary visit",!!!
  1. Q
  1. ;
  1. P1 N X,Y
  1. S X=AMQQSQNM
  1. I AMQQSQNM["(" S X=$P(AMQQSQNM,"(") D PLEURAL S AMQQSQP1=X_"("_$P(AMQQSQNM,"(",2,99) Q
  1. D PLEURAL
  1. S AMQQSQP1=X
  1. Q
  1. ;
  1. PLEURAL ; ENTRY POINT FROM MULTIPLE ROUTINES
  1. I X="DIAGNOSIS" S X="DIAGNOSES" Q
  1. S Y=$P(X,$L(X))
  1. I Y="S" S X=$E(X,1,$L(X)-1)_"ES" Q
  1. S X=X_"S"
  1. Q
  1. ;
  1. TAX N AMQQATNM,AMQQLINK,AMQQATN,AMQQSBCT,AMQQTNAR,AMQQTDIC,AMQQTLOK,AMQQTTX,AMQQTAX
  1. S Y=AMQQSQN_U_AMQQSQNM
  1. S %=^AMQQ(5,+Y,0)
  1. S AMQQTTX=$G(^(3))
  1. S AMQQATNM=$P(Y,U,2)
  1. S AMQQATN=+Y
  1. S AMQQSBCT=$P(%,U,20)
  1. S AMQQTNAR=$P(%,U,15)
  1. S AMQQTDIC=U_$P(%,U,16)
  1. S AMQQTLOK=U_$P(%,U,18)
  1. S AMQQLINK=$P(%,U,5)
  1. D ^AMQQTX
  1. I '$D(AMQQTAX) S AMQQQUIT=""
  1. S $P(AMQQSQSQ,U,11)=AMQQTAX_$S($D(^UTILITY("AMQQ TAX",$J,AMQQURGN,"--")):";INVERSE",$D(^("-")):";NULL",1:"")
  1. Q
  1. ;
  1. AUTO S AMQQCOMP=";;"
  1. I $P(AMQQMMMM,";",2)="MTAX" S AMQQCOMP=";;;"_$P(AMQQMMMM,";",3)
  1. S $P(AMQQSQSQ,U,1,2)=$P(AMQQMMMM,";",4)_U_$P(AMQQMMMM,";",5)
  1. D V1
  1. Q
  1. ;