| [613] | 1 | IB20PT84 ;ALB/CPM - EXPORT ROUTINE 'DGPTTS1' ; 14-FEB-94
 | 
|---|
 | 2 |  ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | DGPTTS1 ;ALB/AS - FACILITY TREATING SPECIALTY AND 501 MOVEMENTS, cont. ; 11/28/89 @12
 | 
|---|
 | 5 |  ;;5.3;Registration;**26**;Aug 13, 1993
 | 
|---|
 | 6 |  ;
 | 
|---|
 | 7 |  ;build DGA array w/patient's last treat spec of the day as of 11:59 pm
 | 
|---|
 | 8 |  ;
 | 
|---|
 | 9 | LOOP ;
 | 
|---|
 | 10 |  S DGNEXT=$O(^DGPM("ATS",DFN,DGPMCA,DGPREV))
 | 
|---|
 | 11 |  F DGNEXT=DGNEXT:0 Q:($P(DGPREV,".")'=$P(DGNEXT,"."))!('DGNEXT)  S DGNEXT=$O(^DGPM("ATS",DFN,DGPMCA,DGNEXT))
 | 
|---|
 | 12 |  S X=$O(^DGPM("ATS",DFN,DGPMCA,DGPREV,0)),DGA(9999999.999999-$E(DGPREV,1,14))=$S($D(^DIC(45.7,+X,0)):$P(^(0),"^",2),1:0)_"^"_$O(^DGPM("ATS",DFN,DGPMCA,DGPREV,X,0)) I DGNEXT>0 S DGPREV=DGNEXT G LOOP
 | 
|---|
 | 13 |  S DGPREV=0,X=$S($D(^DIC(42,+$P(DGPMAN,"^",6),0)):$P(^(0),"^",3),1:0) I "^NH^D^"[(U_X_U) D ASIH^DGPTTS2
 | 
|---|
 | 14 |  ;
 | 
|---|
 | 15 | LOOP1 ; -- compare specs between mvts ; sort out xfr if spec did't change
 | 
|---|
 | 16 |  S DGSAVE=DGPREV
 | 
|---|
 | 17 |  S DGPREV=$O(DGA(DGPREV)),DGNEXT=$O(DGA(DGPREV)),X=+DGA(DGPREV) I DGNEXT S Y=+DGA(DGNEXT) I (X=Y)!((X=70)&(Y=71))!((X=71)&(Y=70)) K DGA(DGNEXT) S DGPREV=DGSAVE I $O(DGA(DGPREV))>0 G LOOP1
 | 
|---|
 | 18 |  ;
 | 
|---|
 | 19 |  ; -- is mvt during adm
 | 
|---|
 | 20 |  I DGPREV<+DGPMAN!($P(DGPREV,".")'<$S(DGDT:$P(+DGDT,"."),1:9999999)) S (DG1,DG2)=+$P(DGA(DGPREV),"^",2) D DEL:$S('$D(^DGPM(DG1,"PTF")):0,1:$P(^("PTF"),"^",2)]"") G LOOPQ
 | 
|---|
 | 21 |  ;
 | 
|---|
 | 22 |  ; build ^UTILITY for mvts whose spec changed
 | 
|---|
 | 23 |  I X=70!(X=71) S X2=DGPREV,X1=$S(DGNEXT]"":DGNEXT,DGDT]"":DGDT,1:DT) D ^%DTC S $P(DGA(DGPREV),"^",1)=$S(X>45:71,1:70)
 | 
|---|
 | 24 |  S X=$S($D(^DGPM($P(DGA(DGPREV),"^",2),"PTF")):^("PTF"),1:""),^UTILITY($J,"T",DGPREV)=$P(DGA(DGPREV),"^",2)_"^"_+DGA(DGPREV)_"^"_$P(X,"^",2)_"^"_$P(X,"^",3)_"^"_$S($D(^DGPM($P(DGA(DGPREV),"^",2),0)):$P(^(0),"^",8),1:"")
 | 
|---|
 | 25 | LOOPQ I $O(DGA(DGPREV)) G LOOP1
 | 
|---|
 | 26 |  ;
 | 
|---|
 | 27 |  ; look for mvts in ^DGPM that have a PTF mvt # entry
 | 
|---|
 | 28 |  ; but not in ^UTILITY.  If any are found, delete from ^DGPT.
 | 
|---|
 | 29 |  F DGPREV=0:0 S DGPREV=$O(^DGPM("ATS",DFN,DGPMCA,DGPREV)) Q:DGPREV'>0  S X=$O(^DGPM("ATS",DFN,DGPMCA,DGPREV,0)),(DG1,DG2)=$O(^DGPM("ATS",DFN,DGPMCA,DGPREV,+X,0)) I $D(^DGPM(+DG1,"PTF")),$P(^("PTF"),"^",2)]"" D DEL
 | 
|---|
 | 30 |  ;
 | 
|---|
 | 31 |  K Y S Y=+$O(^DGPM("APHY",DGPMCA,0)) I $D(^DGPM(Y,0)) S Y(0)=^(0),Y("PTF")=$S($D(^("PTF")):^("PTF"),1:"")
 | 
