| 1 | ONCOU ;Hines OIFO/GWB - ONCOLOGY UTILITY CALLS ;06/06/00
|
---|
| 2 | ;;2.11;ONCOLOGY;**5,25,26,43**;Mar 07, 1995
|
---|
| 3 | ;
|
---|
| 4 | ASKNUM(TXT,RNG,DFLT) ;ask for a number - expects RNG as NNN:NNN
|
---|
| 5 | N DIR,Y S DIR(0)="N^"_RNG,DIR("A")=TXT S:$D(DFLT) DIR("B")=DFLT D ^DIR Q Y
|
---|
| 6 | ASKY(TXT) ;ask a Y/N question, default YES, returns 1 for Y, 0 for N
|
---|
| 7 | N DIR,Y S DIR("A")=TXT,DIR(0)="Y",DIR("B")="Yes" D ^DIR S:Y=U Y=-1 Q Y
|
---|
| 8 | LOOKUP(FL,NTR,UIO,Y) ;look up entry NTR in File FL with user options UIO, return Y array if parameter passed
|
---|
| 9 | N DIC,Y S DIC=FL,DIC(0)=$G(UIO),X=NTR D ^DIC Q +Y
|
---|
| 10 | GETVAL(FN,DA,DR,SE,SF) ;get value of field DR in entry DA in file FN - if DR is a multiple then get subfield SF in subentry SE
|
---|
| 11 | N DI,DIC,DIQ,OQ,OX,D0 S DIC=FN,DIQ="OQ",OX=+$P(^DD(FN,DR,0),U,2) S:OX DA(OX)=SE,DR(OX)=SF D EN^DIQ1 Q $S(OX:OQ(OX,SE,SF),1:OQ(FN,DA,DR))
|
---|
| 12 | VERSION(PKG) ;get version # for pkg
|
---|
| 13 | N PNU,Y S PNU=+$O(^DIC(9.4,"B",PKG,"")),Y=$G(^DIC(9.4,PNU,"VERSION")) Q Y
|
---|
| 14 | VERCHK(PKG,VER,PATNO) ;verify version for a patch
|
---|
| 15 | N INST,OK S OK=0 ; assume the worst
|
---|
| 16 | W !!,"This routine will install ",PKG," Version ",VER," Patch ",PATNO,".",!!
|
---|
| 17 | S INST=$$VERSION(PKG)
|
---|
| 18 | I INST="" W *7,"But the ",PKG," package doesn't seem to be installed on this system!"
|
---|
| 19 | E I INST'=VER W *7,"But Version ",VER," of the ",PKG," package doesn't seem to be installed!" W:INST !,"(Current installed version: ",INST,")"
|
---|
| 20 | E S OK=1
|
---|
| 21 | Q OK
|
---|
| 22 | SITEPAR(MSG) ;Are ONCOCOLOGY SITE PARAMETERS defined?
|
---|
| 23 | N OK
|
---|
| 24 | S OK=$O(^ONCO(160.1,"C",DUZ(2),0))
|
---|
| 25 | I OK="" S OK=$O(^ONCO(160.1,0))
|
---|
| 26 | I 'OK,$G(MSG)="ERRMSG" W !!,"The ONCOLOGY SITE PARAMETERS have not been set up.",!,"Use the ""Define Tumor Registry Parameters"" Option.",!!
|
---|
| 27 | Q OK
|
---|
| 28 | LTS(DA,NOTTHIS) ;Invoked by AC cross-reference of TUMOR STATUS CODE sub-field (#.02) of TUMOR STATUS field (#73) of ONCOLOGY PRIMARY file (#165.5), sets value into LAST TUMOR STATUS field (#95)
|
---|
| 29 | ;NOTTHIS is defined in the KILL logic - we want to skip the current TUMOR STATUS
|
---|
| 30 | N OX,DIE,DR,NTS,OTS
|
---|
| 31 | S NTS="" ; new tumor status defaults to null
|
---|
| 32 | S OX=$O(^ONCO(165.5,DA,"TS","AA","")) I OX,$D(NOTTHIS),$D(^ONCO(165.5,DA,"TS","AA",OX,NOTTHIS)) S OX=$O(^ONCO(165.5,DA,"TS","AA","")) ; get IEN of last status - skip the current node on the kill
|
---|
| 33 | S:OX OX=$O(^(OX,"")) S:OX NTS=$P($G(^ONCO(165.5,DA,"TS",OX,0)),U,2) S OTS=$P($G(^ONCO(165.5,DA,7)),U,6),$P(^(7),U,6)=NTS ;get old data, set new data
|
---|
| 34 | K:$L(OTS) ^ONCO(165.5,"ACS",OTS,DA) S:$L(NTS) ^ONCO(165.5,"ACS",NTS,DA)="" ;kill old xref, set new xref
|
---|
| 35 | Q
|
---|
| 36 | ;
|
---|
| 37 | KILLNAT(FILE,SWS) ;Kill national fields only for a file
|
---|
| 38 | ;Valid switches in SWS:/DOTS prints a dot every 10
|
---|
| 39 | N DOTS,DA,DIK,KT
|
---|
| 40 | S DOTS=(SWS["/DOTS") ;print dots?
|
---|
| 41 | S DA(1)=FILE
|
---|
| 42 | I $D(^DD(FILE)) S DIK="^DD("_FILE_",",DA=0 F KT=1:1 S DA=$O(^DD(FILE,DA)) Q:'DA!(DA'<10000) D ^DIK I DOTS W:KT#10=0 "." ;if file exists, kill national fields only
|
---|
| 43 | Q +$G(KT)
|
---|
| 44 | ;
|
---|
| 45 | CLNNOSUS ;Delete ONCOLOGY PATIENT (160) entries with no primaries/no suspense
|
---|
| 46 | N TOTKT,CLNKT
|
---|
| 47 | W @IOF
|
---|
| 48 | W !
|
---|
| 49 | W !," This option will purge ONCOLOGY PATIENT records"
|
---|
| 50 | W !," with no suspense records and no primaries."
|
---|
| 51 | W !
|
---|
| 52 | L +^ONCO(160):5
|
---|
| 53 | I D
|
---|
| 54 | .K ^TMP($J,"NOSUS")
|
---|
| 55 | .D COUNT
|
---|
| 56 | .I CLNKT=0 W " No records to purge" W ! K DIR S DIR(0)="E" D ^DIR
|
---|
| 57 | .I CLNKT>0,$$CLNOK D PURGE
|
---|
| 58 | .L -^ONCO(160)
|
---|
| 59 | E W !!,"The ONCOLOGY PATIENT file is in use... try again later!",*7,!!
|
---|
| 60 | Q
|
---|
| 61 | ;
|
---|
| 62 | COUNT ;Count the number of entries to delete
|
---|
| 63 | N OI S OI=0
|
---|
| 64 | S (TOTKT,CLNKT)=0
|
---|
| 65 | F S OI=$O(^ONCO(160,OI)) Q:OI'=+OI D CHK
|
---|
| 66 | W !," Total ONCOLOGY PATIENT records: ",TOTKT
|
---|
| 67 | W !," Total records marked for deletion: ",CLNKT,!
|
---|
| 68 | I CLNKT>0 W !," Patients to be deleted:" S IEN=0 F S IEN=$O(^TMP($J,"NOSUS",IEN)) Q:IEN'>0 D
|
---|
| 69 | .W !,?3,$$GET1^DIQ(160,IEN,60,"E")," ",$$GET1^DIQ(160,IEN,.01,"E")
|
---|
| 70 | W !
|
---|
| 71 | Q
|
---|
| 72 | ;
|
---|
| 73 | CHK S TOTKT=TOTKT+1
|
---|
| 74 | S SUSDT=$O(^ONCO(160,OI,"SUS","B","")) I SUSDT'="" Q
|
---|
| 75 | I $D(^ONCO(165.5,"C",OI)) Q
|
---|
| 76 | I '$D(^ONCO(160,OI,0)) K ^ONCO(160,OI) Q
|
---|
| 77 | S CLNKT=CLNKT+1
|
---|
| 78 | S ^TMP($J,"NOSUS",OI)=""
|
---|
| 79 | Q
|
---|
| 80 | ;
|
---|
| 81 | CLNOK() ;Confirm that it's OK to purge
|
---|
| 82 | N DIR
|
---|
| 83 | S DIR("A")=" Proceed with purge",DIR("B")="No",DIR(0)="Y"
|
---|
| 84 | D ^DIR
|
---|
| 85 | Q Y
|
---|
| 86 | ;
|
---|
| 87 | PURGE ;Delete entries
|
---|
| 88 | N DIK S DIK="^ONCO(160,"
|
---|
| 89 | N DA S DA=0
|
---|
| 90 | F S DA=$O(^TMP($J,"NOSUS",DA)) Q:DA'=+DA D ^DIK W "."
|
---|
| 91 | W " DONE"
|
---|
| 92 | W ! K DIR S DIR(0)="E" D ^DIR
|
---|
| 93 | Q
|
---|
| 94 | ;
|
---|
| 95 | LCASE(ONCOSTR) ;Convert string to upper/lowercase
|
---|
| 96 | N ONCO F ONCO=2:1:$L(ONCOSTR) I $E(ONCOSTR,ONCO)?1U,$E(ONCOSTR,ONCO-1)?1A S ONCOSTR=$E(ONCOSTR,0,ONCO-1)_$C($A(ONCOSTR,ONCO)+32)_$E(ONCOSTR,ONCO+1,999)
|
---|
| 97 | Q ONCOSTR
|
---|
| 98 | UCASE ;Convert string to uppercase
|
---|
| 99 | S X=$TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
---|
| 100 | Q
|
---|