[613] | 1 | ONCOFTS ;Hines OIFO/GWB - TUMOR STATUS/CANCER STATUS OF PRIMARY ;02/02/00
|
---|
| 2 | ;;2.11;ONCOLOGY;**24,25,47**;Mar 07, 1995;Build 19
|
---|
| 3 | ;
|
---|
| 4 | STSM ;CREATE TUMOR STATUS MULTIPLE IN 165.5
|
---|
| 5 | ;called from "AE" cross-reference of DATE OF LAST CONTACT OR DEATH
|
---|
| 6 | ;Sub-field (#.01) of FOLLOW-UP Field (#400) of ONCOLOGY PATIENT (#160)
|
---|
| 7 | ;N VARIABLES
|
---|
| 8 | ;X=CURRENT FOLLOWUP DATE
|
---|
| 9 | ;DA=CURRENT FOLLOWUP MULTIPLE ENTRY
|
---|
| 10 | ;TUMOR STATUS
|
---|
| 11 | N MH,LC,K,XD1,XY,XDA1
|
---|
| 12 | I '$D(^ONCO(165.5,"C",DA(1))) W:'$D(ZTQUEUED) !!,?5,"Patient ",DA(1)," has no Primaries - cannot track Tumor Status",! ;NO PRIMARIES
|
---|
| 13 | E D STSMSET ;Set the primaries
|
---|
| 14 | Q
|
---|
| 15 | ;
|
---|
| 16 | STSMSET ;Patient has primaries, so set
|
---|
| 17 | N CURFOLDT,PRIMARY
|
---|
| 18 | S CURFOLDT=X ;Current Follow-Up Date
|
---|
| 19 | S PRIMARY=0
|
---|
| 20 | F S PRIMARY=$O(^ONCO(165.5,"C",DA(1),PRIMARY)) Q:PRIMARY="" I $$DIV^ONCFUNC(PRIMARY)=DUZ(2) D
|
---|
| 21 | .N DATEDX
|
---|
| 22 | .S DATEDX=$P(^ONCO(165.5,PRIMARY,0),U,16)
|
---|
| 23 | .I DATEDX="" W:'$D(ZTQUEUED) !,?5," Patient ",DA(1),": DATE DX MISSING for "_$P(^ONCO(164.2,$P(^ONCO(165.5,PRIMARY,0),U),0),U),!?5," NO Tumor Status Followup Created",!!
|
---|
| 24 | .E I DATEDX'>CURFOLDT D STSMONE
|
---|
| 25 | Q
|
---|
| 26 | ;
|
---|
| 27 | STSMONE ;Look for a corresponding tumor status for this primary, set up if none there
|
---|
| 28 | I '$D(^ONCO(165.5,PRIMARY,"TS","B",CURFOLDT)) D ;not defined, set up
|
---|
| 29 | .N TUMSTAT
|
---|
| 30 | .L +^ONCO(165.5,PRIMARY,"TS")
|
---|
| 31 | .S:'$D(^ONCO(165.5,PRIMARY,"TS",0)) ^(0)="^165.573DA" ;set header if undefined
|
---|
| 32 | .F TUMSTAT=$P(^ONCO(165.5,PRIMARY,"TS",0),U,3)+1:1 Q:'$D(^(TUMSTAT)) ;get index
|
---|
| 33 | .S ^ONCO(165.5,PRIMARY,"TS",TUMSTAT,0)=CURFOLDT ;set data
|
---|
| 34 | .S ^ONCO(165.5,PRIMARY,"TS","B",CURFOLDT,TUMSTAT)="" ;date xref
|
---|
| 35 | .S ^ONCO(165.5,PRIMARY,"TS","AA",9999999-CURFOLDT,TUMSTAT)="" ;inverted date xref
|
---|
| 36 | .S $P(^ONCO(165.5,PRIMARY,"TS",0),U,3)=TUMSTAT,$P(^(0),U,4)=$P(^(0),U,4)+1 ;update header
|
---|
| 37 | .L -^ONCO(165.5,PRIMARY,"TS")
|
---|
| 38 | Q
|
---|
| 39 | ;
|
---|
| 40 | KTSM ;Delete TUMOR STATUS Multiple (#73) in ONCOLOGY PRIMARY File (#165.5)
|
---|
| 41 | ;corresponding to an entry in the FOLLOW-UP Multiple (#400) in ONCOLOGY PATIENT File (#160)
|
---|
| 42 | ;Called by KILL Logic of AE Cross-reference of DATE OF LAST CONTACT OR DEATH Sub-field (#.01) of FOLLOW-UP Multiple
|
---|
| 43 | ;Input DA(1) = internal entry number in ONCOLOGY PATIENT File
|
---|
| 44 | ; X = date of follow-up to be deleted
|
---|
| 45 | N XD1
|
---|
| 46 | S XD1=0 F S XD1=$O(^ONCO(165.5,"C",DA(1),XD1)) Q:'XD1 I $$DIV^ONCFUNC(XD1)=DUZ(2) D KTSMA
|
---|
| 47 | Q
|
---|
| 48 | KTSMA I $D(^ONCO(165.5,XD1,"TS","B",X)) D
|
---|
| 49 | .N DIK,DR,DA
|
---|
| 50 | .S DA=0
|
---|
| 51 | .F S DA=$O(^ONCO(165.5,XD1,"TS","B",X,DA)) Q:'DA D KTSMONE ;kill
|
---|
| 52 | Q
|
---|
| 53 | ;
|
---|
| 54 | KTSMONE ;kill a single tumor status sub-record
|
---|
| 55 | ;DEVELOPERS NOTE: The code is written this way because FileMan blows
|
---|
| 56 | ;up if you try to make a DIK call from within DIE. Thus this code
|
---|
| 57 | ;should always be modified if any changes are made to the TUMOR STATUS
|
---|
| 58 | ;multiple Field (#73) in the ONCOLOGY PRIMARY File (#165.5).
|
---|
| 59 | ;When FileMan gets his act together, this logic can be simplified
|
---|
| 60 | ;to a DIK call. MLH 4/14/93
|
---|
| 61 | ;
|
---|
| 62 | ;kill xrefs
|
---|
| 63 | K ^ONCO(165.5,XD1,"TS","B",X,DA) ;kill date xref (.01,B)
|
---|
| 64 | K ^ONCO(165.5,XD1,"TS","AA",9999999-X,DA) ;kill inverse date xref (.01,AA)
|
---|
| 65 | D LTS^ONCOU55(XD1,DA) ;reset LAST TUMOR STATUS Field (#95) (.02,AC)
|
---|
| 66 | K ^ONCO(165.5,XD1,"TS",DA) ;kill data
|
---|
| 67 | S $P(^ONCO(165.5,XD1,"TS",0),U,4)=$P($G(^ONCO(165.5,XD1,"TS",0)),U,4)-1 ;decrement count on header
|
---|
| 68 | Q
|
---|
| 69 | ;
|
---|
| 70 | DX ;DATE OF LAST CONTACT OR DEATH (160.04,.01) Input Transform
|
---|
| 71 | ;At least one DATE DX (165.5,3) must precede DATE OF LAST CONTACT OR
|
---|
| 72 | ;DEATH
|
---|
| 73 | ;DATE OF LAST CONTACT OR DEATH must precede DATE@TIME OF DEATH (160,29)
|
---|
| 74 | N ONCOF,XD1
|
---|
| 75 | S ONCOF=0,XD1=0 F S XD1=$O(^ONCO(165.5,"C",DA(1),XD1)) Q:XD1'>0 S DATEDXZ=$P(^ONCO(165.5,XD1,0),U,16) I (DATEDXZ'>X)!(DATEDXZ="0000000")!(DATEDXZ=8888888)!(DATEDXZ=9999999) S ONCOF=1 Q
|
---|
| 76 | I 'ONCOF W !,"DATE DX must precede DATE OF LAST CONTACT OR DEATH",! K X
|
---|
| 77 | E D
|
---|
| 78 | .N ONCDTD
|
---|
| 79 | .S ONCDTD=$P($G(^ONCO(160,D0,1)),U,8)
|
---|
| 80 | .I $E(ONCDTD,6,7)="00" Q
|
---|
| 81 | .I ONCDTD,ONCDTD<X W !,"DATE OF LAST CONTACT OR DEATH must precede DATE@TIME OF DEATH" K X
|
---|
| 82 | Q
|
---|