|---|
 | 32 |  I $D(Y)>10 S T("ADM")=Y_"^"_$S($D(^DIC(45.7,+$P(Y(0),"^",9),0)):$P(^(0),"^",2),1:"")_"^^"_$P(Y("PTF"),"^",3)_"^"_$P(Y(0),"^",8) K Y
 | 
|---|
 | 33 |  ;
 | 
|---|
 | 34 |  S DGDEL=$O(^UTILITY($J,"T",0))
 | 
|---|
 | 35 |  I DGDEL S T(DGDEL)=^(DGDEL),DG1=$P(T(DGDEL),"^",3) I DG1 S T(DGDEL)=$P(T(DGDEL),U,1,2),DGREC=$S($D(^DGPT(PTF,"M",DG1,0)):^(0),1:"") D MSG K DA S DIK="^DGPT("_PTF_",""M"",",DA(1)=PTF,DA=DG1 D ^DIK K DA S ^UTILITY($J,"T",DGDEL)=$P(T(DGDEL),U,1,2)
 | 
|---|
 | 36 |  K DGA K:$D(T(+DGDT)) T(DGDT)
 | 
|---|
 | 37 |  S DGAD=+DGPMAN F I=0:0 S I=$O(^UTILITY($J,"T",I)) Q:I'>0  S DGAD=I
 | 
|---|
 | 38 |  S DGREC1=$S($D(^DGPT(PTF,"M",1,0)):^(0),1:""),DGREC=$S($D(^UTILITY($J,"T",DGAD)):^(DGAD),$D(T("ADM")):T("ADM"),1:"") I DGREC,$D(^DGPM(+DGREC,0)) S $P(^("PTF"),"^",3)=1
 | 
|---|
 | 39 |  S DGREC=$P(DGREC,U,2)
 | 
|---|
 | 40 |  I DGDT W:'DGREC&'$D(ZTQUEUED) !,"No Treating Specialty Transfers",! S I1=1,DIE="^DGPT(",DA=PTF,DR="71///"_DGREC D ^DIE:DGREC S PR=DGAD,NX=DGDT D LOL^DGPTTS2 I $P(DGREC1,U,3,4)'=(LOL_U_LOP) S DR="3///"_LOL_";4///"_LOP,I1=1 D TD5^DGPTTS2 K DR
 | 
|---|
 | 41 |  I 'DGDT S PR=DGAD,NX=DT,I1=1 D LOL^DGPTTS2 I $P(DGREC1,U,2,4)'=(DGREC_U_LOL_U_LOP) S DR="3///"_LOL_";4///"_LOP_$S(DGREC:";2///"_DGREC,1:"") D TD5^DGPTTS2
 | 
|---|
 | 42 |  K DGSAVE,DR,DGREC1 D ^DGPTTS2 Q
 | 
|---|
 | 43 | DEL Q:$D(^UTILITY($J,"T",(9999999.999999-$E(DGPREV,1,14))))
 | 
|---|
 | 44 |  S DG1=$P(^DGPM(DG1,"PTF"),"^",2),DGREC=$S($D(^DGPT(PTF,"M",+DG1,0)):^(0),1:"") Q:DGREC']""  D MSG K DA S DIK="^DGPT("_PTF_",""M"",",DA(1)=PTF,DA=DG1 D ^DIK K DA
 | 
|---|
 | 45 |  S DA=DG2,DR="52///@;53///@",DIE="^DGPM(" D ^DIE Q
 | 
|---|
 | 46 | MSG S DGMSG="" F X=5:1:15 S:X'=10 DGMSG=DGMSG_$S($D(^ICD9(+$P(DGREC,U,X),0)):$P(^(0),U,1)_", ",1:"")
 | 
|---|
 | 47 |  Q:DGMSG']""  S ^UTILITY($J,"DEL",DG1)=DGMSG
 | 
|---|
 | 48 |  ;-- save expanded codes 
 | 
|---|
 | 49 |  S DGMSG1=""
 | 
|---|
 | 50 |  I $D(^DGPT(PTF,"M",+DG1,300)) S DGEX=^(300) F X=2:1:7 S:$P(DGEX,U,X)]"" $P(DGMSG1,U,X)=$P(DGEX,U,X)
 | 
|---|
 | 51 |  S:DGMSG1]"" ^UTILITY($J,300,DG1)=DGMSG1
 | 
|---|
 | 52 |  K DGMSG1
 | 
|---|
 | 53 |  S Y=$P(DGREC,U,10) X ^DD("DD") S DGMSG="501 movement of "_$P(^DPT(DFN,0),U,1)_" of "_Y_" losing specialty "_$P(^DIC(42.4,$P(DGREC,U,2),0),U,1)_" was deleted by "_$P(^VA(200,DUZ,0),U,1)_" it contained diag "_$E(DGMSG,1,120)
 | 
|---|
 | 54 |  S:'$D(DGPMAN) DGPMAN=^DGPM(DGPMCA,0) D MSG^DGPTMSG1
 | 
|---|
 | 55 |  K DGEX Q
 | 
|---|