1 | RGVCCMR2 ;GAI/TMG,ALS-CMOR ACTIVITY SCORE GENERATOR (PART 2) ;10-6-1997
|
---|
2 | ;;1.0;CLINICAL INFO RESOURCE NETWORK;**19,34**;30 Apr 99
|
---|
3 | ;Reference to ^DGPT( and ^DGPT("B" supported by IA #92
|
---|
4 | ;Reference to ^DIC(40.7 supported by IA #2501
|
---|
5 | ;Reference to ^LR( supported by IA #2466
|
---|
6 | ;Reference to ^PS(55 supported by IA #2470
|
---|
7 | ;Reference to ^PSRX( supported by IA #2471
|
---|
8 | ;Reference to ^RARPT( and ^RARPT("C" supported by IA #2442
|
---|
9 | ;Reference to ^SCE( and ^SCE("C" supported by IA #2443
|
---|
10 | ;
|
---|
11 | EN S U="^"
|
---|
12 | I '$D(RUNTYPE) I '$D(RGDFN) S RUNTYPE="I",RGDFN=0 K ^XTMP("RGVCCMR")
|
---|
13 | I RUNTYPE'="I",($G(RGDFN)'=0) D NOW^%DTC S ^XTMP("RGVCCMR","@@@@","RESTARTED")=% G BATCH
|
---|
14 | I RUNTYPE="I"!($G(RGDFN)=0) K ^XTMP("RGVCCMR")
|
---|
15 | D NOW^%DTC
|
---|
16 | ;set purge date of XTMP = 30 days
|
---|
17 | S ^XTMP("RGVCCMR",0)=$$FMADD^XLFDT($$NOW^XLFDT,30)_U_$$NOW^XLFDT_U_"CMOR CALCULATION DATA"
|
---|
18 | BATCH I '$D(DT) S X="T",%DT="" D ^%DT S DT=Y
|
---|
19 | D NOW^%DTC
|
---|
20 | I $G(RGDFN)=0!(RUNTYPE="I") S ^XTMP("RGVCCMR","@@@@","STARTED")=%,$P(^RGSITE(991.8,1,"CMOR"),U,2)=%
|
---|
21 | S $P(^RGSITE(991.8,1,"CMOR"),U,8)=RUNTYPE
|
---|
22 | S:'$D(^XTMP("RGVCCMR","@@@@","BIG")) ^XTMP("RGVCCMR","@@@@","BIG")=0
|
---|
23 | ALLPTS S ^XTMP("RGVCCMR","@@@@","SECTION")="ALL"
|
---|
24 | S $P(^RGSITE(991.8,1,"CMOR"),U,7)="R"
|
---|
25 | S:'$D(^XTMP("RGVCCMR","@@@@","DFNCOUNT")) ^XTMP("RGVCCMR","@@@@","DFNCOUNT")=0
|
---|
26 | F S RGDFN=$O(^DPT(+RGDFN)) Q:+RGDFN'>0 I $D(^DPT(+RGDFN,0)) S DPT0=^(0) G:$P($G(^RGSITE(991.8,1,"CMOR")),U,4)="Y" STOP D
|
---|
27 | .S QUIT=0 D CKPT I QUIT Q
|
---|
28 | .S FILEFLG=0
|
---|
29 | .D CALCI S ^XTMP("RGVCCMR","@@@@","CURR DFN")=RGDFN S $P(^RGSITE(991.8,1,"CMOR"),U)=RGDFN
|
---|
30 | .I FILEFLG=1 D
|
---|
31 | ..I SCORE>^XTMP("RGVCCMR","@@@@","BIG") S ^XTMP("RGVCCMR","@@@@","BIG")=SCORE
|
---|
32 | ..S RATING=SCORE\100 S:'$D(^XTMP("RGVCCMR","@@@@","RATING",RATING)) ^XTMP("RGVCCMR","@@@@","RATING",RATING)=0
|
---|
33 | ..S ^XTMP("RGVCCMR","@@@@","RATING",RATING)=^XTMP("RGVCCMR","@@@@","RATING",RATING)+1
|
---|
34 | STOP I $P($G(^RGSITE(991.8,1,"CMOR")),U,4)="Y" S $P(^RGSITE(991.8,1,"CMOR"),U,7)="SM",$P(^RGSITE(991.8,1,"CMOR"),U,4)=""
|
---|
35 | E S $P(^RGSITE(991.8,1,"CMOR"),U,7)="SN"
|
---|
36 | D NOW^%DTC
|
---|
37 | S ^XTMP("RGVCCMR","@@@@","STOPPED")=%
|
---|
38 | S $P(^RGSITE(991.8,1,"CMOR"),U,3)=%
|
---|
39 | D COUNT,KILL
|
---|
40 | Q
|
---|
41 | CALC ;API ENTRY POINT DBIA #2710
|
---|
42 | ;VARIABLES: Input
|
---|
43 | ; RGDFN - IEN of the patient in the Patient
|
---|
44 | ; file (#2). RGDFN is not passed as a
|
---|
45 | ; formal parameter, but is defined before
|
---|
46 | ; calling CALC.
|
---|
47 | ;
|
---|
48 | ; Output: None (result sets score into PATIENT (#2))
|
---|
49 | ;
|
---|
50 | N SCORE,X,STDT,%DT,APSTDT,YR,NXPC,PCCODE,XRCODE,LRCODE,NXSCE,SCED,VISIT,NXPTF,PTFD,ADM,NXXR,RARPTD,XRAY,NXRX,PSOVER,RXDT,RXIEN,RX,RGRXST,LRSCORE,LRDFN,LRSTDT,TEST,NXLR,FILEFLG,DIE,DR,DA
|
---|
51 | CALCI S SCORE=0,X="T-1065",%DT="" D ^%DT S STDT=Y,X="T",%DT="" D ^%DT
|
---|
52 | S APSTDT=Y,YR=$E(DT,1,3)
|
---|
53 | ; Remove call to RGRSWPT, routine being deleted.
|
---|
54 | ; Remove call to FBUTL for Fee Basis redesign.
|
---|
55 | ;I '+$$ACTIVE^RGRSWPT(RGDFN) D Q
|
---|
56 | ;.I '$$AUTH^FBUTL(RGDFN,"2961001") Q
|
---|
57 | ;.D FILE
|
---|
58 | I '$D(DT) D NOW^%DTC S DT=%\1
|
---|
59 | OPT ; outpatient visit section
|
---|
60 | ; each visit valued as follows: current fy = 30 pts.
|
---|
61 | ; fy - 1 = 20 pts
|
---|
62 | ; fy - 2 = 10 pts
|
---|
63 | ; primary care visits (based on the PCCODE array) = 50 pts each in
|
---|
64 | ; addition to the visit value
|
---|
65 | ; XRCODE = ien of xray stop code LRCODE = ien of lab stop code
|
---|
66 | ; encounters with a stop code for lab or xray are not counted to
|
---|
67 | ; avoid duplication since lab & xray are counted separately
|
---|
68 | ; in the XR & LR sections
|
---|
69 | K PCCODE S NXPC=0 F S NXPC=$O(^RGSITE(991.8,1,"PC",NXPC)) Q:+NXPC'>0 I $D(^DIC(40.7,+$P($G(^RGSITE(991.8,1,"PC",NXPC,0)),U),0)) S PCCODE($P($G(^RGSITE(991.8,1,"PC",NXPC,0)),U))=""
|
---|
70 | I '$D(PCCODE) S PCCODE=""
|
---|
71 | S XRCODE=0 I $D(^DIC(40.7,"C",105)) S XRCODE=$O(^DIC(40.7,"C",105,0))
|
---|
72 | S LRCODE=0 I $D(^DIC(40.7,"C",108)) S LRCODE=$O(^DIC(40.7,"C",108,0))
|
---|
73 | K VISIT S NXSCE=0 F S NXSCE=$O(^SCE("C",+RGDFN,NXSCE)) Q:+NXSCE'>0 I $D(^SCE(+NXSCE,0)) S SCE0=^(0) D
|
---|
74 | .I $P(SCE0,U,3)=XRCODE!($P(SCE0,U,3))=LRCODE Q
|
---|
75 | .I $P(SCE0,U)>STDT I '$D(VISIT(+$P(SCE0,U)\1)) S VISIT(+$P(SCE0,U)\1)=30+(($E($P(SCE0,U),1,3)-YR)*10) S SCORE=SCORE+30+(($E($P(SCE0,U),1,3)-YR)*10)
|
---|
76 | .I $D(PCCODE(+$P(SCE0,U,3))) I '$D(VISIT($P(SCE0,U)\1)) S VISIT(+$P(SCE0,U)\1)=50 S SCORE=SCORE+50
|
---|
77 | .I $D(PCCODE(+$P(SCE0,U,3))) I $D(VISIT($P(SCE0,U)\1)) S VISIT(+$P(SCE0,U)\1)=VISIT(+$P(SCE0,U)\1)+50 S SCORE=SCORE+50
|
---|
78 | ADM ; past admission section
|
---|
79 | ; each admission valued as follows: current fy = 50 pts
|
---|
80 | ; fy - 1 = 40 pts
|
---|
81 | ; fy - 2 = 30 pts
|
---|
82 | K ADM S NXPTF=0 F S NXPTF=$O(^DGPT("B",+RGDFN,NXPTF)) Q:+NXPTF'>0 I $D(^DGPT(NXPTF,0)) S PTF0=^(0) D
|
---|
83 | .I $P(PTF0,U,2)>STDT I '$D(ADM($P(PTF0,U,2)\1)) S ADM(+$P(PTF0,U,2)\1)=50+(($E($P(PTF0,U,2),1,3)-YR)*10) S SCORE=SCORE+50+(($E($P(PTF0,U,2),1,3)-YR)*10)
|
---|
84 | .I $D(ADM(+$P(PTF0,U,2)\1)) I $O(^DGPT(+NXPTF,"S",0)) S ADM($P(PTF0,U,2)\1)=ADM($P(PTF0,U,2)\1)+10 S SCORE=SCORE+10
|
---|
85 | XRAY ; radiololgy section - each radiology exam valued at 20 pts
|
---|
86 | ;
|
---|
87 | S X="T-365",%DT="" D ^%DT S XRSTDT=Y
|
---|
88 | K XRAY S NXXR=0 F S NXXR=$O(^RARPT("C",+RGDFN,NXXR)) Q:+NXXR'>0 I $D(^RARPT(+NXXR,0)),$P(^(0),U,3)>XRSTDT S RARPT0=^(0) D
|
---|
89 | .I '$D(XRAY($P(RARPT0,U,3)\1)) S XRAY($P(RARPT0,U,3)\1)=20 S SCORE=SCORE+20
|
---|
90 | RX ; prescription section
|
---|
91 | ;
|
---|
92 | ; currently active prescriptions valued at 20 pts
|
---|
93 | K RX,^TMP("PSOR",$J) S NXRX=0
|
---|
94 | ;check for version of Outpatient Pharmacy used
|
---|
95 | ;if under 7.0 use direct global access, else use api PSOORDER
|
---|
96 | S PSOVER=$$VERSION^XPDUTL("PSO")
|
---|
97 | S RXDT=$$FMADD^XLFDT(DT,-121) F S RXDT=$O(^PS(55,RGDFN,"P","A",RXDT)) Q:RXDT'>0 S RXIEN=0 F S RXIEN=$O(^PS(55,RGDFN,"P","A",RXDT,RXIEN)) Q:RXIEN'>0 D
|
---|
98 | . I PSOVER<7 DO ;
|
---|
99 | .. I $D(^PSRX(+RXIEN,0)),$P(^(0),U,15)=0 S RX(NXRX)=20 S SCORE=SCORE+20
|
---|
100 | . I PSOVER'<7 D EN^PSOORDER(RGDFN,RXIEN) I $D(^TMP("PSOR",$J,RXIEN)) D
|
---|
101 | .. S RGRXST=$P($P(^TMP("PSOR",$J,RXIEN,0),"^",4),";") I RGRXST="A"!(RGRXST="S")!(RGRXST="H") S RX(NXRX)=20 K RGRXST S SCORE=SCORE+20
|
---|
102 | K ^TMP("PSOR",$J)
|
---|
103 | LR ; laboratory section
|
---|
104 | ; "CH" = chemistry; "CY" = cytotology; "EM" = electron microscopy;
|
---|
105 | ; "MI = microbiology; "SP" = surgical pathology
|
---|
106 | ; each lab test done in the past year is valued at 10 points
|
---|
107 | ;
|
---|
108 | S LRSCORE=0 I $D(^DPT(+RGDFN,"LR")) S LRDFN=^DPT(+RGDFN,"LR") I $D(^LR(+LRDFN)) S X="T-365",%DT="" D ^%DT S LRSTDT=Y-.0001 F TEST="CH","CY","EM","MI","SP" D
|
---|
109 | .S NXLR=0 F S NXLR=$O(^LR(+LRDFN,TEST,NXLR)) Q:+NXLR'>0 I $D(^(NXLR,0)),$P(^(0),U)>LRSTDT S LRSCORE=LRSCORE+10
|
---|
110 | S SCORE=SCORE+LRSCORE
|
---|
111 | FILE ; file score & date calculated in appropriate locations in the
|
---|
112 | ; PATIENT file 'MPI' node
|
---|
113 | ; scores are filed even if zero
|
---|
114 | ; FILEFLG variable used to illiminate unnecessary statistcal processing
|
---|
115 | S FILEFLG=1
|
---|
116 | S DIE="^DPT(",DA=RGDFN,DR="991.06///^S X=SCORE;991.07///TODAY" D ^DIE
|
---|
117 | I $D(^XTMP("RGVCCMR","@@@@","DFNCOUNT")) S ^XTMP("RGVCCMR","@@@@","DFNCOUNT")=^XTMP("RGVCCMR","@@@@","DFNCOUNT")+1
|
---|
118 | Q
|
---|
119 | KILL K ADM,APSTDT,DA,DIE,DIC,RGDFN,DGS0,DPT0,DR,LRCODE,LRDFN,LRSCORE,LRSTDT
|
---|
120 | K NUM,NXLR,NXPTF,NXRX,NXSCE,NXXR,PCCODE,PTF0,PTNAM
|
---|
121 | K QUIT,RARPT0,RATE,RATING,RX,RXDT,RXIEN,SCE0,SCORE,SSN,STDT,TEST,VISIT,X
|
---|
122 | K XRAY,XRCODE,XRSTDT,Y,YR,%,%DT,NXPC,PSOVER,RUNTYPE,FILEFLG
|
---|
123 | S:$D(ZTQUEUED) ZTREQ="@"
|
---|
124 | Q
|
---|
125 | CKPT S PTNAM=$P(DPT0,U),SSN=$P(DPT0,U,9)
|
---|
126 | I PTNAM?1"ZZ".E S QUIT=1
|
---|
127 | I SSN?1"00000".E S QUIT=1
|
---|
128 | Q
|
---|
129 | COUNT S ^XTMP("RGVCCMR","@@@@","RATING","TCOUNT")=0,RATE="" F S RATE=$O(^XTMP("RGVCCMR","@@@@","RATING",RATE)) Q:RATE'?.N D
|
---|
130 | .;.W !,RATE
|
---|
131 | .S ^XTMP("RGVCCMR","@@@@","RATING","TCOUNT")=^XTMP("RGVCCMR","@@@@","RATING","TCOUNT")+^XTMP("RGVCCMR","@@@@","RATING",RATE)
|
---|
132 | Q
|
---|