1 | SCMCDD ;ALB/REW - DD Calls used by PCMM ; 6 November 1995
|
---|
2 | ;;5.3;Scheduling;**41,51,177,204**;AUG 13, 1993
|
---|
3 | ;1
|
---|
4 | NEWHIST(FILE,IEN,DATE,SCERR,STATUS) ; PCMM history files - new record's dt & status
|
---|
5 | ; Complete
|
---|
6 | ; input:
|
---|
7 | ; FILE = 404.52,404.53,404.58, or 404.59
|
---|
8 | ; IEN = if file=404.58 - pointer to 404.51
|
---|
9 | ; otherwise - pointer to 404.57
|
---|
10 | ; DATE = effective date
|
---|
11 | ; SCERR = [default = "SCERR"]
|
---|
12 | ; STATUS = [optional] 1=active/0=inactive - IF undefined don't check
|
---|
13 | ; output:
|
---|
14 | ; Returned: 1 if ok to add, 0 if not^message^external
|
---|
15 | ; Note: For 404.52: special case
|
---|
16 | ; @scerr = error message array
|
---|
17 | N SCDATES,SCX,SCOK,DIERR,SCLASTDT,Y,X
|
---|
18 | N SCLSEQ,SCN,SCESEQ,SCPARM,SCP,SCBEGIN,SCEND,SCINCL,SCDTS
|
---|
19 | S SCOK=1
|
---|
20 | ;verify date is after last date
|
---|
21 | S SCLASTDT=$$LASTDATE^SCAPMCU1(FILE,IEN)
|
---|
22 | IF SCLASTDT&(SCLASTDT'<DATE) D G QTNWHIST
|
---|
23 | .S Y=SCLASTDT D DD^%DT
|
---|
24 | .S SCOK="0^New Date is not after last historical date("_Y_")"_U_SCLASTDT
|
---|
25 | S SCX=$$DATES^SCAPMCU1(FILE,IEN,DATE)
|
---|
26 | IF SCX<0 D G QTNWHIST
|
---|
27 | .S SCOK=0_U_"Error in ACTHIST call"
|
---|
28 | .S SCPARM("NEW ENTRY")="Error in ACTHIST call"
|
---|
29 | .D ERR^SCAPMCU1(.SCESEQ,4045101,.SCPARM,"",.SCERR)
|
---|
30 | IF DATE'>$P(SCX,U,2)!(DATE'>$P(SCX,U,3)) D G QTNWHIST
|
---|
31 | .S SCOK=0_U_"Date On or Before Last Entry"
|
---|
32 | .S SCPARM("EFFECTIVE DATE")=DATE
|
---|
33 | .D ERR^SCAPMCU1(.SCESEQ,4045101,.SCPARM,"",.SCERR)
|
---|
34 | ;bp/cmf 204 new code begin
|
---|
35 | I $$BADNEWDT^SCMCDDA G QTNWHIST
|
---|
36 | ;bp/cmf 204 new code end
|
---|
37 | ;skip to end if status is not defined
|
---|
38 | IF '$D(STATUS)!($G(STATUS)="") G QTNWHIST
|
---|
39 | IF STATUS=+SCX D G QTNWHIST
|
---|
40 | .S SCOK=0_U_"Status Must Change from Prior Entry - Current Status is "_$S(STATUS:"Active",1:"Inactive")
|
---|
41 | QTNWHIST Q SCOK
|
---|
42 | ;
|
---|
43 | OKDEL(FILE,HISTIEN,SCERR) ;PCMM history files - delete record
|
---|
44 | ; input:
|
---|
45 | ; FILE = History File: 404.52,404.53,404.58, or 404.59
|
---|
46 | ; HISTIEN = Entry in FILE
|
---|
47 | ; SCERR = [default = "SCERR"]
|
---|
48 | ; output:
|
---|
49 | ; Returned: 1 if ok to delete, 0 if not^message
|
---|
50 | ; @scerr = error message array
|
---|
51 | N SCLASTDT,SCX,ROOT,SCNODE,SCOK,SCSTATUS
|
---|
52 | S SCOK=1
|
---|
53 | S ROOT="^SCTM("_FILE_","_HISTIEN_",0)"
|
---|
54 | S SCNODE=$G(@ROOT)
|
---|
55 | S SCLASTDT=$$LASTDATE^SCAPMCU1(FILE,$P(SCNODE,U,1)) ;1st pc=tm or pos
|
---|
56 | IF SCLASTDT'=$P(SCNODE,U,2) D G QTOKDEL
|
---|
57 | .S Y=SCLASTDT D DD^%DT
|
---|
58 | .S SCOK=0_U_"Date is not last historical date ("_Y_")"_U_SCLASTDT
|
---|
59 | ;if active check if ok to inactivate
|
---|
60 | S SCSTATUS=+$P(SCNODE,U,+($S((FILE=404.52)!(FILE=404.53):4,1:3)))
|
---|
61 | S:SCSTATUS SCOK=$$OKINACT(FILE,$P(SCNODE,U,1),SCLASTDT,.SCERR)
|
---|
62 | QTOKDEL Q SCOK
|
---|
63 | ;
|
---|
64 | OKINACT(FILE,IEN,DATE,SCERR) ;PCMM history files - inactivate record?
|
---|
65 | ; input:
|
---|
66 | ; ** Complete **
|
---|
67 | ; input:
|
---|
68 | ; FILE = History File: 404.52,404.53,404.58, or 404.59
|
---|
69 | ; IEN = IEN of non-History File:
|
---|
70 | ; Team Position (#404.57) for 404.52 & 404.59
|
---|
71 | ; Team (#404.51) for 404.58
|
---|
72 | ; DATE = Date to inactivate
|
---|
73 | ; SCERR = [default = "SCERR"]
|
---|
74 | ; output:
|
---|
75 | ; Returned: 1=ok on date/0 ow^1=ok in future/0 ow^message^techmessage
|
---|
76 | ; @scerr = error message array
|
---|
77 | N SCLASTDT,SCX,ROOT,SCNODE,SCSTAT,SCOK,SCI,SCTP,SCOK,SCTPLST,SCPTLST,SCCLIN
|
---|
78 | S SCOK=1
|
---|
79 | S SCLASTDT=$$LASTDATE^SCAPMCU1(FILE,IEN)
|
---|
80 | IF DATE<SCLASTDT D G QTOKIN
|
---|
81 | .S Y=SCLASTDT D DD^%DT
|
---|
82 | .S SCOK="0^^Date is before last historical date("_Y_")"_U_SCLASTDT
|
---|
83 | S SCDT("BEGIN")=DATE
|
---|
84 | S SCDT("END")=3990101 ;infinite future
|
---|
85 | S SCDT("INCL")=0 ;does not have to be continuous
|
---|
86 | S SCX=$$ACTHIST^SCAPMCU2(FILE,IEN,"SCDT",.SCERR)
|
---|
87 | IF SCX'>0 D G QTOKIN
|
---|
88 | .S:SCX<0 SCOK="0^^Error in active history call"
|
---|
89 | .IF 'SCX D
|
---|
90 | ..S Y=DATE D DD^%DT
|
---|
91 | ..S SCOK="0^^Entry not active for date("_Y_")"_U_DATE
|
---|
92 | TEAMHIS IF FILE=404.58 D
|
---|
93 | .; -- check positions for team
|
---|
94 | .IF '$$TPTM^SCAPMC(IEN,"SCDT",,,"SCTPLST",.SCERR) S SCOK=0_U_U_"Error in Position List Call" Q
|
---|
95 | .F SCI=1:1 S SCTP=$P($G(SCTPLST(SCI)),U,1) Q:'SCTP D Q:'SCOK
|
---|
96 | ..; -- check if position is active
|
---|
97 | ..IF '$P(SCTPLST(SCI),U,6)!($P(SCTPLST(SCI),U,6)>DATE) D Q
|
---|
98 | ...S Y=$P(SCTPLST(SCI),U,2) D DD^%DT
|
---|
99 | ...S SCOK="0^^Active Team Position^"_$P($G(^SCTM(404.57,SCTP,0)),U,1)_" as of "_Y_U_SCTP_U_$P(SCTPLST(SCI),U,1)
|
---|
100 | ..S SCX=$$OKINACT(404.59,SCTP,DATE,.SCERR)
|
---|
101 | ..S:$P(SCX,U,1,2)["1" SCOK=SCX
|
---|
102 | .; -- check for patients assigned to team - 999 - maybe able to remove
|
---|
103 | .IF '$$PTTM^SCAPMC(IEN,"SCDT","^TMP($J,""SCPTLST"")",.SCERR) S SCOK=0_U_U_"Error in Patient List Call" Q
|
---|
104 | .F SCI=1:1 S SCPT=$P($G(^TMP($J,"SCPTLST",SCI)),U,1) Q:'SCPT D Q:'SCOK
|
---|
105 | ..IF $P(^TMP($J,"SCPTLST",SCI),U,4)>DATE S SCOK="1^0^Patient "_$P(^TMP($J,"SCPTLST",SCI),U,2)_" is active in the future" Q
|
---|
106 | ..IF $P(^TMP($J,"SCPTLST",SCI),U,5)<DATE S SCOK=0_U_U_"Patient ("_$P(^TMP($J,"SCPTLST",SCI),U,2)_") is active"_U_$P(^TMP($J,"SCPTLST",SCI),U,1)_U_$P(^TMP($J,"SCPTLST",SCI),U,2) Q
|
---|
107 | POSHIS IF FILE=404.59 D
|
---|
108 | .; -- check for practitioners assigned to position
|
---|
109 | .IF '$$PRTP^SCAPMC(IEN,"SCDT","SCPRLST",.SCERR) S SCOK=0_U_U_"Error in Practitioner List Call" Q
|
---|
110 | .F SCI=1:1 S SCPR=$P($G(SCPRLST(SCI)),U,1) Q:'SCPR D Q:'SCOK
|
---|
111 | ..IF $P(SCPRLST(SCI),U,7)>DATE S SCOK="1^0^Team Member "_$P(SCPRLST(SCI),U,2)_" is active in the future in position "_U_$P(SCPRLST(SCI),U,1)_U_IEN Q
|
---|
112 | ..IF $P(SCPRLST(SCI),U,8)<DATE S SCOK="0^^Team Member "_$P(SCPRLST(SCI),U,2)_" is active in position "_U_$P(SCPRLST(SCI),U,1)_U_IEN Q
|
---|
113 | .;check if a clinic is assigned to position
|
---|
114 | .S SCCLIN=$P($G(^SCTM(404.57,IEN,0)),U,9) Q:'SCCLIN D
|
---|
115 | ..S SCOK="0^^Clinic ("_$P($G(^SC(SCCLIN,0)),U,1)_") is associated with position"_U_SCCLIN
|
---|
116 | .;check for patients assigned to position
|
---|
117 | .IF '$$PTTP^SCAPMC(IEN,"SCDT","^TMP($J,""SCPTLST"")",.SCERR) S SCOK="0^^Error in patient list call" Q
|
---|
118 | .F SCI=1:1 S SCPT=$P($G(^TMP($J,"SCPTLST",SCI)),U,1) Q:'SCPT D Q:'SCOK
|
---|
119 | ..IF $P(SCPTLST(SCI),U,4)>DATE S SCOK="1^0^Patient "_$P(SCPTLST(SCI),U,1)_" is active in the future" Q
|
---|
120 | ..IF $P(^TMP($J,"SCPTLST",SCI),U,5)<DATE S SCOK=0_U_U_"Patient "_$P(^TMP($J,"SCPTLST",SCI),U,2)_" is active"_U_$P(^TMP($J,"SCPTLST",SCI),U,1) Q
|
---|
121 | ;IF FILE=404.52 or 404.53 - NO FURTHER CHECKS NEEDED
|
---|
122 | QTOKIN Q SCOK
|
---|
123 | ;
|
---|
124 | OKCHGDT(FILE,HISTIEN,DATE,SCERR) ;PCMM history files - ok to change date?
|
---|
125 | ; input:
|
---|
126 | ; FILE = History File: 404.52,404.53,404.58, or 404.59
|
---|
127 | ; HISTIEN - IEN of History File (404.52,404.58 or 404.59)
|
---|
128 | ; SCERR = [default = "SCERR"]
|
---|
129 | ; output:
|
---|
130 | ; Returned: 1 if ok to change date, 0 if not^message
|
---|
131 | ; @scerr = error message array
|
---|
132 | N SCX,ROOT,SCNODE,SCSTAT,SCOK
|
---|
133 | S SCOK=1
|
---|
134 | S ROOT="^SCTM("_FILE_","_HISTIEN_",0)"
|
---|
135 | S SCNODE=$G(@ROOT)
|
---|
136 | IF 'SCNODE S SCOK="0^Bad or Corrupt File Entry"_U_HISTIEN G QTOKCHK
|
---|
137 | S SCSTAT=$S(FILE=404.52:$P(SCNODE,U,4),1:$P(SCNODE,U,3))
|
---|
138 | ;check next & previous effective dates (must be of other status)
|
---|
139 | ; i.e. if active check next & previous for inactive
|
---|
140 | S SCX=$$DTAFTER^SCAPMCU2(FILE,$P(SCNODE,U,1),('SCSTAT),$P(SCNODE,U,2))
|
---|
141 | IF SCX&(DATE'<SCX) D G QTOKCHK
|
---|
142 | .S Y=+SCX D DD^%DT
|
---|
143 | .S SCOK=0_U_"Date Must be before "_Y_U_SCX
|
---|
144 | S SCX=$$DTBEFORE^SCAPMCU2(FILE,$P(SCNODE,U,1),('SCSTAT),$P(SCNODE,U,2))
|
---|
145 | IF DATE'>SCX D G QTOKCHK
|
---|
146 | .S Y=+SCX D DD^%DT
|
---|
147 | .S SCOK=0_U_"Date Must be after "_Y_U_SCX
|
---|
148 | ;bp/cmf 204 new code begin
|
---|
149 | I $$BADCHGDT^SCMCDDA G QTOKCHK
|
---|
150 | ;bp/cmf 204 new code end
|
---|
151 | ;
|
---|
152 | QTOKCHK Q SCOK
|
---|