| [613] | 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)
 | 
|---|