| 1 | SCMCHLP ;ALB/JDS PCMM WORKLOAD MESSAGE ; 28 Feb 2003  7:54 AM | 
|---|
| 2 | ;;5.3;Scheduling;**272,297**;AUG 13, 1993 | 
|---|
| 3 | ;this version reverts BUILD & SUM to pre 297 - swo/largo 3.31.2006 | 
|---|
| 4 | ;Ftee message | 
|---|
| 5 | EVN(DATE,ASSDT) ;create evn segment | 
|---|
| 6 | I '$G(DATE) D NOW^%DTC S DATE=$E(%,1,12) | 
|---|
| 7 | S MSG=$$EN^VAFHLEVN("B02",DATE,,"^","^") | 
|---|
| 8 | S $P(MSG,"^",7)=$$HLDATE^HLFNC(ASSDT,"TS") | 
|---|
| 9 | S @XMITARRY@(1,1,2)=MSG | 
|---|
| 10 | Q | 
|---|
| 11 | STF(PH) ;staff segment | 
|---|
| 12 | N I,ZERO | 
|---|
| 13 | ;ph pointer to position assignment file | 
|---|
| 14 | ;S ZERO=$G(^SCTM(404.52,+$G(PH),0)) Q:'$P(ZERO,U,3) | 
|---|
| 15 | ;S DOC=$P(ZERO,U,3),INST=$P($G(^SCTM(404.51,+$P($G(^SCTM(404.57,+ZERO,0)),U,2),0)),U,7),SSN=$$GET1^DIQ(200,(+DOC)_",",9),INSTNM=$$GET1^DIQ(4,(+INST)_",",.01),INST=$$GET1^DIQ(4,(+INST)_",",99) | 
|---|
| 16 | N A S A("FILE")=200,A("FIELD")=.01,A("IENS")=DOC | 
|---|
| 17 | S MSG="STF^^"_DOC_"~~~USVHA~LR~"_INST_"|"_SSN_"~~~USSA~SS"_"^"_$$HLNAME^XLFNAME(.A,"","~") | 
|---|
| 18 | S $P(MSG,U,13)=$$HLDATE^HLFNC($P($G(PZERO),U,5),"TS") | 
|---|
| 19 | S $P(MSG,U,14)=$$HLDATE^HLFNC($P($G(ZERO),U,6),"TS") | 
|---|
| 20 | S @XMITARRY@(1,1,3)=MSG | 
|---|
| 21 | Q | 
|---|
| 22 | ORG(PH) ;ORG SEGMENT | 
|---|
| 23 | ;PH pointer to position assignment filePC | 
|---|
| 24 | S @XMITARRY@(1,1,4)="ORG^1^"_INST_"~"_INSTNM_"^^^^^^"_PC | 
|---|
| 25 | Q | 
|---|
| 26 | MSH(PH) ; | 
|---|
| 27 | N I,ZERO,PZERO,VARDOC | 
|---|
| 28 | S DOC=0 | 
|---|
| 29 | S SCMSGCNT=$G(SCMSGCNT)+1 | 
|---|
| 30 | ;ph pointer to position assignment file | 
|---|
| 31 | S ZERO=$G(^SCTM(404.52,+$G(PH),0)) Q:'$P(ZERO,U,3) | 
|---|
| 32 | S (VARDOC,DOC)=$P(ZERO,U,3),FTEE=+$P(ZERO,U,9),INSTI=$P($G(^SCTM(404.51,+$P($G(^SCTM(404.57,+ZERO,0)),U,2),0)),U,7) | 
|---|
| 33 | MSH1 ;Know DOC nad INSTI | 
|---|
| 34 | S INSTNM=$$GET1^DIQ(4,(+INSTI)_",",.01),INST=$$GET1^DIQ(4,(+INSTI)_",",99) | 
|---|
| 35 | ;S MAX=+$P($G(^SCTM(404.57,+ZERO,0)),U,8) | 
|---|
| 36 | S SSN=$$GET1^DIQ(200,(+DOC)_",",9) | 
|---|
| 37 | S (MAX,FTEE)=0 D SUM(DOC,INSTI) | 
|---|
| 38 | S PC=U | 
|---|
| 39 | S (PZERO,ZERO)=$$GET^XUA4A72(+DOC) | 
|---|
| 40 | I 'ZERO N I,FTOK S I="" D | 
|---|
| 41 | .F  S I=$O(^SCTM(404.52,"C",+DOC,I),-1) Q:I=""  S:'$G(FTOK) FTOK=$P($G(^SCTM(404.52,+I,0)),U,9) S (PZERO,ZERO)=$$GET^XUA4A72(+DOC,+$P($G(^SCTM(404.52,I,0)),U,8)) Q:ZERO | 
|---|
| 42 | I 'ZERO,'$G(FTOK) S DOC=0 Q | 
|---|
| 43 | S PC=$P(ZERO,U,7)_"~"_$P(ZERO,U,2) | 
|---|
| 44 | S HL("SAF")=INST Q | 
|---|
| 45 | D CREATE^HLTF(.ID) | 
|---|
| 46 | ;D HL | 
|---|
| 47 | D MSH^HLFNC2(.HL,ID_"-"_SCMSGCNT,.MSG) | 
|---|
| 48 | D NOW^%DTC S $P(MSG,"^",7)=$$HLDATE^HLFNC(%,"TS") | 
|---|
| 49 | S @XMITARRY@(1,1,1)=MSG | 
|---|
| 50 | Q | 
|---|
| 51 | ZFT S @XMITARRY@(1,1,5)="ZFT^1^"_FTEE_"^"_MAX | 
|---|
| 52 | Q | 
|---|
| 53 | HL S HL("ACAT")="NE" | 
|---|
| 54 | S HL("APAT")="AL" | 
|---|
| 55 | S HL("ECH")="~|\&" | 
|---|
| 56 | S HL("ETN")="B02" | 
|---|
| 57 | S HL("FS")="^" | 
|---|
| 58 | S HL("MTN")="PMU" | 
|---|
| 59 | S HL("Q")="""""" | 
|---|
| 60 | S HL("SAF")=$G(^DD("SITE",1)) | 
|---|
| 61 | S HL("SAN")="PCMM" | 
|---|
| 62 | S HL("VER")=2.4 | 
|---|
| 63 | S HL("PID")="P" | 
|---|
| 64 | Q | 
|---|
| 65 | BUILD(VAPTR,HL,XMITARRY,HLIEN) ;Build array given pointer. | 
|---|
| 66 | ;check which file and build based on that | 
|---|
| 67 | ;If team file check if active and PC send message with new max panel | 
|---|
| 68 | ;if possition assignment history check status | 
|---|
| 69 | ;if active send FTEE | 
|---|
| 70 | ;if inactive check if PC and send zero in FTEE | 
|---|
| 71 | ;if from Team position file check if pc and send zero in FTEE. | 
|---|
| 72 | N %,DOC,EVNDATE,FTEE,ID,INSTI,INSTNM,MAX,MSG,PC,SCFUT,SSN,TP,TEAM,Z1 | 
|---|
| 73 | S EVNDATE=$G(^SCPT(404.48,+$G(HLIEN),0)) I 'EVNDATE D NOW^%DTC S EVNDATE=% | 
|---|
| 74 | N HL D HL | 
|---|
| 75 | S ZERO=$G(@(U_$P(VAPTR,";",2)_(+VAPTR)_",0)")) I '$L(ZERO) D  Q 1   ;Record has vanished | 
|---|
| 76 | .N IEN S IEN=$O(^SCPT(404.471,"AWRK",VAPTR,""),-1) Q:'IEN   ;not transmitted | 
|---|
| 77 | .S TP=$P($G(^SCPT(404.48,+$G(HLIEN),0)),U,4) Q:'TP | 
|---|
| 78 | .S ACTIVE=$$DATES^SCAPMCU1(404.52,+TP) | 
|---|
| 79 | .I ((ACTIVE)!(VAPTR'[404.52)) D MSH(+$P(ACTIVE,U,4)) Q:'DOC  D EVN(EVNDATE,$P(ACTIVE,U,2)),STF($P(ACTIVE,U,4)),ORG($P(ACTIVE,U,4)),ZFT Q | 
|---|
| 80 | .S DOC=$P($G(^SCPT(404.471,+IEN,0)),U,8) Q:'DOC | 
|---|
| 81 | .S INSTI=$P($G(^SCTM(404.51,+$P($G(^SCTM(404.57,+TP,0)),U,2),0)),U,7) | 
|---|
| 82 | .D MSH1,EVN(EVNDATE,$P(ACTIVE,U,2)),STF(),ORG(),ZFT | 
|---|
| 83 | I VAPTR[404.57 D  Q 1  ;Team Position | 
|---|
| 84 | .S ACTIVE=$$DATES^SCAPMCU1(404.52,+VAPTR) | 
|---|
| 85 | .D MSH(+$P(ACTIVE,U,4)) Q:'DOC  D EVN(EVNDATE,$P(ACTIVE,U,2)),STF($P(ACTIVE,U,4)),ORG($P(ACTIVE,U,4)),ZFT | 
|---|
| 86 | I VAPTR[404.52 D  Q 1  ;Position Assignment History | 
|---|
| 87 | .I $P(ZERO,U,2)>DT S SCFUT=1 Q  ;future date wait till then | 
|---|
| 88 | .I $P(ZERO,U,2) S EVNDATE=$E($P(ZERO,U,2),1,7)_$E(EVNDATE,8,99) | 
|---|
| 89 | .D MSH(+VAPTR) Q:'DOC  D EVN(EVNDATE,$P(ZERO,U,2)),STF(+VAPTR),ORG(+VAPTR) | 
|---|
| 90 | .D ZFT | 
|---|
| 91 | I VAPTR[404.59 D  Q 1  ;Team Position History | 
|---|
| 92 | .I $P(ZERO,U,2)>DT S SCFUT=1 Q  ;Future do it then | 
|---|
| 93 | .I $P(ZERO,U,2) S EVNDATE=$E($P(ZERO,U,2),1,7)_$E(EVNDATE,8,99) | 
|---|
| 94 | .;check if active assignment on inactive team | 
|---|
| 95 | .S ACTIVE=$$DATES^SCAPMCU1(404.52,$P(ZERO,U,1)) | 
|---|
| 96 | .D MSH(+$P(ACTIVE,U,4)) Q:'DOC  D EVN(EVNDATE,$P(ACTIVE,U,2)),STF(+$P(ACTIVE,U,4)),ORG(+$P(ACTIVE,U,4)) | 
|---|
| 97 | .D ZFT | 
|---|
| 98 | Q 1 | 
|---|
| 99 | PROV(VAPTR) ;Get internal provider given varible pointer | 
|---|
| 100 | N ZERO,ACTIVE | 
|---|
| 101 | S ZERO=$G(@(U_$P(VAPTR,";",2)_(+VAPTR)_",0)")) | 
|---|
| 102 | I VAPTR[404.57 D  Q $$PH($P(ACTIVE,U,4))  ;Team Position | 
|---|
| 103 | .S ACTIVE=$$DATES^SCAPMCU1(404.52,+VAPTR) Q:'ACTIVE | 
|---|
| 104 | I VAPTR[404.52 Q $$PH(+VAPTR) | 
|---|
| 105 | I VAPTR[404.59 D  I ACTIVE Q $$PH(+VAPTR)  ;Team Position History | 
|---|
| 106 | .;check if active assignment on inactive team | 
|---|
| 107 | .S ACTIVE=$$DATES^SCAPMCU1(404.52,$P(ZERO,U,1)) | 
|---|
| 108 | Q 0 | 
|---|
| 109 | PH(PH) ;Return provider from position history | 
|---|
| 110 | Q $P($G(^SCTM(404.52,+$G(PH),0)),U,3) | 
|---|
| 111 | SUM(PR,INST) ; get all the  positions for this provider | 
|---|
| 112 | N I,INS,ZERO,SCA,TEAM | 
|---|
| 113 | S I="" | 
|---|
| 114 | F  S I=$O(^SCTM(404.52,"C",PR,I),-1) Q:'I  D | 
|---|
| 115 | .S ZERO=$G(^SCTM(404.52,I,0)) Q:$D(SCA(+ZERO))  S SCA(+ZERO)="" | 
|---|
| 116 | .S INS=$P($G(^SCTM(404.51,+$P($G(^SCTM(404.57,+ZERO,0)),U,2),0)),U,7) | 
|---|
| 117 | .Q:(INS'=INST) | 
|---|
| 118 | .S ACTIVE=$$DATES^SCAPMCU1(404.52,+ZERO,DT+.5) Q:'ACTIVE | 
|---|
| 119 | .S (Z1,ZERO)=$G(^SCTM(404.52,+$P(ACTIVE,U,4),0)) Q:$P(Z1,U,3)'=PR | 
|---|
| 120 | .S ACTIVE=$$DATES^SCAPMCU1(404.59,+Z1,DT+.5) Q:'ACTIVE | 
|---|
| 121 | .S Z1=$G(^SCTM(404.57,+Z1,0)) | 
|---|
| 122 | .Q:'$P(Z1,U,4)  ;Cannot be primary | 
|---|
| 123 | .S TEAM=$G(^SCTM(404.51,+$P(Z1,U,2),0)) | 
|---|
| 124 | .Q:'$P(TEAM,U,5) | 
|---|
| 125 | .S FTEE=FTEE+$P(ZERO,U,9) | 
|---|
| 126 | .S MAX=MAX+$P(Z1,U,8) | 
|---|