Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ECXSCRP

ECXSCRP.m

Go to the documentation of this file.
  1. ECXSCRP ;ALB/JAM - Restricted Stop Code Nonconforming Clinic Report; 07/24/03 ;2/11/14 16:56
  1. ;;3.0;DSS EXTRACTS;**57,58,120,126,144,149,154**;Dec 22, 1997;Build 13
  1. ;
  1. EN ;foreground entry point
  1. N ZTRTN,ZTDESC,ZTIO,ZTQUEUED,DIR,DIRUT,X,Y,ECX,ECXSD,PSC,SSC,ECXPCF,ECXPORT,CNT ;144
  1. W @IOF
  1. W !,"This option reviews the Primary and Secondary Stop Codes and any existing Four" ;144
  1. W !,"Character Codes in the Clinics and Stop Codes file #728.44." ;144
  1. W !,"It produces a report highlighting any nonconformance reasons that pertain" ;144
  1. W !,"to the Primary and Secondary Codes, or the Four Character Codes if present." ;144
  1. W !,"Please contact the responsible party for corrective action." ;144
  1. S DIR(0)="SO^A:Active Clinics;I:Inactive Clinics;B:Both"
  1. S DIR("A")="Select Report"
  1. S DIR("?",1)="Enter an A for Active Clinics, I for Inactive Clinics,"
  1. S DIR("?")="B for Both Active and Inactive Clinics"
  1. D ^DIR K DIR I $D(DIRUT) G END
  1. S ECXPCF=Y
  1. W !,"Please be patient, this may take a few moments..." ;144
  1. ;Synch primary & secondary stop codes from file #44 with #728.44
  1. S ECX=0 F S ECX=$O(^ECX(728.44,ECX)) Q:'ECX D FIX^ECXSCLD(ECX)
  1. S ECXPORT=$$EXPORT^ECXUTL1 Q:ECXPORT=-1 I ECXPORT D Q ;144
  1. .K ^TMP($J,"ECXPORT") ;144
  1. .S ^TMP($J,"ECXPORT",0)="IEN^CLINIC NAME^STOP CODE^CREDIT STOP CODE^CHAR4 CODE^REASON FOR NON-CONFORMANCE" ;144,149;154
  1. .S CNT=1 ;144
  1. .D PROCESS ;144
  1. .D EXPDISP^ECXUTL1 ;144
  1. ;device selection
  1. W !!,"** REPORT REQUIRES 132 COLUMNS TO PRINT CORRECTLY **",!! ;144 CVW
  1. K IOP,%ZIS,POP,IO("Q")
  1. ;S %ZIS("A")="Select Device: ",%ZIS="QM" D ^%ZIS I POP G END
  1. S %ZIS="",%ZIS("B")="0;132;99999" D ^%ZIS I POP G END
  1. I $D(IO("Q")) K IO("Q") D G END
  1. .S ZTDESC="Restricted Stop Code Report",ZTSAVE("ECXPCF")="" ;154
  1. .S ZTRTN="PROCESS^ECXSCRP",ZTIO=ION D ^%ZTLOAD,HOME^%ZIS K ZTSK
  1. U IO
  1. D PROCESS
  1. END D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
  1. Q
  1. ;
  1. PROCESS ;background entry point
  1. ;locate invalid Stop Code in HOSPITAL LOCATION file #44 & CLINICS
  1. ;AND STOP CODES file #728.44
  1. N ECX,NAM,STR,IEN,PSC,SSC,CNTX,ECXPG,ECXOUT,LNS,DPC,DSC,SCIEN,ECXF
  1. N INDT,TYP,ACF,HTYP,CLNF,ECXRDT,NCODE,%H ;144
  1. S %H=$H D YX^%DTC S ECXRDT=Y
  1. S $P(LNS,"-",132)="",(CNTX,IEN,ECXOUT,ECXF)=0,ECXPG=1,CLNF=0
  1. ;search file #728.44 for invalid stop code entries
  1. D:'$G(ECXPORT) HDR S IEN=0 ;144
  1. F S IEN=$O(^ECX(728.44,IEN)) Q:'IEN D Q:ECXOUT S:ECXF CNTX=CNTX+1
  1. .I $P($G(^SC(IEN,0)),U,3)'="C" Q ;149 If entry isn't a clinic, don't include it on report
  1. .S ECX=$G(^ECX(728.44,IEN,0)),PSC=$P(ECX,U,2),SSC=$P(ECX,U,3),CLNF=0
  1. .S DPC=$P(ECX,U,4),DSC=$P(ECX,U,5),NAM=$$GET1^DIQ(44,$P(ECX,U),.01)
  1. .S INDT=$P(ECX,U,10),ECXF=0 I INDT'="" S NAM="*"_NAM
  1. .S ACF=$S($E(NAM)="*":0,1:1),HTYP=$$GET1^DIQ(44,$P(ECX,U),2,"I")
  1. .S NCODE=$$GET1^DIQ(728.441,$P(ECX,U,8),.01) ;144 cvw
  1. .I $S((ECXPCF="A")&('ACF):1,(ECXPCF="I")&(ACF):1,1:0) Q
  1. .D I ECXOUT Q
  1. ..I PSC="" S STR="Missing primary code" D PRN Q
  1. ..D SCCHK(PSC,"P") I $D(STR) D PRN
  1. .I SSC'="" D SCCHK(SSC,"S") I $D(STR) D PRN
  1. .D I ECXOUT Q
  1. ..;I DPC="" S STR="No DSS primary code" D PRN Q ;154
  1. ..;I DPC'=PSC D SCCHK(DPC,"P") I $D(STR) D PRN
  1. .;I DSC'="",DSC'=SSC D SCCHK(DSC,"S") I $D(STR) D PRN
  1. .D I ECXOUT Q ;144 cvw
  1. ..I ($P(ECX,U,8)'="")&(NCODE="") S NCODE=$P(ECX,U,8),STR="CHAR4 Code invalid" D PRN Q ;144,149 cvw
  1. ..I $$GET1^DIQ(728.441,$P(ECX,U,8),3)'="" S STR="CHAR4 Code inactive" D PRN Q ;144,149 cvw
  1. I '$G(ECXPORT) W !!,?25,$S(CNTX:CNTX,1:"NO")_" PROBLEM CLINICS FOUND." ;144
  1. Q
  1. PRN ;print line
  1. Q:CLNF I HTYP'="C" S STR="Not a Clinic" S CLNF=1
  1. I $G(ECXPORT) S ^TMP($J,"ECXPORT",CNT)=IEN_"^"_NAM_"^"_PSC_"^"_SSC_"^"_NCODE_"^"_STR,CNT=CNT+1 Q ;154
  1. I ($Y+3)>IOSL D PAGE,HDR I ECXOUT Q
  1. W !,IEN,?14,$E(NAM,1,24),?48,PSC,?58,SSC,?75,NCODE,?91,STR ;CVW 149
  1. S ECXF=1
  1. Q
  1. ;
  1. SCCHK(SCIEN,TYP) ;check stop code against file 40.7
  1. N SCN,RTY,CTY,SCI,INACT,ARRY,I,FLG
  1. K STR
  1. S CTY=$S(TYP="P":"^P^E^",1:"^S^E^")
  1. D SCIEN(SCIEN) I SCI="" D Q
  1. .;S SCI=$$SCIEN(SCIEN) I SCI="" D Q
  1. .I TYP="S" Q:SSC=PSC Q:DSC=DPC
  1. .S STR=SCIEN_" Invalid Stop Code"
  1. S SCN=$G(^DIC(40.7,SCI,0)),RTY=$P(SCN,U,6),INACT=$P(SCN,U,3)
  1. I INACT D Q
  1. .I INACT>DT S STR=SCIEN_" Inactive in future"
  1. .E S STR=SCIEN_" Code is inactive"
  1. I $P(SCN,U,2)="" S STR="No pointer in file #40.7" Q
  1. I RTY="" S STR=SCIEN_" No restriction type" Q
  1. I CTY'[("^"_RTY_"^") D
  1. .S STR=SCIEN_" Cannot be "_$S(TYP="P":"prim",1:"second")_"ary"
  1. Q
  1. PAGE ;
  1. N SS,JJ,DIR,X,Y
  1. I $E(IOST,1,2)="C-" D
  1. . S SS=22-$Y F JJ=1:1:SS W !
  1. . S DIR(0)="E" W ! D ^DIR K DIR I 'Y S ECXOUT=1
  1. Q
  1. ;
  1. SCIEN(SCIEN) ;Get stop code IEN
  1. I SCIEN="" Q ""
  1. ;S SCIEN=$O(^DIC(40.7,"C",SCIEN,0))
  1. ;Q SCIEN
  1. ;find active code if one
  1. S SCI=$O(^DIC(40.7,"C",SCIEN,0))
  1. I $O(^DIC(40.7,"C",SCIEN,SCI))'>0 Q
  1. ;must be some duplicates so find the best one
  1. S I=""
  1. F S I=$O(^DIC(40.7,"C",SCIEN,I)) Q:'I D
  1. . Q:'$D(^DIC(40.7,I,0))
  1. . S INACT=$P(^DIC(40.7,I,0),"^",3),FLG="A" D
  1. . . I INACT,((DT>INACT)!(DT=INACT)) S FLG="I"
  1. . S ARRY(FLG,I)=""
  1. I $D(ARRY("A")) S SCI=$O(ARRY("A",0))
  1. Q SCIEN
  1. ;
  1. HDR ;header for data from file #728.44
  1. W @IOF
  1. W ECXRDT,?73,"Page: ",ECXPG,!
  1. W !,?18,"STOP CODE NON-CONFORMING CLINICS REPORT",!,?32
  1. W $S(ECXPCF="A":"Active",ECXPCF="I":"Inactive",1:"All")_" Clinics",!
  1. W !,"CLINICS AND STOP CODES File (#728.44) - (Use 'Enter/Edit DSS "
  1. W "Stop Codes for",!,?25,"Clinics' [ECXSCEDIT] menu option to "
  1. W "make corrections)",!! ;CVW 149
  1. W "IEN #",?14,$S(ECXPCF="B":"(*currently inactive)",1:"CLINIC NAME")
  1. W ?48,"STOP",?58,"CREDIT",?75,"CHAR4",?91,"REASON FOR NON-"
  1. W !,?48,"CODE",?58,"STOP CODE",?75,"CODE",?91,"CONFORMANCE"
  1. W !,$E(LNS,1,132)
  1. S ECXPG=ECXPG+1
  1. Q