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

CIMSNCID.m

Go to the documentation of this file.
  1. CIMSNCID ; CMI/TUCSON/LAB -NCI STUDY ; [ 06/09/98 6:56 AM ]
  1. ;;1.0;NCI STUDY EXTRACT 1.0;;MAY 14, 1998
  1. ;
  1. START ;
  1. W:$D(IOF) @IOF
  1. W !,$$CTR($$LOC(),80),!
  1. S X="***** NCI CANCER STUDY *****" W !,$$CTR(X,80)
  1. S X="Patterns of Care Among Native American Cancer Patients" W !,$$CTR(X,80),!
  1. S T="INTRO" F J=1:1 S X=$T(@T+J),X=$P(X,";;",2) Q:X="END" W !,X
  1. K J,X,T
  1. W !,"There are " S X=0,C=0 F S X=$O(^CIMSCPAT(X)) Q:X'=+X S C=C+1
  1. W C," patients in the NCI Cancer Study Register.",!
  1. ;
  1. YEARS ;
  1. S CIMSYRS=0
  1. S DIR(0)="N^1:99:0",DIR("A")="How many years of data should be downloaded",DIR("B")="1" KILL DA D ^DIR KILL DIR
  1. G:$D(DIRUT) EOJ
  1. S CIMSYRS=Y
  1. CONT ;
  1. S DIR(0)="Y",DIR("A")="Do you wish to continue",DIR("B")="N" KILL DA D ^DIR KILL DIR
  1. I Y'=1 D EOJ Q
  1. I $D(DIRUT) D EOJ Q
  1. QUEUE ;EP
  1. K ZTSK
  1. S DIR(0)="Y",DIR("A")="Do you want to QUEUE this to run at a later time",DIR("B")="N" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I Y=1 D EOJ,QUEUE1 Q
  1. I $D(DIRUT) D EOJ Q
  1. D PROC
  1. Q
  1. QUEUE1 ;
  1. S ZTRTN="PROC^CIMSNCID"
  1. S ZTIO="",ZTDTH="",ZTDESC="NCI STUDY EXPORT SYSTEM" S ZTSAVE("CIM*")=""
  1. D ^%ZTLOAD
  1. W !!,$S($D(ZTSK):"Request Queued.",1:"Request cancelled.")
  1. I '$D(ZTSK) S Q=99 Q
  1. K ZTSK
  1. Q
  1. PROC ;EP - called from xbdbque to process patients
  1. I '$D(ZTQUEUED) W !,"Processing patients"
  1. S CIMSH=$H,CIMSJ=$J,(CIMSA,CIMSB,CIMSC,CIMSD,CIMSE)=0
  1. K ^TMP("CIMSNCI",$J,CIMSJ,CIMSH)
  1. S DFN=0 F S DFN=$O(^CIMSCPAT(DFN)) Q:DFN'=+DFN S CIMSDDX=$P(^CIMSCPAT(DFN,0),U,4) D
  1. .W:'$D(ZTQUEUED) "." D GENA
  1. .D GENB
  1. .D GENE
  1. .Q
  1. WRITEF ;write out flat file
  1. A ;
  1. W:'$D(ZTQUEUED) !!,"Writing out file A"
  1. S X2=$E(DT,1,3)_"0101",X1=DT D ^%DTC S CIMSJD=X+1
  1. K ^TMP($J) S X=0 F S X=$O(^TMP("CIMSNCI",$J,"A",X)) Q:X'=+X S ^TMP($J,X)=^TMP("CIMSNCI",$J,"A",X)
  1. S XBGL="TMP("_$J_","
  1. S F="ncifilea."_CIMSJD
  1. S XBMED="F",XBFN=F,XBTLE="SAVE OF NCI EXTRACT STUDY RECORDS BY - "_$P(^VA(200,DUZ,0),U),XBF=0,XBQ="N",XBFLT=1,XBE=$J
  1. D ^XBGSAVE
  1. B ;
  1. W:'$D(ZTQUEUED) !!,"Writing out file B"
  1. K ^TMP($J) S X=0 F S X=$O(^TMP("CIMSNCI",$J,"B",X)) Q:X'=+X S ^TMP($J,X)=^TMP("CIMSNCI",$J,"B",X)
  1. S XBGL="TMP("_$J_",",F="ncifileb."_CIMSJD,XBMED="F",XBFN=F,XBTLE="SAVE OF NCI EXTRACT STUDY RECORDS BY - "_$P(^VA(200,DUZ,0),U),XBF=0,XBQ="N",XBFLT=1,XBE=$J
  1. D ^XBGSAVE
  1. C ;
  1. W:'$D(ZTQUEUED) !!,"Writing out file C"
  1. K ^TMP($J) S X=0 F S X=$O(^TMP("CIMSNCI",$J,"C",X)) Q:X'=+X S ^TMP($J,X)=^TMP("CIMSNCI",$J,"C",X)
  1. S XBGL="TMP("_$J_",",F="ncifilec."_CIMSJD,XBMED="F",XBFN=F,XBTLE="SAVE OF NCI EXTRACT STUDY RECORDS BY - "_$P(^VA(200,DUZ,0),U),XBF=0,XBQ="N",XBFLT=1,XBE=$J
  1. D ^XBGSAVE
  1. D ;
  1. W:'$D(ZTQUEUED) !!,"Writing out file D"
  1. K ^TMP($J) S X=0 F S X=$O(^TMP("CIMSNCI",$J,"D",X)) Q:X'=+X S ^TMP($J,X)=^TMP("CIMSNCI",$J,"D",X)
  1. S XBGL="TMP("_$J_",",F="ncifiled."_CIMSJD,XBMED="F",XBFN=F,XBTLE="SAVE OF NCI EXTRACT STUDY RECORDS BY - "_$P(^VA(200,DUZ,0),U),XBF=0,XBQ="N",XBFLT=1,XBE=$J
  1. D ^XBGSAVE
  1. E ;
  1. W:'$D(ZTQUEUED) !!,"Writing out file E"
  1. K ^TMP($J) S X=0 F S X=$O(^TMP("CIMSNCI",$J,"E",X)) Q:X'=+X S ^TMP($J,X)=^TMP("CIMSNCI",$J,"E",X)
  1. S XBGL="TMP("_$J_",",F="ncifilee."_CIMSJD,XBMED="F",XBFN=F,XBTLE="SAVE OF NCI EXTRACT STUDY RECORDS BY - "_$P(^VA(200,DUZ,0),U),XBF=0,XBQ="N",XBFLT=1,XBE=$J
  1. D ^XBGSAVE
  1. K ^TMP("CIMSNCI",$J)
  1. K ^TMP($J)
  1. K XBGL,XBMED,XBTLE,XBFN,XBF,XBQ,XBFLT
  1. D EOJ
  1. Q
  1. GENA ;generate file a record
  1. S X=$$AREC^CIMSNCI1(DFN,CIMSDDX,"NCI RECORD A")
  1. S CIMSA=CIMSA+1
  1. S ^TMP("CIMSNCI",$J,"A",CIMSA)=X
  1. Q
  1. GENB ;
  1. ;go through all visits 1 year prior to 1 year after cimsddx
  1. Q:CIMSDDX=""
  1. S CIMSBG=$$FMADD^XLFDT(CIMSDDX,(-365.25*CIMSYRS)),CIMSED=$$FMADD^XLFDT(CIMSDDX,(365.25*CIMSYRS))
  1. S CIMVSIT=0 F S CIMVSIT=$O(^AUPNVSIT("AC",DFN,CIMVSIT)) Q:CIMVSIT'=+CIMVSIT D
  1. .S D=$P($P(^AUPNVSIT(CIMVSIT,0),U),".")
  1. .Q:D<CIMSBG
  1. .Q:D>CIMSED
  1. .Q:$P(^AUPNVSIT(CIMVSIT,0),U,11)
  1. .Q:'$P(^AUPNVSIT(CIMVSIT,0),U,9)
  1. .Q:"AH"'[$P(^AUPNVSIT(CIMVSIT,0),U,7)
  1. .;Q:'$D(^AUPNVPOV("AD",CIMVSIT))
  1. .;Q:'$D(^AUPNVPRV("AD",CIMVSIT))
  1. .Q:$P(^AUPNVSIT(CIMVSIT,0),U,6)'=DUZ(2)
  1. .I $D(^AUPNVPOV("AD",CIMVSIT)),$D(^AUPNVPRV("AD",CIMVSIT)) D
  1. ..S X=$$BREC^CIMSNCI1(CIMVSIT,"NCI RECORD B")
  1. ..S CIMSB=CIMSB+1
  1. ..S ^TMP("CIMSNCI",$J,"B",CIMSB)=X
  1. .;DO GENERATE C RECORDS
  1. .S CIMSLAB=0 F S CIMSLAB=$O(^AUPNVLAB("AD",CIMVSIT,CIMSLAB)) Q:CIMSLAB'=+CIMSLAB D
  1. ..S X=$$LREC^CIMSNCI1(CIMSLAB,"NCI RECORD C")
  1. ..S CIMSC=CIMSC+1
  1. ..S ^TMP("CIMSNCI",$J,"C",CIMSC)=X
  1. .;go through meds and generate D
  1. .S CIMSMED=0 F S CIMSMED=$O(^AUPNVMED("AD",CIMVSIT,CIMSMED)) Q:CIMSMED'=+CIMSMED D
  1. ..S X=$$MREC^CIMSNCI1(CIMSMED,"NCI RECORD D")
  1. ..S CIMSD=CIMSD+1
  1. ..S ^TMP("CIMSNCI",$J,"D",CIMSD)=X
  1. ..Q
  1. .Q
  1. Q
  1. GENE ;
  1. S CIMSPRB=0 F S CIMSPRB=$O(^AUPNPROB("AC",DFN,CIMSPRB)) Q:CIMSPRB'=+CIMSPRB D
  1. .S X=$$PREC^CIMSNCI1(CIMSPRB,"NCI RECORD E")
  1. .S CIMSE=CIMSE+1
  1. .S ^TMP("CIMSNCI",$J,"E",CIMSE)=X
  1. .Q
  1. Q
  1. NPR(V) ;
  1. NEW C,X
  1. S (X,C)=0
  1. F S X=$O(^AUPNVPRC("AD",V,X)) Q:X'=+X S C=C+1
  1. Q C
  1. HF(V,N) ;return N health factor on this visit
  1. NEW X,C,%
  1. S %="",(X,C)=0 F S X=$O(^AUPNVHF("AD",V,X)) Q:X'=+X S C=C+1 I C=N S %=$P(^AUTTHF($P(^AUPNVHF(X,0),U),0),U)
  1. Q %
  1. DATE(D) ;EP convert internal fileman format to mmddyyyy
  1. I $G(D)="" Q ""
  1. Q $E(D,4,7)_($E(D,1,3)+1700)
  1. VPR(P,D) ;
  1. I '$G(P) Q 0
  1. I $G(D)="" Q 0
  1. NEW X,C,B
  1. S (X,C)=0
  1. S B=$$FMADD^XLFDT(D,-365)
  1. F S X=$O(^AUPNVSIT("AC",P,X)) Q:X'=+X D
  1. .Q:$P(^AUPNVSIT(X,0),U,11) ;deleted
  1. .Q:'$P(^AUPNVSIT(X,0),U,9) ;no dep
  1. .Q:"AH"'[$P(^AUPNVSIT(X,0),U,7)
  1. .Q:$P(^AUPNVSIT(X,0),U,6)'=DUZ(2)
  1. .Q:'$D(^AUPNVPOV("AD",X))
  1. .Q:'$D(^AUPNVPRV("AD",X))
  1. .Q:$P($P(^AUPNVSIT(X,0),U),".")>D
  1. .Q:$P($P(^AUPNVSIT(X,0),U),".")<B
  1. .S C=C+1
  1. Q C
  1. LASTHT(P,F,CIMSTYPE,CIMSDATE) ;PEP - return last ht before dx date
  1. I 'P Q ""
  1. I $G(CIMSDATE)="" Q ""
  1. I $G(CIMSTYPE)="" S CIMSTYPE="V"
  1. I '$D(^AUPNVSIT("AC",P)) Q ""
  1. NEW %,APCLARRY,H,E,G,A,B,D
  1. S A=$$FMTE^XLFDT(CIMSDATE),B="JAN 01, 1900"
  1. S %=P_"^LAST MEAS HT;DURING "_B_"-"_A NEW X S E=$$START1^APCLDF(%,"APCLARRY(") S H=$P($G(APCLARRY(1)),U,2),D=$P($G(APCLARRY(1)),U,1)
  1. I H]"",CIMSTYPE="V" S H=$J(H,2,0) Q $S(F="I":H,1:(H\12)_" "_(H#12))
  1. I H]"",CIMSTYPE="D" Q D
  1. S A=$$FMTE^XLFDT(DT),B=$$FMTE^XLFDT(CIMSDATE)
  1. S %=P_"^LAST MEAS HT;DURING "_B_"-"_A NEW X S E=$$START1^APCLDF(%,"APCLARRY(") S H=$P($G(APCLARRY(1)),U,2),D=$P($G(APCLARRY(1)),U,1)
  1. I H="" Q H
  1. I H]"",CIMSTYPE="V" S H=$J(H,2,0) Q $S(F="I":H,1:(H\12)_" "_(H#12))
  1. I H]"",CIMSTYPE="D" Q D
  1. ;F="I" - in inches, F="E" - feet and inches 5 5
  1. LASTWT(P,CIMSTYPE,CIMSDATE) ;PEP - return last wt
  1. I 'P Q ""
  1. I $G(CIMSDATE)="" Q ""
  1. I $G(CIMSTYPE)="" S CIMSTYPE="V"
  1. I '$D(^AUPNVSIT("AC",P)) Q ""
  1. NEW %,APCLARRY,H,E,G,A,B,D
  1. S A=$$FMTE^XLFDT(CIMSDATE),B="JAN 01, 1900"
  1. S %=P_"^LAST MEAS WT;DURING "_B_"-"_A NEW X S E=$$START1^APCLDF(%,"APCLARRY(") S H=$P($G(APCLARRY(1)),U,2),D=$P($G(APCLARRY(1)),U,1)
  1. I H]"",CIMSTYPE="V" S H=$J(H,3,1) Q H
  1. I H]"",CIMSTYPE="D" Q D
  1. S A=$$FMTE^XLFDT(DT),B=$$FMTE^XLFDT(CIMSDATE)
  1. S %=P_"^LAST MEAS WT;DURING "_B_"-"_A NEW X S E=$$START1^APCLDF(%,"APCLARRY(") S H=$P($G(APCLARRY(1)),U,2),D=$P($G(APCLARRY(1)),U,1)
  1. I H="" Q H
  1. I H]"",CIMSTYPE="V" S H=$J(H,3,1) Q H
  1. I H]"",CIMSTYPE="D" Q D
  1. BMI(P) ;PEP - return BMI with last weight,last height
  1. I 'P Q -1
  1. NEW %,W,H,B
  1. S %=""
  1. S W=$$LASTWT(P,"V",$P(^CIMSCPAT(P,0),U,4)) I W="" Q %
  1. S H=$$LASTHT(P,"I","V",$P(^CIMSCPAT(P,0),U,4)) I H="" Q %
  1. S W=(W/5)*2.3,H=(H*2.5),H=(H*H)/10000,%=(W/H),%=$J(%,4,1)
  1. Q %
  1. ERR W $C(7),$C(7),!,"Must be a valid Year. Enter a year only!!" Q
  1. RZERO(V,L) ;ep right zero fill
  1. NEW %,I
  1. S %=$L(V),Z=L-% F I=1:1:Z S V=V_"0"
  1. Q V
  1. LZERO(V,L) ;EP - left zero fill
  1. NEW %,I
  1. S %=$L(V),Z=L-% F I=1:1:Z S V="0"_V
  1. Q V
  1. LBLK(V,L) ;left blank fill
  1. NEW %,I
  1. S %=$L(V),Z=L-% F I=1:1:Z S V=" "_V
  1. Q V
  1. RBLK(V,L) ;EP right blank fill
  1. NEW %,I
  1. S %=$L(V),Z=L-% F I=1:1:Z S V=V_" "
  1. Q V
  1. EOJ ;
  1. D ^XBFMK
  1. K X,X1,X2,IO("Q"),%,Y,%DT,%Y,%W,%T,%H,DUOUT,DTOUT,POP,ZTSK,ZTQUEUED,H,S,TS,M,DFN
  1. D KILL^AUPNPAT
  1. D EN^XBVK("CIM"),EN^XBVK("APCL"),EN^XBVK("AUPN")
  1. Q
  1. ;
  1. CTR(X,Y) ;EP - Center X in a field Y wide.
  1. Q $J("",$S($D(Y):Y,1:IOM)-$L(X)\2)_X
  1. ;----------
  1. EOP ;EP - End of page.
  1. Q:$E(IOST)'="C"
  1. Q:$D(ZTQUEUED)!'(IOT="TRM")!$D(IO("S"))
  1. NEW DIR
  1. K DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
  1. S DIR(0)="E" D ^DIR
  1. Q
  1. ;----------
  1. USR() ;EP - Return name of current user from ^VA(200.
  1. Q $S($G(DUZ):$S($D(^VA(200,DUZ,0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ UNDEFINED OR 0")
  1. ;----------
  1. LOC() ;EP - Return location name from file 4 based on DUZ(2).
  1. Q $S($G(DUZ(2)):$S($D(^DIC(4,DUZ(2),0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ(2) UNDEFINED OR 0")
  1. ;----------
  1. ;
  1. W:$D(IOF) @IOF
  1. W !,$$CTR("NATIONAL CANCER INSTITUTE",80)
  1. W !,$$CTR("Patterns of Care Among Native American Cancer Patients",80)
  1. W !,$$CTR("Main Study Menu"),!
  1. W !,$$CTR($$LOC(),80)
  1. W !,$$CTR("Version 1.0 April 1998",80)
  1. W !,$$CTR("Cimarron Medical Informatics, LLC",80)
  1. Q
  1. INTRO ;
  1. ;;This program will download data from the RPMS system to support the study
  1. ;;identified above. Data will be downloaded for each patient who is entered
  1. ;;into the NCI CANCER STUDY PATIENT REGISTER file.
  1. ;;
  1. ;;Five files of data will be created. They will be named:
  1. ;; - ncifilea.nnn
  1. ;; - ncifileb.nnn
  1. ;; - ncifilec.nnn
  1. ;; - ncifiled.nnn
  1. ;; - ncifilee.nnn (nnn is the julian date when the file was created)
  1. ;;The files will be placed in the export directory. (/usr/spool/uucppublic
  1. ;;if you are on a unix machine, C:\EXPORT on DOS)
  1. ;;
  1. ;;Please jot down these file names for future reference.
  1. ;;
  1. ;;END
  1. ;
  1. ;